@npm9912/v-map 0.1.0

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 (438) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +185 -0
  3. package/dist/cjs/_commonjsHelpers-B83fTs8d.js +36 -0
  4. package/dist/cjs/app-globals-V2Kpy_OQ.js +5 -0
  5. package/dist/cjs/cesium-provider-BiFFyAl9.js +2598 -0
  6. package/dist/cjs/deck-provider-Ctq3Q8a1.js +47824 -0
  7. package/dist/cjs/geotiff-CEwvF9cG.js +47 -0
  8. package/dist/cjs/geotiff-source-RaNzzWkC.js +1522 -0
  9. package/dist/cjs/index-B1oGO1g-.js +10658 -0
  10. package/dist/cjs/index-B8LHqjyg.js +1765 -0
  11. package/dist/cjs/index-BIL4VsgP.js +310 -0
  12. package/dist/cjs/index-Blku2QY8.js +167 -0
  13. package/dist/cjs/index-CJvvX4yx.js +21 -0
  14. package/dist/cjs/index-CbVT-Con.js +699 -0
  15. package/dist/cjs/index-ISOEpMC3.js +20478 -0
  16. package/dist/cjs/index-JSwBbvGA.js +1621 -0
  17. package/dist/cjs/index.browser-DQhD8Jwl.js +6873 -0
  18. package/dist/cjs/index.cjs.js +2 -0
  19. package/dist/cjs/layer-extension-B_olS0rc.js +65 -0
  20. package/dist/cjs/leaflet-provider-DOqfs7g5.js +1815 -0
  21. package/dist/cjs/loader.cjs.js +13 -0
  22. package/dist/cjs/main-dist-7TykwFci.js +2655 -0
  23. package/dist/cjs/messages-D7h4m8Tx.js +186 -0
  24. package/dist/cjs/openlayers-provider-Dfeg6L4n.js +1604 -0
  25. package/dist/cjs/polygon-layer-B9PrN7vr.js +1300 -0
  26. package/dist/cjs/scenegraph-layer-DwNoxQdi.js +2530 -0
  27. package/dist/cjs/styleconfig-CVRqArk-.js +23 -0
  28. package/dist/cjs/v-map-builder.cjs.entry.js +3786 -0
  29. package/dist/cjs/v-map-layer-geojson_12.cjs.entry.js +40894 -0
  30. package/dist/cjs/v-map-layer-helper-iAzxAg9I.js +285 -0
  31. package/dist/cjs/v-map-layer-terrain-geotiff.cjs.entry.js +258 -0
  32. package/dist/cjs/v-map-layercontrol.cjs.entry.js +247 -0
  33. package/dist/cjs/v-map.cjs.js +25 -0
  34. package/dist/cjs/v-map.v-map-layer-osm.v-map-layergroup-BsXp3BoL.js +582 -0
  35. package/dist/cjs/v-map_3.cjs.entry.js +12 -0
  36. package/dist/collection/collection-manifest.json +30 -0
  37. package/dist/collection/components/v-map/v-map.css +3 -0
  38. package/dist/collection/components/v-map/v-map.js +467 -0
  39. package/dist/collection/components/v-map/v-map.test.js +33 -0
  40. package/dist/collection/components/v-map-builder/v-map-builder.css +1 -0
  41. package/dist/collection/components/v-map-builder/v-map-builder.js +913 -0
  42. package/dist/collection/components/v-map-builder/v-map-builder.test.js +56 -0
  43. package/dist/collection/components/v-map-layer-geojson/v-map-layer-geojson.js +862 -0
  44. package/dist/collection/components/v-map-layer-geojson/v-map-layer-geojson.test.js +42 -0
  45. package/dist/collection/components/v-map-layer-geotiff/v-map-layer-geotiff.css +4 -0
  46. package/dist/collection/components/v-map-layer-geotiff/v-map-layer-geotiff.js +500 -0
  47. package/dist/collection/components/v-map-layer-geotiff/v-map-layer-geotiff.test.js +38 -0
  48. package/dist/collection/components/v-map-layer-google/v-map-layer-google.css +1 -0
  49. package/dist/collection/components/v-map-layer-google/v-map-layer-google.js +442 -0
  50. package/dist/collection/components/v-map-layer-osm/error-api.test.js +108 -0
  51. package/dist/collection/components/v-map-layer-osm/v-map-layer-osm.css +4 -0
  52. package/dist/collection/components/v-map-layer-osm/v-map-layer-osm.js +311 -0
  53. package/dist/collection/components/v-map-layer-osm/v-map-layer-osm.test.js +36 -0
  54. package/dist/collection/components/v-map-layer-scatterplot/v-map-layer-scatterplot.css +1 -0
  55. package/dist/collection/components/v-map-layer-scatterplot/v-map-layer-scatterplot.js +305 -0
  56. package/dist/collection/components/v-map-layer-terrain/v-map-layer-terrain.css +3 -0
  57. package/dist/collection/components/v-map-layer-terrain/v-map-layer-terrain.js +548 -0
  58. package/dist/collection/components/v-map-layer-terrain/v-map-layer-terrain.test.js +36 -0
  59. package/dist/collection/components/v-map-layer-terrain-geotiff/v-map-layer-terrain-geotiff.css +3 -0
  60. package/dist/collection/components/v-map-layer-terrain-geotiff/v-map-layer-terrain-geotiff.js +735 -0
  61. package/dist/collection/components/v-map-layer-terrain-geotiff/v-map-layer-terrain-geotiff.test.js +42 -0
  62. package/dist/collection/components/v-map-layer-tile3d/v-map-layer-tile3d.css +3 -0
  63. package/dist/collection/components/v-map-layer-tile3d/v-map-layer-tile3d.js +449 -0
  64. package/dist/collection/components/v-map-layer-tile3d/v-map-layer-tile3d.test.js +50 -0
  65. package/dist/collection/components/v-map-layer-wcs/v-map-layer-wcs.css +1 -0
  66. package/dist/collection/components/v-map-layer-wcs/v-map-layer-wcs.js +448 -0
  67. package/dist/collection/components/v-map-layer-wcs/v-map-layer-wcs.test.js +39 -0
  68. package/dist/collection/components/v-map-layer-wfs/v-map-layer-wfs.css +1 -0
  69. package/dist/collection/components/v-map-layer-wfs/v-map-layer-wfs.js +489 -0
  70. package/dist/collection/components/v-map-layer-wfs/v-map-layer-wfs.test.js +43 -0
  71. package/dist/collection/components/v-map-layer-wkt/v-map-layer-wkt.css +1 -0
  72. package/dist/collection/components/v-map-layer-wkt/v-map-layer-wkt.js +811 -0
  73. package/dist/collection/components/v-map-layer-wkt/v-map-layer-wkt.test.js +34 -0
  74. package/dist/collection/components/v-map-layer-wms/v-map-layer-wms.css +1 -0
  75. package/dist/collection/components/v-map-layer-wms/v-map-layer-wms.js +453 -0
  76. package/dist/collection/components/v-map-layer-wms/v-map-layer-wms.test.js +36 -0
  77. package/dist/collection/components/v-map-layer-xyz/v-map-layer-xyz.css +1 -0
  78. package/dist/collection/components/v-map-layer-xyz/v-map-layer-xyz.js +331 -0
  79. package/dist/collection/components/v-map-layer-xyz/v-map-layer-xyz.test.js +28 -0
  80. package/dist/collection/components/v-map-layercontrol/v-map-layercontrol.css +74 -0
  81. package/dist/collection/components/v-map-layercontrol/v-map-layercontrol.js +277 -0
  82. package/dist/collection/components/v-map-layercontrol/v-map-layercontrol.test.js +134 -0
  83. package/dist/collection/components/v-map-layergroup/v-map-layergroup.css +4 -0
  84. package/dist/collection/components/v-map-layergroup/v-map-layergroup.js +212 -0
  85. package/dist/collection/components/v-map-layergroup/v-map-layergroup.test.js +39 -0
  86. package/dist/collection/components/v-map-style/v-map-style.css +38 -0
  87. package/dist/collection/components/v-map-style/v-map-style.js +492 -0
  88. package/dist/collection/components/v-map-style/v-map-style.unit.js +62 -0
  89. package/dist/collection/index.js +1 -0
  90. package/dist/collection/layer/v-map-layer-helper.js +281 -0
  91. package/dist/collection/layer/v-map-layer-helper.unit.js +234 -0
  92. package/dist/collection/lib/cesium-loader.js +58 -0
  93. package/dist/collection/lib/ensure-importmap.js +12 -0
  94. package/dist/collection/lib/ensure-importmap.unit.js +57 -0
  95. package/dist/collection/lib/versions.gen.js +6 -0
  96. package/dist/collection/lib/vstyle.js +8 -0
  97. package/dist/collection/map-provider/cesium/CesiumGeoTIFFTerrainProvider.js +285 -0
  98. package/dist/collection/map-provider/cesium/CesiumLayerGroups.js +159 -0
  99. package/dist/collection/map-provider/cesium/GeoTIFFImageryProvider.js +192 -0
  100. package/dist/collection/map-provider/cesium/GeoTIFFImageryProvider.test.js +57 -0
  101. package/dist/collection/map-provider/cesium/cesium-provider.js +1408 -0
  102. package/dist/collection/map-provider/cesium/i-layer.js +1 -0
  103. package/dist/collection/map-provider/cesium/layer-manager.js +467 -0
  104. package/dist/collection/map-provider/deck/DeckGLGeoTIFFLayer.js +483 -0
  105. package/dist/collection/map-provider/deck/DeckGLGeoTIFFTerrainLayer.js +410 -0
  106. package/dist/collection/map-provider/deck/LayerGroupWithModel.js +169 -0
  107. package/dist/collection/map-provider/deck/LayerGroups.js +192 -0
  108. package/dist/collection/map-provider/deck/LayerModel.js +1 -0
  109. package/dist/collection/map-provider/deck/RenderableGroup.js +1 -0
  110. package/dist/collection/map-provider/deck/deck-provider.js +1563 -0
  111. package/dist/collection/map-provider/geotiff/geotiff-source.js +172 -0
  112. package/dist/collection/map-provider/geotiff/utils/AABB2D.js +24 -0
  113. package/dist/collection/map-provider/geotiff/utils/BVHNode2D.js +166 -0
  114. package/dist/collection/map-provider/geotiff/utils/GeoTIFFTileProcessor.js +484 -0
  115. package/dist/collection/map-provider/geotiff/utils/Triangle.js +1 -0
  116. package/dist/collection/map-provider/geotiff/utils/Triangulation.js +321 -0
  117. package/dist/collection/map-provider/geotiff/utils/colormap-utils.js +190 -0
  118. package/dist/collection/map-provider/geotiff/utils/normalization-utils.js +122 -0
  119. package/dist/collection/map-provider/geotiff/utils/sampling-utils.js +108 -0
  120. package/dist/collection/map-provider/leaflet/GeoTIFFGridLayer.js +147 -0
  121. package/dist/collection/map-provider/leaflet/WCSGridLayer.js +124 -0
  122. package/dist/collection/map-provider/leaflet/google-map-tiles-layer.js +352 -0
  123. package/dist/collection/map-provider/leaflet/leaflet-helpers.js +94 -0
  124. package/dist/collection/map-provider/leaflet/leaflet-provider.js +1095 -0
  125. package/dist/collection/map-provider/ol/CustomGeoTiff.js +145 -0
  126. package/dist/collection/map-provider/ol/openlayers-helper.js +26 -0
  127. package/dist/collection/map-provider/ol/openlayers-provider.js +1427 -0
  128. package/dist/collection/map-provider/provider-factory.js +44 -0
  129. package/dist/collection/map-provider/provider-factory.unit.js +66 -0
  130. package/dist/collection/testing/browser-test-utils.js +49 -0
  131. package/dist/collection/testing/e2e-testing.js +122 -0
  132. package/dist/collection/testing/e2e-utils.js +70 -0
  133. package/dist/collection/testing/geotiff-test-server.js +100 -0
  134. package/dist/collection/testing/mocks/geostyler-lyrx-parser.js +12 -0
  135. package/dist/collection/testing/mocks/geostyler-mapbox-parser.js +12 -0
  136. package/dist/collection/testing/mocks/geostyler-qgis-parser.js +12 -0
  137. package/dist/collection/testing/mocks/geostyler-sld-parser.js +13 -0
  138. package/dist/collection/testing/mocks/geostyler-style.js +5 -0
  139. package/dist/collection/testing/setupTests.browser.js +1 -0
  140. package/dist/collection/testing/setupTests.stencil.js +20 -0
  141. package/dist/collection/testing/setupTests.vitest.js +59 -0
  142. package/dist/collection/testing/stencil-testing-wrapper.js +43 -0
  143. package/dist/collection/testing/styleMock.js +1 -0
  144. package/dist/collection/types/color.js +1 -0
  145. package/dist/collection/types/cssmode.js +1 -0
  146. package/dist/collection/types/flavour.js +1 -0
  147. package/dist/collection/types/layerconfig.js +1 -0
  148. package/dist/collection/types/lonlat.js +1 -0
  149. package/dist/collection/types/mapinitoptions.js +1 -0
  150. package/dist/collection/types/mapprovider.js +1 -0
  151. package/dist/collection/types/provideroptions.js +1 -0
  152. package/dist/collection/types/styleconfig.js +19 -0
  153. package/dist/collection/types/styling.js +13 -0
  154. package/dist/collection/types/styling.unit.js +37 -0
  155. package/dist/collection/types/vmaplayer.js +1 -0
  156. package/dist/collection/utils/async-mutex.js +28 -0
  157. package/dist/collection/utils/diff.js +142 -0
  158. package/dist/collection/utils/diff.unit.js +59 -0
  159. package/dist/collection/utils/dom-env.js +43 -0
  160. package/dist/collection/utils/dom-env.unit.js +92 -0
  161. package/dist/collection/utils/events.js +8 -0
  162. package/dist/collection/utils/logger.js +183 -0
  163. package/dist/collection/utils/logger.unit.js +98 -0
  164. package/dist/collection/utils/messages.js +12 -0
  165. package/dist/collection/utils/spatial-utils.js +27 -0
  166. package/dist/collection/utils/spatial-utils.unit.js +24 -0
  167. package/dist/components/_commonjsHelpers.js +1 -0
  168. package/dist/components/cesium-provider.js +1 -0
  169. package/dist/components/deck-provider.js +1 -0
  170. package/dist/components/events.js +1 -0
  171. package/dist/components/geotiff-source.js +1 -0
  172. package/dist/components/geotiff.js +4 -0
  173. package/dist/components/index.browser.js +15 -0
  174. package/dist/components/index.d.ts +35 -0
  175. package/dist/components/index.js +1 -0
  176. package/dist/components/index2.js +1 -0
  177. package/dist/components/index3.js +1 -0
  178. package/dist/components/index4.js +1 -0
  179. package/dist/components/index5.js +1 -0
  180. package/dist/components/index6.js +1 -0
  181. package/dist/components/index7.js +1 -0
  182. package/dist/components/index8.js +7 -0
  183. package/dist/components/layer-extension.js +1 -0
  184. package/dist/components/leaflet-provider.js +1 -0
  185. package/dist/components/main-dist.js +1 -0
  186. package/dist/components/messages.js +1 -0
  187. package/dist/components/openlayers-provider.js +1 -0
  188. package/dist/components/polygon-layer.js +1 -0
  189. package/dist/components/scenegraph-layer.js +1 -0
  190. package/dist/components/styleconfig.js +1 -0
  191. package/dist/components/styling.js +1 -0
  192. package/dist/components/v-map-builder.d.ts +11 -0
  193. package/dist/components/v-map-builder.js +2 -0
  194. package/dist/components/v-map-layer-geojson.d.ts +11 -0
  195. package/dist/components/v-map-layer-geojson.js +1 -0
  196. package/dist/components/v-map-layer-geojson2.js +1 -0
  197. package/dist/components/v-map-layer-geotiff.d.ts +11 -0
  198. package/dist/components/v-map-layer-geotiff.js +1 -0
  199. package/dist/components/v-map-layer-geotiff2.js +1 -0
  200. package/dist/components/v-map-layer-google.d.ts +11 -0
  201. package/dist/components/v-map-layer-google.js +1 -0
  202. package/dist/components/v-map-layer-google2.js +1 -0
  203. package/dist/components/v-map-layer-helper.js +1 -0
  204. package/dist/components/v-map-layer-osm.d.ts +11 -0
  205. package/dist/components/v-map-layer-osm.js +1 -0
  206. package/dist/components/v-map-layer-osm2.js +1 -0
  207. package/dist/components/v-map-layer-scatterplot.d.ts +11 -0
  208. package/dist/components/v-map-layer-scatterplot.js +1 -0
  209. package/dist/components/v-map-layer-scatterplot2.js +1 -0
  210. package/dist/components/v-map-layer-terrain-geotiff.d.ts +11 -0
  211. package/dist/components/v-map-layer-terrain-geotiff.js +1 -0
  212. package/dist/components/v-map-layer-terrain.d.ts +11 -0
  213. package/dist/components/v-map-layer-terrain.js +1 -0
  214. package/dist/components/v-map-layer-terrain2.js +1 -0
  215. package/dist/components/v-map-layer-tile3d.d.ts +11 -0
  216. package/dist/components/v-map-layer-tile3d.js +1 -0
  217. package/dist/components/v-map-layer-tile3d2.js +1 -0
  218. package/dist/components/v-map-layer-wcs.d.ts +11 -0
  219. package/dist/components/v-map-layer-wcs.js +1 -0
  220. package/dist/components/v-map-layer-wcs2.js +1 -0
  221. package/dist/components/v-map-layer-wfs.d.ts +11 -0
  222. package/dist/components/v-map-layer-wfs.js +1 -0
  223. package/dist/components/v-map-layer-wfs2.js +1 -0
  224. package/dist/components/v-map-layer-wkt.d.ts +11 -0
  225. package/dist/components/v-map-layer-wkt.js +1 -0
  226. package/dist/components/v-map-layer-wkt2.js +1 -0
  227. package/dist/components/v-map-layer-wms.d.ts +11 -0
  228. package/dist/components/v-map-layer-wms.js +1 -0
  229. package/dist/components/v-map-layer-wms2.js +1 -0
  230. package/dist/components/v-map-layer-xyz.d.ts +11 -0
  231. package/dist/components/v-map-layer-xyz.js +1 -0
  232. package/dist/components/v-map-layer-xyz2.js +1 -0
  233. package/dist/components/v-map-layercontrol.d.ts +11 -0
  234. package/dist/components/v-map-layercontrol.js +1 -0
  235. package/dist/components/v-map-layergroup.d.ts +11 -0
  236. package/dist/components/v-map-layergroup.js +1 -0
  237. package/dist/components/v-map-layergroup2.js +1 -0
  238. package/dist/components/v-map-style.d.ts +11 -0
  239. package/dist/components/v-map-style.js +1 -0
  240. package/dist/components/v-map-style2.js +10 -0
  241. package/dist/components/v-map.d.ts +11 -0
  242. package/dist/components/v-map.js +1 -0
  243. package/dist/components/v-map2.js +1 -0
  244. package/dist/esm/_commonjsHelpers-E-ZsRS8r.js +32 -0
  245. package/dist/esm/app-globals-DQuL1Twl.js +3 -0
  246. package/dist/esm/cesium-provider-BJfAup3w.js +2596 -0
  247. package/dist/esm/deck-provider-C7U9VDEq.js +47709 -0
  248. package/dist/esm/geotiff-BEWxTIfH.js +45 -0
  249. package/dist/esm/geotiff-source-esnDnC-u.js +1516 -0
  250. package/dist/esm/index-B1zwA4IC.js +685 -0
  251. package/dist/esm/index-BBpiaTpT.js +165 -0
  252. package/dist/esm/index-BIEmlzCf.js +1697 -0
  253. package/dist/esm/index-BUHa4Jj0.js +307 -0
  254. package/dist/esm/index-DbSdn93t.js +20461 -0
  255. package/dist/esm/index-RpJarvr_.js +10656 -0
  256. package/dist/esm/index-jN06TXUp.js +14 -0
  257. package/dist/esm/index-jzneDarq.js +1613 -0
  258. package/dist/esm/index.browser-DhQAXuA7.js +6860 -0
  259. package/dist/esm/index.js +1 -0
  260. package/dist/esm/layer-extension-CZXK5goK.js +63 -0
  261. package/dist/esm/leaflet-provider-Q41TB6ku.js +1794 -0
  262. package/dist/esm/loader.js +11 -0
  263. package/dist/esm/main-dist-CwnA7_Xn.js +2652 -0
  264. package/dist/esm/messages-CMKJzsgL.js +180 -0
  265. package/dist/esm/openlayers-provider-CMsDsQTQ.js +1602 -0
  266. package/dist/esm/polygon-layer-ByhxGhWC.js +1295 -0
  267. package/dist/esm/scenegraph-layer-09K_B6DT.js +2526 -0
  268. package/dist/esm/styleconfig-B-bAcABs.js +21 -0
  269. package/dist/esm/v-map-builder.entry.js +3784 -0
  270. package/dist/esm/v-map-layer-geojson_12.entry.js +40881 -0
  271. package/dist/esm/v-map-layer-helper-Dys44Cgo.js +283 -0
  272. package/dist/esm/v-map-layer-terrain-geotiff.entry.js +256 -0
  273. package/dist/esm/v-map-layercontrol.entry.js +245 -0
  274. package/dist/esm/v-map.js +21 -0
  275. package/dist/esm/v-map.v-map-layer-osm.v-map-layergroup-B4pFHuSf.js +572 -0
  276. package/dist/esm/v-map_3.entry.js +4 -0
  277. package/dist/index.cjs.js +1 -0
  278. package/dist/index.js +1 -0
  279. package/dist/types/cesium-augment.d.ts +5 -0
  280. package/dist/types/components/v-map/v-map.d.ts +70 -0
  281. package/dist/types/components/v-map/v-map.test.d.ts +1 -0
  282. package/dist/types/components/v-map-builder/v-map-builder.d.ts +48 -0
  283. package/dist/types/components/v-map-builder/v-map-builder.test.d.ts +1 -0
  284. package/dist/types/components/v-map-layer-geojson/v-map-layer-geojson.d.ts +129 -0
  285. package/dist/types/components/v-map-layer-geojson/v-map-layer-geojson.test.d.ts +1 -0
  286. package/dist/types/components/v-map-layer-geotiff/v-map-layer-geotiff.d.ts +74 -0
  287. package/dist/types/components/v-map-layer-geotiff/v-map-layer-geotiff.test.d.ts +1 -0
  288. package/dist/types/components/v-map-layer-google/v-map-layer-google.d.ts +78 -0
  289. package/dist/types/components/v-map-layer-osm/error-api.test.d.ts +1 -0
  290. package/dist/types/components/v-map-layer-osm/v-map-layer-osm.d.ts +50 -0
  291. package/dist/types/components/v-map-layer-osm/v-map-layer-osm.test.d.ts +1 -0
  292. package/dist/types/components/v-map-layer-scatterplot/v-map-layer-scatterplot.d.ts +54 -0
  293. package/dist/types/components/v-map-layer-terrain/v-map-layer-terrain.d.ts +74 -0
  294. package/dist/types/components/v-map-layer-terrain/v-map-layer-terrain.test.d.ts +1 -0
  295. package/dist/types/components/v-map-layer-terrain-geotiff/v-map-layer-terrain-geotiff.d.ts +117 -0
  296. package/dist/types/components/v-map-layer-terrain-geotiff/v-map-layer-terrain-geotiff.test.d.ts +1 -0
  297. package/dist/types/components/v-map-layer-tile3d/v-map-layer-tile3d.d.ts +69 -0
  298. package/dist/types/components/v-map-layer-tile3d/v-map-layer-tile3d.test.d.ts +1 -0
  299. package/dist/types/components/v-map-layer-wcs/v-map-layer-wcs.d.ts +47 -0
  300. package/dist/types/components/v-map-layer-wcs/v-map-layer-wcs.test.d.ts +1 -0
  301. package/dist/types/components/v-map-layer-wfs/v-map-layer-wfs.d.ts +59 -0
  302. package/dist/types/components/v-map-layer-wfs/v-map-layer-wfs.test.d.ts +1 -0
  303. package/dist/types/components/v-map-layer-wkt/v-map-layer-wkt.d.ts +132 -0
  304. package/dist/types/components/v-map-layer-wkt/v-map-layer-wkt.test.d.ts +1 -0
  305. package/dist/types/components/v-map-layer-wms/v-map-layer-wms.d.ts +76 -0
  306. package/dist/types/components/v-map-layer-wms/v-map-layer-wms.test.d.ts +1 -0
  307. package/dist/types/components/v-map-layer-xyz/v-map-layer-xyz.d.ts +59 -0
  308. package/dist/types/components/v-map-layer-xyz/v-map-layer-xyz.test.d.ts +1 -0
  309. package/dist/types/components/v-map-layercontrol/v-map-layercontrol.d.ts +44 -0
  310. package/dist/types/components/v-map-layercontrol/v-map-layercontrol.test.d.ts +1 -0
  311. package/dist/types/components/v-map-layergroup/v-map-layergroup.d.ts +31 -0
  312. package/dist/types/components/v-map-layergroup/v-map-layergroup.test.d.ts +1 -0
  313. package/dist/types/components/v-map-style/v-map-style.d.ts +75 -0
  314. package/dist/types/components/v-map-style/v-map-style.unit.d.ts +1 -0
  315. package/dist/types/components.d.ts +2391 -0
  316. package/dist/types/globals.d.ts +16 -0
  317. package/dist/types/index.d.ts +10 -0
  318. package/dist/types/layer/v-map-layer-helper.d.ts +45 -0
  319. package/dist/types/layer/v-map-layer-helper.unit.d.ts +1 -0
  320. package/dist/types/leaflet-augment.d.ts +15 -0
  321. package/dist/types/lib/cesium-loader.d.ts +3 -0
  322. package/dist/types/lib/ensure-importmap.d.ts +3 -0
  323. package/dist/types/lib/ensure-importmap.unit.d.ts +1 -0
  324. package/dist/types/lib/versions.gen.d.ts +5 -0
  325. package/dist/types/lib/vstyle.d.ts +44 -0
  326. package/dist/types/map-provider/cesium/CesiumGeoTIFFTerrainProvider.d.ts +92 -0
  327. package/dist/types/map-provider/cesium/CesiumLayerGroups.d.ts +64 -0
  328. package/dist/types/map-provider/cesium/GeoTIFFImageryProvider.d.ts +75 -0
  329. package/dist/types/map-provider/cesium/GeoTIFFImageryProvider.test.d.ts +1 -0
  330. package/dist/types/map-provider/cesium/cesium-provider.d.ts +87 -0
  331. package/dist/types/map-provider/cesium/i-layer.d.ts +11 -0
  332. package/dist/types/map-provider/cesium/layer-manager.d.ts +31 -0
  333. package/dist/types/map-provider/deck/DeckGLGeoTIFFLayer.d.ts +91 -0
  334. package/dist/types/map-provider/deck/DeckGLGeoTIFFTerrainLayer.d.ts +82 -0
  335. package/dist/types/map-provider/deck/LayerGroupWithModel.d.ts +55 -0
  336. package/dist/types/map-provider/deck/LayerGroups.d.ts +63 -0
  337. package/dist/types/map-provider/deck/LayerModel.d.ts +8 -0
  338. package/dist/types/map-provider/deck/RenderableGroup.d.ts +20 -0
  339. package/dist/types/map-provider/deck/deck-provider.d.ts +92 -0
  340. package/dist/types/map-provider/geotiff/geotiff-source.d.ts +30 -0
  341. package/dist/types/map-provider/geotiff/utils/AABB2D.d.ts +28 -0
  342. package/dist/types/map-provider/geotiff/utils/BVHNode2D.d.ts +36 -0
  343. package/dist/types/map-provider/geotiff/utils/GeoTIFFTileProcessor.d.ts +116 -0
  344. package/dist/types/map-provider/geotiff/utils/Triangle.d.ts +5 -0
  345. package/dist/types/map-provider/geotiff/utils/Triangulation.d.ts +94 -0
  346. package/dist/types/map-provider/geotiff/utils/colormap-utils.d.ts +47 -0
  347. package/dist/types/map-provider/geotiff/utils/normalization-utils.d.ts +39 -0
  348. package/dist/types/map-provider/geotiff/utils/sampling-utils.d.ts +13 -0
  349. package/dist/types/map-provider/leaflet/GeoTIFFGridLayer.d.ts +34 -0
  350. package/dist/types/map-provider/leaflet/WCSGridLayer.d.ts +38 -0
  351. package/dist/types/map-provider/leaflet/google-map-tiles-layer.d.ts +73 -0
  352. package/dist/types/map-provider/leaflet/leaflet-helpers.d.ts +6 -0
  353. package/dist/types/map-provider/leaflet/leaflet-provider.d.ts +73 -0
  354. package/dist/types/map-provider/ol/CustomGeoTiff.d.ts +14 -0
  355. package/dist/types/map-provider/ol/openlayers-helper.d.ts +2 -0
  356. package/dist/types/map-provider/ol/openlayers-provider.d.ts +80 -0
  357. package/dist/types/map-provider/provider-factory.d.ts +12 -0
  358. package/dist/types/map-provider/provider-factory.unit.d.ts +1 -0
  359. package/dist/types/namespaces.d.ts +3 -0
  360. package/dist/types/ol-augment.d.ts +3 -0
  361. package/dist/types/ol-override.d.ts +7 -0
  362. package/dist/types/ol.d.ts +10 -0
  363. package/dist/types/stencil-public-runtime.d.ts +1860 -0
  364. package/dist/types/testing/browser-test-utils.d.ts +6 -0
  365. package/dist/types/testing/e2e-testing.d.ts +5 -0
  366. package/dist/types/testing/e2e-utils.d.ts +4 -0
  367. package/dist/types/testing/geotiff-test-server.d.ts +5 -0
  368. package/dist/types/testing/mocks/geostyler-lyrx-parser.d.ts +11 -0
  369. package/dist/types/testing/mocks/geostyler-mapbox-parser.d.ts +11 -0
  370. package/dist/types/testing/mocks/geostyler-qgis-parser.d.ts +11 -0
  371. package/dist/types/testing/mocks/geostyler-sld-parser.d.ts +11 -0
  372. package/dist/types/testing/mocks/geostyler-style.d.ts +5 -0
  373. package/dist/types/testing/setupTests.browser.d.ts +1 -0
  374. package/dist/types/testing/setupTests.stencil.d.ts +1 -0
  375. package/dist/types/testing/setupTests.vitest.d.ts +1 -0
  376. package/dist/types/testing/stencil-testing-wrapper.d.ts +3 -0
  377. package/dist/types/types/color.d.ts +1 -0
  378. package/dist/types/types/cssmode.d.ts +1 -0
  379. package/dist/types/types/flavour.d.ts +1 -0
  380. package/dist/types/types/layerconfig.d.ts +207 -0
  381. package/dist/types/types/lonlat.d.ts +1 -0
  382. package/dist/types/types/mapinitoptions.d.ts +4 -0
  383. package/dist/types/types/mapprovider.d.ts +46 -0
  384. package/dist/types/types/provideroptions.d.ts +8 -0
  385. package/dist/types/types/styleconfig.d.ts +27 -0
  386. package/dist/types/types/styling.d.ts +24 -0
  387. package/dist/types/types/styling.unit.d.ts +1 -0
  388. package/dist/types/types/vmaplayer.d.ts +10 -0
  389. package/dist/types/utils/async-mutex.d.ts +7 -0
  390. package/dist/types/utils/diff.d.ts +64 -0
  391. package/dist/types/utils/diff.unit.d.ts +1 -0
  392. package/dist/types/utils/dom-env.d.ts +5 -0
  393. package/dist/types/utils/dom-env.unit.d.ts +1 -0
  394. package/dist/types/utils/events.d.ts +29 -0
  395. package/dist/types/utils/logger.d.ts +47 -0
  396. package/dist/types/utils/logger.unit.d.ts +1 -0
  397. package/dist/types/utils/messages.d.ts +12 -0
  398. package/dist/types/utils/spatial-utils.d.ts +6 -0
  399. package/dist/types/utils/spatial-utils.unit.d.ts +1 -0
  400. package/dist/types/versions.d.ts +7 -0
  401. package/dist/v-map/index.esm.js +0 -0
  402. package/dist/v-map/p--vVleK-M.js +1 -0
  403. package/dist/v-map/p-09d10db0.entry.js +1 -0
  404. package/dist/v-map/p-5eba6058.entry.js +10 -0
  405. package/dist/v-map/p-6b102336.entry.js +1 -0
  406. package/dist/v-map/p-B-bAcABs.js +1 -0
  407. package/dist/v-map/p-BBpiaTpT.js +1 -0
  408. package/dist/v-map/p-BdijL4Av.js +1 -0
  409. package/dist/v-map/p-Be3r33VF.js +4 -0
  410. package/dist/v-map/p-BeFu0ap4.js +1 -0
  411. package/dist/v-map/p-BxFJezdK.js +1 -0
  412. package/dist/v-map/p-CMKJzsgL.js +1 -0
  413. package/dist/v-map/p-CXfA_q8m.js +1 -0
  414. package/dist/v-map/p-CZqY0yW4.js +1 -0
  415. package/dist/v-map/p-CafTHT9i.js +1 -0
  416. package/dist/v-map/p-DCTHyf58.js +1 -0
  417. package/dist/v-map/p-DQuL1Twl.js +1 -0
  418. package/dist/v-map/p-DR9McdNX.js +1 -0
  419. package/dist/v-map/p-Dckgonw8.js +1 -0
  420. package/dist/v-map/p-DhQAXuA7.js +15 -0
  421. package/dist/v-map/p-DmICdG34.js +7 -0
  422. package/dist/v-map/p-DrOQ9V4h.js +1 -0
  423. package/dist/v-map/p-DvHXtWUg.js +1 -0
  424. package/dist/v-map/p-E-ZsRS8r.js +1 -0
  425. package/dist/v-map/p-MyTSFnEk.js +1 -0
  426. package/dist/v-map/p-RpJarvr_.js +1 -0
  427. package/dist/v-map/p-WaMDUuAz.js +1 -0
  428. package/dist/v-map/p-aa410e64.entry.js +2 -0
  429. package/dist/v-map/p-c21c93fe.entry.js +1 -0
  430. package/dist/v-map/p-jzneDarq.js +2 -0
  431. package/dist/v-map/p-uiIP-taz.js +1 -0
  432. package/dist/v-map/v-map.esm.js +1 -0
  433. package/loader/cdn.js +1 -0
  434. package/loader/index.cjs.js +1 -0
  435. package/loader/index.d.ts +24 -0
  436. package/loader/index.es2017.js +1 -0
  437. package/loader/index.js +2 -0
  438. package/package.json +193 -0
@@ -0,0 +1 @@
1
+ import{d as t}from"./p-MyTSFnEk.js";class e{static get componentName(){return Object.prototype.hasOwnProperty.call(this,"extensionName")?this.extensionName:""}constructor(t){t&&(this.opts=t)}equals(e){return this===e||this.constructor===e.constructor&&t(this.opts,e.opts,1)}getShaders(t){return null}getSubLayerProps(t){const{defaultProps:e}=t.constructor,s={updateTriggers:{}};for(const t in e)if(t in this.props){const i=e[t],r=this.props[t];s[t]=r,i&&"accessor"===i.type&&(s.updateTriggers[t]=this.props.updateTriggers[t],"function"==typeof r&&(s[t]=this.getSubLayerAccessor(r)))}return s}initializeState(t,e){}updateState(t,e){}onNeedsRedraw(t){}getNeedsPickingBuffer(t){return!1}draw(t,e){}finalizeState(t,e){}}e.defaultProps={},e.extensionName="LayerExtension";export{e as L}
@@ -0,0 +1 @@
1
+ import{C as t}from"./p-DvHXtWUg.js";export{A as ArcLayer,P as PointCloudLayer,a as PolygonLayer}from"./p-DvHXtWUg.js";import{G as n,u as o,L as i,p as r,c as s,a as l,U as c,M as u}from"./p-MyTSFnEk.js";export{B as BitmapLayer,e as GeoJsonLayer,I as IconLayer,P as PathLayer,b as ScatterplotLayer,f as SolidPolygonLayer,T as TextLayer,g as _MultiIconLayer,h as _TextBackgroundLayer}from"./p-MyTSFnEk.js";import"./p-B-bAcABs.js";import"./p-DhQAXuA7.js";import"./p-DR9McdNX.js";import"./p-E-ZsRS8r.js";import"./p-CMKJzsgL.js";import"./p-Dckgonw8.js";import"@loaders.gl/core";import"@loaders.gl/images";import"@loaders.gl/loader-utils";import"@loaders.gl/terrain";import"@loaders.gl/schema";class d extends n{constructor(e={}){const{id:t=o("cube-geometry"),indices:n=!0}=e;super(n?{...e,id:t,topology:"triangle-list",indices:{size:1,value:p},attributes:{...S,...e.attributes}}:{...e,id:t,topology:"triangle-list",indices:void 0,attributes:{...C,...e.attributes}})}}const p=new Uint16Array([0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]),v=new Float32Array([-1,-1,1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1]),_=new Float32Array([0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0]),m=new Float32Array([0,0,1,0,1,1,0,1,1,0,1,1,0,1,0,0,0,1,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,0,0,1,0,1,1,0,1]),w=new Float32Array([1,-1,1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,1,1,1,-1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1]),x=new Float32Array([1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,1,0,0]),y=new Float32Array([1,0,1,1,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0,0,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,0,1,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,0,1,1,1,0,0,1,1,0,0,1,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,1,0,1,1,1,0,1,1,0,0,1,0,1,0,1]),S={POSITION:{size:3,value:v},NORMAL:{size:3,value:_},TEXCOORD_0:{size:2,value:m}},C={POSITION:{size:3,value:w},TEXCOORD_0:{size:2,value:x},COLOR_0:{size:3,value:y}},L="uniform lineUniforms {\n float widthScale;\n float widthMinPixels;\n float widthMaxPixels;\n float useShortestPath;\n highp int widthUnits;\n} line;\n",z={name:"line",source:"struct LineUniforms {\n widthScale: f32,\n widthMinPixels: f32,\n widthMaxPixels: f32,\n useShortestPath: f32,\n widthUnits: i32,\n};\n\n@group(0) @binding(1)\nvar<uniform> line: LineUniforms;\n",vs:L,fs:L,uniformTypes:{widthScale:"f32",widthMinPixels:"f32",widthMaxPixels:"f32",useShortestPath:"f32",widthUnits:"i32"}},O={getSourcePosition:{type:"accessor",value:e=>e.sourcePosition},getTargetPosition:{type:"accessor",value:e=>e.targetPosition},getColor:{type:"accessor",value:[0,0,0,255]},getWidth:{type:"accessor",value:1},widthUnits:"pixels",widthScale:{type:"number",value:1,min:0},widthMinPixels:{type:"number",value:0,min:0},widthMaxPixels:{type:"number",value:Number.MAX_SAFE_INTEGER,min:0}};class M extends i{getBounds(){return this.getAttributeManager()?.getBounds(["instanceSourcePositions","instanceTargetPositions"])}getShaders(){return super.getShaders({vs:"#version 300 es\n#define SHADER_NAME line-layer-vertex-shader\nin vec3 positions;\nin vec3 instanceSourcePositions;\nin vec3 instanceTargetPositions;\nin vec3 instanceSourcePositions64Low;\nin vec3 instanceTargetPositions64Low;\nin vec4 instanceColors;\nin vec3 instancePickingColors;\nin float instanceWidths;\nout vec4 vColor;\nout vec2 uv;\nvec2 getExtrusionOffset(vec2 line_clipspace, float offset_direction, float width) {\nvec2 dir_screenspace = normalize(line_clipspace * project.viewportSize);\ndir_screenspace = vec2(-dir_screenspace.y, dir_screenspace.x);\nreturn dir_screenspace * offset_direction * width / 2.0;\n}\nvec3 splitLine(vec3 a, vec3 b, float x) {\nfloat t = (x - a.x) / (b.x - a.x);\nreturn vec3(x, mix(a.yz, b.yz, t));\n}\nvoid main(void) {\ngeometry.worldPosition = instanceSourcePositions;\ngeometry.worldPositionAlt = instanceTargetPositions;\nvec3 source_world = instanceSourcePositions;\nvec3 target_world = instanceTargetPositions;\nvec3 source_world_64low = instanceSourcePositions64Low;\nvec3 target_world_64low = instanceTargetPositions64Low;\nif (line.useShortestPath > 0.5 || line.useShortestPath < -0.5) {\nsource_world.x = mod(source_world.x + 180., 360.0) - 180.;\ntarget_world.x = mod(target_world.x + 180., 360.0) - 180.;\nfloat deltaLng = target_world.x - source_world.x;\nif (deltaLng * line.useShortestPath > 180.) {\nsource_world.x += 360. * line.useShortestPath;\nsource_world = splitLine(source_world, target_world, 180. * line.useShortestPath);\nsource_world_64low = vec3(0.0);\n} else if (deltaLng * line.useShortestPath < -180.) {\ntarget_world.x += 360. * line.useShortestPath;\ntarget_world = splitLine(source_world, target_world, 180. * line.useShortestPath);\ntarget_world_64low = vec3(0.0);\n} else if (line.useShortestPath < 0.) {\ngl_Position = vec4(0.);\nreturn;\n}\n}\nvec4 source_commonspace;\nvec4 target_commonspace;\nvec4 source = project_position_to_clipspace(source_world, source_world_64low, vec3(0.), source_commonspace);\nvec4 target = project_position_to_clipspace(target_world, target_world_64low, vec3(0.), target_commonspace);\nfloat segmentIndex = positions.x;\nvec4 p = mix(source, target, segmentIndex);\ngeometry.position = mix(source_commonspace, target_commonspace, segmentIndex);\nuv = positions.xy;\ngeometry.uv = uv;\ngeometry.pickingColor = instancePickingColors;\nfloat widthPixels = clamp(\nproject_size_to_pixel(instanceWidths * line.widthScale, line.widthUnits),\nline.widthMinPixels, line.widthMaxPixels\n);\nvec3 offset = vec3(\ngetExtrusionOffset(target.xy - source.xy, positions.y, widthPixels),\n0.0);\nDECKGL_FILTER_SIZE(offset, geometry);\nDECKGL_FILTER_GL_POSITION(p, geometry);\ngl_Position = p + vec4(project_pixel_size_to_clipspace(offset.xy), 0.0, 0.0);\nvColor = vec4(instanceColors.rgb, instanceColors.a * layer.opacity);\nDECKGL_FILTER_COLOR(vColor, geometry);\n}\n",fs:"#version 300 es\n#define SHADER_NAME line-layer-fragment-shader\nprecision highp float;\nin vec4 vColor;\nin vec2 uv;\nout vec4 fragColor;\nvoid main(void) {\ngeometry.uv = uv;\nfragColor = vColor;\nDECKGL_FILTER_COLOR(fragColor, geometry);\n}\n",source:'// ---------- Helper Structures & Functions ----------\n\n// Placeholder filter functions.\nfn deckgl_filter_size(offset: vec3<f32>, geometry: Geometry) -> vec3<f32> {\n return offset;\n}\nfn deckgl_filter_gl_position(p: vec4<f32>, geometry: Geometry) -> vec4<f32> {\n return p;\n}\nfn deckgl_filter_color(color: vec4<f32>, geometry: Geometry) -> vec4<f32> {\n return color;\n}\n\n// Compute an extrusion offset given a line direction (in clipspace),\n// an offset direction (-1 or 1), and a width in pixels.\n// Assumes a uniform "project" with a viewportSize field is available.\nfn getExtrusionOffset(line_clipspace: vec2<f32>, offset_direction: f32, width: f32) -> vec2<f32> {\n // project.viewportSize should be provided as a uniform (not shown here)\n let dir_screenspace = normalize(line_clipspace * project.viewportSize);\n // Rotate by 90°: (x,y) becomes (-y,x)\n let rotated = vec2<f32>(-dir_screenspace.y, dir_screenspace.x);\n return rotated * offset_direction * width / 2.0;\n}\n\n// Splits the line between two points at a given x coordinate.\n// Interpolates the y and z components.\nfn splitLine(a: vec3<f32>, b: vec3<f32>, x: f32) -> vec3<f32> {\n let t: f32 = (x - a.x) / (b.x - a.x);\n return vec3<f32>(x, a.yz + t * (b.yz - a.yz));\n}\n\n// ---------- Uniforms & Global Structures ----------\n\n// Uniforms for line, color, and project are assumed to be defined elsewhere.\n// For example:\n//\n// @group(0) @binding(0)\n// var<uniform> line: LineUniform;\n//\n// struct ColorUniform {\n// opacity: f32,\n// };\n// @group(0) @binding(1)\n// var<uniform> color: ColorUniform;\n//\n// struct ProjectUniform {\n// viewportSize: vec2<f32>,\n// };\n// @group(0) @binding(2)\n// var<uniform> project: ProjectUniform;\n\n\n\n// ---------- Vertex Output Structure ----------\n\nstruct Varyings {\n @builtin(position) gl_Position: vec4<f32>,\n @location(0) vColor: vec4<f32>,\n @location(1) uv: vec2<f32>,\n};\n\n// ---------- Vertex Shader Entry Point ----------\n\n@vertex\nfn vertexMain(\n @location(0) positions: vec3<f32>,\n @location(1) instanceSourcePositions: vec3<f32>,\n @location(2) instanceTargetPositions: vec3<f32>,\n @location(3) instanceSourcePositions64Low: vec3<f32>,\n @location(4) instanceTargetPositions64Low: vec3<f32>,\n @location(5) instanceColors: vec4<f32>,\n @location(6) instancePickingColors: vec3<f32>,\n @location(7) instanceWidths: f32\n) -> Varyings {\n var geometry: Geometry;\n geometry.worldPosition = instanceSourcePositions;\n geometry.worldPositionAlt = instanceTargetPositions;\n\n var source_world: vec3<f32> = instanceSourcePositions;\n var target_world: vec3<f32> = instanceTargetPositions;\n var source_world_64low: vec3<f32> = instanceSourcePositions64Low;\n var target_world_64low: vec3<f32> = instanceTargetPositions64Low;\n\n // Apply shortest-path adjustments if needed.\n if (line.useShortestPath > 0.5 || line.useShortestPath < -0.5) {\n source_world.x = (source_world.x + 180.0 % 360.0) - 180.0;\n target_world.x = (target_world.x + 180.0 % 360.0) - 180.0;\n let deltaLng: f32 = target_world.x - source_world.x;\n\n if (deltaLng * line.useShortestPath > 180.0) {\n source_world.x = source_world.x + 360.0 * line.useShortestPath;\n source_world = splitLine(source_world, target_world, 180.0 * line.useShortestPath);\n source_world_64low = vec3<f32>(0.0, 0.0, 0.0);\n } else if (deltaLng * line.useShortestPath < -180.0) {\n target_world.x = target_world.x + 360.0 * line.useShortestPath;\n target_world = splitLine(source_world, target_world, 180.0 * line.useShortestPath);\n target_world_64low = vec3<f32>(0.0, 0.0, 0.0);\n } else if (line.useShortestPath < 0.0) {\n var abortOut: Varyings;\n abortOut.gl_Position = vec4<f32>(0.0);\n abortOut.vColor = vec4<f32>(0.0);\n abortOut.uv = vec2<f32>(0.0);\n return abortOut;\n }\n }\n\n // Project Pos and target positions to clip space.\n let sourceResult = project_position_to_clipspace_and_commonspace(source_world, source_world_64low, vec3<f32>(0.0));\n let targetResult = project_position_to_clipspace_and_commonspace(target_world, target_world_64low, vec3<f32>(0.0));\n let sourcePos: vec4<f32> = sourceResult.clipPosition;\n let targetPos: vec4<f32> = targetResult.clipPosition;\n let source_commonspace: vec4<f32> = sourceResult.commonPosition;\n let target_commonspace: vec4<f32> = targetResult.commonPosition;\n\n // Interpolate along the line segment.\n let segmentIndex: f32 = positions.x;\n let p: vec4<f32> = sourcePos + segmentIndex * (targetPos - sourcePos);\n geometry.position = source_commonspace + segmentIndex * (target_commonspace - source_commonspace);\n let uv: vec2<f32> = positions.xy;\n geometry.uv = uv;\n geometry.pickingColor = instancePickingColors;\n\n // Determine width in pixels.\n let widthPixels: f32 = clamp(\n project_unit_size_to_pixel(instanceWidths * line.widthScale, line.widthUnits),\n line.widthMinPixels, line.widthMaxPixels\n );\n\n // Compute extrusion offset.\n let extrusion: vec2<f32> = getExtrusionOffset(targetPos.xy - sourcePos.xy, positions.y, widthPixels);\n let offset: vec3<f32> = vec3<f32>(extrusion, 0.0);\n\n // Apply deck.gl filter functions.\n let filteredOffset = deckgl_filter_size(offset, geometry);\n let filteredP = deckgl_filter_gl_position(p, geometry);\n\n let clipOffset: vec2<f32> = project_pixel_size_to_clipspace(filteredOffset.xy);\n let finalPosition: vec4<f32> = filteredP + vec4<f32>(clipOffset, 0.0, 0.0);\n\n // Compute color.\n var vColor: vec4<f32> = vec4<f32>(instanceColors.rgb, instanceColors.a * color.opacity);\n // vColor = deckgl_filter_color(vColor, geometry);\n\n var output: Varyings;\n output.gl_Position = finalPosition;\n output.vColor = vColor;\n output.uv = uv;\n return output;\n}\n\n@fragment\nfn fragmentMain(\n @location(0) vColor: vec4<f32>,\n @location(1) uv: vec2<f32>\n) -> @location(0) vec4<f32> {\n // Create and initialize geometry with the provided uv.\n var geometry: Geometry;\n geometry.uv = uv;\n\n // Start with the input color.\n var fragColor: vec4<f32> = vColor;\n\n // Apply the deck.gl filter to the color.\n fragColor = deckgl_filter_color(fragColor, geometry);\n\n // Apply premultiplied alpha as required by transparent canvas\n fragColor = deckgl_premultiplied_alpha(fragColor);\n\n return fragColor;\n}\n',modules:[r,s,l,z]})}get wrapLongitude(){return!1}initializeState(){this.getAttributeManager().addInstanced({instanceSourcePositions:{size:3,type:"float64",fp64:this.use64bitPositions(),transition:!0,accessor:"getSourcePosition"},instanceTargetPositions:{size:3,type:"float64",fp64:this.use64bitPositions(),transition:!0,accessor:"getTargetPosition"},instanceColors:{size:this.props.colorFormat.length,type:"unorm8",transition:!0,accessor:"getColor",defaultValue:[0,0,0,255]},instanceWidths:{size:1,transition:!0,accessor:"getWidth",defaultValue:1}})}updateState(e){super.updateState(e),e.changeFlags.extensionsChanged&&(this.state.model?.destroy(),this.state.model=this._getModel(),this.getAttributeManager().invalidateAll())}draw({}){const{widthUnits:e,widthScale:t,widthMinPixels:n,widthMaxPixels:o,wrapLongitude:i}=this.props,r=this.state.model,s={widthUnits:c[e],widthScale:t,widthMinPixels:n,widthMaxPixels:o,useShortestPath:i?1:0};r.shaderInputs.setProps({line:s}),r.draw(this.context.renderPass),i&&(r.shaderInputs.setProps({line:{...s,useShortestPath:-1}}),r.draw(this.context.renderPass))}_getModel(){const e="webgpu"===this.context.device.type?{depthWriteEnabled:!0,depthCompare:"less-equal"}:void 0;return new u(this.context.device,{...this.getShaders(),id:this.props.id,bufferLayout:this.getAttributeManager().getBufferLayouts(),geometry:new n({topology:"triangle-strip",attributes:{positions:{size:3,value:new Float32Array([0,-1,0,0,1,0,1,-1,0,1,1,0])}}}),parameters:e,isInstanced:!0})}}M.layerName="LineLayer",M.defaultProps=O;class j extends t{_updateGeometry(){const e=new d;this.state.fillModel.setGeometry(e)}draw({}){const{elevationScale:e,extruded:t,offset:n,coverage:o,cellSize:i,angle:r,radiusUnits:s}=this.props,a=this.state.fillModel;a.shaderInputs.setProps({column:{radius:i/2,radiusUnits:c[s],angle:r,offset:n,extruded:t,stroked:!1,coverage:o,elevationScale:e,edgeDistance:1,isStroke:!1,widthUnits:0,widthScale:0,widthMinPixels:0,widthMaxPixels:0}}),a.draw(this.context.renderPass)}}j.layerName="GridCellLayer",j.defaultProps={cellSize:{type:"number",min:0,value:1e3},offset:{type:"array",value:[1,1]}};export{t as ColumnLayer,j as GridCellLayer,M as LineLayer}
@@ -0,0 +1 @@
1
+ export{S as SimpleMeshLayer}from"./p-MyTSFnEk.js";export{S as ScenegraphLayer}from"./p-DrOQ9V4h.js";import"./p-B-bAcABs.js";import"./p-DhQAXuA7.js";import"./p-DR9McdNX.js";import"./p-E-ZsRS8r.js";import"./p-CMKJzsgL.js";import"./p-Dckgonw8.js";import"@loaders.gl/core";import"@loaders.gl/images";import"@loaders.gl/loader-utils";import"@loaders.gl/terrain";import"@loaders.gl/schema";import"@loaders.gl/gltf";
@@ -0,0 +1 @@
1
+ const o=()=>{};export{o as g}
@@ -0,0 +1 @@
1
+ import{g as n}from"./p-E-ZsRS8r.js";function r(n,r){return r.forEach((function(r){r&&"string"!=typeof r&&!Array.isArray(r)&&Object.keys(r).forEach((function(t){if("default"!==t&&!(t in n)){var e=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(n,t,e.get?e:{enumerable:!0,get:function(){return r[t]}})}}))})),Object.freeze(n)}var t,e={exports:{}},u=function(){if(t)return e.exports;t=1,e.exports=u,e.exports.parse=u,e.exports.stringify=function n(r){function t(n){return n.join(" ")}function e(n){return n.map(t).join(", ")}function u(n){return n.map(e).map(i).join(", ")}function i(n){return"("+n+")"}switch("Feature"===r.type&&(r=r.geometry),r.type){case"Point":return"POINT ("+t(r.coordinates)+")";case"LineString":return"LINESTRING ("+e(r.coordinates)+")";case"Polygon":return"POLYGON ("+u(r.coordinates)+")";case"MultiPoint":return"MULTIPOINT ("+e(r.coordinates)+")";case"MultiPolygon":return"MULTIPOLYGON ("+r.coordinates.map(u).map(i).join(", ")+")";case"MultiLineString":return"MULTILINESTRING ("+u(r.coordinates)+")";case"GeometryCollection":return"GEOMETRYCOLLECTION ("+r.geometries.map(n).join(", ")+")";default:throw new Error("stringify requires a valid GeoJSON Feature or geometry object as input")}};var n=/[-+]?([0-9]*\.[0-9]+|[0-9]+)([eE][-+]?[0-9]+)?/,r=new RegExp("^"+n.source+"(\\s"+n.source+"){1,}");function u(n){var t,e=n.split(";"),u=e.pop(),i=(e.shift()||"").split("=").pop(),l=0;function o(n){var r=u.substring(l).match(n);return r?(l+=r[0].length,r[0]):null}function a(){o(/^\s*/)}function f(){a();for(var n,t=0,e=[],u=[e],i=e;n=o(/^(\()/)||o(/^(\))/)||o(/^(,)/)||o(r);){if("("===n)u.push(i),u[u.length-1].push(i=[]),t++;else if(")"===n){if(0===i.length)return null;if(!(i=u.pop()))return null;if(0==--t)break}else if(","===n)u[u.length-1].push(i=[]);else{if(n.split(/\s/g).some(isNaN))return null;Array.prototype.push.apply(i,n.split(/\s/g).map(parseFloat))}a()}return 0!==t?null:e}function c(){for(var n,t,e=[];t=o(r)||o(/^(,)/);)","===t?(e.push(n),n=[]):t.split(/\s/g).some(isNaN)||(n||(n=[]),Array.prototype.push.apply(n,t.split(/\s/g).map(parseFloat))),a();return n?(e.push(n),e.length?e:null):null}return(t=function n(){return function(){if(!o(/^(point(\sz)?)/i))return null;if(a(),!o(/^(\()/))return null;var n=c();return n?(a(),o(/^(\))/)?{type:"Point",coordinates:n[0]}:null):null}()||function(){if(!o(/^(linestring(\sz)?)/i))return null;if(a(),!o(/^(\()/))return null;var n=c();return n&&o(/^(\))/)?{type:"LineString",coordinates:n}:null}()||function(){if(!o(/^(polygon(\sz)?)/i))return null;a();var n=f();return n?{type:"Polygon",coordinates:n}:null}()||function(){if(!o(/^(multipoint)/i))return null;a();var n=u.substring(u.indexOf("(")+1,u.length-1).replace(/\(/g,"").replace(/\)/g,"");u="MULTIPOINT ("+n+")";var r=f();return r?(a(),{type:"MultiPoint",coordinates:r}):null}()||function(){if(!o(/^(multilinestring)/i))return null;a();var n=f();return n?(a(),{type:"MultiLineString",coordinates:n}):null}()||function(){if(!o(/^(multipolygon)/i))return null;a();var n=f();return n?{type:"MultiPolygon",coordinates:n}:null}()||function(){var r,t=[];if(!o(/^(geometrycollection)/i))return null;if(a(),!o(/^(\()/))return null;for(;r=n();)t.push(r),a(),o(/^(,)/),a();return o(/^(\))/)?{type:"GeometryCollection",geometries:t}:null}()}())&&i.match(/\d+/)&&(t.crs={type:"name",properties:{name:"urn:ogc:def:crs:EPSG::"+i}}),t}return e.exports}(),i=r({__proto__:null,default:n(u)},[u]);export{i,u as w}
@@ -0,0 +1 @@
1
+ import{w as t,l as e}from"./p-CMKJzsgL.js";const r={grayscale:[{value:0,color:[0,0,0]},{value:1,color:[255,255,255]}],viridis:[{value:0,color:[68,1,84]},{value:.25,color:[59,82,139]},{value:.5,color:[33,145,140]},{value:.75,color:[94,201,98]},{value:1,color:[253,231,37]}],terrain:[{value:0,color:[0,128,0]},{value:.25,color:[139,195,74]},{value:.5,color:[255,235,59]},{value:.75,color:[255,152,0]},{value:1,color:[255,255,255]}],turbo:[{value:0,color:[48,18,59]},{value:.2,color:[33,102,172]},{value:.4,color:[68,190,112]},{value:.6,color:[253,231,37]},{value:.8,color:[234,51,35]},{value:1,color:[122,4,3]}],rainbow:[{value:0,color:[148,0,211]},{value:.2,color:[0,0,255]},{value:.4,color:[0,255,0]},{value:.6,color:[255,255,0]},{value:.8,color:[255,127,0]},{value:1,color:[255,0,0]}]};function n(t,e){const r=Math.max(0,Math.min(1,t));if(0===e.length)return[0,0,0];if(1===e.length)return e[0].color;let n=0,a=e.length-1;if(r<=e[n].value)return e[n].color;if(r>=e[a].value)return e[a].color;for(;a-n>1;){const t=Math.floor((n+a)/2);e[t].value<=r?n=t:a=t}const i=e[n],o=e[a],s=(r-i.value)/(o.value-i.value);return[Math.round(i.color[0]+s*(o.color[0]-i.color[0])),Math.round(i.color[1]+s*(o.color[1]-i.color[1])),Math.round(i.color[2]+s*(o.color[2]-i.color[2]))]}function a(e,n){if("string"==typeof e){const n=r[e];return n?{stops:n}:(t(`Unknown colormap: ${e}, using grayscale`),{stops:r.grayscale})}return function(e,n){const a=e.colorMapEntries||[];if(0===a.length)return t("GeoStyler ColorMap has no entries, using grayscale"),{stops:r.grayscale};const i=a.map((t=>t.quantity)).filter((t=>"number"==typeof t));let o,s;n?[o,s]=n:i.length>0?(o=Math.min(...i),s=Math.max(...i)):(o=0,s=1),s===o&&(s=o+1);const l=a.map((e=>{const r=(("number"==typeof e.quantity?e.quantity:0)-o)/(s-o),n=function(e){let r=e.trim();if(r.startsWith("#")&&(r=r.slice(1)),3===r.length&&(r=r.split("").map((t=>t+t)).join("")),6!==r.length)return t(`Invalid hex color: ${e}, using black`),[0,0,0];const n=parseInt(r.slice(0,2),16),a=parseInt(r.slice(2,4),16),i=parseInt(r.slice(4,6),16);return isNaN(n)||isNaN(a)||isNaN(i)?(t(`Invalid hex color: ${e}, using black`),[0,0,0]):[n,a,i]}("string"==typeof e.color?e.color:String(e.color));return{value:Math.max(0,Math.min(1,r)),color:n}}));return l.sort(((t,e)=>t.value-e.value)),{stops:l,computedRange:n?void 0:[o,s]}}(e,n)}class i{min;max;constructor(t,e){this.min=t,this.max=e}contains(t){return t.x>=this.min.x&&t.x<=this.max.x&&t.y>=this.min.y&&t.y<=this.max.y}static fromTriangle(t){const e=Math.min(t.a.x,t.b.x,t.c.x),r=Math.min(t.a.y,t.b.y,t.c.y),n=Math.max(t.a.x,t.b.x,t.c.x),a=Math.max(t.a.y,t.b.y,t.c.y);return new i({x:e,y:r},{x:n,y:a})}static union(t,e){return new i({x:Math.min(t.min.x,e.min.x),y:Math.min(t.min.y,e.min.y)},{x:Math.max(t.max.x,e.max.x),y:Math.max(t.max.y,e.max.y)})}}class o{bbox;triangles;left;right;constructor(t,e=[],r=null,n=null){this.bbox=t,this.triangles=e,this.left=r,this.right=n}static build(t,e=0,r=10){if(t.length<=2||e>=r){let e=i.fromTriangle(t[0]);for(let r=1;r<t.length;r++)e=i.union(e,i.fromTriangle(t[r]));return new o(e,t)}const n=t.map((t=>({x:(t.a.x+t.b.x+t.c.x)/3,y:(t.a.y+t.b.y+t.c.y)/3}))),{min:a,max:s}=n.reduce(((t,e)=>({min:{x:Math.min(t.min.x,e.x),y:Math.min(t.min.y,e.y)},max:{x:Math.max(t.max.x,e.x),y:Math.max(t.max.y,e.y)}})),{min:n[0],max:n[0]}),l=s.x-a.x>s.y-a.y?"x":"y";n.sort(((t,e)=>t[l]-e[l]));const h=Math.floor(n.length/2),u=[],c=[];for(let e=0;e<t.length;e++)(e<h?u:c).push(t[e]);const f=o.build(u,e+1,r),d=o.build(c,e+1,r),M=i.union(f.bbox,d.bbox);return new o(M,[],f,d)}findContainingTriangle(t){if(!this.bbox.contains(t))return null;if(this.triangles.length>0){for(const e of this.triangles)if(o.punktInDreieck2D(t,e))return e;return null}return this.left?.findContainingTriangle(t)||this.right?.findContainingTriangle(t)||null}static punktInDreieck2D(t,e){const{a:r,b:n,c:a}=e,i=a.x-r.x,o=a.y-r.y,s=n.x-r.x,l=n.y-r.y,h=t.x-r.x,u=t.y-r.y,c=i*i+o*o,f=i*s+o*l,d=i*h+o*u,M=s*s+l*l,m=s*h+l*u,g=1/(c*M-f*f),p=(M*d-f*m)*g,y=(c*m-f*d)*g;return p>=0&&y>=0&&p+y<=1}static toTriangle2D(t){return{a:{x:t.target[0][0],y:t.target[0][1]},b:{x:t.target[1][0],y:t.target[1][1]},c:{x:t.target[2][0],y:t.target[2][1]},triangle:t,transform:null}}toString(t=""){const e=this.triangles.length>0;let r=`${t}${e?"LEAF":"NODE"} bbox=[${this.bbox.min.x.toFixed(2)}, ${this.bbox.min.y.toFixed(2)}, ${this.bbox.max.x.toFixed(2)}, ${this.bbox.max.y.toFixed(2)}]`;if(e){const t=this.triangles.map((t=>t.a.x.toFixed(2)+","+t.a.y.toFixed(2)+" "+t.b.x.toFixed(2)+","+t.b.y.toFixed(2)+" "+t.c.x.toFixed(2)+","+t.c.y.toFixed(2))).toString();r+=` triangles=${this.triangles.length} - ${t}`}else r+="\n",this.left&&(r+=`${t}├─ left:\n${this.left.toString(t+"│ ")}`),this.right&&(r+=`${t}└─ right:\n${this.right.toString(t+" ")}`);return r}getStats(){const t={depth:1,nodeCount:1,leafCount:0,triangleCount:this.triangles.length,minTrianglesPerLeaf:1/0,maxTrianglesPerLeaf:0};if(this.triangles.length>0)t.leafCount=1,t.minTrianglesPerLeaf=this.triangles.length,t.maxTrianglesPerLeaf=this.triangles.length;else{if(this.left){const e=this.left.getStats();t.depth=Math.max(t.depth,e.depth+1),t.nodeCount+=e.nodeCount,t.leafCount+=e.leafCount,t.triangleCount+=e.triangleCount,t.minTrianglesPerLeaf=Math.min(t.minTrianglesPerLeaf,e.minTrianglesPerLeaf),t.maxTrianglesPerLeaf=Math.max(t.maxTrianglesPerLeaf,e.maxTrianglesPerLeaf)}if(this.right){const e=this.right.getStats();t.depth=Math.max(t.depth,e.depth+1),t.nodeCount+=e.nodeCount,t.leafCount+=e.leafCount,t.triangleCount+=e.triangleCount,t.minTrianglesPerLeaf=Math.min(t.minTrianglesPerLeaf,e.minTrianglesPerLeaf),t.maxTrianglesPerLeaf=Math.max(t.maxTrianglesPerLeaf,e.maxTrianglesPerLeaf)}}return t}}function s(t,e,r,n,a=10){const[i,o,s,l]=r;let h=1/0,u=1/0,c=-1/0,f=-1/0,d=[0,0],M=[0,0],m=[0,0],g=[0,0];const p=(t,e,r)=>{for(let a=0;a<=r;a++){const i=a/r,o=[t[0]+(e[0]-t[0])*i,t[1]+(e[1]-t[1])*i],[s,l]=n(o);s<h&&(h=s,d=o),l<u&&(u=l,M=o),s>c&&(c=s,m=o),l>f&&(f=l,g=o)}};if(p([i,l],[s,l],a),p([s,l],[s,o],a),p([s,o],[i,o],a),p([i,o],[i,l],a),null!=t&&null!=e){const r=Math.floor((h-t[0])/e);h=t[0]+r*e;const n=Math.floor((u-t[1])/e);u=t[1]+n*e;const a=Math.ceil((c-t[0])/e);c=t[0]+a*e;const i=Math.ceil((f-t[1])/e);f=t[1]+i*e}return{source:{minX:h,minY:u,maxX:c,maxY:f},target:{minX:d[0],minY:M[1],maxX:m[0],maxY:g[1]}}}class l{triangles_=[];transformFn_;errorThresholdSquared_;bvh_=null;bounds;constructor(t,e,r=.5,n=null,a=null,i=10){this.transformFn_=t,this.errorThresholdSquared_=r*r;const[o,l,h,u]=e,c=[o,u],f=[h,u],d=[h,l],M=[o,l],m=s(n,a,e,this.transformFn_,i),g=[m.source.minX,m.source.maxY],p=[m.source.maxX,m.source.maxY],y=[m.source.maxX,m.source.minY],b=[m.source.minX,m.source.minY];this.bounds=m.source,this.addQuad_(c,f,d,M,g,p,y,b,10)}getBounds(){return this.bounds}addQuad_(t,e,r,n,a,i,o,s,l){let h=!1;if(l>0){const l=[(e[0]+r[0])/2,(e[1]+r[1])/2],u=[(r[0]+n[0])/2,(r[1]+n[1])/2],c=[(n[0]+t[0])/2,(n[1]+t[1])/2],f=this.transformFn_([(t[0]+e[0])/2,(t[1]+e[1])/2]),d=this.transformFn_(l),M=this.transformFn_(u),m=this.transformFn_(c),g=[(i[0]+o[0])/2,(i[1]+o[1])/2],p=[(o[0]+s[0])/2,(o[1]+s[1])/2],y=[(s[0]+a[0])/2,(s[1]+a[1])/2],b=this.getSquaredError_(f,[(a[0]+i[0])/2,(a[1]+i[1])/2]),v=this.getSquaredError_(d,g),w=this.getSquaredError_(M,p),S=this.getSquaredError_(m,y);(b>this.errorThresholdSquared_||v>this.errorThresholdSquared_||w>this.errorThresholdSquared_||S>this.errorThresholdSquared_)&&(h=!0)}if(h){const h=[(t[0]+e[0]+r[0]+n[0])/4,(t[1]+e[1]+r[1]+n[1])/4],u=this.transformFn_(h),c=[(t[0]+e[0])/2,(t[1]+e[1])/2],f=[(e[0]+r[0])/2,(e[1]+r[1])/2],d=[(r[0]+n[0])/2,(r[1]+n[1])/2],M=[(n[0]+t[0])/2,(n[1]+t[1])/2],m=this.transformFn_(c),g=this.transformFn_(f),p=this.transformFn_(d),y=this.transformFn_(M),b=l-1;this.addQuad_(t,c,h,M,a,m,u,y,b),this.addQuad_(c,e,f,h,m,i,g,u,b),this.addQuad_(h,f,r,d,u,g,o,p,b),this.addQuad_(M,h,d,n,y,u,p,s,b)}else this.addTriangle_(t,e,n,a,i,s),this.addTriangle_(e,r,n,i,o,s)}addTriangle_(t,e,r,n,a,i){isFinite(n[0])&&isFinite(n[1])&&isFinite(a[0])&&isFinite(a[1])&&isFinite(i[0])&&isFinite(i[1])&&this.triangles_.push({source:[n,a,i],target:[t,e,r]})}getSquaredError_(t,e){const r=t[0]-e[0],n=t[1]-e[1];return r*r+n*n}getTriangles(){return this.triangles_}calculateSourceExtent(){if(0===this.triangles_.length)return null;let t=1/0,e=1/0,r=-1/0,n=-1/0;for(const a of this.triangles_)for(const[i,o]of a.source)i<t&&(t=i),i>r&&(r=i),o<e&&(e=o),o>n&&(n=o);return[t,e,r,n]}buildBVH(){const t=this.triangles_.map(o.toTriangle2D);this.bvh_=o.build(t)}findSourceTriangleForTargetPoint(t,e=null){this.bvh_||this.buildBVH();const r={x:t[0],y:t[1]};if(e?.tri&&o.punktInDreieck2D(r,o.toTriangle2D(e.tri)))return e;const n=this.bvh_.findContainingTriangle(r);return n&&!n.transform&&(n.transform=this.calculateAffineTransform(n.triangle)),n?{tri:n.triangle,transform:n.transform}:null}calculateAffineTransform(t){const[[e,r],[n,a],[i,o]]=t.target,[[s,l],[h,u],[c,f]]=t.source,d=(n-e)*(o-r)-(i-e)*(a-r);if(Math.abs(d)<1e-10)return{a:1,b:0,c:s,d:0,e:1,f:l};const M=((h-s)*(o-r)-(c-s)*(a-r))/d,m=((c-s)*(n-e)-(h-s)*(i-e))/d,g=((u-l)*(o-r)-(f-l)*(a-r))/d,p=((f-l)*(n-e)-(u-l)*(i-e))/d;return{a:M,b:m,c:s-M*e-m*r,d:g,e:p,f:l-g*e-p*r}}applyAffineTransform(t,e,r){return[r.a*t+r.b*e+r.c,r.d*t+r.e*e+r.f]}}function h(e,r){switch(r){case"Uint8Array":return e;case"Uint16Array":return Math.round(e/65535*255);case"Int16Array":return Math.round((e+32768)/65535*255);case"Uint32Array":return Math.round(e/4294967295*255);case"Int32Array":return Math.round((e+2147483648)/4294967295*255);case"Float32Array":case"Float64Array":const n=Math.max(0,Math.min(1,e));return Math.round(255*n);default:return t(`Unknown array type: ${r}, treating as Uint8`),e}}function u(t){return Math.max(0,Math.min(1,t))}function c(t,e,r,a,i,o,s,l,c){const f=Math.round(t)-s,d=Math.round(e)-l;if(f<0||f>=i||d<0||d>=o)return null;const M=d*i+f,m=r.length;if(1===m){const t=r[0][M];if(c){const e=u(t),[r,a,i]=n(e,c);return[r,a,i,255]}{const e=h(t,a);return[e,e,e,255]}}return 3===m?[h(r[0][M],a),h(r[1][M],a),h(r[2][M],a),255]:m>=4?[h(r[0][M],a),h(r[1][M],a),h(r[2][M],a),h(r[3][M],a)]:null}function f(t,e,r,a,i,o,s,l,c){const f=t-s,d=e-l;if(f<0||f>=i-1||d<0||d>=o-1)return null;const M=Math.floor(f),m=Math.ceil(f),g=Math.floor(d),p=Math.ceil(d),y=f-M,b=d-g,v=r.length,w=[0,0,0,255];if(1===v){const t=r[0],e=(t[g*i+M]*(1-y)+t[g*i+m]*y)*(1-b)+(t[p*i+M]*(1-y)+t[p*i+m]*y)*b;if(c){const t=u(e),[r,a,i]=n(t,c);return[r,a,i,255]}{const t=h(e,a);return[t,t,t,255]}}{const t=Math.min(v,4);for(let e=0;e<t;e++){const t=r[e];w[e]=h((t[g*i+M]*(1-y)+t[g*i+m]*y)*(1-b)+(t[p*i+M]*(1-y)+t[p*i+m]*y)*b,a)}}return w}class d{config;worldSize=40075016.686;globalTriangulation;constructor(t){this.config=t,t.worldSize&&(this.worldSize=t.worldSize)}createGlobalTriangulation(){const t=performance.now(),[r,n,a,i]=this.config.sourceBounds,{source:o}=s(null,null,[r,n,a,i],(t=>this.config.transformSourceMapToViewFn(t))),h=[o.minX,o.minY,o.maxX,o.maxY];e("Creating global triangulation for bounds:",{source:this.config.sourceBounds,mercator:h});const u=this.config.resolution/2,c=Math.min(10,Math.max(this.config.imageWidth,this.config.imageHeight)/256);this.globalTriangulation=new l((t=>this.config.transformViewToSourceMapFn(t)),h,u,this.config.sourceRef,this.config.resolution,c),this.globalTriangulation.findSourceTriangleForTargetPoint([0,0]);const f=this.globalTriangulation.getTriangles();e(`Global triangulation created: ${f.length} triangles in ${(performance.now()-t).toFixed(2)}ms`)}getGlobalTriangulation(){return this.globalTriangulation}sanitizeElevationValue(t){return Number.isFinite(t)?void 0!==this.config.noDataValue&&t===this.config.noDataValue?0:t:0}getTileSizeInMeter(t){return this.worldSize/Math.pow(2,t)}getTileBounds(t,e,r){const n=this.getTileSizeInMeter(r),a=-this.worldSize/2+t*n,i=this.worldSize/2-e*n;return[a,i-n,a+n,i]}selectOverviewImage(t,e){const r=this.config.baseImage.getResolution()[0];if(!this.config.overviewImages||0===this.config.overviewImages.length)return{bestImage:this.config.baseImage,bestResolution:r,imageLevel:0};const n=this.getTileSizeInMeter(t)/e,a=[this.config.baseImage,...this.config.overviewImages],i=a[this.config.overviewImages.length],o=r*Math.pow(2,this.config.overviewImages.length);let s=this.config.overviewImages.length,l=o,h=i,u=0,c=r;for(const t of a){if(n/(2*c)<=1){h=t,l=c,s=u;break}u++,c*=2}return{bestImage:h,bestResolution:l,imageLevel:s}}calculateTileSourceBounds(t){const[e,r,n,a]=t,{source:i}=s(this.config.sourceRef,this.config.resolution,[e,r,n,a],this.config.transformViewToSourceMapFn),o=this.config.transformViewToSourceMapFn([e,r]),l=this.config.transformViewToSourceMapFn([n,a]),h=this.config.transformViewToSourceMapFn([e,a]),u=this.config.transformViewToSourceMapFn([n,r]);return{tileSrcWest:Math.min(i.minX,o[0],l[0],h[0],u[0]),tileSrcEast:Math.max(i.maxX,o[0],l[0],h[0],u[0]),tileSrcSouth:Math.min(i.minY,o[1],l[1],h[1],u[1]),tileSrcNorth:Math.max(i.maxY,o[1],l[1],h[1],u[1])}}calculateReadWindow(e,r,n){const[a,i,o,s]=this.config.sourceBounds,l=o-a,h=s-i,{tileSrcWest:u,tileSrcEast:c,tileSrcSouth:f,tileSrcNorth:d}=e,M=Math.floor((u-a)/l*r),m=Math.ceil((c-a)/l*r),g=Math.floor((s-d)/h*n),p=Math.ceil((s-f)/h*n),y=Math.min(r,Math.max(0,M-2)),b=Math.max(0,Math.min(r,m+2)),v=Math.min(n,Math.max(0,g-2)),w=Math.max(0,Math.min(n,p+2)),S=b-y,x=w-v;return S<=0||x<=0?(t("Invalid read window for tile",{readXMin:y,readXMax:b,readYMin:v,readYMax:w,ovWidth:r,ovHeight:n}),null):{readXMin:y,readXMax:b,readYMin:v,readYMax:w,readWidth:S,readHeight:x}}async loadAndConvertRasterData(r,n){const{readXMin:a,readYMin:i,readXMax:o,readYMax:s}=n;let l=null,h=null;for(let t=0;t<=2;t++){try{l=await r.readRasters({window:[a,i,o,s]})}catch(t){h=t}if(null!=l){h=null;break}}if(null!=h)throw e(h),t("Error - readRasters - read window: ",n),h;const u=[];let c="";for(let e=0;e<l.length;e++){const r=l[e];"number"!=typeof r?(u.push(r),0===e&&(c=r.constructor.name)):t("Unexpected number in rasters array")}return{rasterBands:u,arrayType:c}}renderTilePixels(t){const{sampleSize:e,mercatorBounds:r,triangulation:n,rasterBands:a,arrayType:i,readWindow:o,ovWidth:s,ovHeight:l,resampleMethod:h,colorStops:u}=t,[d,M,m,g]=r,[p,y,b,v]=this.config.sourceBounds,w=b-p,S=v-y,x=new Uint8ClampedArray(e*e*4);let $=null;for(let t=0;t<e;t++)for(let r=0;r<e;r++){const T=4*(t*e+r),P=d+r/e*(m-d),j=g-t/e*(g-M);if($=n.findSourceTriangleForTargetPoint([P,j],$),$){const[t,e]=n.applyAffineTransform(P,j,$.transform);if(t<p||t>b||e<y||e>v)x[T]=0,x[T+1]=0,x[T+2]=0,x[T+3]=0;else{const r=(t-p)/w*s,n=(v-e)/S*l,d="near"===h?c(r,n,a,i,o.readWidth,o.readHeight,o.readXMin,o.readYMin,u):f(r,n,a,i,o.readWidth,o.readHeight,o.readXMin,o.readYMin,u);d?(x[T]=d[0],x[T+1]=d[1],x[T+2]=d[2],x[T+3]=d[3]):(x[T]=0,x[T+1]=0,x[T+2]=0,x[T+3]=0)}}else x[T]=0,x[T+1]=0,x[T+2]=0,x[T+3]=0}return x}tileIntersectsSource(t){const[e,r,n,a]=t,[i,o,s,l]=this.config.sourceBounds,h=this.config.transformViewToSourceMapFn([e,r]),u=this.config.transformViewToSourceMapFn([n,a]),c=this.config.transformViewToSourceMapFn([e,a]),f=this.config.transformViewToSourceMapFn([n,r]),d=Math.min(h[0],u[0],c[0],f[0]),M=Math.max(h[0],u[0],c[0],f[0]),m=Math.min(h[1],u[1],c[1],f[1]),g=Math.max(h[1],u[1],c[1],f[1]);return M>=i&&d<=s&&g>=o&&m<=l}async getTileData(r){const{x:n,y:a,z:i,tileSize:o,resolution:s,resampleMethod:h,colorStops:u}=r,c=this.getTileBounds(n,a,i);if(e(`v-map - geotiff - getTileData(${n},${a},${i}): viewBounds=[${c.map((t=>t.toFixed(0))).join(",")}], sourceBounds=[${this.config.sourceBounds.map((t=>t.toFixed(0))).join(",")}], toProjection=${this.config.toProjection}`),!this.tileIntersectsSource(c)){e(`v-map - geotiff - getTileData(${n},${a},${i}): no intersection, returning transparent`);const t=Math.ceil(o*s);return new Uint8ClampedArray(t*t*4)}const f=Math.ceil(o*s);let d;this.globalTriangulation?d=this.globalTriangulation:(t("Global triangulation not available, creating fallback for tile"),d=new l(this.config.transformViewToSourceMapFn,c,.5));const M=this.calculateTileSourceBounds(c),{bestImage:m,bestResolution:g,imageLevel:p}=this.selectOverviewImage(i,o),y=m.getWidth(),b=m.getHeight(),v=this.calculateReadWindow(M,y,b);if(!v)return new Uint8ClampedArray(f*f*4);const{rasterBands:w,arrayType:S}=await this.loadAndConvertRasterData(m,v);return e(`Read window: [${v.readXMin}, ${v.readYMin}, ${v.readXMax}, ${v.readYMax}] (${v.readWidth}x${v.readHeight} pixels), ${w.length} bands, type: ${S}, imageLevel: ${p}, resolution: ${g}`),this.renderTilePixels({sampleSize:f,mercatorBounds:c,triangulation:d,rasterBands:w,arrayType:S,readWindow:v,ovWidth:y,ovHeight:b,resampleMethod:h,colorStops:u})}async getElevationData(e){const{x:r,y:n,z:a,tileSize:i}=e,o=i+1,s=this.getTileBounds(r,n,a);if(!this.tileIntersectsSource(s))return new Float32Array(o*o);let h;this.globalTriangulation?h=this.globalTriangulation:(t("Global triangulation not available, creating fallback for elevation tile"),h=new l(this.config.transformViewToSourceMapFn,s,.5));const u=this.calculateTileSourceBounds(s),{bestImage:c}=this.selectOverviewImage(a,i),f=c.getWidth(),d=c.getHeight(),M=this.calculateReadWindow(u,f,d);if(!M)return new Float32Array(o*o);const{rasterBands:m}=await this.loadAndConvertRasterData(c,M),[g,p,y,b]=s,[v,w,S,x]=this.config.sourceBounds,$=S-v,T=x-w,P=new Float32Array(o*o);let j=null;for(let t=0;t<i;t++)for(let e=0;e<i;e++){const r=g+e/i*(y-g),n=b-t/i*(b-p);if(j=h.findSourceTriangleForTargetPoint([r,n],j),j){const[a,i]=h.applyAffineTransform(r,n,j.transform);if(a>=v&&a<=S&&i>=w&&i<=x){const r=(x-i)/T*d,n=Math.round((a-v)/$*f)-M.readXMin,s=Math.round(r)-M.readYMin;if(n>=0&&n<M.readWidth&&s>=0&&s<M.readHeight){const r=Number(m[0][s*M.readWidth+n]);P[t*o+e]=this.sanitizeElevationValue(r)}}}}for(let t=0;t<i;t++)P[t*o+i]=P[t*o+i-1];for(let t=0;t<=i;t++)P[i*o+t]=P[(i-1)*o+t];return P}}async function M(t,e){const{default:r}=await import("./p-RpJarvr_.js");return{transformViewToSourceMapFn:n=>{const a=r(e,t.fromProjection,n);return[Number(a[0]),Number(a[1])]},transformSourceMapToViewFn:n=>{const a=r(t.fromProjection,e,n);return[Number(a[0]),Number(a[1])]},sourceBounds:t.sourceBounds,sourceRef:t.sourceRef,resolution:t.resolution,imageWidth:t.width,imageHeight:t.height,fromProjection:t.fromProjection,toProjection:e,baseImage:t.baseImage,overviewImages:t.overviewImages??[],noDataValue:t.noDataValue}}async function m(r,n,a){const{geotiff:i,proj4:o,geokeysToProj4:s}=a,{fromUrl:l}=i,{toProj4:h}=s;let u=null,c=null;for(let t=0;t<=2;t++){try{u=await l(r,{allowFullFile:!0,blockSize:1048576,cacheSize:100})}catch(t){c=t}if(null!=u){c=null;break}}if(null!=c)throw e(c),t("Error - loadGeoTIFFSource - fromUrl: ",r),c;const f=await u.getImage(0),d=await u.getImageCount(),M=[];for(let t=1;t<d;t++)M.push(await u.getImage(t));const m=f.getWidth(),g=f.getHeight(),p=Math.max(1,f.getSamplesPerPixel?.()??1);let y=n.forceProjection&&n.projection?n.projection:n.projection??"EPSG:4326",b=null;if(!n.forceProjection){const e="function"==typeof f.getGeoKeys?f.getGeoKeys()??null:null;if(e)try{const t=h(e),r=e.ProjectedCSTypeGeoKey??e.GeographicTypeGeoKey;if(r&&(y=`EPSG:${r}`),t?.proj4){b=t.proj4;const e=String(r);r&&!o.defs(y)&&o.defs(y,t.proj4),r&&!o.defs(e)&&o.defs(e,t.proj4)}}catch(e){t("v-map - geotiff - failed to parse GeoKeys",e)}}if(!b)switch(y){case"EPSG:4326":b="+proj=longlat +datum=WGS84 +no_defs";break;case"EPSG:3857":b="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs";break;case"EPSG:32632":b="+proj=utm +zone=32 +datum=WGS84 +units=m +no_defs"}y&&""!==y.trim()||(y="EPSG:4326"),b&&!o.defs(y)&&o.defs(y,b);const v=f.getBoundingBox(),w=[v[0],v[1]],S=f.getResolution()[0],x=null!=n.nodata?Number(n.nodata):"function"==typeof f.getGDALNoData?f.getGDALNoData():void 0,$=null!=x?Number(x):void 0,T=t=>Math.max(-180,Math.min(180,Number.isFinite(t)?t:0)),P=t=>Math.max(-90,Math.min(90,Number.isFinite(t)?t:0));let j;j=y&&"EPSG:4326"!==y?e=>{try{const t=o(y,"EPSG:4326",e);return[Number(t[0]),Number(t[1])]}catch(r){return t("v-map - geotiff - transform to WGS84 failed, falling back",r),e}}:t=>t;const[F,I,N,G]=v,k=[j([F,I]),j([N,I]),j([N,G]),j([F,G])],A=T(Math.min(...k.map((t=>t[0])))),E=T(Math.max(...k.map((t=>t[0])))),B=P(Math.min(...k.map((t=>t[1])))),_=P(Math.max(...k.map((t=>t[1]))));return e("v-map - geotiff - loaded source",{url:r,width:m,height:g,samplesPerPixel:p,fromProjection:y,bounds:v}),{tiff:u,baseImage:f,overviewImages:M,width:m,height:g,samplesPerPixel:p,fromProjection:y,sourceBounds:v,sourceRef:w,resolution:S,proj4:o,noDataValue:$,wgs84Bounds:[A,B,E,_],transformToWgs84:j}}async function g(t,e,r,n){const[a,{default:i},o]=await Promise.all([import("./p-Be3r33VF.js").then((function(t){return t.g})),import("./p-RpJarvr_.js"),import("./p-CXfA_q8m.js").then((function(t){return t.m}))]);return await m(t,{projection:e,forceProjection:r,nodata:n},{geotiff:a,proj4:i,geokeysToProj4:o})}export{d as G,g as a,M as b,a as g,m as l}
@@ -0,0 +1,15 @@
1
+ var t,e,r={},i={};function n(){return t||(t=1,function(t){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+e+"]["+e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",i=new RegExp("^"+r+"$");t.isExist=function(t){return void 0!==t},t.isEmptyObject=function(t){return 0===Object.keys(t).length},t.merge=function(t,e,r){if(e){const i=Object.keys(e),n=i.length;for(let s=0;s<n;s++)t[i[s]]="strict"===r?[e[i[s]]]:e[i[s]]}},t.getValue=function(e){return t.isExist(e)?e:""},t.isName=function(t){return!(null==i.exec(t))},t.getAllMatches=function(t,e){const r=[];let i=e.exec(t);for(;i;){const n=[];n.startIndex=e.lastIndex-i[0].length;const s=i.length;for(let t=0;t<s;t++)n.push(i[t]);r.push(n),i=e.exec(t)}return r},t.nameRegexp=r}(i)),i}function s(){if(e)return r;e=1;const t=n(),i={allowBooleanAttributes:!1,unpairedTags:[]};function s(t){return" "===t||"\t"===t||"\n"===t||"\r"===t}function o(t,e){const r=e;for(;e<t.length;e++)if("?"!=t[e]&&" "!=t[e]);else{const i=t.substr(r,e-r);if(e>5&&"xml"===i)return g("InvalidXml","XML declaration allowed only at the start of the document.",y(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}}return e}function a(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e<t.length;e++)if("-"===t[e]&&"-"===t[e+1]&&">"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let r=1;for(e+=8;e<t.length;e++)if("<"===t[e])r++;else if(">"===t[e]&&(r--,0===r))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e<t.length;e++)if("]"===t[e]&&"]"===t[e+1]&&">"===t[e+2]){e+=2;break}return e}r.validate=function(e,r){r=Object.assign({},i,r);const n=[];let u=!1,l=!1;"\ufeff"===e[0]&&(e=e.substr(1));for(let i=0;i<e.length;i++)if("<"===e[i]&&"?"===e[i+1]){if(i+=2,i=o(e,i),i.err)return i}else{if("<"!==e[i]){if(s(e[i]))continue;return g("InvalidChar","char '"+e[i]+"' is not expected.",y(e,i))}{let c=i;if(i++,"!"===e[i]){i=a(e,i);continue}{let p=!1;"/"===e[i]&&(p=!0,i++);let m="";for(;i<e.length&&">"!==e[i]&&" "!==e[i]&&"\t"!==e[i]&&"\n"!==e[i]&&"\r"!==e[i];i++)m+=e[i];if(m=m.trim(),"/"===m[m.length-1]&&(m=m.substring(0,m.length-1),i--),!t.isName(m)){let t;return t=0===m.trim().length?"Invalid space after '<'.":"Tag '"+m+"' is an invalid name.",g("InvalidTag",t,y(e,i))}const b=h(e,i);if(!1===b)return g("InvalidAttr","Attributes for '"+m+"' have open quote.",y(e,i));let $=b.value;if(i=b.index,"/"===$[$.length-1]){const t=i-$.length;$=$.substring(0,$.length-1);const n=d($,r);if(!0!==n)return g(n.err.code,n.err.msg,y(e,t+n.err.line));u=!0}else if(p){if(!b.tagClosed)return g("InvalidTag","Closing tag '"+m+"' doesn't have proper closing.",y(e,i));if($.trim().length>0)return g("InvalidTag","Closing tag '"+m+"' can't have attributes or invalid starting.",y(e,c));if(0===n.length)return g("InvalidTag","Closing tag '"+m+"' has not been opened.",y(e,c));{const t=n.pop();if(m!==t.tagName){let r=y(e,t.tagStartPos);return g("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+m+"'.",y(e,c))}0==n.length&&(l=!0)}}else{const t=d($,r);if(!0!==t)return g(t.err.code,t.err.msg,y(e,i-$.length+t.err.line));if(!0===l)return g("InvalidXml","Multiple possible root nodes found.",y(e,i));-1!==r.unpairedTags.indexOf(m)||n.push({tagName:m,tagStartPos:c}),u=!0}for(i++;i<e.length;i++)if("<"===e[i]){if("!"===e[i+1]){i++,i=a(e,i);continue}if("?"!==e[i+1])break;if(i=o(e,++i),i.err)return i}else if("&"===e[i]){const t=f(e,i);if(-1==t)return g("InvalidChar","char '&' is not expected.",y(e,i));i=t}else if(!0===l&&!s(e[i]))return g("InvalidXml","Extra text at the end",y(e,i));"<"===e[i]&&i--}}}return u?1==n.length?g("InvalidTag","Unclosed tag '"+n[0].tagName+"'.",y(e,n[0].tagStartPos)):!(n.length>0)||g("InvalidXml","Invalid '"+JSON.stringify(n.map((t=>t.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):g("InvalidXml","Start tag expected.",1)};const u='"',l="'";function h(t,e){let r="",i="",n=!1;for(;e<t.length;e++){if(t[e]===u||t[e]===l)""===i?i=t[e]:i!==t[e]||(i="");else if(">"===t[e]&&""===i){n=!0;break}r+=t[e]}return""===i&&{value:r,index:e,tagClosed:n}}const c=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function d(e,r){const i=t.getAllMatches(e,c),n={};for(let t=0;t<i.length;t++){if(0===i[t][1].length)return g("InvalidAttr","Attribute '"+i[t][2]+"' has no space in starting.",m(i[t]));if(void 0!==i[t][3]&&void 0===i[t][4])return g("InvalidAttr","Attribute '"+i[t][2]+"' is without value.",m(i[t]));if(void 0===i[t][3]&&!r.allowBooleanAttributes)return g("InvalidAttr","boolean attribute '"+i[t][2]+"' is not allowed.",m(i[t]));const e=i[t][2];if(!p(e))return g("InvalidAttr","Attribute '"+e+"' is an invalid name.",m(i[t]));if(n.hasOwnProperty(e))return g("InvalidAttr","Attribute '"+e+"' is repeated.",m(i[t]));n[e]=1}return!0}function f(t,e){if(";"===t[++e])return-1;if("#"===t[e])return function(t,e){let r=/\d/;for("x"===t[e]&&(e++,r=/[\da-fA-F]/);e<t.length;e++){if(";"===t[e])return e;if(!t[e].match(r))break}return-1}(t,++e);let r=0;for(;e<t.length;e++,r++)if(!(t[e].match(/\w/)&&r<20)){if(";"===t[e])break;return-1}return e}function g(t,e,r){return{err:{code:t,msg:e,line:r.line||r,col:r.col}}}function p(e){return t.isName(e)}function y(t,e){const r=t.substring(0,e).split(/\r?\n/);return{line:r.length,col:r[r.length-1].length+1}}function m(t){return t.startIndex+t[1].length}return r}var o,a,u,l,h,c,d,f,g,p,y,m={};function b(){return u?a:(u=1,a=class{constructor(t){this.tagname=t,this.child=[],this[":@"]={}}add(t,e){"__proto__"===t&&(t="#__proto__"),this.child.push({[t]:e})}addChild(t){"__proto__"===t.tagname&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child})}})}function $(){return g?f:(g=1,f=function(t){return"function"==typeof t?t:Array.isArray(t)?e=>{for(const r of t){if("string"==typeof r&&e===r)return!0;if(r instanceof RegExp&&r.test(e))return!0}}:()=>!1})}function v(){if(y)return p;y=1;const t=n(),e=b(),r=function(){if(h)return l;h=1;const t=n();function e(t,e){let r="";for(;e<t.length&&"'"!==t[e]&&'"'!==t[e];e++)r+=t[e];if(r=r.trim(),-1!==r.indexOf(" "))throw new Error("External entites are not supported");const i=t[e++];let n="";for(;e<t.length&&t[e]!==i;e++)n+=t[e];return[r,n,e]}function r(t,e){return"!"===t[e+1]&&"-"===t[e+2]&&"-"===t[e+3]}function i(t,e){return"!"===t[e+1]&&"E"===t[e+2]&&"N"===t[e+3]&&"T"===t[e+4]&&"I"===t[e+5]&&"T"===t[e+6]&&"Y"===t[e+7]}function s(t,e){return"!"===t[e+1]&&"E"===t[e+2]&&"L"===t[e+3]&&"E"===t[e+4]&&"M"===t[e+5]&&"E"===t[e+6]&&"N"===t[e+7]&&"T"===t[e+8]}function o(t,e){return"!"===t[e+1]&&"A"===t[e+2]&&"T"===t[e+3]&&"T"===t[e+4]&&"L"===t[e+5]&&"I"===t[e+6]&&"S"===t[e+7]&&"T"===t[e+8]}function a(t,e){return"!"===t[e+1]&&"N"===t[e+2]&&"O"===t[e+3]&&"T"===t[e+4]&&"A"===t[e+5]&&"T"===t[e+6]&&"I"===t[e+7]&&"O"===t[e+8]&&"N"===t[e+9]}function u(e){if(t.isName(e))return e;throw new Error(`Invalid entity name ${e}`)}return l=function(t,n){const l={};if("O"!==t[n+3]||"C"!==t[n+4]||"T"!==t[n+5]||"Y"!==t[n+6]||"P"!==t[n+7]||"E"!==t[n+8])throw new Error("Invalid Tag instead of DOCTYPE");{n+=9;let h=1,c=!1,d=!1;for(;n<t.length;n++)if("<"!==t[n]||d)if(">"===t[n]){if(d?"-"===t[n-1]&&"-"===t[n-2]&&(d=!1,h--):h--,0===h)break}else"["===t[n]&&(c=!0);else{if(c&&i(t,n)){let r,i;n+=7,[r,i,n]=e(t,n+1),-1===i.indexOf("&")&&(l[u(r)]={regx:RegExp(`&${r};`,"g"),val:i})}else if(c&&s(t,n))n+=8;else if(c&&o(t,n))n+=8;else if(c&&a(t,n))n+=9;else{if(!r)throw new Error("Invalid DOCTYPE");d=!0}h++}if(0!==h)throw new Error("Unclosed DOCTYPE")}return{entities:l,i:n}}}(),i=function(){if(d)return c;d=1;const t=/^[-+]?0x[a-fA-F0-9]+$/,e=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,r={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};return c=function(i,n={}){if(n=Object.assign({},r,n),!i||"string"!=typeof i)return i;let s=i.trim();if(void 0!==n.skipLike&&n.skipLike.test(s))return i;if("0"===i)return 0;if(n.hex&&t.test(s))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(s);if(-1!==s.search(/[eE]/)){const t=s.match(/^([-\+])?(0*)([0-9]*(\.[0-9]*)?[eE][-\+]?[0-9]+)$/);if(t){if(n.leadingZeros)s=(t[1]||"")+t[3];else if("0"!==t[2]||"."!==t[3][0])return i;return n.eNotation?Number(s):i}return i}{const t=e.exec(s);if(t){const e=t[1],r=t[2];let a=(o=t[3])&&-1!==o.indexOf(".")?("."===(o=o.replace(/0+$/,""))?o="0":"."===o[0]?o="0"+o:"."===o[o.length-1]&&(o=o.substr(0,o.length-1)),o):o;if(!n.leadingZeros&&r.length>0&&e&&"."!==s[2])return i;if(!n.leadingZeros&&r.length>0&&!e&&"."!==s[1])return i;if(n.leadingZeros&&r===i)return 0;{const t=Number(s),o=""+t;return-1!==o.search(/[eE]/)?n.eNotation?t:i:-1!==s.indexOf(".")?"0"===o&&""===a||o===a||e&&o==="-"+a?t:i:r?a===o||e+a===o?t:i:s===o||s===e+o?t:i}}return i}var o}}(),s=$();function o(t){const e=Object.keys(t);for(let r=0;r<e.length;r++){const i=e[r];this.lastEntities[i]={regex:new RegExp("&"+i+";","g"),val:t[i]}}}function a(t,e,r,i,n,s,o){if(void 0!==t&&(this.options.trimValues&&!i&&(t=t.trim()),t.length>0)){o||(t=this.replaceEntitiesValue(t));const i=this.options.tagValueProcessor(e,t,r,n,s);return null==i?t:typeof i!=typeof t||i!==t?i:this.options.trimValues||t.trim()===t?S(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function u(t){if(this.options.removeNSPrefix){const e=t.split(":"),r="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=r+e[1])}return t}const f=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function g(e,r){if(!0!==this.options.ignoreAttributes&&"string"==typeof e){const i=t.getAllMatches(e,f),n=i.length,s={};for(let t=0;t<n;t++){const e=this.resolveNameSpace(i[t][1]);if(this.ignoreAttributesFn(e,r))continue;let n=i[t][4],o=this.options.attributeNamePrefix+e;if(e.length)if(this.options.transformAttributeName&&(o=this.options.transformAttributeName(o)),"__proto__"===o&&(o="#__proto__"),void 0!==n){this.options.trimValues&&(n=n.trim()),n=this.replaceEntitiesValue(n);const t=this.options.attributeValueProcessor(e,n,r);s[o]=null==t?n:typeof t!=typeof n||t!==n?t:S(n,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(s[o]=!0)}if(!Object.keys(s).length)return;if(this.options.attributesGroupName){const t={};return t[this.options.attributesGroupName]=s,t}return s}}const m=function(t){t=t.replace(/\r\n?/g,"\n");const i=new e("!xml");let n=i,s="",o="";for(let a=0;a<t.length;a++)if("<"===t[a])if("/"===t[a+1]){const e=x(t,">",a,"Closing Tag is not closed.");let r=t.substring(a+2,e).trim();if(this.options.removeNSPrefix){const t=r.indexOf(":");-1!==t&&(r=r.substr(t+1))}this.options.transformTagName&&(r=this.options.transformTagName(r)),n&&(s=this.saveTextToParentTag(s,n,o));const i=o.substring(o.lastIndexOf(".")+1);if(r&&-1!==this.options.unpairedTags.indexOf(r))throw new Error(`Unpaired tag can not be used as closing tag: </${r}>`);let u=0;i&&-1!==this.options.unpairedTags.indexOf(i)?(u=o.lastIndexOf(".",o.lastIndexOf(".")-1),this.tagsNodeStack.pop()):u=o.lastIndexOf("."),o=o.substring(0,u),n=this.tagsNodeStack.pop(),s="",a=e}else if("?"===t[a+1]){let r=C(t,a,!1,"?>");if(!r)throw new Error("Pi Tag is not closed.");if(s=this.saveTextToParentTag(s,n,o),this.options.ignoreDeclaration&&"?xml"===r.tagName||this.options.ignorePiTags);else{const t=new e(r.tagName);t.add(this.options.textNodeName,""),r.tagName!==r.tagExp&&r.attrExpPresent&&(t[":@"]=this.buildAttributesMap(r.tagExp,o,r.tagName)),this.addChild(n,t,o)}a=r.closeIndex+1}else if("!--"===t.substr(a+1,3)){const e=x(t,"--\x3e",a+4,"Comment is not closed.");if(this.options.commentPropName){const r=t.substring(a+4,e-2);s=this.saveTextToParentTag(s,n,o),n.add(this.options.commentPropName,[{[this.options.textNodeName]:r}])}a=e}else if("!D"===t.substr(a+1,2)){const e=r(t,a);this.docTypeEntities=e.entities,a=e.i}else if("!["===t.substr(a+1,2)){const e=x(t,"]]>",a,"CDATA is not closed.")-2,r=t.substring(a+9,e);s=this.saveTextToParentTag(s,n,o);let i=this.parseTextData(r,n.tagname,o,!0,!1,!0,!0);null==i&&(i=""),this.options.cdataPropName?n.add(this.options.cdataPropName,[{[this.options.textNodeName]:r}]):n.add(this.options.textNodeName,i),a=e+2}else{let r=C(t,a,this.options.removeNSPrefix),u=r.tagName;const l=r.rawTagName;let h=r.tagExp,c=r.attrExpPresent,d=r.closeIndex;if(this.options.transformTagName&&(u=this.options.transformTagName(u)),n&&s&&"!xml"!==n.tagname&&(s=this.saveTextToParentTag(s,n,o,!1)),n&&-1!==this.options.unpairedTags.indexOf(n.tagname)&&(n=this.tagsNodeStack.pop(),o=o.substring(0,o.lastIndexOf("."))),u!==i.tagname&&(o+=o?"."+u:u),this.isItStopNode(this.options.stopNodes,o,u)){let i="";if(h.length>0&&h.lastIndexOf("/")===h.length-1)"/"===u[u.length-1]?(u=u.substr(0,u.length-1),o=o.substr(0,o.length-1),h=u):h=h.substr(0,h.length-1),a=r.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(u))a=r.closeIndex;else{const e=this.readStopNodeData(t,l,d+1);if(!e)throw new Error(`Unexpected end of ${l}`);a=e.i,i=e.tagContent}const s=new e(u);u!==h&&c&&(s[":@"]=this.buildAttributesMap(h,o,u)),i&&(i=this.parseTextData(i,u,o,!0,c,!0,!0)),o=o.substr(0,o.lastIndexOf(".")),s.add(this.options.textNodeName,i),this.addChild(n,s,o)}else{if(h.length>0&&h.lastIndexOf("/")===h.length-1){"/"===u[u.length-1]?(u=u.substr(0,u.length-1),o=o.substr(0,o.length-1),h=u):h=h.substr(0,h.length-1),this.options.transformTagName&&(u=this.options.transformTagName(u));const t=new e(u);u!==h&&c&&(t[":@"]=this.buildAttributesMap(h,o,u)),this.addChild(n,t,o),o=o.substr(0,o.lastIndexOf("."))}else{const t=new e(u);this.tagsNodeStack.push(n),u!==h&&c&&(t[":@"]=this.buildAttributesMap(h,o,u)),this.addChild(n,t,o),n=t}s="",a=d}}else s+=t[a];return i.child};function v(t,e,r){const i=this.options.updateTag(e.tagname,r,e[":@"]);!1===i||("string"==typeof i?(e.tagname=i,t.addChild(e)):t.addChild(e))}const w=function(t){if(this.options.processEntities){for(let e in this.docTypeEntities){const r=this.docTypeEntities[e];t=t.replace(r.regx,r.val)}for(let e in this.lastEntities){const r=this.lastEntities[e];t=t.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let e in this.htmlEntities){const r=this.htmlEntities[e];t=t.replace(r.regex,r.val)}t=t.replace(this.ampEntity.regex,this.ampEntity.val)}return t};function P(t,e,r,i){return t&&(void 0===i&&(i=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,r,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,i))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function L(t,e,r){const i="*."+r;for(const r in t){const n=t[r];if(i===n||e===n)return!0}return!1}function x(t,e,r,i){const n=t.indexOf(e,r);if(-1===n)throw new Error(i);return n+e.length-1}function C(t,e,r,i=">"){const n=function(t,e,r=">"){let i,n="";for(let s=e;s<t.length;s++){let e=t[s];if(i)e===i&&(i="");else if('"'===e||"'"===e)i=e;else if(e===r[0]){if(!r[1])return{data:n,index:s};if(t[s+1]===r[1])return{data:n,index:s}}else"\t"===e&&(e=" ");n+=e}}(t,e+1,i);if(!n)return;let s=n.data;const o=n.index,a=s.search(/\s/);let u=s,l=!0;-1!==a&&(u=s.substring(0,a),s=s.substring(a+1).trimStart());const h=u;if(r){const t=u.indexOf(":");-1!==t&&(u=u.substr(t+1),l=u!==n.data.substr(t+1))}return{tagName:u,tagExp:s,closeIndex:o,attrExpPresent:l,rawTagName:h}}function N(t,e,r){const i=r;let n=1;for(;r<t.length;r++)if("<"===t[r])if("/"===t[r+1]){const s=x(t,">",r,`${e} is not closed`);if(t.substring(r+2,s).trim()===e&&(n--,0===n))return{tagContent:t.substring(i,r),i:s};r=s}else if("?"===t[r+1])r=x(t,"?>",r+1,"StopNode is not closed.");else if("!--"===t.substr(r+1,3))r=x(t,"--\x3e",r+3,"StopNode is not closed.");else if("!["===t.substr(r+1,2))r=x(t,"]]>",r,"StopNode is not closed.")-2;else{const i=C(t,r,">");i&&((i&&i.tagName)===e&&"/"!==i.tagExp[i.tagExp.length-1]&&n++,r=i.closeIndex)}}function S(e,r,n){if(r&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&i(e,n)}return t.isExist(e)?e:""}return p=class{constructor(t){this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(t,e)=>String.fromCharCode(Number.parseInt(e,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(t,e)=>String.fromCharCode(Number.parseInt(e,16))}},this.addExternalEntities=o,this.parseXml=m,this.parseTextData=a,this.resolveNameSpace=u,this.buildAttributesMap=g,this.isItStopNode=L,this.replaceEntitiesValue=w,this.readStopNodeData=N,this.saveTextToParentTag=P,this.addChild=v,this.ignoreAttributesFn=s(this.options.ignoreAttributes)}}}var w,P,L,x,C,N,S,E,M,I={};function G(){if(w)return I;function t(n,s,o){let a;const u={};for(let l=0;l<n.length;l++){const h=n[l],c=e(h);let d="";if(d=void 0===o?c:o+"."+c,c===s.textNodeName)void 0===a?a=h[c]:a+=""+h[c];else{if(void 0===c)continue;if(h[c]){let e=t(h[c],s,d);const n=i(e,s);h[":@"]?r(e,h[":@"],d,s):1!==Object.keys(e).length||void 0===e[s.textNodeName]||s.alwaysCreateTextNode?0===Object.keys(e).length&&(s.alwaysCreateTextNode?e[s.textNodeName]="":e=""):e=e[s.textNodeName],void 0!==u[c]&&u.hasOwnProperty(c)?(Array.isArray(u[c])||(u[c]=[u[c]]),u[c].push(e)):u[c]=s.isArray(c,d,n)?[e]:e}}}return"string"==typeof a?a.length>0&&(u[s.textNodeName]=a):void 0!==a&&(u[s.textNodeName]=a),u}function e(t){const e=Object.keys(t);for(let t=0;t<e.length;t++){const r=e[t];if(":@"!==r)return r}}function r(t,e,r,i){if(e){const n=Object.keys(e),s=n.length;for(let o=0;o<s;o++){const s=n[o];t[s]=i.isArray(s,r+"."+s,!0,!0)?[e[s]]:e[s]}}}function i(t,e){const{textNodeName:r}=e,i=Object.keys(t).length;return 0===i||!(1!==i||!t[r]&&"boolean"!=typeof t[r]&&0!==t[r])}return w=1,I.prettify=function(e,r){return t(e,r)},I}function T(){if(C)return x;function t(s,o,a,u){let l="",h=!1;for(let c=0;c<s.length;c++){const d=s[c],f=e(d);if(void 0===f)continue;let g="";if(g=0===a.length?f:`${a}.${f}`,f===o.textNodeName){let t=d[f];i(g,o)||(t=o.tagValueProcessor(f,t),t=n(t,o)),h&&(l+=u),l+=t,h=!1;continue}if(f===o.cdataPropName){h&&(l+=u),l+=`<![CDATA[${d[f][0][o.textNodeName]}]]>`,h=!1;continue}if(f===o.commentPropName){l+=u+`\x3c!--${d[f][0][o.textNodeName]}--\x3e`,h=!0;continue}if("?"===f[0]){const t=r(d[":@"],o);let e=d[f][0][o.textNodeName];e=0!==e.length?" "+e:"",l+=("?xml"===f?"":u)+`<${f}${e}${t}?>`,h=!0;continue}let p=u;""!==p&&(p+=o.indentBy);const y=u+`<${f}${r(d[":@"],o)}`,m=t(d[f],o,g,p);-1!==o.unpairedTags.indexOf(f)?l+=o.suppressUnpairedNode?y+">":y+"/>":m&&0!==m.length||!o.suppressEmptyNode?m&&m.endsWith(">")?l+=y+`>${m}${u}</${f}>`:(l+=y+">",m&&""!==u&&(m.includes("/>")||m.includes("</"))?l+=u+o.indentBy+m+u:l+=m,l+=`</${f}>`):l+=y+"/>",h=!0}return l}function e(t){const e=Object.keys(t);for(let r=0;r<e.length;r++){const i=e[r];if(t.hasOwnProperty(i)&&":@"!==i)return i}}function r(t,e){let r="";if(t&&!e.ignoreAttributes)for(let i in t){if(!t.hasOwnProperty(i))continue;let s=e.attributeValueProcessor(i,t[i]);s=n(s,e),r+=!0===s&&e.suppressBooleanAttributes?` ${i.substr(e.attributeNamePrefix.length)}`:` ${i.substr(e.attributeNamePrefix.length)}="${s}"`}return r}function i(t,e){let r=(t=t.substr(0,t.length-e.textNodeName.length-1)).substr(t.lastIndexOf(".")+1);for(let i in e.stopNodes)if(e.stopNodes[i]===t||e.stopNodes[i]==="*."+r)return!0;return!1}function n(t,e){if(t&&t.length>0&&e.processEntities)for(let r=0;r<e.entities.length;r++){const i=e.entities[r];t=t.replace(i.regex,i.val)}return t}return C=1,x=function(e,r){let i="";return r.format&&r.indentBy.length>0&&(i="\n"),t(e,r,"",i)}}var R=function(){if(M)return E;M=1;const t=s(),e=function(){if(L)return P;L=1;const{buildOptions:t}=function(){if(o)return m;o=1;const t={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t){return t}};return m.buildOptions=function(e){return Object.assign({},t,e)},m.defaultOptions=t,m}(),e=v(),{prettify:r}=G(),i=s();return P=class{constructor(e){this.externalEntities={},this.options=t(e)}parse(t,n){if("string"==typeof t);else{if(!t.toString)throw new Error("XML data is accepted in String or Bytes[] form.");t=t.toString()}if(n){!0===n&&(n={});const e=i.validate(t,n);if(!0!==e)throw Error(`${e.err.msg}:${e.err.line}:${e.err.col}`)}const s=new e(this.options);s.addExternalEntities(this.externalEntities);const o=s.parseXml(t);return this.options.preserveOrder||void 0===o?o:r(o,this.options)}addEntity(t,e){if(-1!==e.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==t.indexOf("&")||-1!==t.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'");if("&"===e)throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=e}}}(),r=function(){if(S)return N;S=1;const t=T(),e=$(),r={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&amp;"},{regex:new RegExp(">","g"),val:"&gt;"},{regex:new RegExp("<","g"),val:"&lt;"},{regex:new RegExp("'","g"),val:"&apos;"},{regex:new RegExp('"',"g"),val:"&quot;"}],processEntities:!0,stopNodes:[],oneListGroup:!1};function i(t){this.options=Object.assign({},r,t),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=e(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=o),this.processTextOrObjNode=n,this.options.format?(this.indentate=s,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function n(t,e,r,i){const n=this.j2x(t,r+1,i.concat(e));return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,n.attrStr,r):this.buildObjectNode(n.val,e,n.attrStr,r)}function s(t){return this.options.indentBy.repeat(t)}function o(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}return i.prototype.build=function(e){return this.options.preserveOrder?t(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0,[]).val)},i.prototype.j2x=function(t,e,r){let i="",n="";const s=r.join(".");for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o))if(void 0===t[o])this.isAttribute(o)&&(n+="");else if(null===t[o])this.isAttribute(o)?n+="":n+=o===this.options.cdataPropName?"":"?"===o[0]?this.indentate(e)+"<"+o+"?"+this.tagEndChar:this.indentate(e)+"<"+o+"/"+this.tagEndChar;else if(t[o]instanceof Date)n+=this.buildTextValNode(t[o],o,"",e);else if("object"!=typeof t[o]){const r=this.isAttribute(o);if(r&&!this.ignoreAttributesFn(r,s))i+=this.buildAttrPairStr(r,""+t[o]);else if(!r)if(o===this.options.textNodeName){let e=this.options.tagValueProcessor(o,""+t[o]);n+=this.replaceEntitiesValue(e)}else n+=this.buildTextValNode(t[o],o,"",e)}else if(Array.isArray(t[o])){const i=t[o].length;let s="",a="";for(let u=0;u<i;u++){const i=t[o][u];if(void 0===i);else if(null===i)n+="?"===o[0]?this.indentate(e)+"<"+o+"?"+this.tagEndChar:this.indentate(e)+"<"+o+"/"+this.tagEndChar;else if("object"==typeof i)if(this.options.oneListGroup){const t=this.j2x(i,e+1,r.concat(o));s+=t.val,this.options.attributesGroupName&&i.hasOwnProperty(this.options.attributesGroupName)&&(a+=t.attrStr)}else s+=this.processTextOrObjNode(i,o,e,r);else if(this.options.oneListGroup){let t=this.options.tagValueProcessor(o,i);t=this.replaceEntitiesValue(t),s+=t}else s+=this.buildTextValNode(i,o,"",e)}this.options.oneListGroup&&(s=this.buildObjectNode(s,o,a,e)),n+=s}else if(this.options.attributesGroupName&&o===this.options.attributesGroupName){const e=Object.keys(t[o]),r=e.length;for(let n=0;n<r;n++)i+=this.buildAttrPairStr(e[n],""+t[o][e[n]])}else n+=this.processTextOrObjNode(t[o],o,e,r);return{attrStr:i,val:n}},i.prototype.buildAttrPairStr=function(t,e){return e=this.options.attributeValueProcessor(t,""+e),e=this.replaceEntitiesValue(e),this.options.suppressBooleanAttributes&&"true"===e?" "+t:" "+t+'="'+e+'"'},i.prototype.buildObjectNode=function(t,e,r,i){if(""===t)return"?"===e[0]?this.indentate(i)+"<"+e+r+"?"+this.tagEndChar:this.indentate(i)+"<"+e+r+this.closeTag(e)+this.tagEndChar;{let n="</"+e+this.tagEndChar,s="";return"?"===e[0]&&(s="?",n=""),!r&&""!==r||-1!==t.indexOf("<")?!1!==this.options.commentPropName&&e===this.options.commentPropName&&0===s.length?this.indentate(i)+`\x3c!--${t}--\x3e`+this.newLine:this.indentate(i)+"<"+e+r+s+this.tagEndChar+t+this.indentate(i)+n:this.indentate(i)+"<"+e+r+s+">"+t+n}},i.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`></${t}`,e},i.prototype.buildTextValNode=function(t,e,r,i){if(!1!==this.options.cdataPropName&&e===this.options.cdataPropName)return this.indentate(i)+`<![CDATA[${t}]]>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(i)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(i)+"<"+e+r+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(e,t);return n=this.replaceEntitiesValue(n),""===n?this.indentate(i)+"<"+e+r+this.closeTag(e)+this.tagEndChar:this.indentate(i)+"<"+e+r+">"+n+"</"+e+this.tagEndChar}},i.prototype.replaceEntitiesValue=function(t){if(t&&t.length>0&&this.options.processEntities)for(let e=0;e<this.options.entities.length;e++){const r=this.options.entities[e];t=t.replace(r.regex,r.val)}return t},N=i}();return E={XMLParser:e,XMLValidator:t,XMLBuilder:r}}();class O{buildPoint(t){return{type:"Point",coordinates:t.coordinates}}buildLineString(t){return{type:"LineString",coordinates:t.coordinates}}buildPolygon(t){return{type:"Polygon",coordinates:t.coordinates}}buildMultiPoint(t){return{type:"MultiPoint",coordinates:t.coordinates}}buildMultiLineString(t){return{type:"MultiLineString",coordinates:t.coordinates}}buildMultiPolygon(t){return{type:"MultiPolygon",coordinates:t.coordinates}}buildLinearRing(t){return{type:"LineString",coordinates:t.coordinates}}buildEnvelope(t){return{type:"Feature",bbox:t.bbox,properties:{type:"Envelope"},geometry:{type:"Polygon",coordinates:[[[t.bbox[0],t.bbox[1]],[t.bbox[2],t.bbox[1]],[t.bbox[2],t.bbox[3]],[t.bbox[0],t.bbox[3]],[t.bbox[0],t.bbox[1]]]]}}}buildBox(t){return this.buildEnvelope({type:"Envelope",bbox:t.coordinates,srsName:t.srsName,version:t.version})}buildCurve(t){return{type:"LineString",coordinates:t.coordinates}}buildSurface(t){return{type:"MultiPolygon",coordinates:t.patches.map((t=>t.coordinates))}}buildRectifiedGridCoverage(t){let e,r=null;t.boundedBy&&(e=t.boundedBy.bbox,r={type:"Polygon",coordinates:[[[e[0],e[1]],[e[2],e[1]],[e[2],e[3]],[e[0],e[3]],[e[0],e[1]]]]});const i={coverageType:"RectifiedGridCoverage",grid:{dimension:t.domainSet.dimension,srsName:t.domainSet.srsName,limits:t.domainSet.limits,axisLabels:t.domainSet.axisLabels,origin:t.domainSet.origin,offsetVectors:t.domainSet.offsetVectors}};t.rangeType&&(i.rangeType=t.rangeType),t.rangeSet.file&&(i.dataFile=t.rangeSet.file);const n={type:"Feature",geometry:r||{type:"Point",coordinates:t.domainSet.origin},properties:i};return t.id&&(n.id=t.id),e&&4===e.length&&(n.bbox=e),n}buildGridCoverage(t){let e,r=null;t.boundedBy&&(e=t.boundedBy.bbox,r={type:"Polygon",coordinates:[[[e[0],e[1]],[e[2],e[1]],[e[2],e[3]],[e[0],e[3]],[e[0],e[1]]]]});const i={coverageType:"GridCoverage",grid:{dimension:t.domainSet.dimension,limits:t.domainSet.limits,axisLabels:t.domainSet.axisLabels}};t.rangeType&&(i.rangeType=t.rangeType),t.rangeSet.file&&(i.dataFile=t.rangeSet.file);const n={type:"Feature",geometry:r||{type:"Point",coordinates:[0,0]},properties:i};return t.id&&(n.id=t.id),e&&4===e.length&&(n.bbox=e),n}buildReferenceableGridCoverage(t){let e,r=null;t.boundedBy&&(e=t.boundedBy.bbox,r={type:"Polygon",coordinates:[[[e[0],e[1]],[e[2],e[1]],[e[2],e[3]],[e[0],e[3]],[e[0],e[1]]]]});const i={coverageType:"ReferenceableGridCoverage",grid:{dimension:t.domainSet.dimension,limits:t.domainSet.limits,axisLabels:t.domainSet.axisLabels}};t.rangeType&&(i.rangeType=t.rangeType),t.rangeSet.file&&(i.dataFile=t.rangeSet.file);const n={type:"Feature",geometry:r||{type:"Point",coordinates:[0,0]},properties:i};return t.id&&(n.id=t.id),e&&4===e.length&&(n.bbox=e),n}buildMultiPointCoverage(t){const e=this.buildMultiPoint(t.domainSet);let r;t.boundedBy&&(r=t.boundedBy.bbox);const i={coverageType:"MultiPointCoverage",points:{count:t.domainSet.coordinates.length,srsName:t.domainSet.srsName}};t.rangeType&&(i.rangeType=t.rangeType),t.rangeSet.file&&(i.dataFile=t.rangeSet.file);const n={type:"Feature",geometry:e,properties:i};return t.id&&(n.id=t.id),r&&4===r.length&&(n.bbox=r),n}buildFeature(t){const e=this.buildGeometry(t.geometry);let r,i={...t.properties};"Feature"===e.type?(r=e.geometry,i={...e.properties,...i}):r=e;const n={type:"Feature",geometry:r,properties:i};return t.id&&(n.id=t.id),t.boundedBy&&(n.bbox=t.boundedBy.bbox),n}buildFeatureCollection(t){const e={type:"FeatureCollection",features:t.features.map((t=>this.buildFeature(t)))};return t.bounds&&(e.bbox=t.bounds.bbox),e}buildGeometry(t){switch(t.type){case"Point":return this.buildPoint(t);case"LineString":return this.buildLineString(t);case"Polygon":return this.buildPolygon(t);case"LinearRing":return this.buildLinearRing(t);case"Envelope":return this.buildEnvelope(t);case"Box":return this.buildBox(t);case"Curve":return this.buildCurve(t);case"Surface":return this.buildSurface(t);case"MultiPoint":return this.buildMultiPoint(t);case"MultiLineString":return this.buildMultiLineString(t);case"MultiPolygon":return this.buildMultiPolygon(t);default:throw new Error(`Unsupported geometry type: ${t.type}`)}}}class F{buildPoint(t){return{type:"Point",pos:t.coordinates,srsName:t.srsName}}buildLineString(t){return{type:"LineString",posList:t.coordinates.flat(),srsName:t.srsName}}buildPolygon(t){return{type:"Polygon",exterior:t.coordinates[0],interior:t.coordinates.slice(1),srsName:t.srsName}}buildMultiPoint(t){return{type:"MultiPoint",pointMember:t.coordinates.map((t=>({Point:{pos:t}}))),srsName:t.srsName}}buildMultiLineString(t){return{type:"MultiLineString",lineStringMember:t.coordinates.map((t=>({LineString:{posList:t.flat()}}))),srsName:t.srsName}}buildMultiPolygon(t){return{type:"MultiPolygon",polygonMember:t.coordinates.map((t=>({Polygon:{exterior:t[0],interior:t.slice(1)}}))),srsName:t.srsName}}buildLinearRing(t){return{type:"LinearRing",posList:t.coordinates.flat(),srsName:t.srsName}}buildEnvelope(t){return{type:"Envelope",lowerCorner:[t.bbox[0],t.bbox[1]],upperCorner:[t.bbox[2],t.bbox[3]],srsName:t.srsName}}buildBox(t){return{type:"Box",coordinates:t.coordinates,srsName:t.srsName}}buildCurve(t){return{type:"Curve",segments:{LineStringSegment:{posList:t.coordinates.flat()}},srsName:t.srsName}}buildSurface(t){return{type:"Surface",patches:t.patches.map((t=>({PolygonPatch:{exterior:t.coordinates[0],interior:t.coordinates.slice(1)}}))),srsName:t.srsName}}buildRectifiedGridCoverage(t){const e={"@context":"http://www.opengis.net/cis/1.1/json",type:"CoverageByDomainAndRangeType",id:t.id};return t.boundedBy&&(e.boundedBy={Envelope:this.buildEnvelope(t.boundedBy)}),e.domainSet={type:"GeneralGrid",id:t.domainSet.id,srsName:t.domainSet.srsName,axisLabels:t.domainSet.axisLabels||["x","y"],axis:this.buildRectifiedGridAxes(t)},t.rangeType&&t.rangeType.field&&(e.rangeType={type:"DataRecord",field:t.rangeType.field.map((t=>({name:t.name,definition:t.description,uom:t.uom?{code:t.uom}:void 0,dataType:t.dataType})))}),t.rangeSet.file&&(e.rangeSet={type:"DataBlock",dataReference:{type:"FileReference",fileURL:t.rangeSet.file.fileName,fileStructure:t.rangeSet.file.fileStructure}}),e}buildGridCoverage(t){const e={"@context":"http://www.opengis.net/cis/1.1/json",type:"CoverageByDomainAndRangeType",id:t.id};return t.boundedBy&&(e.boundedBy={Envelope:this.buildEnvelope(t.boundedBy)}),e.domainSet={type:"Grid",id:t.domainSet.id,axisLabels:t.domainSet.axisLabels||["x","y"],limits:{GridEnvelope:{low:t.domainSet.limits.low,high:t.domainSet.limits.high}}},t.rangeType&&t.rangeType.field&&(e.rangeType={type:"DataRecord",field:t.rangeType.field.map((t=>({name:t.name,definition:t.description,uom:t.uom?{code:t.uom}:void 0,dataType:t.dataType})))}),t.rangeSet.file&&(e.rangeSet={type:"DataBlock",dataReference:{type:"FileReference",fileURL:t.rangeSet.file.fileName,fileStructure:t.rangeSet.file.fileStructure}}),e}buildReferenceableGridCoverage(t){return this.buildGridCoverage({...t,type:"GridCoverage"})}buildMultiPointCoverage(t){const e={"@context":"http://www.opengis.net/cis/1.1/json",type:"CoverageByDomainAndRangeType",id:t.id};return t.boundedBy&&(e.boundedBy={Envelope:this.buildEnvelope(t.boundedBy)}),e.domainSet=this.buildMultiPoint(t.domainSet),t.rangeType&&t.rangeType.field&&(e.rangeType={type:"DataRecord",field:t.rangeType.field.map((t=>({name:t.name,definition:t.description,uom:t.uom?{code:t.uom}:void 0,dataType:t.dataType})))}),t.rangeSet.file&&(e.rangeSet={type:"DataBlock",dataReference:{type:"FileReference",fileURL:t.rangeSet.file.fileName,fileStructure:t.rangeSet.file.fileStructure}}),e}buildFeature(t){return{type:"Feature",id:t.id,geometry:this.buildGeometry(t.geometry),properties:t.properties,boundedBy:t.boundedBy?this.buildEnvelope(t.boundedBy):void 0}}buildFeatureCollection(t){return{type:"FeatureCollection",features:t.features.map((t=>this.buildFeature(t))),boundedBy:t.bounds?this.buildEnvelope(t.bounds):void 0}}buildRectifiedGridAxes(t){const e=[],r=t.domainSet.dimension,i=t.domainSet.axisLabels||[];for(let n=0;n<r;n++)e.push({type:"RegularAxis",axisLabel:i[n]||`axis${n}`,lowerBound:t.domainSet.limits.low[n],upperBound:t.domainSet.limits.high[n],uomLabel:"GridSpacing",resolution:Math.abs(t.domainSet.offsetVectors[n]?.[n]||1)});return e}buildGeometry(t){switch(t.type){case"Point":return this.buildPoint(t);case"LineString":return this.buildLineString(t);case"Polygon":return this.buildPolygon(t);case"LinearRing":return this.buildLinearRing(t);case"Envelope":return this.buildEnvelope(t);case"Box":return this.buildBox(t);case"Curve":return this.buildCurve(t);case"Surface":return this.buildSurface(t);case"MultiPoint":return this.buildMultiPoint(t);case"MultiLineString":return this.buildMultiLineString(t);case"MultiPolygon":return this.buildMultiPolygon(t);default:throw new Error(`Unsupported geometry type: ${t.type}`)}}}class A{buildPoint(t){return{type:"Point",coordinates:t.coordinates}}buildLineString(t){return{type:"LineString",coordinates:t.coordinates}}buildPolygon(t){return{type:"Polygon",coordinates:t.coordinates}}buildMultiPoint(t){return{type:"MultiPoint",coordinates:t.coordinates}}buildMultiLineString(t){return{type:"MultiLineString",coordinates:t.coordinates}}buildMultiPolygon(t){return{type:"MultiPolygon",coordinates:t.coordinates}}buildLinearRing(t){return{type:"LineString",coordinates:t.coordinates}}buildEnvelope(t){return{type:"Polygon",coordinates:[[[t.bbox[0],t.bbox[1]],[t.bbox[2],t.bbox[1]],[t.bbox[2],t.bbox[3]],[t.bbox[0],t.bbox[3]],[t.bbox[0],t.bbox[1]]]]}}buildBox(t){return this.buildEnvelope({type:"Envelope",bbox:t.coordinates,srsName:t.srsName,version:t.version})}buildCurve(t){return{type:"LineString",coordinates:t.coordinates}}buildSurface(t){return{type:"MultiPolygon",coordinates:t.patches.map((t=>t.coordinates))}}buildRectifiedGridCoverage(t){const e={type:"Coverage",domain:this.buildGridDomain(t),parameters:this.buildParameters(t),ranges:this.buildRanges(t)};return t.domainSet.srsName&&(e.domain.referencing=[{coordinates:t.domainSet.axisLabels||["x","y"],system:{type:"GeographicCRS",id:t.domainSet.srsName}}]),e}buildGridCoverage(t){return{type:"Coverage",domain:{type:"Domain",domainType:"Grid",axes:this.buildSimpleGridAxes(t)},parameters:this.buildParameters(t),ranges:this.buildRanges(t)}}buildReferenceableGridCoverage(t){return this.buildGridCoverage({...t,type:"GridCoverage"})}buildMultiPointCoverage(t){const e={type:"Coverage",domain:{type:"Domain",domainType:"PointSeries",axes:{composite:{dataType:"tuple",coordinates:["x","y"],values:t.domainSet.coordinates}}},parameters:{},ranges:{}};return t.domainSet.srsName&&(e.domain.referencing=[{coordinates:["x","y"],system:{type:"GeographicCRS",id:t.domainSet.srsName}}]),t.rangeType&&t.rangeType.field?t.rangeType.field.forEach((t=>{e.parameters[t.name]={type:"Parameter",description:t.description?{en:t.description}:void 0,unit:t.uom?{symbol:t.uom}:void 0,observedProperty:{label:{en:t.name}}}})):e.parameters.value={type:"Parameter",observedProperty:{label:{en:"Value"}}},Object.keys(e.parameters).forEach((r=>{e.ranges[r]={type:"NdArray",dataType:"float",axisNames:["composite"],shape:[t.domainSet.coordinates.length],values:[]}})),e}buildFeature(t){return{type:"Feature",id:t.id,geometry:this.buildGeometry(t.geometry),properties:t.properties}}buildFeatureCollection(t){return{type:"FeatureCollection",features:t.features.map((t=>this.buildFeature(t)))}}buildGridDomain(t){const e={type:"Domain",domainType:"Grid",axes:{}},r=t.domainSet.axisLabels||["x","y"],i=t.domainSet.dimension;for(let n=0;n<i;n++){const i=t.domainSet.limits.low[n],s=t.domainSet.limits.high[n],o=t.domainSet.origin[n];e.axes[r[n]]={start:o,stop:o+(s-i)*(t.domainSet.offsetVectors[n]?.[n]||1),num:s-i+1}}return e}buildSimpleGridAxes(t){const e={},r=t.domainSet.axisLabels||["x","y"],i=t.domainSet.dimension;for(let n=0;n<i;n++){const i=t.domainSet.limits.low[n],s=t.domainSet.limits.high[n];e[r[n]]={start:i,stop:s,num:s-i+1}}return e}buildParameters(t){const e={};return t.rangeType&&t.rangeType.field?t.rangeType.field.forEach((t=>{e[t.name]={type:"Parameter",description:t.description?{en:t.description}:void 0,unit:t.uom?{symbol:t.uom}:void 0,observedProperty:{label:{en:t.name}}}})):e.value={type:"Parameter",observedProperty:{label:{en:"Value"}}},e}buildRanges(t){const e={};return"MultiPointCoverage"===t.type?(Object.keys(this.buildParameters(t)).forEach((r=>{e[r]={type:"NdArray",dataType:"float",axisNames:["composite"],shape:[t.domainSet.coordinates.length],values:[]}})),e):(t.rangeSet.file?t.rangeType&&t.rangeType.field?t.rangeType.field.forEach((r=>{e[r.name]={type:"TiledNdArray",dataType:r.dataType||"float",axisNames:"axisLabels"in t.domainSet&&t.domainSet.axisLabels?t.domainSet.axisLabels:["x","y"],shape:[t.domainSet.limits.high[0]-t.domainSet.limits.low[0]+1,t.domainSet.limits.high[1]-t.domainSet.limits.low[1]+1],tileSets:[{tileShape:null,urlTemplate:t.rangeSet.file?.fileName||""}]}})):e.value={type:"TiledNdArray",dataType:"float",axisNames:"axisLabels"in t.domainSet&&t.domainSet.axisLabels?t.domainSet.axisLabels:["x","y"],urlTemplate:t.rangeSet.file?.fileName||""}:Object.keys(this.buildParameters(t)).forEach((r=>{e[r]={type:"NdArray",dataType:"float",axisNames:t.domainSet.axisLabels||["x","y"],shape:[t.domainSet.limits.high[0]-t.domainSet.limits.low[0]+1,t.domainSet.limits.high[1]-t.domainSet.limits.low[1]+1],values:[]}})),e)}buildGeometry(t){switch(t.type){case"Point":return this.buildPoint(t);case"LineString":return this.buildLineString(t);case"Polygon":return this.buildPolygon(t);case"LinearRing":return this.buildLinearRing(t);case"Envelope":return this.buildEnvelope(t);case"Box":return this.buildBox(t);case"Curve":return this.buildCurve(t);case"Surface":return this.buildSurface(t);case"MultiPoint":return this.buildMultiPoint(t);case"MultiLineString":return this.buildMultiLineString(t);case"MultiPolygon":return this.buildMultiPolygon(t);default:throw new Error(`Unsupported geometry type: ${t.type}`)}}}class B{buildPoint(t){const[e,r,i]=t.coordinates;return void 0!==i?`POINT Z (${e} ${r} ${i})`:`POINT (${e} ${r})`}buildLineString(t){const e=t.coordinates.map((([t,e,r])=>void 0!==r?`${t} ${e} ${r}`:`${t} ${e}`)).join(", ");return t.coordinates.some((t=>void 0!==t[2]))?`LINESTRING Z (${e})`:`LINESTRING (${e})`}buildPolygon(t){const e=t.coordinates[0]?.some((t=>void 0!==t[2])),r=t.coordinates.map((t=>`(${t.map((([t,e,r])=>void 0!==r?`${t} ${e} ${r}`:`${t} ${e}`)).join(", ")})`)).join(", ");return e?`POLYGON Z (${r})`:`POLYGON (${r})`}buildMultiPoint(t){const e=t.coordinates.some((t=>void 0!==t[2])),r=t.coordinates.map((([t,e,r])=>void 0!==r?`${t} ${e} ${r}`:`${t} ${e}`)).join(", ");return e?`MULTIPOINT Z (${r})`:`MULTIPOINT (${r})`}buildMultiLineString(t){const e=t.coordinates[0]?.some((t=>void 0!==t[2])),r=t.coordinates.map((t=>`(${t.map((([t,e,r])=>void 0!==r?`${t} ${e} ${r}`:`${t} ${e}`)).join(", ")})`)).join(", ");return e?`MULTILINESTRING Z (${r})`:`MULTILINESTRING (${r})`}buildMultiPolygon(t){const e=t.coordinates[0]?.[0]?.some((t=>void 0!==t[2])),r=t.coordinates.map((t=>`(${t.map((t=>`(${t.map((([t,e,r])=>void 0!==r?`${t} ${e} ${r}`:`${t} ${e}`)).join(", ")})`)).join(", ")})`)).join(", ");return e?`MULTIPOLYGON Z (${r})`:`MULTIPOLYGON (${r})`}buildLinearRing(t){return this.buildLineString({type:"LineString",coordinates:t.coordinates,srsName:t.srsName,version:t.version})}buildEnvelope(t){const[e,r,i,n]=t.bbox;return{type:"CSV",headers:["geometry","type","minX","minY","maxX","maxY","srsName"],rows:[{geometry:`POLYGON ((${e} ${r}, ${i} ${r}, ${i} ${n}, ${e} ${n}, ${e} ${r}))`,type:"Envelope",minX:e,minY:r,maxX:i,maxY:n,srsName:t.srsName||""}]}}buildBox(t){return this.buildEnvelope({type:"Envelope",bbox:t.coordinates,srsName:t.srsName,version:t.version})}buildCurve(t){return this.buildLineString({type:"LineString",coordinates:t.coordinates,srsName:t.srsName,version:t.version})}buildSurface(t){return this.buildMultiPolygon({type:"MultiPolygon",coordinates:t.patches.map((t=>t.coordinates)),srsName:t.srsName,version:t.version})}buildRectifiedGridCoverage(t){const e={id:t.id,type:"RectifiedGridCoverage",dimension:t.domainSet.dimension,srsName:t.domainSet.srsName,gridLowX:t.domainSet.limits.low[0],gridLowY:t.domainSet.limits.low[1],gridHighX:t.domainSet.limits.high[0],gridHighY:t.domainSet.limits.high[1],originX:t.domainSet.origin[0],originY:t.domainSet.origin[1],offsetVector1X:t.domainSet.offsetVectors[0][0],offsetVector1Y:t.domainSet.offsetVectors[0][1],offsetVector2X:t.domainSet.offsetVectors[1][0],offsetVector2Y:t.domainSet.offsetVectors[1][1]};t.rangeSet.file&&(e.dataFile=t.rangeSet.file.fileName,e.fileStructure=t.rangeSet.file.fileStructure),t.rangeType?.field&&(e.bands=t.rangeType.field.map((t=>t.name)).join(";"));let r="";if(t.boundedBy){const[e,i,n,s]=t.boundedBy.bbox;r=`POLYGON ((${e} ${i}, ${n} ${i}, ${n} ${s}, ${e} ${s}, ${e} ${i}))`}return e.geometry=r,{type:"CSV",headers:Object.keys(e),rows:[e]}}buildGridCoverage(t){const e={id:t.id,type:"GridCoverage",dimension:t.domainSet.dimension,gridLowX:t.domainSet.limits.low[0],gridLowY:t.domainSet.limits.low[1],gridHighX:t.domainSet.limits.high[0],gridHighY:t.domainSet.limits.high[1]};t.rangeSet.file&&(e.dataFile=t.rangeSet.file.fileName,e.fileStructure=t.rangeSet.file.fileStructure),t.rangeType?.field&&(e.bands=t.rangeType.field.map((t=>t.name)).join(";"));let r="";if(t.boundedBy){const[e,i,n,s]=t.boundedBy.bbox;r=`POLYGON ((${e} ${i}, ${n} ${i}, ${n} ${s}, ${e} ${s}, ${e} ${i}))`}return e.geometry=r,{type:"CSV",headers:Object.keys(e),rows:[e]}}buildReferenceableGridCoverage(t){const e={id:t.id,type:"ReferenceableGridCoverage",dimension:t.domainSet.dimension,gridLowX:t.domainSet.limits.low[0],gridLowY:t.domainSet.limits.low[1],gridHighX:t.domainSet.limits.high[0],gridHighY:t.domainSet.limits.high[1]};t.rangeSet.file&&(e.dataFile=t.rangeSet.file.fileName,e.fileStructure=t.rangeSet.file.fileStructure),t.rangeType?.field&&(e.bands=t.rangeType.field.map((t=>t.name)).join(";"));let r="";if(t.boundedBy){const[e,i,n,s]=t.boundedBy.bbox;r=`POLYGON ((${e} ${i}, ${n} ${i}, ${n} ${s}, ${e} ${s}, ${e} ${i}))`}return e.geometry=r,{type:"CSV",headers:Object.keys(e),rows:[e]}}buildMultiPointCoverage(t){const e=this.buildMultiPoint(t.domainSet),r={id:t.id,type:"MultiPointCoverage",geometry:e,pointCount:t.domainSet.coordinates.length,srsName:t.domainSet.srsName};return t.rangeSet.file&&(r.dataFile=t.rangeSet.file.fileName,r.fileStructure=t.rangeSet.file.fileStructure),t.rangeType?.field&&(r.bands=t.rangeType.field.map((t=>t.name)).join(";")),{type:"CSV",headers:Object.keys(r),rows:[r]}}buildFeature(t){const e=this.buildGeometry(t.geometry),r={id:t.id,geometry:e,...t.properties};t.boundedBy&&(r.bbox=t.boundedBy.bbox.join(","));const i=["id","geometry",...Object.keys(t.properties)];return t.boundedBy&&i.push("bbox"),{type:"CSV",headers:i,rows:[r]}}buildFeatureCollection(t){if(0===t.features.length)return"id,geometry\n";const e=new Set(["id","geometry"]);t.features.forEach((t=>{Object.keys(t.properties).forEach((t=>e.add(t))),t.boundedBy&&e.add("bbox")}));const r=Array.from(e),i=t.features.map((t=>this.buildFeature(t).rows[0]));return this.toCsvString(r,i)}buildGeometry(t){switch(t.type){case"Point":return this.buildPoint(t);case"LineString":return this.buildLineString(t);case"Polygon":return this.buildPolygon(t);case"LinearRing":return this.buildLinearRing(t);case"Envelope":return this.buildEnvelope(t);case"Box":return this.buildBox(t);case"Curve":return this.buildCurve(t);case"Surface":return this.buildSurface(t);case"MultiPoint":return this.buildMultiPoint(t);case"MultiLineString":return this.buildMultiLineString(t);case"MultiPolygon":return this.buildMultiPolygon(t);default:throw new Error(`Unsupported geometry type: ${t.type}`)}}toCsvString(t,e){const r=t=>{if(null==t)return"";const e=String(t);return e.includes(",")||e.includes('"')||e.includes("\n")?`"${e.replace(/"/g,'""')}"`:e};return`${t.map((t=>r(t))).join(",")}\n${e.map((e=>t.map((t=>r(e[t]))).join(","))).join("\n")}`}}class j{buildPoint(t){const[e,r,i]=t.coordinates;return`<Point><coordinates>${void 0!==i?`${e},${r},${i}`:`${e},${r}`}</coordinates></Point>`}buildLineString(t){return`<LineString><coordinates>${t.coordinates.map((([t,e,r])=>void 0!==r?`${t},${e},${r}`:`${t},${e}`)).join(" ")}</coordinates></LineString>`}buildPolygon(t){const e=t.coordinates[0],r=t.coordinates.slice(1);let i=`<Polygon><outerBoundaryIs><LinearRing><coordinates>${e.map((([t,e,r])=>void 0!==r?`${t},${e},${r}`:`${t},${e}`)).join(" ")}</coordinates></LinearRing></outerBoundaryIs>`;for(const t of r)i+=`<innerBoundaryIs><LinearRing><coordinates>${t.map((([t,e,r])=>void 0!==r?`${t},${e},${r}`:`${t},${e}`)).join(" ")}</coordinates></LinearRing></innerBoundaryIs>`;return i+="</Polygon>",i}buildMultiPoint(t){return`<MultiGeometry>${t.coordinates.map((([t,e,r])=>`<Point><coordinates>${void 0!==r?`${t},${e},${r}`:`${t},${e}`}</coordinates></Point>`)).join("")}</MultiGeometry>`}buildMultiLineString(t){return`<MultiGeometry>${t.coordinates.map((t=>`<LineString><coordinates>${t.map((([t,e,r])=>void 0!==r?`${t},${e},${r}`:`${t},${e}`)).join(" ")}</coordinates></LineString>`)).join("")}</MultiGeometry>`}buildMultiPolygon(t){return`<MultiGeometry>${t.coordinates.map((t=>{const e=t[0],r=t.slice(1);let i=`<Polygon><outerBoundaryIs><LinearRing><coordinates>${e.map((([t,e,r])=>void 0!==r?`${t},${e},${r}`:`${t},${e}`)).join(" ")}</coordinates></LinearRing></outerBoundaryIs>`;for(const t of r)i+=`<innerBoundaryIs><LinearRing><coordinates>${t.map((([t,e,r])=>void 0!==r?`${t},${e},${r}`:`${t},${e}`)).join(" ")}</coordinates></LinearRing></innerBoundaryIs>`;return i+="</Polygon>",i})).join("")}</MultiGeometry>`}buildLinearRing(t){return this.buildLineString({type:"LineString",coordinates:t.coordinates,srsName:t.srsName,version:t.version})}buildEnvelope(t){const[e,r,i,n]=t.bbox;return`<Placemark>\n <name>Envelope</name>\n <Polygon>\n <outerBoundaryIs>\n <LinearRing>\n <coordinates>${e},${r} ${i},${r} ${i},${n} ${e},${n} ${e},${r}</coordinates>\n </LinearRing>\n </outerBoundaryIs>\n </Polygon>\n</Placemark>`}buildBox(t){return this.buildEnvelope({type:"Envelope",bbox:t.coordinates,srsName:t.srsName,version:t.version})}buildCurve(t){return this.buildLineString({type:"LineString",coordinates:t.coordinates,srsName:t.srsName,version:t.version})}buildSurface(t){return this.buildMultiPolygon({type:"MultiPolygon",coordinates:t.patches.map((t=>t.coordinates)),srsName:t.srsName,version:t.version})}buildRectifiedGridCoverage(t){let e="",r="";if(t.boundedBy){const[r,i,n,s]=t.boundedBy.bbox;e=`<Polygon><outerBoundaryIs><LinearRing><coordinates>${r},${i} ${n},${i} ${n},${s} ${r},${s} ${r},${i}</coordinates></LinearRing></outerBoundaryIs></Polygon>`}return r+=`<![CDATA[\n<table>\n<tr><th>Type</th><td>RectifiedGridCoverage</td></tr>\n<tr><th>Dimension</th><td>${t.domainSet.dimension}</td></tr>\n<tr><th>SRS</th><td>${t.domainSet.srsName||"N/A"}</td></tr>\n<tr><th>Grid Limits</th><td>Low: ${t.domainSet.limits.low.join(", ")}, High: ${t.domainSet.limits.high.join(", ")}</td></tr>\n<tr><th>Origin</th><td>${t.domainSet.origin.join(", ")}</td></tr>`,t.rangeSet.file&&(r+=`<tr><th>Data File</th><td>${this.escapeXml(t.rangeSet.file.fileName)}</td></tr>`,t.rangeSet.file.fileStructure&&(r+=`<tr><th>File Structure</th><td>${this.escapeXml(t.rangeSet.file.fileStructure)}</td></tr>`)),t.rangeType?.field&&(r+=`<tr><th>Bands</th><td>${t.rangeType.field.map((t=>this.escapeXml(t.name))).join(", ")}</td></tr>`),r+="</table>]]>",`<Placemark>\n <name>${this.escapeXml(t.id||"RectifiedGridCoverage")}</name>\n <description>${r}</description>\n ${e}\n</Placemark>`}buildGridCoverage(t){let e="",r="";if(t.boundedBy){const[r,i,n,s]=t.boundedBy.bbox;e=`<Polygon><outerBoundaryIs><LinearRing><coordinates>${r},${i} ${n},${i} ${n},${s} ${r},${s} ${r},${i}</coordinates></LinearRing></outerBoundaryIs></Polygon>`}return r+=`<![CDATA[\n<table>\n<tr><th>Type</th><td>GridCoverage</td></tr>\n<tr><th>Dimension</th><td>${t.domainSet.dimension}</td></tr>\n<tr><th>Grid Limits</th><td>Low: ${t.domainSet.limits.low.join(", ")}, High: ${t.domainSet.limits.high.join(", ")}</td></tr>`,t.rangeSet.file&&(r+=`<tr><th>Data File</th><td>${this.escapeXml(t.rangeSet.file.fileName)}</td></tr>`),t.rangeType?.field&&(r+=`<tr><th>Bands</th><td>${t.rangeType.field.map((t=>this.escapeXml(t.name))).join(", ")}</td></tr>`),r+="</table>]]>",`<Placemark>\n <name>${this.escapeXml(t.id||"GridCoverage")}</name>\n <description>${r}</description>\n ${e}\n</Placemark>`}buildReferenceableGridCoverage(t){let e="",r="";if(t.boundedBy){const[r,i,n,s]=t.boundedBy.bbox;e=`<Polygon><outerBoundaryIs><LinearRing><coordinates>${r},${i} ${n},${i} ${n},${s} ${r},${s} ${r},${i}</coordinates></LinearRing></outerBoundaryIs></Polygon>`}return r+=`<![CDATA[\n<table>\n<tr><th>Type</th><td>ReferenceableGridCoverage</td></tr>\n<tr><th>Dimension</th><td>${t.domainSet.dimension}</td></tr>\n<tr><th>Grid Limits</th><td>Low: ${t.domainSet.limits.low.join(", ")}, High: ${t.domainSet.limits.high.join(", ")}</td></tr>`,t.rangeSet.file&&(r+=`<tr><th>Data File</th><td>${this.escapeXml(t.rangeSet.file.fileName)}</td></tr>`),t.rangeType?.field&&(r+=`<tr><th>Bands</th><td>${t.rangeType.field.map((t=>this.escapeXml(t.name))).join(", ")}</td></tr>`),r+="</table>]]>",`<Placemark>\n <name>${this.escapeXml(t.id||"ReferenceableGridCoverage")}</name>\n <description>${r}</description>\n ${e}\n</Placemark>`}buildMultiPointCoverage(t){const e=this.buildMultiPoint(t.domainSet);let r=`<![CDATA[\n<table>\n<tr><th>Type</th><td>MultiPointCoverage</td></tr>\n<tr><th>Point Count</th><td>${t.domainSet.coordinates.length}</td></tr>\n<tr><th>SRS</th><td>${t.domainSet.srsName||"N/A"}</td></tr>`;return t.rangeSet.file&&(r+=`<tr><th>Data File</th><td>${this.escapeXml(t.rangeSet.file.fileName)}</td></tr>`),t.rangeType?.field&&(r+=`<tr><th>Bands</th><td>${t.rangeType.field.map((t=>this.escapeXml(t.name))).join(", ")}</td></tr>`),r+="</table>]]>",`<Placemark>\n <name>${this.escapeXml(t.id||"MultiPointCoverage")}</name>\n <description>${r}</description>\n ${e}\n</Placemark>`}buildFeature(t){const e=this.buildGeometry(t.geometry);let r="";if(Object.keys(t.properties).length>0){r="<![CDATA[<table>";for(const[e,i]of Object.entries(t.properties))r+=`<tr><th>${this.escapeXml(e)}</th><td>${this.escapeXml(String(i))}</td></tr>`;r+="</table>]]>"}return`<Placemark>\n <name>${this.escapeXml(t.properties.name||t.properties.title||t.id||"Feature")}</name>\n ${r?`<description>${r}</description>`:""}\n ${e}\n</Placemark>`}buildFeatureCollection(t){const e=t.features.map((t=>this.buildFeature(t))).join("\n");return`<?xml version="1.0" encoding="UTF-8"?>\n<kml xmlns="http://www.opengis.net/kml/2.2">\n<Document>\n <name>GML Feature Collection</name>\n <description>Converted from GML ${t.version}</description>\n ${e}\n</Document>\n</kml>`}buildGeometry(t){switch(t.type){case"Point":return this.buildPoint(t);case"LineString":return this.buildLineString(t);case"Polygon":return this.buildPolygon(t);case"LinearRing":return this.buildLinearRing(t);case"Envelope":return this.buildEnvelope(t);case"Box":return this.buildBox(t);case"Curve":return this.buildCurve(t);case"Surface":return this.buildSurface(t);case"MultiPoint":return this.buildMultiPoint(t);case"MultiLineString":return this.buildMultiLineString(t);case"MultiPolygon":return this.buildMultiPolygon(t);default:throw new Error(`Unsupported geometry type: ${t.type}`)}}escapeXml(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}}class _{buildPoint(t){const[e,r,i]=t.coordinates;return void 0!==i?`POINT Z (${e} ${r} ${i})`:`POINT (${e} ${r})`}buildLineString(t){const e=t.coordinates.map((([t,e,r])=>void 0!==r?`${t} ${e} ${r}`:`${t} ${e}`)).join(", ");return t.coordinates.some((t=>void 0!==t[2]))?`LINESTRING Z (${e})`:`LINESTRING (${e})`}buildPolygon(t){const e=t.coordinates[0]?.some((t=>void 0!==t[2])),r=t.coordinates.map((t=>`(${t.map((([t,e,r])=>void 0!==r?`${t} ${e} ${r}`:`${t} ${e}`)).join(", ")})`)).join(", ");return e?`POLYGON Z (${r})`:`POLYGON (${r})`}buildMultiPoint(t){const e=t.coordinates.some((t=>void 0!==t[2])),r=t.coordinates.map((([t,e,r])=>void 0!==r?`${t} ${e} ${r}`:`${t} ${e}`)).join(", ");return e?`MULTIPOINT Z (${r})`:`MULTIPOINT (${r})`}buildMultiLineString(t){const e=t.coordinates[0]?.some((t=>void 0!==t[2])),r=t.coordinates.map((t=>`(${t.map((([t,e,r])=>void 0!==r?`${t} ${e} ${r}`:`${t} ${e}`)).join(", ")})`)).join(", ");return e?`MULTILINESTRING Z (${r})`:`MULTILINESTRING (${r})`}buildMultiPolygon(t){const e=t.coordinates[0]?.[0]?.some((t=>void 0!==t[2])),r=t.coordinates.map((t=>`(${t.map((t=>`(${t.map((([t,e,r])=>void 0!==r?`${t} ${e} ${r}`:`${t} ${e}`)).join(", ")})`)).join(", ")})`)).join(", ");return e?`MULTIPOLYGON Z (${r})`:`MULTIPOLYGON (${r})`}buildLinearRing(t){return this.buildLineString({type:"LineString",coordinates:t.coordinates,srsName:t.srsName,version:t.version})}buildEnvelope(t){const[e,r,i,n]=t.bbox;return{wkt:`POLYGON ((${e} ${r}, ${i} ${r}, ${i} ${n}, ${e} ${n}, ${e} ${r}))`,properties:{type:"Envelope",minX:e,minY:r,maxX:i,maxY:n,srsName:t.srsName}}}buildBox(t){return this.buildEnvelope({type:"Envelope",bbox:t.coordinates,srsName:t.srsName,version:t.version})}buildCurve(t){return this.buildLineString({type:"LineString",coordinates:t.coordinates,srsName:t.srsName,version:t.version})}buildSurface(t){return this.buildMultiPolygon({type:"MultiPolygon",coordinates:t.patches.map((t=>t.coordinates)),srsName:t.srsName,version:t.version})}buildRectifiedGridCoverage(t){let e="";if(t.boundedBy){const[r,i,n,s]=t.boundedBy.bbox;e=`POLYGON ((${r} ${i}, ${n} ${i}, ${n} ${s}, ${r} ${s}, ${r} ${i}))`}else{const[r,i]=t.domainSet.origin;e=`POINT (${r} ${i})`}const r={type:"RectifiedGridCoverage",dimension:t.domainSet.dimension,srsName:t.domainSet.srsName,gridLowX:t.domainSet.limits.low[0],gridLowY:t.domainSet.limits.low[1],gridHighX:t.domainSet.limits.high[0],gridHighY:t.domainSet.limits.high[1],originX:t.domainSet.origin[0],originY:t.domainSet.origin[1]};return t.rangeSet.file&&(r.dataFile=t.rangeSet.file.fileName,r.fileStructure=t.rangeSet.file.fileStructure),t.rangeType?.field&&(r.bands=t.rangeType.field.map((t=>t.name)).join(";")),{wkt:e,properties:r,id:t.id}}buildGridCoverage(t){let e="";if(t.boundedBy){const[r,i,n,s]=t.boundedBy.bbox;e=`POLYGON ((${r} ${i}, ${n} ${i}, ${n} ${s}, ${r} ${s}, ${r} ${i}))`}else e="POINT (0 0)";const r={type:"GridCoverage",dimension:t.domainSet.dimension,gridLowX:t.domainSet.limits.low[0],gridLowY:t.domainSet.limits.low[1],gridHighX:t.domainSet.limits.high[0],gridHighY:t.domainSet.limits.high[1]};return t.rangeSet.file&&(r.dataFile=t.rangeSet.file.fileName,r.fileStructure=t.rangeSet.file.fileStructure),t.rangeType?.field&&(r.bands=t.rangeType.field.map((t=>t.name)).join(";")),{wkt:e,properties:r,id:t.id}}buildReferenceableGridCoverage(t){let e="";if(t.boundedBy){const[r,i,n,s]=t.boundedBy.bbox;e=`POLYGON ((${r} ${i}, ${n} ${i}, ${n} ${s}, ${r} ${s}, ${r} ${i}))`}else e="POINT (0 0)";const r={type:"ReferenceableGridCoverage",dimension:t.domainSet.dimension,gridLowX:t.domainSet.limits.low[0],gridLowY:t.domainSet.limits.low[1],gridHighX:t.domainSet.limits.high[0],gridHighY:t.domainSet.limits.high[1]};return t.rangeSet.file&&(r.dataFile=t.rangeSet.file.fileName,r.fileStructure=t.rangeSet.file.fileStructure),t.rangeType?.field&&(r.bands=t.rangeType.field.map((t=>t.name)).join(";")),{wkt:e,properties:r,id:t.id}}buildMultiPointCoverage(t){const e=this.buildMultiPoint(t.domainSet),r={type:"MultiPointCoverage",pointCount:t.domainSet.coordinates.length,srsName:t.domainSet.srsName};return t.rangeSet.file&&(r.dataFile=t.rangeSet.file.fileName,r.fileStructure=t.rangeSet.file.fileStructure),t.rangeType?.field&&(r.bands=t.rangeType.field.map((t=>t.name)).join(";")),{wkt:e,properties:r,id:t.id}}buildFeature(t){const e=this.buildGeometry(t.geometry);let r,i={...t.properties};"string"==typeof e?r=e:(r=e.wkt,i={...e.properties,...i});const n={wkt:r,properties:i};return t.id&&(n.id=t.id),t.boundedBy&&(i.bbox=t.boundedBy.bbox.join(",")),n}buildFeatureCollection(t){return{features:t.features.map((t=>this.buildFeature(t)))}}buildGeometry(t){switch(t.type){case"Point":return this.buildPoint(t);case"LineString":return this.buildLineString(t);case"Polygon":return this.buildPolygon(t);case"LinearRing":return this.buildLinearRing(t);case"Envelope":return this.buildEnvelope(t);case"Box":return this.buildBox(t);case"Curve":return this.buildCurve(t);case"Surface":return this.buildSurface(t);case"MultiPoint":return this.buildMultiPoint(t);case"MultiLineString":return this.buildMultiLineString(t);case"MultiPolygon":return this.buildMultiPolygon(t);default:throw new Error(`Unsupported geometry type: ${t.type}`)}}}const U=new Uint8Array([102,103,98,3,102,103,98,0]),k=new Int32Array(2),D=new Float32Array(k.buffer),V=new Float64Array(k.buffer),Y=1===new Uint16Array(new Uint8Array([1,0]).buffer)[0];var X,H;!function(t){t[t.UTF8_BYTES=1]="UTF8_BYTES",t[t.UTF16_STRING=2]="UTF16_STRING"}(X||(X={}));class z{constructor(t){this.bytes_=t,this.position_=0,this.text_decoder_=new TextDecoder}static allocate(t){return new z(new Uint8Array(t))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(t){this.position_=t}capacity(){return this.bytes_.length}readInt8(t){return this.readUint8(t)<<24>>24}readUint8(t){return this.bytes_[t]}readInt16(t){return this.readUint16(t)<<16>>16}readUint16(t){return this.bytes_[t]|this.bytes_[t+1]<<8}readInt32(t){return this.bytes_[t]|this.bytes_[t+1]<<8|this.bytes_[t+2]<<16|this.bytes_[t+3]<<24}readUint32(t){return this.readInt32(t)>>>0}readInt64(t){return BigInt.asIntN(64,BigInt(this.readUint32(t))+(BigInt(this.readUint32(t+4))<<BigInt(32)))}readUint64(t){return BigInt.asUintN(64,BigInt(this.readUint32(t))+(BigInt(this.readUint32(t+4))<<BigInt(32)))}readFloat32(t){return k[0]=this.readInt32(t),D[0]}readFloat64(t){return k[Y?0:1]=this.readInt32(t),k[Y?1:0]=this.readInt32(t+4),V[0]}writeInt8(t,e){this.bytes_[t]=e}writeUint8(t,e){this.bytes_[t]=e}writeInt16(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8}writeUint16(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8}writeInt32(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8,this.bytes_[t+2]=e>>16,this.bytes_[t+3]=e>>24}writeUint32(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8,this.bytes_[t+2]=e>>16,this.bytes_[t+3]=e>>24}writeInt64(t,e){this.writeInt32(t,Number(BigInt.asIntN(32,e))),this.writeInt32(t+4,Number(BigInt.asIntN(32,e>>BigInt(32))))}writeUint64(t,e){this.writeUint32(t,Number(BigInt.asUintN(32,e))),this.writeUint32(t+4,Number(BigInt.asUintN(32,e>>BigInt(32))))}writeFloat32(t,e){D[0]=e,this.writeInt32(t,k[0])}writeFloat64(t,e){V[0]=e,this.writeInt32(t,k[Y?0:1]),this.writeInt32(t+4,k[Y?1:0])}getBufferIdentifier(){if(this.bytes_.length<this.position_+4+4)throw new Error("FlatBuffers: ByteBuffer is too short to contain an identifier.");let t="";for(let e=0;e<4;e++)t+=String.fromCharCode(this.readInt8(this.position_+4+e));return t}__offset(t,e){const r=t-this.readInt32(t);return e<this.readInt16(r)?this.readInt16(r+e):0}__union(t,e){return t.bb_pos=e+this.readInt32(e),t.bb=this,t}__string(t,e){t+=this.readInt32(t);const r=this.readInt32(t),i=this.bytes_.subarray(t+=4,t+r);return e===X.UTF8_BYTES?i:this.text_decoder_.decode(i)}__union_with_string(t,e){return"string"==typeof t?this.__string(e):this.__union(t,e)}__indirect(t){return t+this.readInt32(t)}__vector(t){return t+this.readInt32(t)+4}__vector_len(t){return this.readInt32(t+this.readInt32(t))}__has_identifier(t){if(4!=t.length)throw new Error("FlatBuffers: file identifier must be length 4");for(let e=0;e<4;e++)if(t.charCodeAt(e)!=this.readInt8(this.position()+4+e))return!1;return!0}createScalarList(t,e){const r=[];for(let i=0;i<e;++i){const e=t(i);null!==e&&r.push(e)}return r}createObjList(t,e){const r=[];for(let i=0;i<e;++i){const e=t(i);null!==e&&r.push(e.unpack())}return r}}class Z{constructor(t){let e;this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1,this.string_maps=null,this.text_encoder=new TextEncoder,e=t||1024,this.bb=z.allocate(e),this.space=e}clear(){this.bb.clear(),this.space=this.bb.capacity(),this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1,this.string_maps=null}forceDefaults(t){this.force_defaults=t}dataBuffer(){return this.bb}asUint8Array(){return this.bb.bytes().subarray(this.bb.position(),this.bb.position()+this.offset())}prep(t,e){t>this.minalign&&(this.minalign=t);const r=1+~(this.bb.capacity()-this.space+e)&t-1;for(;this.space<r+t+e;){const t=this.bb.capacity();this.bb=Z.growByteBuffer(this.bb),this.space+=this.bb.capacity()-t}this.pad(r)}pad(t){for(let e=0;e<t;e++)this.bb.writeInt8(--this.space,0)}writeInt8(t){this.bb.writeInt8(this.space-=1,t)}writeInt16(t){this.bb.writeInt16(this.space-=2,t)}writeInt32(t){this.bb.writeInt32(this.space-=4,t)}writeInt64(t){this.bb.writeInt64(this.space-=8,t)}writeFloat32(t){this.bb.writeFloat32(this.space-=4,t)}writeFloat64(t){this.bb.writeFloat64(this.space-=8,t)}addInt8(t){this.prep(1,0),this.writeInt8(t)}addInt16(t){this.prep(2,0),this.writeInt16(t)}addInt32(t){this.prep(4,0),this.writeInt32(t)}addInt64(t){this.prep(8,0),this.writeInt64(t)}addFloat32(t){this.prep(4,0),this.writeFloat32(t)}addFloat64(t){this.prep(8,0),this.writeFloat64(t)}addFieldInt8(t,e,r){(this.force_defaults||e!=r)&&(this.addInt8(e),this.slot(t))}addFieldInt16(t,e,r){(this.force_defaults||e!=r)&&(this.addInt16(e),this.slot(t))}addFieldInt32(t,e,r){(this.force_defaults||e!=r)&&(this.addInt32(e),this.slot(t))}addFieldInt64(t,e,r){(this.force_defaults||e!==r)&&(this.addInt64(e),this.slot(t))}addFieldFloat32(t,e,r){(this.force_defaults||e!=r)&&(this.addFloat32(e),this.slot(t))}addFieldFloat64(t,e,r){(this.force_defaults||e!=r)&&(this.addFloat64(e),this.slot(t))}addFieldOffset(t,e,r){(this.force_defaults||e!=r)&&(this.addOffset(e),this.slot(t))}addFieldStruct(t,e,r){e!=r&&(this.nested(e),this.slot(t))}nested(t){if(t!=this.offset())throw new TypeError("FlatBuffers: struct must be serialized inline.")}notNested(){if(this.isNested)throw new TypeError("FlatBuffers: object serialization must not be nested.")}slot(t){null!==this.vtable&&(this.vtable[t]=this.offset())}offset(){return this.bb.capacity()-this.space}static growByteBuffer(t){const e=t.capacity();if(3221225472&e)throw new Error("FlatBuffers: cannot grow buffer beyond 2 gigabytes.");const r=e<<1,i=z.allocate(r);return i.setPosition(r-e),i.bytes().set(t.bytes(),r-e),i}addOffset(t){this.prep(4,0),this.writeInt32(this.offset()-t+4)}startObject(t){this.notNested(),null==this.vtable&&(this.vtable=[]),this.vtable_in_use=t;for(let e=0;e<t;e++)this.vtable[e]=0;this.isNested=!0,this.object_start=this.offset()}endObject(){if(null==this.vtable||!this.isNested)throw new Error("FlatBuffers: endObject called without startObject");this.addInt32(0);const t=this.offset();let e=this.vtable_in_use-1;for(;e>=0&&0==this.vtable[e];e--);const r=e+1;for(;e>=0;e--)this.addInt16(0!=this.vtable[e]?t-this.vtable[e]:0);this.addInt16(t-this.object_start);const i=2*(r+2);this.addInt16(i);let n=0;const s=this.space;t:for(e=0;e<this.vtables.length;e++){const t=this.bb.capacity()-this.vtables[e];if(i==this.bb.readInt16(t)){for(let e=2;e<i;e+=2)if(this.bb.readInt16(s+e)!=this.bb.readInt16(t+e))continue t;n=this.vtables[e];break}}return n?(this.space=this.bb.capacity()-t,this.bb.writeInt32(this.space,n-t)):(this.vtables.push(this.offset()),this.bb.writeInt32(this.bb.capacity()-t,this.offset()-t)),this.isNested=!1,t}finish(t,e,r){const i=r?4:0;if(e){const t=e;if(this.prep(this.minalign,8+i),4!=t.length)throw new TypeError("FlatBuffers: file identifier must be length 4");for(let e=3;e>=0;e--)this.writeInt8(t.charCodeAt(e))}this.prep(this.minalign,4+i),this.addOffset(t),i&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(t,e){this.finish(t,e,!0)}requiredField(t,e){const r=this.bb.capacity()-t,i=r-this.bb.readInt32(r);if(!(e<this.bb.readInt16(i)&&0!=this.bb.readInt16(i+e)))throw new TypeError("FlatBuffers: field "+e+" must be set")}startVector(t,e,r){this.notNested(),this.vector_num_elems=e,this.prep(4,t*e),this.prep(r,t*e)}endVector(){return this.writeInt32(this.vector_num_elems),this.offset()}createSharedString(t){if(!t)return 0;if(this.string_maps||(this.string_maps=new Map),this.string_maps.has(t))return this.string_maps.get(t);const e=this.createString(t);return this.string_maps.set(t,e),e}createString(t){if(null==t)return 0;let e;return e=t instanceof Uint8Array?t:this.text_encoder.encode(t),this.addInt8(0),this.startVector(1,e.length,1),this.bb.setPosition(this.space-=e.length),this.bb.bytes().set(e,this.space),this.endVector()}createByteVector(t){return null==t?0:(this.startVector(1,t.length,1),this.bb.setPosition(this.space-=t.length),this.bb.bytes().set(t,this.space),this.endVector())}createObjectOffset(t){return null===t?0:"string"==typeof t?this.createString(t):t.pack(this)}createObjectOffsetList(t){const e=[];for(let r=0;r<t.length;++r){const i=t[r];if(null===i)throw new TypeError("FlatBuffers: Argument for createObjectOffsetList cannot contain null.");e.push(this.createObjectOffset(i))}return e}createStructOffsetList(t,e){return e(this,t.length),this.createObjectOffsetList(t.slice().reverse()),this.endVector()}}var q,J=((H={})[H.Byte=0]="Byte",H[H.UByte=1]="UByte",H[H.Bool=2]="Bool",H[H.Short=3]="Short",H[H.UShort=4]="UShort",H[H.Int=5]="Int",H[H.UInt=6]="UInt",H[H.Long=7]="Long",H[H.ULong=8]="ULong",H[H.Float=9]="Float",H[H.Double=10]="Double",H[H.String=11]="String",H[H.Json=12]="Json",H[H.DateTime=13]="DateTime",H[H.Binary=14]="Binary",H);class W{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsColumn(t,e){return(e||new W).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsColumn(t,e){return t.setPosition(t.position()+4),(e||new W).__init(t.readInt32(t.position())+t.position(),t)}name(t){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__string(this.bb_pos+e,t):null}type(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readUint8(this.bb_pos+t):J.Byte}title(t){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.__string(this.bb_pos+e,t):null}description(t){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.__string(this.bb_pos+e,t):null}width(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.readInt32(this.bb_pos+t):-1}precision(){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.readInt32(this.bb_pos+t):-1}scale(){let t=this.bb.__offset(this.bb_pos,16);return t?this.bb.readInt32(this.bb_pos+t):-1}nullable(){let t=this.bb.__offset(this.bb_pos,18);return!t||!!this.bb.readInt8(this.bb_pos+t)}unique(){let t=this.bb.__offset(this.bb_pos,20);return!!t&&!!this.bb.readInt8(this.bb_pos+t)}primaryKey(){let t=this.bb.__offset(this.bb_pos,22);return!!t&&!!this.bb.readInt8(this.bb_pos+t)}metadata(t){let e=this.bb.__offset(this.bb_pos,24);return e?this.bb.__string(this.bb_pos+e,t):null}static startColumn(t){t.startObject(11)}static addName(t,e){t.addFieldOffset(0,e,0)}static addType(t,e){t.addFieldInt8(1,e,J.Byte)}static addTitle(t,e){t.addFieldOffset(2,e,0)}static addDescription(t,e){t.addFieldOffset(3,e,0)}static addWidth(t,e){t.addFieldInt32(4,e,-1)}static addPrecision(t,e){t.addFieldInt32(5,e,-1)}static addScale(t,e){t.addFieldInt32(6,e,-1)}static addNullable(t,e){t.addFieldInt8(7,+e,1)}static addUnique(t,e){t.addFieldInt8(8,+e,0)}static addPrimaryKey(t,e){t.addFieldInt8(9,+e,0)}static addMetadata(t,e){t.addFieldOffset(10,e,0)}static endColumn(t){let e=t.endObject();return t.requiredField(e,4),e}static createColumn(t,e,r,i,n,s,o,a,u,l,h,c){return W.startColumn(t),W.addName(t,e),W.addType(t,r),W.addTitle(t,i),W.addDescription(t,n),W.addWidth(t,s),W.addPrecision(t,o),W.addScale(t,a),W.addNullable(t,u),W.addUnique(t,l),W.addPrimaryKey(t,h),W.addMetadata(t,c),W.endColumn(t)}}var K=((q={})[q.Unknown=0]="Unknown",q[q.Point=1]="Point",q[q.LineString=2]="LineString",q[q.Polygon=3]="Polygon",q[q.MultiPoint=4]="MultiPoint",q[q.MultiLineString=5]="MultiLineString",q[q.MultiPolygon=6]="MultiPolygon",q[q.GeometryCollection=7]="GeometryCollection",q[q.CircularString=8]="CircularString",q[q.CompoundCurve=9]="CompoundCurve",q[q.CurvePolygon=10]="CurvePolygon",q[q.MultiCurve=11]="MultiCurve",q[q.MultiSurface=12]="MultiSurface",q[q.Curve=13]="Curve",q[q.Surface=14]="Surface",q[q.PolyhedralSurface=15]="PolyhedralSurface",q[q.TIN=16]="TIN",q[q.Triangle=17]="Triangle",q);class Q{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsGeometry(t,e){return(e||new Q).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsGeometry(t,e){return t.setPosition(t.position()+4),(e||new Q).__init(t.readInt32(t.position())+t.position(),t)}ends(t){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint32(this.bb.__vector(this.bb_pos+e)+4*t):0}endsLength(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.__vector_len(this.bb_pos+t):0}endsArray(){let t=this.bb.__offset(this.bb_pos,4);return t?new Uint32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}xy(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readFloat64(this.bb.__vector(this.bb_pos+e)+8*t):0}xyLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}xyArray(){let t=this.bb.__offset(this.bb_pos,6);return t?new Float64Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}z(t){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readFloat64(this.bb.__vector(this.bb_pos+e)+8*t):0}zLength(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.__vector_len(this.bb_pos+t):0}zArray(){let t=this.bb.__offset(this.bb_pos,8);return t?new Float64Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}m(t){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readFloat64(this.bb.__vector(this.bb_pos+e)+8*t):0}mLength(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.__vector_len(this.bb_pos+t):0}mArray(){let t=this.bb.__offset(this.bb_pos,10);return t?new Float64Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}t(t){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readFloat64(this.bb.__vector(this.bb_pos+e)+8*t):0}tLength(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.__vector_len(this.bb_pos+t):0}tArray(){let t=this.bb.__offset(this.bb_pos,12);return t?new Float64Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}tm(t){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.readUint64(this.bb.__vector(this.bb_pos+e)+8*t):BigInt(0)}tmLength(){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.__vector_len(this.bb_pos+t):0}type(){let t=this.bb.__offset(this.bb_pos,16);return t?this.bb.readUint8(this.bb_pos+t):K.Unknown}parts(t,e){let r=this.bb.__offset(this.bb_pos,18);return r?(e||new Q).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+4*t),this.bb):null}partsLength(){let t=this.bb.__offset(this.bb_pos,18);return t?this.bb.__vector_len(this.bb_pos+t):0}static startGeometry(t){t.startObject(8)}static addEnds(t,e){t.addFieldOffset(0,e,0)}static createEndsVector(t,e){t.startVector(4,e.length,4);for(let r=e.length-1;r>=0;r--)t.addInt32(e[r]);return t.endVector()}static startEndsVector(t,e){t.startVector(4,e,4)}static addXy(t,e){t.addFieldOffset(1,e,0)}static createXyVector(t,e){t.startVector(8,e.length,8);for(let r=e.length-1;r>=0;r--)t.addFloat64(e[r]);return t.endVector()}static startXyVector(t,e){t.startVector(8,e,8)}static addZ(t,e){t.addFieldOffset(2,e,0)}static createZVector(t,e){t.startVector(8,e.length,8);for(let r=e.length-1;r>=0;r--)t.addFloat64(e[r]);return t.endVector()}static startZVector(t,e){t.startVector(8,e,8)}static addM(t,e){t.addFieldOffset(3,e,0)}static createMVector(t,e){t.startVector(8,e.length,8);for(let r=e.length-1;r>=0;r--)t.addFloat64(e[r]);return t.endVector()}static startMVector(t,e){t.startVector(8,e,8)}static addT(t,e){t.addFieldOffset(4,e,0)}static createTVector(t,e){t.startVector(8,e.length,8);for(let r=e.length-1;r>=0;r--)t.addFloat64(e[r]);return t.endVector()}static startTVector(t,e){t.startVector(8,e,8)}static addTm(t,e){t.addFieldOffset(5,e,0)}static createTmVector(t,e){t.startVector(8,e.length,8);for(let r=e.length-1;r>=0;r--)t.addInt64(e[r]);return t.endVector()}static startTmVector(t,e){t.startVector(8,e,8)}static addType(t,e){t.addFieldInt8(6,e,K.Unknown)}static addParts(t,e){t.addFieldOffset(7,e,0)}static createPartsVector(t,e){t.startVector(4,e.length,4);for(let r=e.length-1;r>=0;r--)t.addOffset(e[r]);return t.endVector()}static startPartsVector(t,e){t.startVector(4,e,4)}static endGeometry(t){return t.endObject()}static createGeometry(t,e,r,i,n,s,o,a,u){return Q.startGeometry(t),Q.addEnds(t,e),Q.addXy(t,r),Q.addZ(t,i),Q.addM(t,n),Q.addT(t,s),Q.addTm(t,o),Q.addType(t,a),Q.addParts(t,u),Q.endGeometry(t)}}class tt{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsFeature(t,e){return(e||new tt).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsFeature(t,e){return t.setPosition(t.position()+4),(e||new tt).__init(t.readInt32(t.position())+t.position(),t)}geometry(t){let e=this.bb.__offset(this.bb_pos,4);return e?(t||new Q).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}properties(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint8(this.bb.__vector(this.bb_pos+e)+t):0}propertiesLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}propertiesArray(){let t=this.bb.__offset(this.bb_pos,6);return t?new Uint8Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}columns(t,e){let r=this.bb.__offset(this.bb_pos,8);return r?(e||new W).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+4*t),this.bb):null}columnsLength(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.__vector_len(this.bb_pos+t):0}static startFeature(t){t.startObject(3)}static addGeometry(t,e){t.addFieldOffset(0,e,0)}static addProperties(t,e){t.addFieldOffset(1,e,0)}static createPropertiesVector(t,e){t.startVector(1,e.length,1);for(let r=e.length-1;r>=0;r--)t.addInt8(e[r]);return t.endVector()}static startPropertiesVector(t,e){t.startVector(1,e,1)}static addColumns(t,e){t.addFieldOffset(2,e,0)}static createColumnsVector(t,e){t.startVector(4,e.length,4);for(let r=e.length-1;r>=0;r--)t.addOffset(e[r]);return t.endVector()}static startColumnsVector(t,e){t.startVector(4,e,4)}static endFeature(t){return t.endObject()}static finishFeatureBuffer(t,e){t.finish(e)}static finishSizePrefixedFeatureBuffer(t,e){t.finish(e,void 0,!0)}static createFeature(t,e,r,i){return tt.startFeature(t),tt.addGeometry(t,e),tt.addProperties(t,r),tt.addColumns(t,i),tt.endFeature(t)}}function et(t,e){let r,i,n,{xy:s,z:o,m:a,ends:u,parts:l,type:h}=e;if(l){let e=l.map((e=>et(t,e))),r=Q.createPartsVector(t,e);return Q.startGeometry(t),Q.addParts(t,r),Q.addType(t,h),Q.endGeometry(t)}let c=Q.createXyVector(t,s);return o&&(r=Q.createZVector(t,o)),a&&(i=Q.createMVector(t,a)),u&&(n=Q.createEndsVector(t,u)),Q.startGeometry(t),n&&Q.addEnds(t,n),Q.addXy(t,c),r&&Q.addZ(t,r),i&&Q.addM(t,i),Q.addType(t,h),Q.endGeometry(t)}function rt(t,e,r){if(0!==t.length)if(Array.isArray(t[0]))for(let i of t)rt(i,e,r);else 2===t.length?e.push(...t):(e.push(t[0],t[1]),r.push(t[2]))}function it(t){return t?K[t]:K.Unknown}let nt=new TextEncoder;function st(t,e,r){let i=r.columns,n=new Z,s=0,o=1024,a=new Uint8Array(1024),u=new DataView(a.buffer),l=t=>{if(s+t<o)return;let e=new Uint8Array(o=Math.max(o+t,2*o));e.set(a),u=new DataView((a=e).buffer)};if(i)for(let t=0;t<i.length;t++){let r=i[t],n=e[r.name];if(null!==n)switch(l(2),u.setUint16(s,t,!0),s+=2,r.type){case J.Bool:l(1),u.setUint8(s,n),s+=1;break;case J.Short:l(2),u.setInt16(s,n,!0),s+=2;break;case J.UShort:l(2),u.setUint16(s,n,!0),s+=2;break;case J.Int:l(4),u.setInt32(s,n,!0),s+=4;break;case J.UInt:l(4),u.setUint32(s,n,!0),s+=4;break;case J.Long:l(8),u.setBigInt64(s,BigInt(n),!0),s+=8;break;case J.Float:l(4),u.setFloat32(s,n,!0),s+=4;break;case J.Double:l(8),u.setFloat64(s,n,!0),s+=8;break;case J.DateTime:case J.String:{let t=nt.encode(n);l(4),u.setUint32(s,t.length,!0),s+=4,l(t.length),a.set(t,s),s+=t.length;break}case J.Json:{let t=nt.encode(JSON.stringify(n));l(4),u.setUint32(s,t.length,!0),s+=4,l(t.length),a.set(t,s),s+=t.length;break}case J.Binary:l(4),u.setUint32(s,n.length,!0),s+=4,l(n.length),a.set(n,s),s+=n.length;break;default:throw Error(`Unknown type ${r.type}`)}}let h=0;s>0&&(h=tt.createPropertiesVector(n,a.slice(0,s)));let c=et(n,t);tt.startFeature(n),tt.addGeometry(n,c),h&&tt.addProperties(n,h);let d=tt.endFeature(n);return n.finishSizePrefixed(d),n.asUint8Array()}new TextDecoder;class ot{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsCrs(t,e){return(e||new ot).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsCrs(t,e){return t.setPosition(t.position()+4),(e||new ot).__init(t.readInt32(t.position())+t.position(),t)}org(t){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__string(this.bb_pos+e,t):null}code(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readInt32(this.bb_pos+t):0}name(t){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.__string(this.bb_pos+e,t):null}description(t){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.__string(this.bb_pos+e,t):null}wkt(t){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.__string(this.bb_pos+e,t):null}codeString(t){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.__string(this.bb_pos+e,t):null}static startCrs(t){t.startObject(6)}static addOrg(t,e){t.addFieldOffset(0,e,0)}static addCode(t,e){t.addFieldInt32(1,e,0)}static addName(t,e){t.addFieldOffset(2,e,0)}static addDescription(t,e){t.addFieldOffset(3,e,0)}static addWkt(t,e){t.addFieldOffset(4,e,0)}static addCodeString(t,e){t.addFieldOffset(5,e,0)}static endCrs(t){return t.endObject()}static createCrs(t,e,r,i,n,s,o){return ot.startCrs(t),ot.addOrg(t,e),ot.addCode(t,r),ot.addName(t,i),ot.addDescription(t,n),ot.addWkt(t,s),ot.addCodeString(t,o),ot.endCrs(t)}}class at{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsHeader(t,e){return(e||new at).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsHeader(t,e){return t.setPosition(t.position()+4),(e||new at).__init(t.readInt32(t.position())+t.position(),t)}name(t){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__string(this.bb_pos+e,t):null}envelope(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readFloat64(this.bb.__vector(this.bb_pos+e)+8*t):0}envelopeLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}envelopeArray(){let t=this.bb.__offset(this.bb_pos,6);return t?new Float64Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}geometryType(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readUint8(this.bb_pos+t):K.Unknown}hasZ(){let t=this.bb.__offset(this.bb_pos,10);return!!t&&!!this.bb.readInt8(this.bb_pos+t)}hasM(){let t=this.bb.__offset(this.bb_pos,12);return!!t&&!!this.bb.readInt8(this.bb_pos+t)}hasT(){let t=this.bb.__offset(this.bb_pos,14);return!!t&&!!this.bb.readInt8(this.bb_pos+t)}hasTm(){let t=this.bb.__offset(this.bb_pos,16);return!!t&&!!this.bb.readInt8(this.bb_pos+t)}columns(t,e){let r=this.bb.__offset(this.bb_pos,18);return r?(e||new W).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+r)+4*t),this.bb):null}columnsLength(){let t=this.bb.__offset(this.bb_pos,18);return t?this.bb.__vector_len(this.bb_pos+t):0}featuresCount(){let t=this.bb.__offset(this.bb_pos,20);return t?this.bb.readUint64(this.bb_pos+t):BigInt("0")}indexNodeSize(){let t=this.bb.__offset(this.bb_pos,22);return t?this.bb.readUint16(this.bb_pos+t):16}crs(t){let e=this.bb.__offset(this.bb_pos,24);return e?(t||new ot).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}title(t){let e=this.bb.__offset(this.bb_pos,26);return e?this.bb.__string(this.bb_pos+e,t):null}description(t){let e=this.bb.__offset(this.bb_pos,28);return e?this.bb.__string(this.bb_pos+e,t):null}metadata(t){let e=this.bb.__offset(this.bb_pos,30);return e?this.bb.__string(this.bb_pos+e,t):null}static startHeader(t){t.startObject(14)}static addName(t,e){t.addFieldOffset(0,e,0)}static addEnvelope(t,e){t.addFieldOffset(1,e,0)}static createEnvelopeVector(t,e){t.startVector(8,e.length,8);for(let r=e.length-1;r>=0;r--)t.addFloat64(e[r]);return t.endVector()}static startEnvelopeVector(t,e){t.startVector(8,e,8)}static addGeometryType(t,e){t.addFieldInt8(2,e,K.Unknown)}static addHasZ(t,e){t.addFieldInt8(3,+e,0)}static addHasM(t,e){t.addFieldInt8(4,+e,0)}static addHasT(t,e){t.addFieldInt8(5,+e,0)}static addHasTm(t,e){t.addFieldInt8(6,+e,0)}static addColumns(t,e){t.addFieldOffset(7,e,0)}static createColumnsVector(t,e){t.startVector(4,e.length,4);for(let r=e.length-1;r>=0;r--)t.addOffset(e[r]);return t.endVector()}static startColumnsVector(t,e){t.startVector(4,e,4)}static addFeaturesCount(t,e){t.addFieldInt64(8,e,BigInt("0"))}static addIndexNodeSize(t,e){t.addFieldInt16(9,e,16)}static addCrs(t,e){t.addFieldOffset(10,e,0)}static addTitle(t,e){t.addFieldOffset(11,e,0)}static addDescription(t,e){t.addFieldOffset(12,e,0)}static addMetadata(t,e){t.addFieldOffset(13,e,0)}static endHeader(t){return t.endObject()}static finishHeaderBuffer(t,e){t.finish(e)}static finishSizePrefixedHeaderBuffer(t,e){t.finish(e,void 0,!0)}}class ut{static global=new ut;_extraRequestThreshold=262144;extraRequestThreshold(){return this._extraRequestThreshold}setExtraRequestThreshold(t){if(t<0)throw Error("extraRequestThreshold cannot be negative");this._extraRequestThreshold=t}}
2
+ /*! *****************************************************************************
3
+ Copyright (c) Microsoft Corporation.
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted.
7
+
8
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
9
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
10
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
11
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
+ PERFORMANCE OF THIS SOFTWARE.
15
+ ***************************************************************************** */var lt,ht=function(t,e){return ht=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])},ht(t,e)};function ct(t){let e;for(let r of t){if(e===K.Unknown)break;let t=it(r.getGeometry?r.getGeometry().getType():r.geometry.type);void 0===e?e=t:e!==t&&(e=K.Unknown)}if(void 0===e)throw Error("Could not infer geometry type for collection of features.");return e}function dt(t){let e,r,i=t.coordinates,n=[],s=[],o=it(t.type),a=0;switch(t.type){case"Point":case"MultiPoint":case"LineString":rt(i,n,s);break;case"MultiLineString":case"Polygon":rt(i,n,s),i.length>1&&(e=i.map((t=>a+=t.length)));break;case"MultiPolygon":r=i.map((t=>({type:"Polygon",coordinates:t}))).map(dt)}return{xy:n,z:s.length>0?s:void 0,ends:e,type:o,parts:r}}function ft(t){let e=it(t.type),r=[];for(let e=0;e<t.geometries.length;e++){let i=t.geometries[e];r.push("GeometryCollection"===i.type?ft(i):dt(i))}return{type:e,parts:r}}function gt(t,e=0){let r=function(t){let e=t.features[0].properties,r=null;return e&&(r=Object.keys(e).map((t=>function(t,e){return{name:e,type:function(t){if("boolean"==typeof t)return J.Bool;if("number"==typeof t)return t%1==0?J.Int:J.Double;if("string"==typeof t||null===t)return J.String;if(t instanceof Uint8Array)return J.Binary;if("object"==typeof t)return J.Json;throw Error(`Unknown type (value '${t}')`)}(t[e]),title:null,description:null,width:-1,precision:-1,scale:-1,nullable:!0,unique:!1,primary_key:!1}}(e,t)))),{geometryType:ct(t.features),columns:r,envelope:null,featuresCount:t.features.length,indexNodeSize:0,crs:null,title:null,description:null,metadata:null}}(t),i=function(t,e=0){let r,i=new Z,n=0;t.columns&&(n=at.createColumnsVector(i,t.columns.map((t=>function(t,e){let r=t.createString(e.name);return W.startColumn(t),W.addName(t,r),W.addType(t,e.type),W.endColumn(t)}(i,t)))));let s=i.createString("L1");e&&(ot.startCrs(i),ot.addCode(i,e),r=ot.endCrs(i)),at.startHeader(i),r&&at.addCrs(i,r),at.addFeaturesCount(i,BigInt(t.featuresCount)),at.addGeometryType(i,t.geometryType),at.addIndexNodeSize(i,0),n&&at.addColumns(i,n),at.addName(i,s);let o=at.endHeader(i);return i.finishSizePrefixed(o),i.asUint8Array()}(r,e),n=t.features.map((t=>st("GeometryCollection"===t.geometry.type?ft(t.geometry):dt(t.geometry),t.properties,r))),s=n.map((t=>t.length)).reduce(((t,e)=>t+e)),o=new Uint8Array(U.length+i.length+s);o.set(i,U.length);let a=U.length+i.length;for(let t of n)o.set(t,a),a+=t.length;return o.set(U),o}(function(t,e){function r(){this.constructor=t}ht(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)})((function(t){var e=lt.call(this,t)||this;return Object.defineProperty(e,"name",{value:"RepeaterOverflowError",enumerable:!1}),"function"==typeof Object.setPrototypeOf?Object.setPrototypeOf(e,e.constructor.prototype):e.__proto__=e.constructor.prototype,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(e,e.constructor),e}),lt=Error),function(){function t(t){if(t<0)throw new RangeError("Capacity may not be less than 0");this._c=t,this._q=[]}Object.defineProperty(t.prototype,"empty",{get:function(){return 0===this._q.length},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"full",{get:function(){return this._q.length>=this._c},enumerable:!1,configurable:!0}),t.prototype.add=function(t){if(this.full)throw new Error("Buffer full");this._q.push(t)},t.prototype.remove=function(){if(this.empty)throw new Error("Buffer empty");return this._q.shift()}}(),function(){function t(t){if(t<1)throw new RangeError("Capacity may not be less than 1");this._c=t,this._q=[]}Object.defineProperty(t.prototype,"empty",{get:function(){return 0===this._q.length},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"full",{get:function(){return!1},enumerable:!1,configurable:!0}),t.prototype.add=function(t){for(;this._q.length>=this._c;)this._q.shift();this._q.push(t)},t.prototype.remove=function(){if(this.empty)throw new Error("Buffer empty");return this._q.shift()}}(),function(){function t(t){if(t<1)throw new RangeError("Capacity may not be less than 1");this._c=t,this._q=[]}Object.defineProperty(t.prototype,"empty",{get:function(){return 0===this._q.length},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"full",{get:function(){return!1},enumerable:!1,configurable:!0}),t.prototype.add=function(t){this._q.length<this._c&&this._q.push(t)},t.prototype.remove=function(){if(this.empty)throw new Error("Buffer empty");return this._q.shift()}}();class pt{geoJsonBuilder;constructor(){this.geoJsonBuilder=new O}buildPoint(t){return this.geoJsonBuilder.buildPoint(t)}buildLineString(t){return this.geoJsonBuilder.buildLineString(t)}buildPolygon(t){return this.geoJsonBuilder.buildPolygon(t)}buildMultiPoint(t){return this.geoJsonBuilder.buildMultiPoint(t)}buildMultiLineString(t){return this.geoJsonBuilder.buildMultiLineString(t)}buildMultiPolygon(t){return this.geoJsonBuilder.buildMultiPolygon(t)}buildLinearRing(t){return this.geoJsonBuilder.buildLinearRing(t)}buildEnvelope(t){return this.geoJsonBuilder.buildEnvelope(t)}buildBox(t){return this.geoJsonBuilder.buildBox(t)}buildCurve(t){return this.geoJsonBuilder.buildCurve(t)}buildSurface(t){return this.geoJsonBuilder.buildSurface(t)}buildRectifiedGridCoverage(t){return this.geoJsonBuilder.buildRectifiedGridCoverage(t)}buildGridCoverage(t){return this.geoJsonBuilder.buildGridCoverage(t)}buildReferenceableGridCoverage(t){return this.geoJsonBuilder.buildReferenceableGridCoverage(t)}buildMultiPointCoverage(t){return this.geoJsonBuilder.buildMultiPointCoverage(t)}buildFeature(t){return this.geoJsonBuilder.buildFeature(t)}buildFeatureCollection(t){return this.geoJsonBuilder.buildFeatureCollection(t)}toFlatGeobuf(t){try{return function(t,e=0){return gt(t,e)}(t)}catch(t){throw new Error(`Failed to serialize to FlatGeobuf: ${t.message}`)}}}function yt(t){throw new Error(`${t} is not available in the browser build of @npm9912/s-gml.`)}function mt(t){switch(t){case"geojson":return new O;case"cis-json":case"json-coverage":return new F;case"coveragejson":case"covjson":return new A;case"csv":return new B;case"kml":return new j;case"wkt":return new _;case"flatgeobuf":case"fgb":return new pt;case"shapefile":case"shp":return yt("Shapefile export");case"geopackage":case"gpkg":return yt("GeoPackage export");default:throw new Error(`Unsupported target format: ${t}. Supported in browsers: geojson, cis-json, coveragejson, csv, kml, wkt, flatgeobuf`)}}class bt extends Error{report;constructor(t){const e=t.exceptions[0];super(e?`OWS Exception [${e.exceptionCode}]: ${e.exceptionText.join(", ")}`:"OWS Exception Report received"),this.name="OwsExceptionError",this.report=t,Error.captureStackTrace&&Error.captureStackTrace(this,bt)}getAllMessages(){return this.report.exceptions.map((t=>`${t.exceptionCode}${t.locator?` [${t.locator}]`:""}: ${t.exceptionText.join(", ")}`)).join("\n")}}function $t(t){return t.includes("<ows:ExceptionReport")||t.includes("<ExceptionReport")}function vt(t){const e=new R.XMLParser({ignoreAttributes:!1,attributeNamePrefix:"@_",textNodeName:"#text",parseAttributeValue:!0}).parse(t),r=Object.keys(e).find((t=>"ows:ExceptionReport"===t||"ExceptionReport"===t));if(!r)throw new Error("Not a valid OWS Exception Report");const i=e[r],n=i["@_version"]||"1.0.0",s=Object.keys(i).find((t=>"ows:Exception"===t||"Exception"===t));if(!s)return{version:n,exceptions:[]};const o=i[s];return{version:n,exceptions:(Array.isArray(o)?o:[o]).map((t=>{const e=t["@_exceptionCode"]||"Unknown",r=t["@_locator"],i=Object.keys(t).find((t=>"ows:ExceptionText"===t||"ExceptionText"===t));let n=[];if(i){const e=t[i];Array.isArray(e)?n=e.map((t=>"string"==typeof t?t:t["#text"]||"")):"string"==typeof e?n=[e]:e&&e["#text"]&&(n=[e["#text"]])}return{exceptionCode:e,locator:r,exceptionText:n}}))}}const wt=new R.XMLParser({ignoreAttributes:!1,attributeNamePrefix:"",attributesGroupName:"$",textNodeName:"_",trimValues:!1,allowBooleanAttributes:!0,parseAttributeValue:!1,parseTagValue:!1,removeNSPrefix:!1});async function Pt(t){$t(t)&&function(t){const e=vt(t);throw new bt(e)}(t);const e=wt.parse(t);if(!e||"object"!=typeof e)throw new Error("Invalid XML: parsing failed");return Lt(e),e}function Lt(t,e){if(Array.isArray(t))for(const r of t)Lt(r,e);else if(t&&"object"==typeof t){e&&function(t,e){const r=e.split(":");Object.defineProperty(t,"#name",{value:r[r.length-1],enumerable:!1,writable:!0,configurable:!0})}(t,e);for(const[e,r]of Object.entries(t))"$"!==e&&"_"!==e&&"#name"!==e&&Lt(r,e)}}function xt(t){const e=Nt(t);if(!e)throw new Error("No GML namespace found");return e.includes("3.2")?"3.2":e.includes("3.1")?"3.1":e.includes("3.0")?"3.0":e.includes("2.1.2")||"http://www.opengis.net/gml"===e&&Ct(t)?"2.1.2":"3.2"}function Ct(t){if(!t||"object"!=typeof t)return!1;for(const[e,r]of Object.entries(t)){if("gml:coordinates"===e||"gml:outerBoundaryIs"===e||"gml:innerBoundaryIs"===e)return!0;if(Array.isArray(r)){for(const t of r)if(Ct(t))return!0}else if("object"==typeof r&&Ct(r))return!0}return!1}function Nt(t){if(t&&"object"==typeof t){if(t.$&&"string"==typeof t.$["xmlns:gml"])return t.$["xmlns:gml"];for(const[e,r]of Object.entries(t)){if("$"===e||"_"===e)continue;if(e.startsWith("xmlns:")&&e.endsWith("gml")&&"string"==typeof r)return r;const t=r;if(Array.isArray(t))for(const e of t){const t=Nt(e);if(t)return t}else if("object"==typeof t){const e=Nt(t);if(e)return e}}}}function St(t,e,r=2){if("2.1.2"===e)return t.trim().split(" ").map((t=>t.split(",").map(Number)));{const e=t.trim().split(" ").map(Number),i=[];for(let t=0;t<e.length;t+=r)i.push(e.slice(t,t+r));return r>2?i:i.flat()}}function Et(t,e,r=!1){return _t(i=t)&&"FeatureCollection"===i.type?function(t,e,r){const i=Ot(r),n=jt(e);i.push(0,`<gml:FeatureCollection ${n}>`),t.bounds&&(i.push(1,"<gml:boundedBy>"),Ft(i,Rt(t.bounds,e,r),2),i.push(1,"</gml:boundedBy>"));for(const n of t.features)Ft(i,It(n,e,r),1);return i.push(0,"</gml:FeatureCollection>"),i.toString()}(t,e,r):function(t){return _t(t)&&"geometry"in t&&"properties"in t}(t)?It(t,e,r):Mt(t,e,r);var i}function Mt(t,e,r){switch(t.type){case"Point":return Gt(t,e,r);case"LineString":return function(t,e,r){const i=Ot(r),n=jt(e),s=t.srsName?` srsName="${t.srsName}"`:"",o=At(t.coordinates,e),a="2.1.2"===e?"coordinates":"posList";return i.push(0,`<gml:LineString${s} ${n}>`),i.push(1,`<gml:${a}>${o}</gml:${a}>`),i.push(0,"</gml:LineString>"),i.toString()}(t,e,r);case"Polygon":return Tt(t,e,r);case"LinearRing":return function(t,e,r){const i=Ot(r),n=jt(e),s=t.srsName?` srsName="${t.srsName}"`:"",o=At(t.coordinates,e),a="2.1.2"===e?"coordinates":"posList";return i.push(0,`<gml:LinearRing${s} ${n}>`),i.push(1,`<gml:${a}>${o}</gml:${a}>`),i.push(0,"</gml:LinearRing>"),i.toString()}(t,e,r);case"Envelope":return Rt(t,e,r);case"Box":return function(t,e,r){const i=Ot(r),n=jt(e),s=t.srsName?` srsName="${t.srsName}"`:"",[o,a,u,l]=t.coordinates,h="2.1.2"===e?`${o},${a} ${u},${l}`:`${o} ${a} ${u} ${l}`;return i.push(0,`<gml:Box${s} ${n}>`),i.push(1,`<gml:coordinates>${h}</gml:coordinates>`),i.push(0,"</gml:Box>"),i.toString()}(t,e,r);case"Curve":return function(t,e,r){const i=Ot(r),n=jt(e),s=t.srsName?` srsName="${t.srsName}"`:"",o="2.1.2"===e?"coordinates":"posList",a=At(t.coordinates,e);return i.push(0,`<gml:Curve${s} ${n}>`),i.push(1,"<gml:segments>"),i.push(2,"<gml:LineStringSegment>"),i.push(3,`<gml:${o}>${a}</gml:${o}>`),i.push(2,"</gml:LineStringSegment>"),i.push(1,"</gml:segments>"),i.push(0,"</gml:Curve>"),i.toString()}(t,e,r);case"Surface":return function(t,e,r){const i=Ot(r),n=jt(e);i.push(0,`<gml:Surface${t.srsName?` srsName="${t.srsName}"`:""} ${n}>`),i.push(1,"<gml:patches>");for(const n of t.patches)i.push(2,"<gml:PolygonPatch>"),Ft(i,Tt(n,e,r),3),i.push(2,"</gml:PolygonPatch>");return i.push(1,"</gml:patches>"),i.push(0,"</gml:Surface>"),i.toString()}(t,e,r);case"MultiPoint":return function(t,e,r){const i=Ot(r),n=jt(e);i.push(0,`<gml:MultiPoint ${n}>`);for(const n of t.coordinates)i.push(1,"<gml:pointMember>"),Ft(i,Gt({coordinates:n,srsName:t.srsName},e,r),2),i.push(1,"</gml:pointMember>");return i.push(0,"</gml:MultiPoint>"),i.toString()}(t,e,r);case"MultiLineString":return function(t,e,r){const i=Ot(r),n=jt(e),s="2.1.2"===e?"coordinates":"posList";i.push(0,`<gml:MultiLineString ${n}>`);for(const r of t.coordinates)i.push(1,"<gml:lineStringMember>"),i.push(2,"<gml:LineString>"),i.push(3,`<gml:${s}>${At(r,e)}</gml:${s}>`),i.push(2,"</gml:LineString>"),i.push(1,"</gml:lineStringMember>");return i.push(0,"</gml:MultiLineString>"),i.toString()}(t,e,r);case"MultiPolygon":return function(t,e,r){const i=Ot(r),n=jt(e);i.push(0,`<gml:MultiPolygon ${n}>`);for(const n of t.coordinates)i.push(1,"<gml:polygonMember>"),Ft(i,Tt({coordinates:n,srsName:t.srsName},e,r),2),i.push(1,"</gml:polygonMember>");return i.push(0,"</gml:MultiPolygon>"),i.toString()}(t,e,r);default:throw new Error("Unsupported GML type for conversion.")}}function It(t,e,r){const i=Ot(r),n=jt(e),s=t.id?` gml:id="${t.id}"`:"";i.push(0,"<gml:featureMember>"),i.push(1,`<gml:Feature${s} ${n}>`),t.boundedBy&&(i.push(2,"<gml:boundedBy>"),Ft(i,Rt(t.boundedBy,e,r),3),i.push(2,"</gml:boundedBy>"));for(const[e,r]of Object.entries(t.properties??{}))i.push(2,`<${e}>${Bt(r)}</${e}>`);return i.push(1,"<gml:geometry>"),Ft(i,Mt(t.geometry,e,r),2),i.push(1,"</gml:geometry>"),i.push(1,"</gml:Feature>"),i.push(0,"</gml:featureMember>"),i.toString()}function Gt(t,e,r){const i=Ot(r),n=jt(e),s=t.srsName?` srsName="${t.srsName}"`:"",o=At([t.coordinates],e),a="2.1.2"===e?"coordinates":"pos";return i.push(0,`<gml:Point${s} ${n}>`),i.push(1,`<gml:${a}>${o}</gml:${a}>`),i.push(0,"</gml:Point>"),i.toString()}function Tt(t,e,r){const i=Ot(r),n=jt(e),s=t.srsName?` srsName="${t.srsName}"`:"",o="2.1.2"===e?"outerBoundaryIs":"exterior",a="2.1.2"===e?"innerBoundaryIs":"interior",u="2.1.2"===e?"coordinates":"posList",[l,...h]=t.coordinates;if(!l)throw new Error("Invalid polygon: missing exterior ring");i.push(0,`<gml:Polygon${s} ${n}>`),i.push(1,`<gml:${o}>`),i.push(2,"<gml:LinearRing>"),i.push(3,`<gml:${u}>${At(l,e)}</gml:${u}>`),i.push(2,"</gml:LinearRing>"),i.push(1,`</gml:${o}>`);for(const t of h)i.push(1,`<gml:${a}>`),i.push(2,"<gml:LinearRing>"),i.push(3,`<gml:${u}>${At(t,e)}</gml:${u}>`),i.push(2,"</gml:LinearRing>"),i.push(1,`</gml:${a}>`);return i.push(0,"</gml:Polygon>"),i.toString()}function Rt(t,e,r){const i=Ot(r),n=jt(e),s=t.srsName?` srsName="${t.srsName}"`:"",[o,a,u,l]=t.bbox;return i.push(0,`<gml:Envelope${s} ${n}>`),i.push(1,`<gml:lowerCorner>${o} ${a}</gml:lowerCorner>`),i.push(1,`<gml:upperCorner>${u} ${l}</gml:upperCorner>`),i.push(0,"</gml:Envelope>"),i.toString()}function Ot(t){const e=t?" ":"",r=t?"\n":"",i=[];return{push(t,r){i.push(`${e.repeat(t)}${r}`)},toString:()=>i.join(r),get newline(){return r}}}function Ft(t,e,r){const i=e.split(/\r?\n/);for(const e of i)t.push(r,e)}function At(t,e){const r="2.1.2"===e?",":" ";return t.map((t=>t.join(r))).join(" ")}function Bt(t){return null==t?"":"object"==typeof t?JSON.stringify(t):String(t)}function jt(t){return"2.1.2"===t?'xmlns:gml="http://www.opengis.net/gml"':'xmlns:gml="http://www.opengis.net/gml/3.2"'}function _t(t){return"object"==typeof t&&null!==t}const Ut=new Set(["Point","LineString","Polygon","LinearRing","Envelope","Box","Curve","Surface","MultiPoint","MultiLineString","MultiPolygon"]);let kt=class{builder;constructor(t="geojson",e){this.builder="string"==typeof t?e(t):t}async parse(t){const e=await Pt(t),r=xt(e),i=this.parseGml(e,r);return this.toGeoJson(i)}async parseFromUrl(t){const e=await this.fetchXml(t);return this.parse(e)}async convert(t,e){const{outputVersion:r,prettyPrint:i=!1}=e,n=await Pt(t),s=e.inputVersion||xt(n),o=this.parseGml(n,s);if("domainSet"in o)throw new Error("Coverage types cannot be converted with convert(). Use CoverageGenerator instead.");return Et(o,r,i)}async convertFromUrl(t,e){const r=await this.fetchXml(t);return this.convert(r,e)}async fetchXml(t){const e=await fetch(t);if(!e.ok)throw new Error(`Failed to fetch GML from ${t} (${e.status} ${e.statusText})`);return await e.text()}async convertGeometry(t,e){return Et(t,e.outputVersion,e.prettyPrint)}parseGml(t,e){const r=this.findFeatureCollectionNode(t);if(r)return this.parseFeatureCollection(r,e);const i=this.findFirstGmlEntry(t);if(!i)throw new Error("No GML geometry found");return this.parseElement(i.key,i.value,e)}parseElement(t,e,r){const i=this.normalizeElement(e),n=this.getLocalName(t,i);switch(n){case"featureMember":return this.parseFeatureMember(i,r);case"Point":return this.parsePoint(i,r);case"LineString":return this.parseLineString(i,r);case"Polygon":return this.parsePolygon(i,r);case"LinearRing":return this.parseLinearRing(i,r);case"Envelope":return this.parseEnvelope(i,r);case"Box":return this.parseBox(i,r);case"Curve":return this.parseCurve(i,r);case"Surface":return this.parseSurface(i,r);case"MultiSurface":return this.parseMultiSurface(i,r);case"MultiPoint":return this.parseMultiPoint(i,r);case"MultiLineString":return this.parseMultiLineString(i,r);case"MultiPolygon":return this.parseMultiPolygon(i,r);case"FeatureCollection":return this.parseFeatureCollection(i,r);case"RectifiedGridCoverage":case"GMLJP2RectifiedGridCoverage":return this.parseRectifiedGridCoverage(i,r);case"GridCoverage":return this.parseGridCoverage(i,r);case"ReferenceableGridCoverage":return this.parseReferenceableGridCoverage(i,r);case"MultiPointCoverage":return this.parseMultiPointCoverage(i,r);default:throw new Error(`Unsupported GML element: ${n}`)}}parsePoint(t,e){const r=t.$?.srsName,i=this.parseDimension(t.$?.srsDimension),n=this.getText("2.1.2"===e?t["gml:coordinates"]:t["gml:pos"]);if("string"!=typeof n)throw new Error("Invalid GML Point");const s=this.toCoordinateTuples(St(n,e,i),i),[o]=s;if(!o)throw new Error("Invalid GML Point");return{type:"Point",coordinates:o,srsName:r,version:e}}parseLineString(t,e){const r=t.$?.srsName,i=this.parseDimension(t.$?.srsDimension),n=this.getText("2.1.2"===e?t["gml:coordinates"]:t["gml:posList"]);if("string"!=typeof n)throw new Error("Invalid GML LineString");return{type:"LineString",coordinates:this.toCoordinateTuples(St(n,e,i),i),srsName:r,version:e}}parsePolygon(t,e){const r=t.$?.srsName,i=this.parseDimension(t.$?.srsDimension);return{type:"Polygon",coordinates:this.extractPolygonCoordinates(t,e,i),srsName:r,version:e}}parseLinearRing(t,e){const r=t.$?.srsName,i=this.parseDimension(t.$?.srsDimension),n=this.getText("2.1.2"===e?t["gml:coordinates"]:t["gml:posList"]);if("string"!=typeof n)throw new Error("Invalid GML LinearRing");return{type:"LinearRing",coordinates:this.toCoordinateTuples(St(n,e,i),i),srsName:r,version:e}}parseEnvelope(t,e){const r=this.getText(t["gml:lowerCorner"]),i=this.getText(t["gml:upperCorner"]);if("string"!=typeof r||"string"!=typeof i)throw new Error("Invalid GML Envelope");const n=r.trim().split(/\s+/).map(Number),s=i.trim().split(/\s+/).map(Number);if(n.length<2||s.length<2)throw new Error("Invalid GML Envelope");return{type:"Envelope",bbox:[n[0],n[1],s[0],s[1]],srsName:t.$?.srsName,version:e}}parseBox(t,e){const r=this.getText(t["gml:coordinates"]);if("string"!=typeof r)throw new Error("Invalid GML Box");const i=r.trim();let n,s,o,a;if(i.includes(",")){const t=i.split(/\s+/);if(t.length<2)throw new Error("Invalid GML Box");const e=t[0].split(",").map(Number),r=t[1].split(",").map(Number);if(e.length<2||r.length<2||e.some(isNaN)||r.some(isNaN))throw new Error("Invalid GML Box");[n,s]=e,[o,a]=r}else{const t=i.split(/\s+/).map(Number);if(t.length<4||t.some(isNaN))throw new Error("Invalid GML Box");[n,s,o,a]=t}return{type:"Box",coordinates:[n,s,o,a],srsName:t.$?.srsName,version:e}}parseCurve(t,e){const r=this.ensureArray(t["gml:segments"]?.["gml:LineStringSegment"]);if(!r.length)throw new Error("Invalid GML Curve");return{type:"Curve",coordinates:r.map((r=>{const i=this.parseDimension(r.$?.srsDimension)||this.parseDimension(t.$?.srsDimension),n=this.getText(r["gml:posList"])??this.getText(r["gml:coordinates"]);if("string"!=typeof n)throw new Error("Invalid GML LineStringSegment");return this.toCoordinateTuples(St(n,e,i),i)})).flat(),srsName:t.$?.srsName,version:e}}parseSurface(t,e){const r=this.ensureArray(t["gml:patches"]?.["gml:PolygonPatch"]);if(!r.length)throw new Error("Invalid GML Surface");return{type:"Surface",patches:r.map((t=>this.parsePolygon(t,e))),srsName:t.$?.srsName,version:e}}parseMultiSurface(t,e){const r=t.$?.srsName,i=[];this.ensureArray(t["gml:surfaceMember"]).forEach((t=>{const r=this.normalizeElement(t["gml:Surface"]??t["gml:Polygon"]);r&&("Polygon"===r["#name"]||r["gml:exterior"]?i.push(this.parsePolygon(r,e).coordinates):this.parseSurface(r,e).patches.forEach((t=>i.push(t.coordinates))))}));const n=t["gml:surfaceMembers"];return n&&this.ensureArray(n).forEach((t=>{this.ensureArray(t["gml:Surface"]).forEach((t=>{this.parseSurface(t,e).patches.forEach((t=>i.push(t.coordinates)))})),this.ensureArray(t["gml:Polygon"]).forEach((t=>{i.push(this.parsePolygon(t,e).coordinates)}))})),{type:"MultiPolygon",coordinates:i,srsName:r,version:e}}parseMultiPoint(t,e){const r=t.$?.srsName;if("2.1.2"===e){const i=this.parseDimension(t.$?.srsDimension),n=this.getText(t["gml:coordinates"]);if("string"!=typeof n)throw new Error("Invalid GML MultiPoint");return{type:"MultiPoint",coordinates:this.toCoordinateTuples(St(n,e,i),i),srsName:r,version:e}}const i=this.ensureArray(t["gml:pointMember"]),n=t["gml:pointMembers"];if(0===i.length&&!n)throw new Error("Invalid GML MultiPoint");const s=[];return i.forEach((t=>{const r=this.normalizeElement(t["gml:Point"]);r&&s.push(this.parsePoint(r,e).coordinates)})),n&&this.ensureArray(n).forEach((t=>{this.ensureArray(t["gml:Point"]).forEach((t=>{s.push(this.parsePoint(t,e).coordinates)}))})),{type:"MultiPoint",coordinates:s,srsName:r,version:e}}parseMultiLineString(t,e){const r=t.$?.srsName;if("2.1.2"===e){const i=this.parseDimension(t.$?.srsDimension),n=this.getText(t["gml:coordinates"]);if("string"!=typeof n)throw new Error("Invalid GML MultiLineString");return{type:"MultiLineString",coordinates:[this.toCoordinateTuples(St(n,e,i),i)],srsName:r,version:e}}const i=[],n=this.ensureArray(t["gml:lineStringMember"]),s=t["gml:lineStringMembers"];if(0===n.length&&!s)throw new Error("Invalid GML MultiLineString");return n.forEach((t=>{const r=this.normalizeElement(t["gml:LineString"]);r&&i.push(this.parseLineString(r,e).coordinates)})),s&&this.ensureArray(s).forEach((t=>{this.ensureArray(t["gml:LineString"]).forEach((t=>{i.push(this.parseLineString(t,e).coordinates)}))})),{type:"MultiLineString",coordinates:i,srsName:r,version:e}}parseMultiPolygon(t,e){const r=t.$?.srsName,i=[];this.ensureArray(t["gml:polygonMember"]).forEach((t=>{const r=this.normalizeElement(t["gml:Polygon"]);r&&i.push(this.parsePolygon(r,e).coordinates)}));const n=t["gml:polygonMembers"];return n&&this.ensureArray(n).forEach((t=>{this.ensureArray(t["gml:Polygon"]).forEach((t=>{i.push(this.parsePolygon(t,e).coordinates)}))})),{type:"MultiPolygon",coordinates:i,srsName:r,version:e}}parseRectifiedGridCoverage(t,e){const r=t.$?.["gml:id"];let i;const n=t["gml:boundedBy"];n&&!n["gml:null"]&&(i=this.parseEnvelope(this.normalizeElement(n["gml:Envelope"]??n),e));const s=t["gml:domainSet"]||t["gmlcov:domainSet"];if(!s)throw new Error("Invalid RectifiedGridCoverage: missing domainSet");const o=s["gml:RectifiedGrid"];if(!o)throw new Error("Invalid RectifiedGridCoverage: missing RectifiedGrid");const a=this.normalizeElement(o),u=parseInt(a.$?.dimension,10)||2,l=a.$?.srsName,h=a["gml:limits"]||a["gml:gridLimits"],c=h?.["gml:GridEnvelope"];if(!c)throw new Error("Invalid RectifiedGridCoverage: missing GridEnvelope");const d=this.getText(c["gml:low"]),f=this.getText(c["gml:high"]);if("string"!=typeof d||"string"!=typeof f)throw new Error("Invalid GridEnvelope");const g=d.trim().split(/\s+/).map(Number),p=f.trim().split(/\s+/).map(Number),y=this.getText(a["gml:axisLabels"]),m=y?.trim().split(/\s+/),b=a["gml:origin"],$=b?.["gml:Point"];if(!$)throw new Error("Invalid RectifiedGridCoverage: missing origin");const v=this.getText($["gml:pos"]);if("string"!=typeof v)throw new Error("Invalid origin Point");const w=v.trim().split(/\s+/).map(Number),P=this.ensureArray(a["gml:offsetVector"]).map((t=>{const e=this.getText(t);if("string"!=typeof e)throw new Error("Invalid offsetVector");return e.trim().split(/\s+/).map(Number)})),L={id:a.$?.["gml:id"],dimension:u,srsName:l,limits:{low:g,high:p},axisLabels:m,origin:w,offsetVectors:P},x=t["gml:rangeSet"]||t["gmlcov:rangeSet"],C={};if(x){const t=x["gml:File"];if(t){const e=this.getText(t["gml:fileName"]),r=this.getText(t["gml:fileStructure"]);e&&(C.file={fileName:e,fileStructure:r||void 0})}}const N=t["gml:rangeType"]||t["gmlcov:rangeType"];let S;if(N){const t=N["swe:DataRecord"];t&&(S={field:this.ensureArray(t["swe:field"]).map((t=>({name:t.$?.name,dataType:this.getText(t["swe:Quantity"]?.["swe:dataType"]),uom:t["swe:Quantity"]?.$?.uom,description:this.getText(t["swe:Quantity"]?.["swe:description"])})))})}return{type:"RectifiedGridCoverage",id:r,boundedBy:i,domainSet:L,rangeSet:C,rangeType:S,version:e}}parseGridCoverage(t,e){const r=t.$?.["gml:id"];let i;const n=t["gml:boundedBy"];n&&!n["gml:null"]&&(i=this.parseEnvelope(this.normalizeElement(n["gml:Envelope"]??n),e));const s=t["gml:domainSet"]||t["gmlcov:domainSet"];if(!s)throw new Error("Invalid GridCoverage: missing domainSet");const o=s["gml:Grid"];if(!o)throw new Error("Invalid GridCoverage: missing Grid");const a=this.normalizeElement(o),u=parseInt(a.$?.dimension,10)||2,l=a["gml:limits"]||a["gml:gridLimits"],h=l?.["gml:GridEnvelope"];if(!h)throw new Error("Invalid GridCoverage: missing GridEnvelope");const c=this.getText(h["gml:low"]),d=this.getText(h["gml:high"]);if("string"!=typeof c||"string"!=typeof d)throw new Error("Invalid GridEnvelope");const f=c.trim().split(/\s+/).map(Number),g=d.trim().split(/\s+/).map(Number),p=this.getText(a["gml:axisLabels"]),y=p?.trim().split(/\s+/),m={id:a.$?.["gml:id"],dimension:u,limits:{low:f,high:g},axisLabels:y},b=t["gml:rangeSet"]||t["gmlcov:rangeSet"],$={};if(b){const t=b["gml:File"];if(t){const e=this.getText(t["gml:fileName"]),r=this.getText(t["gml:fileStructure"]);e&&($.file={fileName:e,fileStructure:r||void 0})}}const v=t["gml:rangeType"]||t["gmlcov:rangeType"];let w;if(v){const t=v["swe:DataRecord"];t&&(w={field:this.ensureArray(t["swe:field"]).map((t=>({name:t.$?.name,dataType:this.getText(t["swe:Quantity"]?.["swe:dataType"]),uom:t["swe:Quantity"]?.$?.uom,description:this.getText(t["swe:Quantity"]?.["swe:description"])})))})}return{type:"GridCoverage",id:r,boundedBy:i,domainSet:m,rangeSet:$,rangeType:w,version:e}}parseReferenceableGridCoverage(t,e){return{...this.parseGridCoverage(t,e),type:"ReferenceableGridCoverage"}}parseMultiPointCoverage(t,e){const r=t.$?.["gml:id"];let i;const n=t["gml:boundedBy"];n&&!n["gml:null"]&&(i=this.parseEnvelope(this.normalizeElement(n["gml:Envelope"]??n),e));const s=t["gml:domainSet"]||t["gmlcov:domainSet"];if(!s)throw new Error("Invalid MultiPointCoverage: missing domainSet");const o=s["gml:MultiPoint"];if(!o)throw new Error("Invalid MultiPointCoverage: missing MultiPoint");const a=this.parseMultiPoint(this.normalizeElement(o),e),u=t["gml:rangeSet"]||t["gmlcov:rangeSet"],l={};if(u){const t=u["gml:File"];if(t){const e=this.getText(t["gml:fileName"]),r=this.getText(t["gml:fileStructure"]);e&&(l.file={fileName:e,fileStructure:r||void 0})}}const h=t["gml:rangeType"]||t["gmlcov:rangeType"];let c;if(h){const t=h["swe:DataRecord"];t&&(c={field:this.ensureArray(t["swe:field"]).map((t=>({name:t.$?.name,dataType:this.getText(t["swe:Quantity"]?.["swe:dataType"]),uom:t["swe:Quantity"]?.$?.uom,description:this.getText(t["swe:Quantity"]?.["swe:description"])})))})}return{type:"MultiPointCoverage",id:r,boundedBy:i,domainSet:a,rangeSet:l,rangeType:c,version:e}}parseFeatureCollection(t,e){const r=[];this.ensureArray(t["gml:featureMember"]).forEach((t=>{r.push(this.parseFeatureMember(t,e))})),this.ensureArray(t["wfs:member"]).forEach((t=>{r.push(this.parseFeatureMember(t,e))}));const i=t["gml:featureMembers"];i&&this.ensureArray(i).forEach((t=>{for(const[i,n]of Object.entries(t))i.startsWith("gml:")||"$"===i||"_"===i||"#name"===i||this.ensureArray(n).forEach((t=>{const n=this.parseFeatureElement(i,t,e);r.push(n)}))}));const n=t["gml:boundedBy"];let s;return n&&!n["gml:null"]&&(s=this.parseEnvelope(this.normalizeElement(n["gml:Envelope"]??n),e)),{type:"FeatureCollection",features:r,bounds:s,version:e}}parseFeatureMember(t,e){const r=Object.entries(t).find((([t])=>!t.startsWith("$")));if(!r)throw new Error("Invalid GML featureMember");return this.parseFeatureElement(r[0],r[1],e)}parseFeatureElement(t,e,r){const i=this.findGeometryNode(e);if(!i)throw new Error(`No geometry found for feature ${t}`);const n=this.parseElement(i.key,i.value,r),s=this.extractFeatureProperties(e,i.featurePropertyKey??i.key),o={id:e.$?.["gml:id"]||e.$?.fid,geometry:n,properties:s,version:r},a=e["gml:boundedBy"];return a&&!a["gml:null"]&&(o.boundedBy=this.parseEnvelope(this.normalizeElement(a["gml:Envelope"]??a),r)),o}extractPolygonCoordinates(t,e,r){if("2.1.2"===e){const i=this.getText(t["gml:outerBoundaryIs"]?.["gml:LinearRing"]?.["gml:coordinates"]);if("string"!=typeof i)throw new Error("Invalid GML Polygon");return[this.toCoordinateTuples(St(i,e,r),r),...this.ensureArray(t["gml:innerBoundaryIs"]).map((t=>{const i=this.getText(t["gml:LinearRing"]?.["gml:coordinates"]);return"string"!=typeof i?[]:this.toCoordinateTuples(St(i,e,r),r)})).filter((t=>t.length>0))]}const i=this.getText(t["gml:exterior"]?.["gml:LinearRing"]?.["gml:posList"]);if("string"!=typeof i)throw new Error("Invalid GML Polygon");return[this.toCoordinateTuples(St(i,e,r),r),...this.ensureArray(t["gml:interior"]).map((t=>{const i=this.getText(t["gml:LinearRing"]?.["gml:posList"]);return"string"!=typeof i?[]:this.toCoordinateTuples(St(i,e,r),r)})).filter((t=>t.length>0))]}toGeoJson(t){return this.isFeatureCollection(t)?this.builder.buildFeatureCollection(t):this.isFeature(t)?this.builder.buildFeature(t):this.isCoverage(t)?this.coverageToGeoJson(t):this.geometryToGeoJson(t)}geometryToGeoJson(t){switch(t.type){case"Point":return this.builder.buildPoint(t);case"LineString":return this.builder.buildLineString(t);case"Polygon":return this.builder.buildPolygon(t);case"LinearRing":return this.builder.buildLinearRing(t);case"Envelope":return this.builder.buildEnvelope(t);case"Box":return this.builder.buildBox(t);case"Curve":return this.builder.buildCurve(t);case"Surface":return this.builder.buildSurface(t);case"MultiPoint":return this.builder.buildMultiPoint(t);case"MultiLineString":return this.builder.buildMultiLineString(t);case"MultiPolygon":return this.builder.buildMultiPolygon(t);default:throw new Error(`Unsupported geometry type: ${t.type}`)}}findFirstGmlEntry(t){if(t&&"object"==typeof t){for(const[e,r]of Object.entries(t))if("$"!==e&&"_"!==e&&e.startsWith("gml:"))return{key:e,value:r};for(const[e,r]of Object.entries(t))if("$"!==e&&"_"!==e&&r)if(Array.isArray(r))for(const t of r){const e=this.findFirstGmlEntry(t);if(e)return e}else if("object"==typeof r){const t=this.findFirstGmlEntry(r);if(t)return t}}}findFeatureCollectionNode(t){if(t&&"object"==typeof t){for(const[e,r]of Object.entries(t))if("$"!==e&&"_"!==e&&e.endsWith("FeatureCollection"))return this.normalizeElement(r);for(const[e,r]of Object.entries(t))if("$"!==e&&"_"!==e&&r)if(Array.isArray(r))for(const t of r){const e=this.findFeatureCollectionNode(t);if(e)return e}else if("object"==typeof r){const t=this.findFeatureCollectionNode(r);if(t)return t}}}findGeometryNode(t){for(const[e,r]of Object.entries(t)){if("$"===e||"#name"===e)continue;const t=this.searchGeometry(r,e);if(t)return t}return null}searchGeometry(t,e){if(!t)return null;if(Array.isArray(t)){for(const r of t){const t=this.searchGeometry(r,e);if(t)return t}return null}if("object"!=typeof t)return null;if(e&&e.startsWith("gml:")){const r=this.getLocalName(e,t);if(Ut.has(r))return{key:e,value:t,featurePropertyKey:e}}for(const[r,i]of Object.entries(t)){if(r.startsWith("gml:")){const t=this.getLocalName(r,i);if(Ut.has(t))return{key:r,value:i,featurePropertyKey:e}}const t=this.searchGeometry(i,e);if(t)return t}return null}extractFeatureProperties(t,e){const r={};if(t.$)for(const[e,i]of Object.entries(t.$))"gml:id"!==e&&(r[e]=this.normalizePropertyValue(i));for(const[i,n]of Object.entries(t))"$"!==i&&"#name"!==i&&"_"!==i&&(e&&i===e||i.startsWith("gml:")||(r[i]=this.normalizePropertyValue(n)));return r}normalizePropertyValue(t){if(null==t)return t;if(Array.isArray(t))return t.map((t=>this.normalizePropertyValue(t)));const e=this.getText(t);return void 0!==e?e.trim():"object"==typeof t?Object.fromEntries(Object.entries(t).map((([t,e])=>[t,this.normalizePropertyValue(e)]))):"string"==typeof t?t.trim():t}getText(t){if(null!=t){if("string"==typeof t)return t;if("number"==typeof t||"boolean"==typeof t)return String(t);if(!Array.isArray(t))return"object"==typeof t&&"string"==typeof t._?t._:void 0;for(const e of t){const t=this.getText(e);if(void 0!==t)return t}}}parseDimension(t){const e=t?parseInt(t,10):NaN;return Number.isFinite(e)&&e>0?e:2}ensureArray(t){return null==t?[]:Array.isArray(t)?t:[t]}toCoordinateTuples(t,e){if(Array.isArray(t)&&Array.isArray(t[0]))return t;const r=t,i=[];for(let t=0;t<r.length;t+=e)i.push(r.slice(t,t+e));return i}normalizeElement(t){if(Array.isArray(t)){if(!t.length)throw new Error("Unexpected empty GML element array");return t[0]}return t}getLocalName(t,e){if(e&&"object"==typeof e&&"string"==typeof e["#name"])return e["#name"];const r=t.split(":");return r[r.length-1]}isFeatureCollection(t){return"FeatureCollection"===t.type}isFeature(t){return void 0!==t.geometry&&void 0!==t.properties}isCoverage(t){const e=t.type;return"RectifiedGridCoverage"===e||"GridCoverage"===e||"ReferenceableGridCoverage"===e||"MultiPointCoverage"===e}coverageToGeoJson(t){switch(t.type){case"RectifiedGridCoverage":return this.builder.buildRectifiedGridCoverage(t);case"GridCoverage":return this.builder.buildGridCoverage(t);case"ReferenceableGridCoverage":return this.builder.buildReferenceableGridCoverage(t);case"MultiPointCoverage":return this.builder.buildMultiPointCoverage(t);default:throw new Error(`Unsupported coverage type: ${t.type}`)}}};class Dt extends kt{constructor(t="geojson"){super(t,mt)}}export{F as CisJsonBuilder,A as CoverageJsonBuilder,B as CsvBuilder,pt as FlatGeobufBuilder,O as GeoJsonBuilder,Dt as GmlParser,j as KmlBuilder,bt as OwsExceptionError,_ as WktBuilder,mt as getBuilder,$t as isOwsExceptionReport,vt as parseOwsExceptionReport}