@omnitron-dev/omnitron 0.3.0 → 0.3.1
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.
- package/README.md +4 -0
- package/dist/BUILD.json +2 -2
- package/dist/cli/omnitron.js +26 -2
- package/dist/cli/omnitron.js.map +1 -1
- package/dist/cluster/mesh-link.js +1 -1
- package/dist/cluster/slave-connector.d.ts +2 -2
- package/dist/cluster/slave-connector.js +1 -1
- package/dist/commands/deploy.d.ts +4 -4
- package/dist/commands/deploy.js +4 -4
- package/dist/commands/discover.d.ts +2 -2
- package/dist/commands/discover.js +2 -2
- package/dist/commands/fleet-asking.d.ts +2 -2
- package/dist/commands/fleet-asking.js +2 -2
- package/dist/commands/fleet-recover.d.ts +2 -0
- package/dist/commands/fleet-recover.d.ts.map +1 -0
- package/dist/commands/fleet-recover.js +30 -0
- package/dist/commands/fleet-recover.js.map +1 -0
- package/dist/commands/host-ingress.d.ts +3 -0
- package/dist/commands/host-ingress.d.ts.map +1 -0
- package/dist/commands/host-ingress.js +31 -0
- package/dist/commands/host-ingress.js.map +1 -0
- package/dist/commands/infra.d.ts +2 -2
- package/dist/commands/infra.js +7 -7
- package/dist/commands/infra.js.map +1 -1
- package/dist/commands/logs.d.ts +1 -1
- package/dist/commands/logs.js +3 -3
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/node.d.ts +2 -14
- package/dist/commands/node.d.ts.map +1 -1
- package/dist/commands/node.js +33 -22
- package/dist/commands/node.js.map +1 -1
- package/dist/commands/pipeline.d.ts.map +1 -1
- package/dist/commands/pipeline.js +8 -1
- package/dist/commands/pipeline.js.map +1 -1
- package/dist/commands/project.d.ts +2 -2
- package/dist/commands/project.js +2 -2
- package/dist/commands/release.d.ts +1 -1
- package/dist/commands/release.js +4 -4
- package/dist/commands/release.js.map +1 -1
- package/dist/commands/remote.d.ts +3 -3
- package/dist/commands/remote.js +3 -3
- package/dist/commands/tor.d.ts +1 -1
- package/dist/commands/tor.js +2 -2
- package/dist/config/types.d.ts +9 -6
- package/dist/config/types.d.ts.map +1 -1
- package/dist/daemon/daemon-entry.js +1 -1
- package/dist/daemon/daemon-entry.js.map +1 -1
- package/dist/daemon/daemon.d.ts +5 -19
- package/dist/daemon/daemon.d.ts.map +1 -1
- package/dist/daemon/daemon.js +54 -51
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/daemon/daemon.module.d.ts.map +1 -1
- package/dist/daemon/daemon.module.js +3 -5
- package/dist/daemon/daemon.module.js.map +1 -1
- package/dist/daemon/daemon.rpc-service.d.ts +2 -2
- package/dist/daemon/daemon.rpc-service.js +6 -6
- package/dist/daemon/daemon.rpc-service.js.map +1 -1
- package/dist/execution/data-channel.d.ts +1 -1
- package/dist/execution/data-channel.js +1 -1
- package/dist/execution/execution.service.d.ts +10 -3
- package/dist/execution/execution.service.d.ts.map +1 -1
- package/dist/execution/execution.service.js +101 -44
- package/dist/execution/execution.service.js.map +1 -1
- package/dist/infrastructure/bare-metal-plan.js +1 -1
- package/dist/infrastructure/bare-metal-plan.js.map +1 -1
- package/dist/infrastructure/config-payload.d.ts +4 -4
- package/dist/infrastructure/config-payload.js +4 -4
- package/dist/infrastructure/container-runtime.d.ts +2 -10
- package/dist/infrastructure/container-runtime.d.ts.map +1 -1
- package/dist/infrastructure/container-runtime.js +41 -20
- package/dist/infrastructure/container-runtime.js.map +1 -1
- package/dist/infrastructure/gateway-redis-db.d.ts +2 -2
- package/dist/infrastructure/gateway-redis-db.js +2 -2
- package/dist/infrastructure/host-ingress-config.d.ts +12 -0
- package/dist/infrastructure/host-ingress-config.d.ts.map +1 -0
- package/dist/infrastructure/host-ingress-config.js +197 -0
- package/dist/infrastructure/host-ingress-config.js.map +1 -0
- package/dist/infrastructure/host-ingress-lock.d.ts +4 -0
- package/dist/infrastructure/host-ingress-lock.d.ts.map +1 -0
- package/dist/infrastructure/host-ingress-lock.js +36 -0
- package/dist/infrastructure/host-ingress-lock.js.map +1 -0
- package/dist/infrastructure/host-ingress-runtime.d.ts +25 -0
- package/dist/infrastructure/host-ingress-runtime.d.ts.map +1 -0
- package/dist/infrastructure/host-ingress-runtime.js +114 -0
- package/dist/infrastructure/host-ingress-runtime.js.map +1 -0
- package/dist/infrastructure/host-ingress-takeover.d.ts +18 -0
- package/dist/infrastructure/host-ingress-takeover.d.ts.map +1 -0
- package/dist/infrastructure/host-ingress-takeover.js +142 -0
- package/dist/infrastructure/host-ingress-takeover.js.map +1 -0
- package/dist/infrastructure/host-ingress-types.d.ts +173 -0
- package/dist/infrastructure/host-ingress-types.d.ts.map +1 -0
- package/dist/infrastructure/host-ingress-types.js +2 -0
- package/dist/infrastructure/host-ingress-types.js.map +1 -0
- package/dist/infrastructure/host-ingress.service.d.ts +47 -0
- package/dist/infrastructure/host-ingress.service.d.ts.map +1 -0
- package/dist/infrastructure/host-ingress.service.js +514 -0
- package/dist/infrastructure/host-ingress.service.js.map +1 -0
- package/dist/infrastructure/infrastructure.service.d.ts +21 -5
- package/dist/infrastructure/infrastructure.service.d.ts.map +1 -1
- package/dist/infrastructure/infrastructure.service.js +91 -10
- package/dist/infrastructure/infrastructure.service.js.map +1 -1
- package/dist/infrastructure/orphan-containers.d.ts +7 -7
- package/dist/infrastructure/orphan-containers.js +6 -6
- package/dist/infrastructure/presets/minio.js +1 -1
- package/dist/infrastructure/presets/minio.js.map +1 -1
- package/dist/infrastructure/provisioning-outcome.d.ts +1 -1
- package/dist/infrastructure/provisioning-outcome.js +1 -1
- package/dist/infrastructure/service-binding.js +1 -1
- package/dist/infrastructure/service-resolver.d.ts +10 -4
- package/dist/infrastructure/service-resolver.d.ts.map +1 -1
- package/dist/infrastructure/service-resolver.js +88 -45
- package/dist/infrastructure/service-resolver.js.map +1 -1
- package/dist/infrastructure/shipped-config.js +4 -4
- package/dist/infrastructure/stack-infra-manager.d.ts +10 -1
- package/dist/infrastructure/stack-infra-manager.d.ts.map +1 -1
- package/dist/infrastructure/stack-infra-manager.js +53 -43
- package/dist/infrastructure/stack-infra-manager.js.map +1 -1
- package/dist/infrastructure/types.d.ts +8 -6
- package/dist/infrastructure/types.d.ts.map +1 -1
- package/dist/monitoring/log-line.d.ts +3 -3
- package/dist/monitoring/log-line.js +3 -3
- package/dist/monitoring/log-manager.d.ts +3 -3
- package/dist/monitoring/log-manager.js +3 -3
- package/dist/operations.d.ts +16 -0
- package/dist/operations.d.ts.map +1 -0
- package/dist/operations.js +13 -0
- package/dist/operations.js.map +1 -0
- package/dist/orchestrator/app-handle.d.ts +3 -3
- package/dist/orchestrator/app-handle.js +3 -3
- package/dist/orchestrator/bootstrap-loader.d.ts +2 -2
- package/dist/orchestrator/bootstrap-loader.js +3 -3
- package/dist/orchestrator/bootstrap-loader.js.map +1 -1
- package/dist/orchestrator/bootstrap-process.d.ts +1 -1
- package/dist/orchestrator/bootstrap-process.d.ts.map +1 -1
- package/dist/orchestrator/bootstrap-process.js +3 -2
- package/dist/orchestrator/bootstrap-process.js.map +1 -1
- package/dist/orchestrator/build-service.d.ts +6 -12
- package/dist/orchestrator/build-service.d.ts.map +1 -1
- package/dist/orchestrator/build-service.js +120 -83
- package/dist/orchestrator/build-service.js.map +1 -1
- package/dist/orchestrator/call-exposed-service.js +1 -1
- package/dist/orchestrator/classic-launcher.d.ts.map +1 -1
- package/dist/orchestrator/classic-launcher.js +6 -1
- package/dist/orchestrator/classic-launcher.js.map +1 -1
- package/dist/orchestrator/file-watcher.d.ts +1 -0
- package/dist/orchestrator/file-watcher.d.ts.map +1 -1
- package/dist/orchestrator/file-watcher.js +14 -3
- package/dist/orchestrator/file-watcher.js.map +1 -1
- package/dist/orchestrator/http-routes.d.ts +4 -0
- package/dist/orchestrator/http-routes.d.ts.map +1 -0
- package/dist/orchestrator/http-routes.js +19 -0
- package/dist/orchestrator/http-routes.js.map +1 -0
- package/dist/orchestrator/orchestrator.service.d.ts +18 -4
- package/dist/orchestrator/orchestrator.service.d.ts.map +1 -1
- package/dist/orchestrator/orchestrator.service.js +151 -110
- package/dist/orchestrator/orchestrator.service.js.map +1 -1
- package/dist/orchestrator/service-router.d.ts +1 -1
- package/dist/orchestrator/service-router.js +1 -1
- package/dist/orchestrator/topology-query.d.ts +1 -1
- package/dist/orchestrator/topology-query.js +1 -1
- package/dist/project/artifact-builder.js +2 -2
- package/dist/project/artifact-builder.js.map +1 -1
- package/dist/project/build-decision.d.ts +1 -1
- package/dist/project/build-decision.js +1 -1
- package/dist/project/config-resolver.js +1 -1
- package/dist/project/config-resolver.js.map +1 -1
- package/dist/project/declared-config.d.ts +2 -2
- package/dist/project/declared-config.js +2 -2
- package/dist/project/deploy-phases.d.ts +1 -1
- package/dist/project/deploy-phases.js +1 -1
- package/dist/project/exec-in-group.d.ts +1 -1
- package/dist/project/exec-in-group.js +1 -1
- package/dist/project/node-app-config.d.ts +2 -2
- package/dist/project/node-app-config.js +2 -2
- package/dist/project/node-app-config.js.map +1 -1
- package/dist/project/node-app-health.d.ts +1 -1
- package/dist/project/node-app-health.js +1 -1
- package/dist/project/operator-account.d.ts +9 -3
- package/dist/project/operator-account.d.ts.map +1 -1
- package/dist/project/operator-account.js +9 -9
- package/dist/project/operator-account.js.map +1 -1
- package/dist/project/registry.d.ts.map +1 -1
- package/dist/project/registry.js +4 -22
- package/dist/project/registry.js.map +1 -1
- package/dist/project/stack-env.d.ts +1 -1
- package/dist/project/stack-env.js +1 -1
- package/dist/project/stand-containers.d.ts +9 -2
- package/dist/project/stand-containers.d.ts.map +1 -1
- package/dist/project/stand-containers.js +17 -17
- package/dist/project/stand-containers.js.map +1 -1
- package/dist/release/artifact-store.d.ts +1 -1
- package/dist/release/artifact-store.d.ts.map +1 -1
- package/dist/release/artifact-store.js +1 -1
- package/dist/release/artifact-store.js.map +1 -1
- package/dist/release/attest-on-node.d.ts +3 -2
- package/dist/release/attest-on-node.d.ts.map +1 -1
- package/dist/release/attest-on-node.js +6 -6
- package/dist/release/attest-on-node.js.map +1 -1
- package/dist/release/attest.d.ts +3 -3
- package/dist/release/attest.js +1 -1
- package/dist/release/build-run.d.ts +2 -2
- package/dist/release/build-run.js +4 -4
- package/dist/release/build-run.js.map +1 -1
- package/dist/release/builder.d.ts +1 -1
- package/dist/release/builder.d.ts.map +1 -1
- package/dist/release/builder.js +1 -1
- package/dist/release/builder.js.map +1 -1
- package/dist/release/daemon-omni.d.ts +1 -1
- package/dist/release/daemon-omni.js +1 -1
- package/dist/release/definition-inputs.d.ts +1 -1
- package/dist/release/definition-inputs.js +1 -1
- package/dist/release/layout.d.ts +2 -2
- package/dist/release/layout.js +2 -2
- package/dist/release/manifest.d.ts +1 -1
- package/dist/release/manifest.js +1 -1
- package/dist/release/publish.d.ts +1 -1
- package/dist/release/publish.js +1 -1
- package/dist/release/store.d.ts +1 -1
- package/dist/release/store.d.ts.map +1 -1
- package/dist/release/store.js +3 -3
- package/dist/release/store.js.map +1 -1
- package/dist/services/alert.service.d.ts +2 -2
- package/dist/services/alert.service.js +2 -2
- package/dist/services/backup-pipeline.d.ts +1 -1
- package/dist/services/backup-pipeline.js +1 -1
- package/dist/services/backup.service.d.ts +3 -3
- package/dist/services/backup.service.js +3 -3
- package/dist/services/bundle-builder.d.ts +15 -12
- package/dist/services/bundle-builder.d.ts.map +1 -1
- package/dist/services/bundle-builder.js +124 -48
- package/dist/services/bundle-builder.js.map +1 -1
- package/dist/services/discovery.service.d.ts +1 -1
- package/dist/services/discovery.service.js +1 -1
- package/dist/services/host-operation-barrier.d.ts +8 -0
- package/dist/services/host-operation-barrier.d.ts.map +1 -0
- package/dist/services/host-operation-barrier.js +44 -0
- package/dist/services/host-operation-barrier.js.map +1 -0
- package/dist/services/host-upgrade.d.ts +129 -0
- package/dist/services/host-upgrade.d.ts.map +1 -0
- package/dist/services/host-upgrade.js +352 -0
- package/dist/services/host-upgrade.js.map +1 -0
- package/dist/services/infrastructure.rpc-service.d.ts +16 -1
- package/dist/services/infrastructure.rpc-service.d.ts.map +1 -1
- package/dist/services/infrastructure.rpc-service.js +71 -10
- package/dist/services/infrastructure.rpc-service.js.map +1 -1
- package/dist/services/local-bundle.d.ts +9 -0
- package/dist/services/local-bundle.d.ts.map +1 -1
- package/dist/services/local-bundle.js +11 -2
- package/dist/services/local-bundle.js.map +1 -1
- package/dist/services/log-collector.service.d.ts +1 -1
- package/dist/services/log-collector.service.js +1 -1
- package/dist/services/maintenance-lock.d.ts +2 -2
- package/dist/services/maintenance-lock.d.ts.map +1 -1
- package/dist/services/maintenance-lock.js +1 -1
- package/dist/services/migration-output.d.ts +2 -2
- package/dist/services/migration-output.js +2 -2
- package/dist/services/node-deploy-lease.d.ts +19 -2
- package/dist/services/node-deploy-lease.d.ts.map +1 -1
- package/dist/services/node-deploy-lease.js +84 -10
- package/dist/services/node-deploy-lease.js.map +1 -1
- package/dist/services/node-manager.rpc-service.d.ts +6 -1
- package/dist/services/node-manager.rpc-service.d.ts.map +1 -1
- package/dist/services/node-manager.rpc-service.js +25 -1
- package/dist/services/node-manager.rpc-service.js.map +1 -1
- package/dist/services/node-manager.service.d.ts +1 -1
- package/dist/services/node-manager.service.js +1 -1
- package/dist/services/node-upgrade.d.ts +1 -1
- package/dist/services/pipeline.rpc-service.d.ts +4 -0
- package/dist/services/pipeline.rpc-service.d.ts.map +1 -1
- package/dist/services/pipeline.rpc-service.js +9 -0
- package/dist/services/pipeline.rpc-service.js.map +1 -1
- package/dist/services/pipeline.service.d.ts +2 -0
- package/dist/services/pipeline.service.d.ts.map +1 -1
- package/dist/services/pipeline.service.js +12 -0
- package/dist/services/pipeline.service.js.map +1 -1
- package/dist/services/project.rpc-service.d.ts +7 -0
- package/dist/services/project.rpc-service.d.ts.map +1 -1
- package/dist/services/project.rpc-service.js +11 -0
- package/dist/services/project.rpc-service.js.map +1 -1
- package/dist/services/project.service.d.ts +21 -11
- package/dist/services/project.service.d.ts.map +1 -1
- package/dist/services/project.service.js +74 -59
- package/dist/services/project.service.js.map +1 -1
- package/dist/services/redeploy-decision.d.ts +2 -2
- package/dist/services/redeploy-decision.js +1 -1
- package/dist/services/release.rpc-service.d.ts +1 -1
- package/dist/services/release.rpc-service.js +1 -1
- package/dist/services/remote-deployer.service.d.ts +27 -16
- package/dist/services/remote-deployer.service.d.ts.map +1 -1
- package/dist/services/remote-deployer.service.js +269 -101
- package/dist/services/remote-deployer.service.js.map +1 -1
- package/dist/services/remote-provisioner.d.ts +2 -0
- package/dist/services/remote-provisioner.d.ts.map +1 -1
- package/dist/services/remote-provisioner.js +1 -1
- package/dist/services/remote-provisioner.js.map +1 -1
- package/dist/services/static-carry-forward.d.ts +26 -1
- package/dist/services/static-carry-forward.d.ts.map +1 -1
- package/dist/services/static-carry-forward.js +275 -1
- package/dist/services/static-carry-forward.js.map +1 -1
- package/dist/shared/dto/nodes.d.ts +2 -2
- package/dist/shared/dto/services.d.ts +27 -0
- package/dist/shared/dto/services.d.ts.map +1 -1
- package/dist/shared/local-infra-host.d.ts +2 -2
- package/dist/shared/local-infra-host.js +2 -2
- package/dist/shared/release-reading.d.ts +1 -1
- package/dist/shared/release-reading.js +1 -1
- package/package.json +16 -12
- package/webapp/dist/BUILD.json +2 -2
- package/webapp/dist/assets/FormControlLabel-BbSxpQwN.js +1 -0
- package/webapp/dist/assets/{Grid-BZ7xhoHQ.js → Grid-DizFZYue.js} +1 -1
- package/webapp/dist/assets/{Switch-DGSAxQPM.js → Switch-Bfiqzx8l.js} +1 -1
- package/webapp/dist/assets/alerts-DH_RVRS3.js +1 -0
- package/webapp/dist/assets/apps-B96355sz.js +1 -0
- package/webapp/dist/assets/audit-CYGtbi4k.js +1 -0
- package/webapp/dist/assets/client-BmqFExWT.js +1 -0
- package/webapp/dist/assets/containers-B_TpThln.js +2 -0
- package/webapp/dist/assets/dashboard-DHf2_65N.js +1 -0
- package/webapp/dist/assets/dashboard-builder-CWY2pjeG.js +1 -0
- package/webapp/dist/assets/{deploy-release-dialog-D6C-XcKY.js → deploy-release-dialog-Dp-zpSAd.js} +1 -1
- package/webapp/dist/assets/deployments-tJI6O3fK.js +1 -0
- package/webapp/dist/assets/detail-B2zP1Hto.js +8 -0
- package/webapp/dist/assets/detail-CoIrwmsy.js +1 -0
- package/webapp/dist/assets/detail-DWaGaOtL.js +2 -0
- package/webapp/dist/assets/index-Dvo0iprx.css +1 -0
- package/webapp/dist/assets/index-vMnY_4jR.js +412 -0
- package/webapp/dist/assets/logs-DTRjOfX8.js +12 -0
- package/webapp/dist/assets/maplibre-gl-DowHoZAx.js +814 -0
- package/webapp/dist/assets/{metrics-CQgjz2Lz.js → metrics-UCajtdox.js} +2 -2
- package/webapp/dist/assets/nodes-DuTVU0f6.js +7 -0
- package/webapp/dist/assets/pipelines-C8BeDcAl.js +4 -0
- package/webapp/dist/assets/projects-Dp_zFfLY.js +1 -0
- package/webapp/dist/assets/react-DlmbjZJV.js +1 -0
- package/webapp/dist/assets/react-apexcharts.esm-C8pn45ml.js +97 -0
- package/webapp/dist/assets/{release-bits-Dj4EOhhb.js → release-bits-BzTKz5fM.js} +1 -1
- package/webapp/dist/assets/release-build-panel-DcW9YcXQ.js +1 -0
- package/webapp/dist/assets/releases-B4hcr1bE.js +2 -0
- package/webapp/dist/assets/rolldown-runtime-XKyaHtl9.js +1 -0
- package/webapp/dist/assets/settings-DIteZTbe.js +1 -0
- package/webapp/dist/assets/sign-in-D4kMBOHp.js +1 -0
- package/webapp/dist/assets/stacks-Brnf-EB7.js +1 -0
- package/webapp/dist/assets/{system-info-BtE3dgfw.js → system-info-CFDNVKkU.js} +1 -1
- package/webapp/dist/assets/topology-7WeTUsDN.js +12 -0
- package/webapp/dist/assets/traces-9c3gwCN-.js +1 -0
- package/webapp/dist/assets/{use-stack-context-CZUgPq88.js → use-stack-context-CnA5FTHu.js} +1 -1
- package/webapp/dist/index.html +6 -6
- package/webapp/dist/assets/FormControlLabel-BrH2diyl.js +0 -1
- package/webapp/dist/assets/alerts-sXqHJbsa.js +0 -1
- package/webapp/dist/assets/apps-B_Ah8Flh.js +0 -1
- package/webapp/dist/assets/audit-YXihwyui.js +0 -1
- package/webapp/dist/assets/client-CGbBvy9k.js +0 -1
- package/webapp/dist/assets/containers-Di4NOTLf.js +0 -2
- package/webapp/dist/assets/dashboard-Cfuf95N3.js +0 -1
- package/webapp/dist/assets/dashboard-builder-CowaYb-M.js +0 -1
- package/webapp/dist/assets/deployments-ChTq5kCw.js +0 -1
- package/webapp/dist/assets/detail-BsGWv7Dj.js +0 -1
- package/webapp/dist/assets/detail-CyVf_cw5.js +0 -2
- package/webapp/dist/assets/detail-D027j6aO.js +0 -8
- package/webapp/dist/assets/index-B8AHIPc-.css +0 -1
- package/webapp/dist/assets/index-DiZbrwxT.js +0 -414
- package/webapp/dist/assets/logs-L2b8Oqmo.js +0 -12
- package/webapp/dist/assets/maplibre-gl-MlmG2kbn.js +0 -801
- package/webapp/dist/assets/nodes-Nwia2Ty6.js +0 -7
- package/webapp/dist/assets/pipelines-DCu_rXOr.js +0 -4
- package/webapp/dist/assets/projects-Bb4aV76h.js +0 -1
- package/webapp/dist/assets/react-CwJFpaho.js +0 -1
- package/webapp/dist/assets/react-apexcharts.esm-Dy0Fez42.js +0 -1956
- package/webapp/dist/assets/release-build-panel-D6OCVlhT.js +0 -1
- package/webapp/dist/assets/releases-CnAt3yO6.js +0 -2
- package/webapp/dist/assets/rolldown-runtime-hePW80VL.js +0 -1
- package/webapp/dist/assets/settings-DU-mjiwb.js +0 -1
- package/webapp/dist/assets/sign-in-Bcvjrr4C.js +0 -1
- package/webapp/dist/assets/stacks-B-e8p50I.js +0 -1
- package/webapp/dist/assets/topology-Cwch-uF1.js +0 -12
- package/webapp/dist/assets/traces-BbShR-4P.js +0 -1
|
@@ -0,0 +1,814 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-XKyaHtl9.js";var t=e({AJAXError:()=>Ln,AttributionControl:()=>pF,BoxZoomHandler:()=>dP,CanvasSource:()=>Ix,CooperativeGesturesHandler:()=>XP,DoubleClickZoomHandler:()=>WP,DragPanHandler:()=>qP,DragRotateHandler:()=>JP,EXTENT:()=>N,EdgeInsets:()=>DO,ErrorEvent:()=>R,Event:()=>Zn,Evented:()=>Qn,FullscreenControl:()=>sI,FullscreenEvent:()=>oI,GPUInitializationError:()=>ZN,GeoJSONSource:()=>vx,GeolocateControl:()=>$F,GeolocateErrorEvent:()=>QF,GeolocateEvent:()=>XF,GeolocatePositionEvent:()=>ZF,GlobeControl:()=>lI,Hash:()=>$N,ImageSource:()=>kx,KeyboardHandler:()=>BP,LngLat:()=>Q,LngLatBounds:()=>Rb,LogoControl:()=>mF,Map:()=>kF,MapBoxZoomEvent:()=>or,MapContextEvent:()=>lr,MapLibreEvent:()=>$n,MapLibreMap:()=>kF,MapMouseEvent:()=>rr,MapMovementEvent:()=>z,MapProjectionEvent:()=>cr,MapSourceDataEvent:()=>nr,MapStyleDataEvent:()=>tr,MapStyleImageMissingEvent:()=>ur,MapStyleLoadEvent:()=>er,MapTerrainEvent:()=>sr,MapTouchEvent:()=>ir,MapWheelEvent:()=>ar,Marker:()=>KF,MarkerClickEvent:()=>GF,MarkerDragEvent:()=>WF,MercatorCoordinate:()=>zm,NavigationControl:()=>jF,Point:()=>f,Popup:()=>pI,PopupEvent:()=>fI,RasterDEMTileSource:()=>Zb,RasterTileSource:()=>Vb,ScaleControl:()=>tI,ScrollZoomHandler:()=>UP,Style:()=>Gk,TerrainControl:()=>cI,TwoFingersTouchPitchHandler:()=>RP,TwoFingersTouchRotateHandler:()=>IP,TwoFingersTouchZoomHandler:()=>PP,TwoFingersTouchZoomRotateHandler:()=>YP,VectorTileSource:()=>Bb,VideoSource:()=>Fx,addProjection:()=>gx,addProtocol:()=>Pn,addSourceType:()=>Vx,clearPrewarmedResources:()=>Cb,config:()=>Mn,createTileMesh:()=>Ox,getGlobalDispatcher:()=>Eb,getMaxParallelImageRequests:()=>SI,getRTLTextPluginStatus:()=>vI,getVersion:()=>yI,getWorkerCount:()=>bI,getWorkerUrl:()=>wI,importScriptInWorkers:()=>EI,isTimeFrozen:()=>Tn,now:()=>Sn,prewarm:()=>Sb,removeProjection:()=>_x,removeProtocol:()=>Fn,restoreNow:()=>wn,setMaxParallelImageRequests:()=>CI,setNow:()=>Cn,setRTLTextPlugin:()=>_I,setWorkerCount:()=>xI,setWorkerUrl:()=>TI}),n=Object.create,r=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,c=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),l=(e,t,n,o)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=a(t),l=0,u=c.length,d;l<u;l++)d=c[l],!s.call(e,d)&&d!==n&&r(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(o=i(t,d))||o.enumerable});return e},u=(e,t,i)=>(i=e==null?{}:n(o(e)),l(t||!e||!e.__esModule||!s.call(e,`default`)?r(i,`default`,{value:e,enumerable:!0}):i,e)),d=`6.15.0`;function f(e,t){this.x=e,this.y=t}f.prototype={clone(){return new f(this.x,this.y)},add(e){return this.clone()._add(e)},sub(e){return this.clone()._sub(e)},multByPoint(e){return this.clone()._multByPoint(e)},divByPoint(e){return this.clone()._divByPoint(e)},mult(e){return this.clone()._mult(e)},div(e){return this.clone()._div(e)},rotate(e){return this.clone()._rotate(e)},rotateAround(e,t){return this.clone()._rotateAround(e,t)},matMult(e){return this.clone()._matMult(e)},unit(){return this.clone()._unit()},perp(){return this.clone()._perp()},round(){return this.clone()._round()},mag(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals(e){return this.x===e.x&&this.y===e.y},dist(e){return Math.sqrt(this.distSqr(e))},distSqr(e){let t=e.x-this.x,n=e.y-this.y;return t*t+n*n},angle(){return Math.atan2(this.y,this.x)},angleTo(e){return Math.atan2(this.y-e.y,this.x-e.x)},angleWith(e){return this.angleWithSep(e.x,e.y)},angleWithSep(e,t){return Math.atan2(this.x*t-this.y*e,this.x*e+this.y*t)},_matMult(e){let t=e[0]*this.x+e[1]*this.y,n=e[2]*this.x+e[3]*this.y;return this.x=t,this.y=n,this},_add(e){return this.x+=e.x,this.y+=e.y,this},_sub(e){return this.x-=e.x,this.y-=e.y,this},_mult(e){return this.x*=e,this.y*=e,this},_div(e){return this.x/=e,this.y/=e,this},_multByPoint(e){return this.x*=e.x,this.y*=e.y,this},_divByPoint(e){return this.x/=e.x,this.y/=e.y,this},_unit(){return this._div(this.mag()),this},_perp(){let e=this.y;return this.y=this.x,this.x=-e,this},_rotate(e){let t=Math.cos(e),n=Math.sin(e),r=t*this.x-n*this.y,i=n*this.x+t*this.y;return this.x=r,this.y=i,this},_rotateAround(e,t){let n=Math.cos(e),r=Math.sin(e),i=t.x+n*(this.x-t.x)-r*(this.y-t.y),a=t.y+r*(this.x-t.x)+n*(this.y-t.y);return this.x=i,this.y=a,this},_round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},constructor:f},f.convert=function(e){if(e instanceof f)return e;if(Array.isArray(e))return new f(+e[0],+e[1]);if(e.x!==void 0&&e.y!==void 0)return new f(+e.x,+e.y);throw Error(`Expected [x, y] or {x, y} point format`)};function p(e,t,n,r){let i=3*e,a=3*(n-e)-i,o=1-i-a,s=3*t,c=3*(r-t)-s,l=1-s-c;return function(e,t=1e-6){if(e<=0)return 0;if(e>=1)return 1;let n=e;for(let r=0;r<8;r++){let r=((o*n+a)*n+i)*n-e;if(Math.abs(r)<t)return((l*n+c)*n+s)*n;let u=(3*o*n+2*a)*n+i;if(Math.abs(u)<1e-6)break;n-=r/u}let r=0,u=1;n=e;for(let s=0;s<20;s++){let s=((o*n+a)*n+i)*n;if(Math.abs(s-e)<t)break;e>s?r=n:u=n,n=(r+u)*.5}return((l*n+c)*n+s)*n}}var m;function h(){return m??=typeof OffscreenCanvas<`u`&&!!new OffscreenCanvas(1,1).getContext(`2d`)&&typeof createImageBitmap==`function`,m}var g;function _(){if(g==null&&(g=!1,h())){let e=new OffscreenCanvas(5,5).getContext(`2d`,{willReadFrequently:!0});if(e){for(let t=0;t<25;t++){let n=t*4;e.fillStyle=`rgb(${n},${n+1},${n+2})`,e.fillRect(t%5,Math.floor(t/5),1,1)}let t=e.getImageData(0,0,5,5).data;for(let e=0;e<100;e++)if(e%4!=3&&t[e]!==e){g=!0;break}}}return g||!1}var v=typeof Float32Array<`u`?Float32Array:Array;function y(){var e=new v(4);return v!=Float32Array&&(e[1]=0,e[2]=0),e[0]=1,e[3]=1,e}function b(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],o=n*a-i*r;return o?(o=1/o,e[0]=a*o,e[1]=-r*o,e[2]=-i*o,e[3]=n*o,e):null}function x(e){return e[0]*e[3]-e[2]*e[1]}function S(e,t,n){var r=t[0],i=t[1],a=t[2],o=t[3],s=Math.sin(n),c=Math.cos(n);return e[0]=r*c+a*s,e[1]=i*c+o*s,e[2]=r*-s+a*c,e[3]=i*-s+o*c,e}function C(){var e=new v(9);return v!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function w(e){var t=e[0],n=e[1],r=e[2],i=e[3],a=e[4],o=e[5],s=e[6],c=e[7],l=e[8];return t*(l*a-o*c)+n*(-l*i+o*s)+r*(c*i-a*s)}function T(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=n,e[2]=0,e[3]=-n,e[4]=r,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e}function E(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],o=n+n,s=r+r,c=i+i,l=n*o,u=r*o,d=r*s,f=i*o,p=i*s,m=i*c,h=a*o,g=a*s,_=a*c;return e[0]=1-d-m,e[3]=u-_,e[6]=f+g,e[1]=u+_,e[4]=1-l-m,e[7]=p-h,e[2]=f-g,e[5]=p+h,e[8]=1-l-d,e}function D(){var e=new v(16);return v!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function O(e){var t=new v(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function k(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function A(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function j(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],s=t[5],c=t[6],l=t[7],u=t[8],d=t[9],f=t[10],p=t[11],m=t[12],h=t[13],g=t[14],_=t[15],v=n*s-r*o,y=n*c-i*o,b=n*l-a*o,x=r*c-i*s,S=r*l-a*s,C=i*l-a*c,w=u*h-d*m,T=u*g-f*m,E=u*_-p*m,D=d*g-f*h,O=d*_-p*h,k=f*_-p*g,A=v*k-y*O+b*D+x*E-S*T+C*w;return A?(A=1/A,e[0]=(s*k-c*O+l*D)*A,e[1]=(i*O-r*k-a*D)*A,e[2]=(h*C-g*S+_*x)*A,e[3]=(f*S-d*C-p*x)*A,e[4]=(c*E-o*k-l*T)*A,e[5]=(n*k-i*E+a*T)*A,e[6]=(g*b-m*C-_*y)*A,e[7]=(u*C-f*b+p*y)*A,e[8]=(o*O-s*E+l*w)*A,e[9]=(r*E-n*O-a*w)*A,e[10]=(m*S-h*b+_*v)*A,e[11]=(d*b-u*S-p*v)*A,e[12]=(s*T-o*D-c*w)*A,e[13]=(n*D-r*T+i*w)*A,e[14]=(h*y-m*x-g*v)*A,e[15]=(u*x-d*y+f*v)*A,e):null}function ee(e,t,n){var r=t[0],i=t[1],a=t[2],o=t[3],s=t[4],c=t[5],l=t[6],u=t[7],d=t[8],f=t[9],p=t[10],m=t[11],h=t[12],g=t[13],_=t[14],v=t[15],y=n[0],b=n[1],x=n[2],S=n[3];return e[0]=y*r+b*s+x*d+S*h,e[1]=y*i+b*c+x*f+S*g,e[2]=y*a+b*l+x*p+S*_,e[3]=y*o+b*u+x*m+S*v,y=n[4],b=n[5],x=n[6],S=n[7],e[4]=y*r+b*s+x*d+S*h,e[5]=y*i+b*c+x*f+S*g,e[6]=y*a+b*l+x*p+S*_,e[7]=y*o+b*u+x*m+S*v,y=n[8],b=n[9],x=n[10],S=n[11],e[8]=y*r+b*s+x*d+S*h,e[9]=y*i+b*c+x*f+S*g,e[10]=y*a+b*l+x*p+S*_,e[11]=y*o+b*u+x*m+S*v,y=n[12],b=n[13],x=n[14],S=n[15],e[12]=y*r+b*s+x*d+S*h,e[13]=y*i+b*c+x*f+S*g,e[14]=y*a+b*l+x*p+S*_,e[15]=y*o+b*u+x*m+S*v,e}function te(e,t,n){var r=n[0],i=n[1],a=n[2],o,s,c,l,u,d,f,p,m,h,g,_;return t===e?(e[12]=t[0]*r+t[4]*i+t[8]*a+t[12],e[13]=t[1]*r+t[5]*i+t[9]*a+t[13],e[14]=t[2]*r+t[6]*i+t[10]*a+t[14],e[15]=t[3]*r+t[7]*i+t[11]*a+t[15]):(o=t[0],s=t[1],c=t[2],l=t[3],u=t[4],d=t[5],f=t[6],p=t[7],m=t[8],h=t[9],g=t[10],_=t[11],e[0]=o,e[1]=s,e[2]=c,e[3]=l,e[4]=u,e[5]=d,e[6]=f,e[7]=p,e[8]=m,e[9]=h,e[10]=g,e[11]=_,e[12]=o*r+u*i+m*a+t[12],e[13]=s*r+d*i+h*a+t[13],e[14]=c*r+f*i+g*a+t[14],e[15]=l*r+p*i+_*a+t[15]),e}function ne(e,t,n){var r=n[0],i=n[1],a=n[2];return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function re(e,t,n){var r=Math.sin(n),i=Math.cos(n),a=t[4],o=t[5],s=t[6],c=t[7],l=t[8],u=t[9],d=t[10],f=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*i+l*r,e[5]=o*i+u*r,e[6]=s*i+d*r,e[7]=c*i+f*r,e[8]=l*i-a*r,e[9]=u*i-o*r,e[10]=d*i-s*r,e[11]=f*i-c*r,e}function ie(e,t,n){var r=Math.sin(n),i=Math.cos(n),a=t[0],o=t[1],s=t[2],c=t[3],l=t[8],u=t[9],d=t[10],f=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i-l*r,e[1]=o*i-u*r,e[2]=s*i-d*r,e[3]=c*i-f*r,e[8]=a*r+l*i,e[9]=o*r+u*i,e[10]=s*r+d*i,e[11]=c*r+f*i,e}function ae(e,t,n){var r=Math.sin(n),i=Math.cos(n),a=t[0],o=t[1],s=t[2],c=t[3],l=t[4],u=t[5],d=t[6],f=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i+l*r,e[1]=o*i+u*r,e[2]=s*i+d*r,e[3]=c*i+f*r,e[4]=l*i-a*r,e[5]=u*i-o*r,e[6]=d*i-s*r,e[7]=f*i-c*r,e}function oe(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function se(e,t,n,r,i){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,i!=null&&i!==1/0){var o=1/(r-i);e[10]=(i+r)*o,e[14]=2*i*r*o}else e[10]=-1,e[14]=-2*r;return e}var ce=se;function le(e,t,n,r,i,a,o){var s=1/(t-n),c=1/(r-i),l=1/(a-o);return e[0]=-2*s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+n)*s,e[13]=(i+r)*c,e[14]=(o+a)*l,e[15]=1,e}var ue=le;function de(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function fe(e,t){var n=e[0],r=e[1],i=e[2],a=e[3],o=e[4],s=e[5],c=e[6],l=e[7],u=e[8],d=e[9],f=e[10],p=e[11],m=e[12],h=e[13],g=e[14],_=e[15],v=t[0],y=t[1],b=t[2],x=t[3],S=t[4],C=t[5],w=t[6],T=t[7],E=t[8],D=t[9],O=t[10],k=t[11],A=t[12],j=t[13],ee=t[14],te=t[15];return Math.abs(n-v)<=1e-6*Math.max(1,Math.abs(n),Math.abs(v))&&Math.abs(r-y)<=1e-6*Math.max(1,Math.abs(r),Math.abs(y))&&Math.abs(i-b)<=1e-6*Math.max(1,Math.abs(i),Math.abs(b))&&Math.abs(a-x)<=1e-6*Math.max(1,Math.abs(a),Math.abs(x))&&Math.abs(o-S)<=1e-6*Math.max(1,Math.abs(o),Math.abs(S))&&Math.abs(s-C)<=1e-6*Math.max(1,Math.abs(s),Math.abs(C))&&Math.abs(c-w)<=1e-6*Math.max(1,Math.abs(c),Math.abs(w))&&Math.abs(l-T)<=1e-6*Math.max(1,Math.abs(l),Math.abs(T))&&Math.abs(u-E)<=1e-6*Math.max(1,Math.abs(u),Math.abs(E))&&Math.abs(d-D)<=1e-6*Math.max(1,Math.abs(d),Math.abs(D))&&Math.abs(f-O)<=1e-6*Math.max(1,Math.abs(f),Math.abs(O))&&Math.abs(p-k)<=1e-6*Math.max(1,Math.abs(p),Math.abs(k))&&Math.abs(m-A)<=1e-6*Math.max(1,Math.abs(m),Math.abs(A))&&Math.abs(h-j)<=1e-6*Math.max(1,Math.abs(h),Math.abs(j))&&Math.abs(g-ee)<=1e-6*Math.max(1,Math.abs(g),Math.abs(ee))&&Math.abs(_-te)<=1e-6*Math.max(1,Math.abs(_),Math.abs(te))}function pe(){var e=new v(3);return v!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function me(e){var t=new v(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function he(e){var t=e[0],n=e[1],r=e[2];return Math.sqrt(t*t+n*n+r*r)}function ge(e,t,n){var r=new v(3);return r[0]=e,r[1]=t,r[2]=n,r}function _e(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function ve(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function ye(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function be(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e}function xe(e,t){var n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return Math.sqrt(n*n+r*r+i*i)}function Se(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function Ce(e,t){var n=t[0],r=t[1],i=t[2],a=n*n+r*r+i*i;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function we(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Te(e,t,n){var r=t[0],i=t[1],a=t[2],o=n[0],s=n[1],c=n[2];return e[0]=i*c-a*s,e[1]=a*o-r*c,e[2]=r*s-i*o,e}function Ee(e,t,n,r){var i=t[0],a=t[1],o=t[2];return e[0]=i+r*(n[0]-i),e[1]=a+r*(n[1]-a),e[2]=o+r*(n[2]-o),e}function De(e,t,n){var r=t[0],i=t[1],a=t[2],o=n[3]*r+n[7]*i+n[11]*a+n[15];return o||=1,e[0]=(n[0]*r+n[4]*i+n[8]*a+n[12])/o,e[1]=(n[1]*r+n[5]*i+n[9]*a+n[13])/o,e[2]=(n[2]*r+n[6]*i+n[10]*a+n[14])/o,e}function Oe(e,t,n){var r=t[0],i=t[1],a=t[2];return e[0]=r*n[0]+i*n[3]+a*n[6],e[1]=r*n[1]+i*n[4]+a*n[7],e[2]=r*n[2]+i*n[5]+a*n[8],e}function ke(e,t,n){var r=n[0],i=n[1],a=n[2],o=n[3],s=t[0],c=t[1],l=t[2],u=i*l-a*c,d=a*s-r*l,f=r*c-i*s;return u+=u,d+=d,f+=f,e[0]=s+o*u+i*f-a*d,e[1]=c+o*d+a*u-r*f,e[2]=l+o*f+r*d-i*u,e}function Ae(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0],a[1]=i[1]*Math.cos(r)-i[2]*Math.sin(r),a[2]=i[1]*Math.sin(r)+i[2]*Math.cos(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function je(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[2]*Math.sin(r)+i[0]*Math.cos(r),a[1]=i[1],a[2]=i[2]*Math.cos(r)-i[0]*Math.sin(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Me(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0]*Math.cos(r)-i[1]*Math.sin(r),a[1]=i[0]*Math.sin(r)+i[1]*Math.cos(r),a[2]=i[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Ne(e){return e[0]=0,e[1]=0,e[2]=0,e}var Pe=ve,Fe=he;(function(){var e=pe();return function(t,n,r,i,a,o){var s,c;for(n||=3,r||=0,c=i?Math.min(i*n+r,t.length):t.length,s=r;s<c;s+=n)e[0]=t[s],e[1]=t[s+1],e[2]=t[s+2],a(e,e,o),t[s]=e[0],t[s+1]=e[1],t[s+2]=e[2];return t}})();function Ie(){var e=new v(4);return v!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e}function Le(e,t,n,r,i){return e[0]=t,e[1]=n,e[2]=r,e[3]=i,e}function Re(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e[3]=t[3]*n[3],e}function ze(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e}function Be(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],o=n*n+r*r+i*i+a*a;return o>0&&(o=1/Math.sqrt(o)),e[0]=n*o,e[1]=r*o,e[2]=i*o,e[3]=a*o,e}function Ve(e,t,n){var r=t[0],i=t[1],a=t[2],o=t[3];return e[0]=n[0]*r+n[4]*i+n[8]*a+n[12]*o,e[1]=n[1]*r+n[5]*i+n[9]*a+n[13]*o,e[2]=n[2]*r+n[6]*i+n[10]*a+n[14]*o,e[3]=n[3]*r+n[7]*i+n[11]*a+n[15]*o,e}var He=Re;(function(){var e=Ie();return function(t,n,r,i,a,o){var s,c;for(n||=4,r||=0,c=i?Math.min(i*n+r,t.length):t.length,s=r;s<c;s+=n)e[0]=t[s],e[1]=t[s+1],e[2]=t[s+2],e[3]=t[s+3],a(e,e,o),t[s]=e[0],t[s+1]=e[1],t[s+2]=e[2],t[s+3]=e[3];return t}})();function Ue(){var e=new v(4);return v!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function We(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e}function Ge(e,t,n){n*=.5;var r=Math.sin(n);return e[0]=r*t[0],e[1]=r*t[1],e[2]=r*t[2],e[3]=Math.cos(n),e}function Ke(e,t,n){var r=t[0],i=t[1],a=t[2],o=t[3],s=n[0],c=n[1],l=n[2],u=n[3];return e[0]=r*u+o*s+i*l-a*c,e[1]=i*u+o*c+a*s-r*l,e[2]=a*u+o*l+r*c-i*s,e[3]=o*u-r*s-i*c-a*l,e}function qe(e,t,n,r){var i=t[0],a=t[1],o=t[2],s=t[3],c=n[0],l=n[1],u=n[2],d=n[3],f,p=i*c+a*l+o*u+s*d,m,h,g;return p<0&&(p=-p,c=-c,l=-l,u=-u,d=-d),1-p>1e-6?(f=Math.acos(p),m=Math.sin(f),h=Math.sin((1-r)*f)/m,g=Math.sin(r*f)/m):(h=1-r,g=r),e[0]=h*i+g*c,e[1]=h*a+g*l,e[2]=h*o+g*u,e[3]=h*s+g*d,e}function Je(e,t){var n=t[0]+t[4]+t[8],r;if(n>0)r=Math.sqrt(n+1),e[3]=.5*r,r=.5/r,e[0]=(t[5]-t[7])*r,e[1]=(t[6]-t[2])*r,e[2]=(t[1]-t[3])*r;else{var i=0;t[4]>t[0]&&(i=1),t[8]>t[i*3+i]&&(i=2);var a=(i+1)%3,o=(i+2)%3;r=Math.sqrt(t[i*3+i]-t[a*3+a]-t[o*3+o]+1),e[i]=.5*r,r=.5/r,e[3]=(t[a*3+o]-t[o*3+a])*r,e[a]=(t[a*3+i]+t[i*3+a])*r,e[o]=(t[o*3+i]+t[i*3+o])*r}return e}function Ye(e,t,n,r){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:`zyx`,a=Math.PI/360;t*=a,r*=a,n*=a;var o=Math.sin(t),s=Math.cos(t),c=Math.sin(n),l=Math.cos(n),u=Math.sin(r),d=Math.cos(r);switch(i){case`xyz`:e[0]=o*l*d+s*c*u,e[1]=s*c*d-o*l*u,e[2]=s*l*u+o*c*d,e[3]=s*l*d-o*c*u;break;case`xzy`:e[0]=o*l*d-s*c*u,e[1]=s*c*d-o*l*u,e[2]=s*l*u+o*c*d,e[3]=s*l*d+o*c*u;break;case`yxz`:e[0]=o*l*d+s*c*u,e[1]=s*c*d-o*l*u,e[2]=s*l*u-o*c*d,e[3]=s*l*d+o*c*u;break;case`yzx`:e[0]=o*l*d+s*c*u,e[1]=s*c*d+o*l*u,e[2]=s*l*u-o*c*d,e[3]=s*l*d-o*c*u;break;case`zxy`:e[0]=o*l*d-s*c*u,e[1]=s*c*d+o*l*u,e[2]=s*l*u+o*c*d,e[3]=s*l*d-o*c*u;break;case`zyx`:e[0]=o*l*d-s*c*u,e[1]=s*c*d+o*l*u,e[2]=s*l*u-o*c*d,e[3]=s*l*d+o*c*u;break;default:throw Error(`Unknown angle order `+i)}return e}var Xe=Le,Ze=Be;(function(){var e=pe(),t=ge(1,0,0),n=ge(0,1,0);return function(r,i,a){var o=we(i,a);return o<-.999999?(Te(e,t,i),Fe(e)<1e-6&&Te(e,n,i),Ce(e,e),Ge(r,e,Math.PI),r):o>.999999?(r[0]=0,r[1]=0,r[2]=0,r[3]=1,r):(Te(e,i,a),r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=1+o,Ze(r,r))}})(),function(){var e=Ue(),t=Ue();return function(n,r,i,a,o,s){return qe(e,r,o,s),qe(t,i,a,s),qe(n,e,t,2*s*(1-s)),n}}(),function(){var e=C();return function(t,n,r,i){return e[0]=r[0],e[3]=r[1],e[6]=r[2],e[1]=i[0],e[4]=i[1],e[7]=i[2],e[2]=-n[0],e[5]=-n[1],e[8]=-n[2],Ze(t,Je(t,e))}}();function M(){var e=new v(2);return v!=Float32Array&&(e[0]=0,e[1]=0),e}function Qe(e,t){var n=new v(2);return n[0]=e,n[1]=t,n}function $e(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e}function et(e){var t=e[0],n=e[1];return Math.sqrt(t*t+n*n)}function tt(e){var t=e[0],n=e[1];return t*t+n*n}function nt(e,t){return e[0]*t[0]+e[1]*t[1]}function rt(e){return e[0]=0,e[1]=0,e}var it=tt;(function(){var e=M();return function(t,n,r,i,a,o){var s,c;for(n||=2,r||=0,c=i?Math.min(i*n+r,t.length):t.length,s=r;s<c;s+=n)e[0]=t[s],e[1]=t[s+1],a(e,e,o),t[s]=e[0],t[s+1]=e[1];return t}})();var N=8192;function at(e,t,n){return t*(N/(e.tileSize*2**(n-e.tileID.overscaledZ)))}function ot(e){return e instanceof Error?e:Error(typeof e==`string`?e:String(e))}function st(){return new Float64Array(4)}function ct(){return new Float64Array(3)}function lt(){return new Float64Array(16)}function ut(){let e=new Float64Array(16);return A(e),e}function dt(){let e=new Float32Array(16);return A(e),e}function ft(e,t,n,r,i=!1){if(!n[0]&&!n[1])return[0,0];let a=i?r===`map`?-e.bearingInRadians:0:r===`viewport`?e.bearingInRadians:0;if(a){let e=Math.sin(a),t=Math.cos(a);n=[n[0]*t-n[1]*e,n[0]*e+n[1]*t]}return[i?n[0]:at(t,n[0],e.zoom),i?n[1]:at(t,n[1],e.zoom)]}function pt(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]}function mt(e,t,n){let r=w([e[0],e[1],e[2],t[0],t[1],t[2],n[0],n[1],n[2]]);if(r===0)return null;let i=Te([],[t[0],t[1],t[2]],[n[0],n[1],n[2]]),a=Te([],[n[0],n[1],n[2]],[e[0],e[1],e[2]]),o=Te([],[e[0],e[1],e[2]],[t[0],t[1],t[2]]),s=ye([],i,-e[3]);return _e(s,s,ye([],a,-t[3])),_e(s,s,ye([],o,-n[3])),ye(s,s,1/r),s}function ht(e,t,n){let r=e[0]*n[0]+e[1]*n[1]+e[2]*n[2],i=t[0]*n[0]+t[1]*n[1]+t[2]*n[2];return i===0?null:(-r-n[3])/i}function gt(e,t,n,r){let i=Math.sqrt(e*e+t*t),a=Math.sqrt(n*n+r*r);e/=i,t/=i,n/=a,r/=a;let o=e*n+t*r,s=Math.acos(o);return-t*n+e*r>0?s:-s}function _t(e,t){let n=yt(e,360),r=yt(t,360),i=r-n,a=r>n?i-360:i+360;return Math.abs(i)<Math.abs(a)?i:a}function vt(e,t){let n=yt(e,Math.PI*2),r=yt(t,Math.PI*2);return Math.min(Math.abs(n-r),Math.abs(n-r+Math.PI*2),Math.abs(n-r-Math.PI*2))}function yt(e,t){return(e%t+t)%t}function bt(e,t,n,r,i){return xt(r,i,P((e-t)/(n-t),0,1))}function xt(e,t,n){return e*(1-n)+t*n}function St(e){let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a of e)t=Math.min(t,a.x),n=Math.min(n,a.y),r=Math.max(r,a.x),i=Math.max(i,a.y);return[t,n,r,i]}function Ct(e){if(!e.length)return new Set;let t=Math.max(...e.map(e=>e.canonical.z)),n=1/0,r=-1/0,i=1/0,a=-1/0,o=[];for(let s of e){let{x:e,y:c,z:l}=s.canonical,u=2**(t-l),d=e*u,f=c*u;o.push({id:s,x:d,y:f}),d<n&&(n=d),d>r&&(r=d),f<i&&(i=f),f>a&&(a=f)}let s=new Set;for(let e of o)(e.x===n||e.x===r||e.y===i||e.y===a)&&s.add(e.id);return s}function wt(e){if(e<=0)return 0;if(e>=1)return 1;let t=e*e,n=t*e;return 4*(e<.5?n:3*(e-t)+n-.75)}function Tt(e,t,n,r){return p(e,t,n,r)}var Et=Tt(.25,.1,.25,1);function P(e,t,n){return Math.min(n,Math.max(t,e))}function Dt(e,t,n){let r=n-t,i=((e-t)%r+r)%r+t;return i===t?n:i}function F(e,...t){for(let n of t)for(let t in n)e[t]=n[t];return e}function Ot(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}var kt=1;function At(){return kt++}function jt(e){return Math.log(e)/Math.LN2%1==0}function Mt(e){return e<=1?1:2**Math.ceil(Math.log(e)/Math.LN2)}function Nt(e){return 2**e}function Pt(e){return Math.log(e)/Math.LN2}function Ft(e,t,n){if(t<=0)return e;let r=1/t;return n===void 0||Math.abs(n)<1e-10?Math.round(e*r)/r:(n>0?Math.ceil(e*r-1e-9):Math.floor(e*r+1e-10))/r}function It(e,t,n){let r={};for(let i in e)r[i]=t.call(n||this,e[i],i,e);return r}function Lt(e,t,n){let r={};for(let i in e)t.call(n||this,e[i],i,e)&&(r[i]=e[i]);return r}function Rt(e,t){if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!Rt(e[n],t[n]))return!1;return!0}if(typeof e==`object`&&e&&t!==null){if(typeof t!=`object`||Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(!Rt(e[n],t[n]))return!1;return!0}return e===t}function zt(e){return Array.isArray(e)?e.map(zt):typeof e==`object`&&e?It(e,zt):e}var Bt={};function I(e){Bt[e]||(typeof console<`u`&&console.warn(e),Bt[e]=!0)}function Vt(e,t,n){return(n.y-e.y)*(t.x-e.x)>(t.y-e.y)*(n.x-e.x)}function Ht(e,t,n,r){let i=t.y-e.y,a=t.x-e.x,o=r.y-n.y,s=r.x-n.x,c=o*a-s*i;if(c===0)return null;let l=e.y-n.y,u=e.x-n.x,d=(s*l-o*u)/c;return new f(e.x+d*a,e.y+d*i)}function Ut([e,t,n]){return t+=90,t*=Math.PI/180,n*=Math.PI/180,[e*Math.cos(t)*Math.sin(n),e*Math.sin(t)*Math.sin(n),e*Math.cos(n)]}function Wt(e){return typeof WorkerGlobalScope<`u`&&e!==void 0&&e instanceof WorkerGlobalScope}function Gt(e){let t=/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,n={};if(e.replace(t,(e,t,r,i)=>{let a=r||i;return n[t]=!a||a.toLowerCase(),``}),n[`max-age`]){let e=parseInt(n[`max-age`],10);isNaN(e)?delete n[`max-age`]:n[`max-age`]=e}return n}var Kt=null;function qt(e){if(Kt==null){let t=e.navigator?e.navigator.userAgent:null;Kt=!!e.safari||!!(t&&(/\b(iPad|iPhone|iPod)\b/.test(t)||t.match(`Safari`)&&!t.match(`Chrome`)))}return Kt}function Jt(e){return typeof ImageBitmap<`u`&&e instanceof ImageBitmap}var Yt=async(e,t)=>{let n=new Blob([new Uint8Array(e)],{type:`image/png`});try{return createImageBitmap(n,t)}catch(e){throw Error(`Could not load image because of ${ot(e).message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`)}},Xt=e=>new Promise((t,n)=>{let r=new Image;r.onload=()=>{t(r),URL.revokeObjectURL(r.src),r.onload=null,window.requestAnimationFrame(()=>r.src=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=`)},r.onerror=()=>n(Error(`Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`));let i=new Blob([new Uint8Array(e)],{type:`image/png`});r.src=URL.createObjectURL(i)});function Zt(e,t,n,r,i){let a=Math.max(-t,0)*4,o=(Math.max(0,n)-n)*r*4+a,s=r*4,c=Math.max(0,t),l=Math.max(0,n),u=Math.min(e.width,t+r),d=Math.min(e.height,n+i);return{rect:{x:c,y:l,width:u-c,height:d-l},layout:[{offset:o,stride:s}]}}async function Qt(e,t,n,r,i){if(typeof VideoFrame>`u`)throw Error(`VideoFrame not supported`);let a=new VideoFrame(e,{timestamp:0});try{let o=a?.format;if(!o||!(o.startsWith(`BGR`)||o.startsWith(`RGB`)))throw Error(`Unrecognized format ${o}`);let s=o.startsWith(`BGR`),c=new Uint8ClampedArray(r*i*4);if(await a.copyTo(c,Zt(e,t,n,r,i)),s)for(let e=0;e<c.length;e+=4){let t=c[e];c[e]=c[e+2],c[e+2]=t}return c}finally{a.close()}}function $t(e,t,n,r){return e.addEventListener(t,n,r),{unsubscribe:()=>{e.removeEventListener(t,n,r)}}}function en(e){return e*Math.PI/180}function tn(e){return e/Math.PI*180}function nn(e,t){return e.roll==t.roll&&e.pitch==t.pitch&&e.bearing==t.bearing}function rn(e){let t=new Float64Array(9);E(t,e);let n=tn(-Math.asin(P(t[2],-1,1))),r,i;return Math.hypot(t[5],t[8])<.001?(r=0,i=-tn(Math.atan2(t[3],t[4]))):(r=tn(t[5]===0&&t[8]===0?0:Math.atan2(t[5],t[8])),i=tn(t[1]===0&&t[0]===0?0:Math.atan2(t[1],t[0]))),{roll:r,pitch:n+90,bearing:i}}function an(e,t,n){let r=Qe(t.x-n.x,t.y-n.y),i=Qe(e.x-n.x,e.y-n.y),a=r[0]*i[1]-r[1]*i[0];return tn(Math.atan2(a,nt(r,i)))}function on(e,t,n){let r=new Float64Array(4);return Ye(r,e,t-90,n),r}var sn=85.051129,cn={touchstart:!0,touchmove:!0,touchmoveWindow:!0,touchend:!0,touchcancel:!0},ln={dblclick:!0,click:!0,mouseover:!0,mouseout:!0,mousedown:!0,mousemove:!0,mousemoveWindow:!0,mouseup:!0,mouseupWindow:!0,contextmenu:!0,wheel:!0};function un(e,t){return cn[t]&&`touches`in e}function dn(e,t){if(!ln[t])return!1;let n=e,r=(n?.target)?.ownerDocument?.defaultView||window;return n instanceof r.MouseEvent||n instanceof r.WheelEvent}function fn(e){return cn[e]||ln[e]}var pn=`AbortError`,mn=class extends Error{constructor(e=pn){super(e instanceof Error?e.message:e),this.name=pn,e instanceof Error&&e.stack&&(this.stack=e.stack)}};function hn(e){return e instanceof Error&&e.name===`AbortError`}function gn(e){if(e.aborted)throw new mn(e.reason)}var _n,vn,yn,bn={frame(e,t,n,r){let i=r||window,a=i.requestAnimationFrame(e=>{o(),t(e)}),{unsubscribe:o}=$t(e.signal,`abort`,()=>{o(),i.cancelAnimationFrame(a),n(new mn(e.signal.reason))},!1)},frameAsync(e,t){return new Promise((n,r)=>{this.frame(e,n,r,t)})},getImageData(e,t=0){return this.getImageCanvasContext(e).getImageData(-t,-t,e.width+2*t,e.height+2*t)},getImageCanvasContext(e){let t;if(h()&&!_())t=new OffscreenCanvas(e.width,e.height).getContext(`2d`,{willReadFrequently:!0});else{let n=window.document.createElement(`canvas`);n.width=e.width,n.height=e.height,t=n.getContext(`2d`,{willReadFrequently:!0})}if(!t)throw Error(`failed to create canvas 2d context`);return t.drawImage(e,0,0,e.width,e.height),t},resolveURL(e){return _n||=document.createElement(`a`),_n.href=e,_n.href},get hardwareConcurrency(){return typeof navigator<`u`&&navigator.hardwareConcurrency||4},get prefersReducedMotion(){return yn===void 0?matchMedia?(vn??=matchMedia(`(prefers-reduced-motion: reduce)`),vn.matches):!1:yn},set prefersReducedMotion(e){yn=e}},xn=new class{constructor(){this._frozenAt=null}getCurrentTime(){return this._frozenAt===null?performance.now():this._frozenAt}setNow(e){this._frozenAt=e}restoreNow(){this._frozenAt=null}isFrozen(){return this._frozenAt!==null}};function Sn(){return xn.getCurrentTime()}function Cn(e){xn.setNow(e)}function wn(){xn.restoreNow()}function Tn(){return xn.isFrozen()}var En=new Set(`a.abbr.b.bdi.bdo.br.cite.code.del.div.em.i.img.ins.kbd.li.mark.ol.p.q.s.samp.small.span.strong.sub.sup.time.u.ul.var.wbr`.split(`.`)),Dn=new Set([`alt`,`class`,`datetime`,`dir`,`height`,`href`,`hreflang`,`lang`,`referrerpolicy`,`rel`,`role`,`src`,`target`,`title`,`translate`,`type`,`width`]),On=new Set([`href`,`src`]),kn=new Set([`http:`,`https:`,`mailto:`]),An;function jn(){return An??={getAttribute:Element.prototype.getAttribute,getAttributeNames:Element.prototype.getAttributeNames,querySelectorAll:Element.prototype.querySelectorAll,remove:Element.prototype.remove,removeAttribute:Element.prototype.removeAttribute,localName:Object.getOwnPropertyDescriptor(Element.prototype,`localName`).get,namespaceURI:Object.getOwnPropertyDescriptor(Element.prototype,`namespaceURI`).get},An}var L=class e{static{this.docStyle=typeof window<`u`&&window.document?.documentElement.style}static{this.selectProp=!e.docStyle||`userSelect`in e.docStyle?`userSelect`:`webkitUserSelect`}static create(e,t,n){let r=window.document.createElement(e);return t!==void 0&&(r.className=t),n&&n.appendChild(r),r}static createNS(e,t){return window.document.createElementNS(e,t)}static disableDrag(){e.docStyle&&e.selectProp&&(e.userSelect=e.docStyle[e.selectProp],e.docStyle[e.selectProp]=`none`)}static enableDrag(){e.docStyle&&e.selectProp&&(e.docStyle[e.selectProp]=e.userSelect)}static suppressClickInternal(t){t.preventDefault(),t.stopPropagation(),window.removeEventListener(`click`,e.suppressClickInternal,!0)}static suppressClick(){window.addEventListener(`click`,e.suppressClickInternal,!0),window.setTimeout(()=>{window.removeEventListener(`click`,e.suppressClickInternal,!0)},0)}static getScale(e){let t=e.getBoundingClientRect();return{x:t.width/e.offsetWidth||1,y:t.height/e.offsetHeight||1,boundingClientRect:t}}static getPoint(e,t,n){let r=t.boundingClientRect;return new f((n.clientX-r.left)/t.x-e.clientLeft,(n.clientY-r.top)/t.y-e.clientTop)}static mousePos(t,n){let r=e.getScale(t);return e.getPoint(t,r,n)}static touchPos(t,n){let r=[],i=e.getScale(t);for(let a of n)r.push(e.getPoint(t,i,a));return r}static sanitize(t){let n=new DOMParser().parseFromString(t,`text/html`).body,{querySelectorAll:r,remove:i}=jn();for(let t of Array.from(r.call(n,`*`)))e.isAllowedElement(t)?e.removeDisallowedAttributes(t):i.call(t);let a=document.createDocumentFragment();return a.append(...n.childNodes),a}static isAllowedElement(e){let{namespaceURI:t,localName:n}=jn();return t.call(e)===`http://www.w3.org/1999/xhtml`&&En.has(n.call(e))}static removeDisallowedAttributes(t){let{getAttributeNames:n,getAttribute:r,removeAttribute:i}=jn();for(let a of n.call(t))e.isAllowedAttribute(a,r.call(t,a))||i.call(t,a)}static isAllowedAttribute(e,t){if(!Dn.has(e)&&!e.startsWith(`aria-`))return!1;if(!On.has(e))return!0;try{return kn.has(new URL(t,`https://maplibre.invalid/`).protocol)}catch{return!1}}},Mn={MAX_PARALLEL_IMAGE_REQUESTS:16,MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:8,MAX_TILE_CACHE_ZOOM_LEVELS:5,REGISTERED_PROTOCOLS:{},WORKER_URL:``};function Nn(e){return Mn.REGISTERED_PROTOCOLS[e.substring(0,e.indexOf(`://`))]}function Pn(e,t){Mn.REGISTERED_PROTOCOLS[e]=t}function Fn(e){delete Mn.REGISTERED_PROTOCOLS[e]}var In=`global-dispatcher`,Ln=class extends Error{constructor(e,t,n,r){super(`AJAXError: ${t} (${e}): ${n}`),this.status=e,this.statusText=t,this.url=n,this.body=r}};function Rn(){if(Wt(self))return self.worker?.referrer;if(window.location.protocol===`blob:`)try{return window.parent.location.href}catch{}return window.location.href}var zn=e=>e.startsWith(`file:`)||Rn()?.startsWith(`file:`)&&!/^\w+:/.test(e);async function Bn(e,t){let n=new Request(e.url,{method:e.method||`GET`,body:e.body,credentials:e.credentials,headers:e.headers,cache:e.cache,referrer:Rn(),referrerPolicy:e.referrerPolicy,signal:t.signal});e.type===`json`&&!n.headers.has(`Accept`)&&n.headers.set(`Accept`,`application/json`);let r;try{r=await fetch(n)}catch(t){throw hn(t)?t:new Ln(0,ot(t).message,e.url,new Blob)}if(!r.ok){let t=await r.blob();throw new Ln(r.status,r.statusText,e.url,t)}let i;i=e.type===`arrayBuffer`||e.type===`image`?r.arrayBuffer():e.type===`json`?r.json():r.text();let a=await i;return gn(t.signal),{data:a,cacheControl:r.headers.get(`Cache-Control`),expires:r.headers.get(`Expires`),etag:r.headers.get(`ETag`)}}function Vn(e,t){return new Promise((n,r)=>{let i=new XMLHttpRequest;i.open(e.method||`GET`,e.url,!0),(e.type===`arrayBuffer`||e.type===`image`)&&(i.responseType=`arraybuffer`);for(let t in e.headers)i.setRequestHeader(t,e.headers[t]);e.type===`json`&&(i.responseType=`text`,e.headers?.Accept||i.setRequestHeader(`Accept`,`application/json`)),i.withCredentials=e.credentials===`include`,i.onerror=()=>{r(Error(i.statusText))},i.onload=()=>{if(!t.signal.aborted){if((i.status>=200&&i.status<300||i.status===0)&&i.response!==null){let t=i.response;if(e.type===`json`)try{t=JSON.parse(i.response)}catch(e){r(e);return}n({data:t,cacheControl:i.getResponseHeader(`Cache-Control`),expires:i.getResponseHeader(`Expires`),etag:i.getResponseHeader(`ETag`)})}else{let t=new Blob([i.response],{type:i.getResponseHeader(`Content-Type`)});r(new Ln(i.status,i.statusText,e.url,t))}}},t.signal.addEventListener(`abort`,()=>{i.abort(),r(new mn(t.signal.reason))}),i.send(e.body)})}var Hn=async function(e,t){if(e.url.includes(`://`)&&!/^https?:|^file:/.test(e.url)){let n=Nn(e.url);if(n){let r=await n(e,t);return!r.data&&e.type===`arrayBuffer`?F(r,{data:new ArrayBuffer(0)}):r}if(Wt(self)&&self.worker?.actor)return self.worker.actor.sendAsync({type:`GR`,data:e,targetMapId:In},t)}if(!zn(e.url)){if(fetch&&Request&&AbortController&&Object.hasOwn(Request.prototype,`signal`))return Bn(e,t);if(Wt(self)&&self.worker?.actor)return self.worker.actor.sendAsync({type:`GR`,data:e,mustQueue:!0,targetMapId:In},t)}return Vn(e,t)},Un=(e,t)=>Hn(F(e,{type:`json`}),t),Wn=(e,t)=>Hn(F(e,{type:`arrayBuffer`}),t);function Gn(e){if(!e||e.startsWith(`data:image/`))return!0;if(e.startsWith(`blob:`)&&(e=e.slice(5),e.startsWith(`null`)))return!1;if(e.indexOf(`://`)<=0)return!0;let t=new URL(e),n=window.location;return t.protocol===n.protocol&&t.host===n.host}var Kn=e=>{let t=window.document.createElement(`video`);return t.muted=!0,new Promise(n=>{t.onloadstart=()=>{n(t)};for(let n of e){let e=window.document.createElement(`source`);Gn(n)||(t.crossOrigin=`Anonymous`),e.src=n,t.appendChild(e)}})},qn;(function(e){let t,n,r,i;e.resetRequestQueue=()=>{t=[],n=0,r=0,i={}},e.addThrottleControl=e=>{let t=r++;return i[t]=e,t},e.removeThrottleControl=e=>{delete i[e],l()};let a=()=>{for(let e of Object.keys(i))if(i[e]())return!0;return!1};async function o(e,t,n,r,i=!0,a){let o=await e.transformRequest(t,n);return gn(r.signal),qn.getImage(o,r,i,a)}e.transformAndGetImage=o,e.getImage=(e,n,r=!0,i)=>new Promise((a,o)=>{e.headers||={},e.headers.accept=`image/webp,*/*`,F(e,{type:`image`});let s={abortController:n,requestParameters:e,supportImageRefresh:r,imageBitmapOptions:i,state:`queued`,onError:e=>{o(e)},onSuccess:e=>{a(e)}};t.push(s),l()});let s=(e,t)=>typeof createImageBitmap==`function`?Yt(e,t):Xt(e),c=async e=>{e.state=`running`;let{requestParameters:t,supportImageRefresh:r,imageBitmapOptions:i,onError:a,onSuccess:o,abortController:c}=e,d=r===!1&&!i&&!Wt(self)&&!Nn(t.url)&&(!t.headers||Object.keys(t.headers).reduce((e,t)=>e&&t===`accept`,!0));n++;let f=d?u(t,c):Hn(t,c);try{let t=await f;delete e.abortController,e.state=`completed`,t.data instanceof HTMLImageElement||Jt(t.data)?o(t):!t.data||t.data.byteLength===0?o({data:null,cacheControl:t.cacheControl,expires:t.expires}):o({data:await s(t.data,i),cacheControl:t.cacheControl,expires:t.expires})}catch(t){delete e.abortController,a(ot(t))}finally{n--,l()}},l=()=>{let e=a()?Mn.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:Mn.MAX_PARALLEL_IMAGE_REQUESTS;for(let r=n;r<e&&t.length>0;r++){let e=t.shift();e.abortController.signal.aborted?r--:c(e)}},u=(e,t)=>new Promise((n,r)=>{let i=new Image,a=e.url,o=e.credentials;o&&o===`include`?i.crossOrigin=`use-credentials`:(o&&o===`same-origin`||!Gn(a))&&(i.crossOrigin=`anonymous`),t.signal.addEventListener(`abort`,()=>{i.src=``,r(new mn(t.signal.reason))}),i.fetchPriority=`high`,i.onload=()=>{i.onerror=i.onload=null,n({data:i})},i.onerror=()=>{i.onerror=i.onload=null,!t.signal.aborted&&r(Error(`Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`))},i.src=a})})(qn||={}),qn.resetRequestQueue();var Jn=class{constructor(e){this._transformRequestFn=e??null}transformRequest(e,t){return this._transformRequestFn&&this._transformRequestFn(e,t)||{url:e}}setTransformRequest(e){this._transformRequestFn=e}};function Yn(e,t,n){n[e]?.includes(t)||(n[e]||=[],n[e].push(t))}function Xn(e,t,n){if(n?.[e]){let r=n[e].indexOf(t);r!==-1&&n[e].splice(r,1)}}var Zn=class{constructor(e,t={}){F(this,t),this.type=e}},R=class extends Zn{constructor(e,t={}){super(`error`,F({error:e},t))}},Qn=class{on(e,t){return this._listeners||={},Yn(e,t,this._listeners),{unsubscribe:()=>{this.off(e,t)}}}off(e,t){return Xn(e,t,this._listeners),Xn(e,t,this._oneTimeListeners),this}once(e,t){return t?(this._oneTimeListeners||={},Yn(e,t,this._oneTimeListeners),this):new Promise(t=>this.once(e,t))}fire(e,t){let n=typeof e==`string`?new Zn(e,t||{}):e,r=n.type;if(this.listens(r)){n.target=this;let e=this._listeners?.[r]?.slice()??[];for(let t of e)t.call(this,n);let t=this._oneTimeListeners?.[r]?.slice()??[];for(let e of t)Xn(r,e,this._oneTimeListeners),e.call(this,n);let i=this._eventedParent;i&&(F(n,typeof this._eventedParentData==`function`?this._eventedParentData():this._eventedParentData),i.fire(n))}else n instanceof R&&console.error(n.error);return this}listens(e){return!!(this._listeners?.[e]?.length||this._oneTimeListeners?.[e]?.length||this._eventedParent?.listens(e))}setEventedParent(e,t){return this._eventedParent=e,this._eventedParentData=t,this}},$n=class extends Zn{},z=class extends $n{},er=class extends $n{constructor(e={}){super(`style.load`,e)}},tr=class extends $n{constructor(e,t={}){super(e,t),this.dataType=`style`}},nr=class extends $n{constructor(e,t={}){super(e,t),this.dataType=`source`}},rr=class extends $n{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(e,t,n,r={}){n=n instanceof MouseEvent?n:new MouseEvent(e,n);let i=L.mousePos(t.getCanvas(),n),a=t.unproject(i);super(e,F({point:i,lngLat:a,originalEvent:n},r)),this._defaultPrevented=!1,this.target=t}},ir=class extends $n{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(e,t,n){let r=e===`touchend`?n.changedTouches:n.touches,i=L.touchPos(t.getCanvasContainer(),r),a=i.map(e=>t.unproject(e)),o=i.reduce((e,t,n,r)=>e.add(t.div(r.length)),new f(0,0)),s=t.unproject(o);super(e,{points:i,point:o,lngLats:a,lngLat:s,originalEvent:n}),this._defaultPrevented=!1}},ar=class extends $n{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(e,t){super(`wheel`,{originalEvent:t}),this._defaultPrevented=!1}},or=class extends $n{},sr=class extends $n{constructor(e={}){super(`terrain`,e)}},cr=class extends $n{constructor(e={}){super(`projectiontransition`,e)}},lr=class extends $n{},ur=class extends $n{constructor(e={}){super(`styleimagemissing`,e)}},dr={$version:8,$root:{version:{required:!0,type:`enum`,values:[8]},name:{type:`string`},metadata:{type:`*`},center:{type:`array`,value:`number`,length:2},centerAltitude:{type:`number`},zoom:{type:`number`},bearing:{type:`number`,default:0,period:360,units:`degrees`},pitch:{type:`number`,default:0,units:`degrees`},roll:{type:`number`,default:0,units:`degrees`},state:{type:`state`,default:{}},light:{type:`light`},sky:{type:`sky`},projection:{type:`projection`},terrain:{type:`terrain`},sources:{required:!0,type:`sources`},sprite:{type:`sprite`},glyphs:{type:`string`},"font-faces":{type:`fontFaces`},transition:{type:`transition`},layers:{required:!0,type:`array`,value:`layer`}},sources:{"*":{type:`source`}},source:[`source_vector`,`source_raster`,`source_raster_dem`,`source_geojson`,`source_video`,`source_image`],source_vector:{type:{required:!0,type:`enum`,values:{vector:{}}},url:{type:`string`},tiles:{type:`array`,value:`string`},bounds:{type:`array`,value:`number`,length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:`enum`,values:{xyz:{},tms:{}},default:`xyz`},minzoom:{type:`number`,default:0},maxzoom:{type:`number`,default:22},attribution:{type:`string`},promoteId:{type:`promoteId`},volatile:{type:`boolean`,default:!1},encoding:{type:`enum`,values:{mvt:{},mlt:{}},default:`mvt`},"*":{type:`*`}},source_raster:{type:{required:!0,type:`enum`,values:{raster:{}}},url:{type:`string`},tiles:{type:`array`,value:`string`},bounds:{type:`array`,value:`number`,length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:`number`,default:0},maxzoom:{type:`number`,default:22},tileSize:{type:`number`,default:512,units:`pixels`},scheme:{type:`enum`,values:{xyz:{},tms:{}},default:`xyz`},attribution:{type:`string`},volatile:{type:`boolean`,default:!1},"*":{type:`*`}},source_raster_dem:{type:{required:!0,type:`enum`,values:{"raster-dem":{}}},url:{type:`string`},tiles:{type:`array`,value:`string`},bounds:{type:`array`,value:`number`,length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:`number`,default:0},maxzoom:{type:`number`,default:22},tileSize:{type:`number`,default:512,units:`pixels`},attribution:{type:`string`},encoding:{type:`enum`,values:{terrarium:{},mapbox:{},custom:{}},default:`mapbox`},redFactor:{type:`number`,default:1},blueFactor:{type:`number`,default:1},greenFactor:{type:`number`,default:1},baseShift:{type:`number`,default:0},volatile:{type:`boolean`,default:!1},"*":{type:`*`}},source_geojson:{type:{required:!0,type:`enum`,values:{geojson:{}}},data:{required:!0,type:`*`},maxzoom:{type:`number`,default:18},attribution:{type:`string`},buffer:{type:`number`,default:128,maximum:512,minimum:0},filter:{type:`filter`},tolerance:{type:`number`,default:.375},cluster:{type:`boolean`,default:!1},clusterRadius:{type:`number`,default:50,minimum:0},clusterMaxZoom:{type:`number`},clusterMinPoints:{type:`number`},clusterProperties:{type:`*`},lineMetrics:{type:`boolean`,default:!1},generateId:{type:`boolean`,default:!1},promoteId:{type:`promoteId`}},source_video:{type:{required:!0,type:`enum`,values:{video:{}}},urls:{required:!0,type:`array`,value:`string`},coordinates:{required:!0,type:`array`,length:4,value:{type:`array`,length:2,value:`number`}}},source_image:{type:{required:!0,type:`enum`,values:{image:{}}},url:{type:`string`},coordinates:{required:!0,type:`array`,length:4,value:{type:`array`,length:2,value:`number`}}},layer:{id:{type:`string`,required:!0},type:{type:`enum`,values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},"color-relief":{},background:{}},required:!0},metadata:{type:`*`},source:{type:`string`},"source-layer":{type:`string`},minzoom:{type:`number`,minimum:0,maximum:24},maxzoom:{type:`number`,minimum:0,maximum:24},filter:{type:`filter`},layout:{type:`layout`},paint:{type:`paint`}},layout:[`layout_fill`,`layout_line`,`layout_circle`,`layout_heatmap`,`layout_fill-extrusion`,`layout_symbol`,`layout_raster`,`layout_hillshade`,`layout_color-relief`,`layout_background`],layout_background:{visibility:{type:`enum`,values:{visible:{},none:{}},default:`visible`,expression:{interpolated:!1,parameters:[`global-state`]},"property-type":`data-constant`}},layout_fill:{"fill-sort-key":{type:`number`,expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},visibility:{type:`enum`,values:{visible:{},none:{}},default:`visible`,expression:{interpolated:!1,parameters:[`global-state`]},"property-type":`data-constant`}},layout_circle:{"circle-sort-key":{type:`number`,expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},visibility:{type:`enum`,values:{visible:{},none:{}},default:`visible`,expression:{interpolated:!1,parameters:[`global-state`]},"property-type":`data-constant`}},layout_heatmap:{visibility:{type:`enum`,values:{visible:{},none:{}},default:`visible`,expression:{interpolated:!1,parameters:[`global-state`]},"property-type":`data-constant`}},"layout_fill-extrusion":{visibility:{type:`enum`,values:{visible:{},none:{}},default:`visible`,expression:{interpolated:!1,parameters:[`global-state`]},"property-type":`data-constant`},"fill-extrusion-rounded-corner-distance":{type:`number`,default:0,minimum:0,units:`meters`,"property-type":`constant`}},layout_line:{"line-cap":{type:`enum`,values:{butt:{},round:{},square:{}},default:`butt`,expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"line-join":{type:`enum`,values:{bevel:{},round:{},miter:{}},default:`miter`,expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"line-miter-limit":{type:`number`,default:2,requires:[{"line-join":`miter`}],expression:{interpolated:!0,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"line-round-limit":{type:`number`,default:1.05,requires:[{"line-join":`round`}],expression:{interpolated:!0,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"line-sort-key":{type:`number`,expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},visibility:{type:`enum`,values:{visible:{},none:{}},default:`visible`,expression:{interpolated:!1,parameters:[`global-state`]},"property-type":`data-constant`}},layout_symbol:{"symbol-placement":{type:`enum`,values:{point:{},line:{},"line-center":{}},default:`point`,expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"symbol-spacing":{type:`number`,default:250,minimum:1,units:`pixels`,requires:[{"symbol-placement":`line`}],expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"symbol-avoid-edges":{type:`boolean`,default:!1,expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"symbol-sort-key":{type:`number`,expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"symbol-z-order":{type:`enum`,values:{auto:{},"viewport-y":{},source:{}},default:`auto`,expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"icon-allow-overlap":{type:`boolean`,default:!1,requires:[`icon-image`,{"!":`icon-overlap`}],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"icon-overlap":{type:`enum`,values:{never:{},always:{},cooperative:{}},requires:[`icon-image`],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"icon-ignore-placement":{type:`boolean`,default:!1,requires:[`icon-image`],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"icon-optional":{type:`boolean`,default:!1,requires:[`icon-image`,`text-field`],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"icon-rotation-alignment":{type:`enum`,values:{map:{},viewport:{},auto:{}},default:`auto`,requires:[`icon-image`],expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"icon-size":{type:`number`,default:1,minimum:0,units:`factor of the original icon size`,requires:[`icon-image`],expression:{interpolated:!0,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"icon-text-fit":{type:`enum`,values:{none:{},width:{},height:{},both:{}},default:`none`,requires:[`icon-image`,`text-field`],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"icon-text-fit-padding":{type:`array`,value:`number`,length:4,default:[0,0,0,0],units:`pixels`,requires:[`icon-image`,`text-field`,{"icon-text-fit":[`both`,`width`,`height`]}],expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"icon-image":{type:`resolvedImage`,tokens:!0,expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"icon-rotate":{type:`number`,default:0,period:360,units:`degrees`,requires:[`icon-image`],expression:{interpolated:!0,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"icon-padding":{type:`padding`,default:[2],units:`pixels`,requires:[`icon-image`],expression:{interpolated:!0,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"icon-keep-upright":{type:`boolean`,default:!1,requires:[`icon-image`,{"icon-rotation-alignment":`map`},{"symbol-placement":[`line`,`line-center`]}],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"icon-offset":{type:`array`,value:`number`,length:2,default:[0,0],requires:[`icon-image`],expression:{interpolated:!0,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"icon-anchor":{type:`enum`,values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:`center`,requires:[`icon-image`],expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"icon-pitch-alignment":{type:`enum`,values:{map:{},viewport:{},auto:{}},default:`auto`,requires:[`icon-image`],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"text-pitch-alignment":{type:`enum`,values:{map:{},viewport:{},auto:{}},default:`auto`,requires:[`text-field`],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"text-rotation-alignment":{type:`enum`,values:{map:{},viewport:{},"viewport-glyph":{},auto:{}},default:`auto`,requires:[`text-field`],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"text-field":{type:`formatted`,default:``,tokens:!0,expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"text-font":{type:`array`,value:`string`,default:[`Open Sans Regular`,`Arial Unicode MS Regular`],requires:[`text-field`],expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"text-size":{type:`number`,default:16,minimum:0,units:`pixels`,requires:[`text-field`],expression:{interpolated:!0,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"text-max-width":{type:`number`,default:10,minimum:0,units:`ems`,requires:[`text-field`],expression:{interpolated:!0,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"text-line-height":{type:`number`,default:1.2,units:`ems`,requires:[`text-field`],expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"text-letter-spacing":{type:`number`,default:0,units:`ems`,requires:[`text-field`],expression:{interpolated:!0,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"text-justify":{type:`enum`,values:{auto:{},left:{},center:{},right:{}},default:`center`,requires:[`text-field`],expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"text-radial-offset":{type:`number`,units:`ems`,default:0,requires:[`text-field`],"property-type":`data-driven`,expression:{interpolated:!0,parameters:[`zoom`,`feature`]}},"text-variable-anchor":{type:`array`,value:`enum`,values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:[`text-field`,{"symbol-placement":[`point`]}],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"text-variable-anchor-offset":{type:`variableAnchorOffsetCollection`,requires:[`text-field`,{"symbol-placement":[`point`]}],expression:{interpolated:!0,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"text-anchor":{type:`enum`,values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:`center`,requires:[`text-field`,{"!":`text-variable-anchor`}],expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"text-max-angle":{type:`number`,default:45,units:`degrees`,requires:[`text-field`,{"symbol-placement":[`line`,`line-center`]}],expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"text-writing-mode":{type:`array`,value:`enum`,values:{horizontal:{},vertical:{}},requires:[`text-field`,{"symbol-placement":[`point`]}],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"text-rotate":{type:`number`,default:0,period:360,units:`degrees`,requires:[`text-field`],expression:{interpolated:!0,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"text-padding":{type:`number`,default:2,minimum:0,units:`pixels`,requires:[`text-field`],expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"text-keep-upright":{type:`boolean`,default:!0,requires:[`text-field`,{"text-rotation-alignment":`map`},{"symbol-placement":[`line`,`line-center`]}],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"text-transform":{type:`enum`,values:{none:{},uppercase:{},lowercase:{}},default:`none`,requires:[`text-field`],expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"text-offset":{type:`array`,value:`number`,units:`ems`,length:2,default:[0,0],requires:[`text-field`,{"!":`text-radial-offset`}],expression:{interpolated:!0,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"text-allow-overlap":{type:`boolean`,default:!1,requires:[`text-field`,{"!":`text-overlap`}],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"text-overlap":{type:`enum`,values:{never:{},always:{},cooperative:{}},requires:[`text-field`],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"text-ignore-placement":{type:`boolean`,default:!1,requires:[`text-field`],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"text-optional":{type:`boolean`,default:!1,requires:[`text-field`,`icon-image`],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"symbol-height-offset":{type:`number`,default:0,units:`meters`,requires:[{"symbol-placement":[`point`]}],expression:{interpolated:!0,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},"symbol-height-anchor":{type:`enum`,values:{ground:{},absolute:{}},default:`ground`,requires:[`symbol-height-offset`],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},visibility:{type:`enum`,values:{visible:{},none:{}},default:`visible`,expression:{interpolated:!1,parameters:[`global-state`]},"property-type":`data-constant`}},layout_raster:{visibility:{type:`enum`,values:{visible:{},none:{}},default:`visible`,expression:{interpolated:!1,parameters:[`global-state`]},"property-type":`data-constant`}},layout_hillshade:{visibility:{type:`enum`,values:{visible:{},none:{}},default:`visible`,expression:{interpolated:!1,parameters:[`global-state`]},"property-type":`data-constant`}},"layout_color-relief":{visibility:{type:`enum`,values:{visible:{},none:{}},default:`visible`,expression:{interpolated:!1,parameters:[`global-state`]},"property-type":`data-constant`}},filter:{type:`boolean`,expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`data-driven`},filter_operator:{type:`enum`,values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{}}},geometry_type:{type:`enum`,values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:`expression`},stops:{type:`array`,value:`function_stop`},base:{type:`number`,default:1,minimum:0},property:{type:`string`,default:`$zoom`},type:{type:`enum`,values:{identity:{},exponential:{},interval:{},categorical:{}},default:`exponential`},colorSpace:{type:`enum`,values:{rgb:{},lab:{},hcl:{}},default:`rgb`},default:{type:`*`,required:!1}},function_stop:{type:`array`,minimum:0,maximum:24,value:[`number`,`color`],length:2},expression:{type:`array`,value:`expression_name`,minimum:1},light:{anchor:{type:`enum`,default:`viewport`,values:{map:{},viewport:{}},"property-type":`data-constant`,transition:!1,expression:{interpolated:!1,parameters:[`zoom`]}},position:{type:`array`,default:[1.15,210,30],length:3,value:`number`,"property-type":`data-constant`,transition:!0,expression:{interpolated:!0,parameters:[`zoom`]}},color:{type:`color`,"property-type":`data-constant`,default:`#ffffff`,expression:{interpolated:!0,parameters:[`zoom`]},transition:!0},intensity:{type:`number`,"property-type":`data-constant`,default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[`zoom`]},transition:!0}},sky:{"sky-color":{type:`color`,"property-type":`data-constant`,default:`#88C6FC`,expression:{interpolated:!0,parameters:[`zoom`]},transition:!0},"horizon-color":{type:`color`,"property-type":`data-constant`,default:`#ffffff`,expression:{interpolated:!0,parameters:[`zoom`]},transition:!0},"fog-color":{type:`color`,"property-type":`data-constant`,default:`#ffffff`,expression:{interpolated:!0,parameters:[`zoom`]},transition:!0},"fog-ground-blend":{type:`number`,"property-type":`data-constant`,default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[`zoom`]},transition:!0},"horizon-fog-blend":{type:`number`,"property-type":`data-constant`,default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[`zoom`]},transition:!0},"sky-horizon-blend":{type:`number`,"property-type":`data-constant`,default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[`zoom`]},transition:!0},"atmosphere-blend":{type:`number`,"property-type":`data-constant`,default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:[`zoom`]},transition:!0}},terrain:{source:{type:`string`,required:!0},exaggeration:{type:`number`,minimum:0,default:1}},projection:{type:{type:`projectionDefinition`,default:`mercator`,"property-type":`data-constant`,transition:!1,expression:{interpolated:!0,parameters:[`zoom`]}}},paint:[`paint_fill`,`paint_line`,`paint_circle`,`paint_heatmap`,`paint_fill-extrusion`,`paint_symbol`,`paint_raster`,`paint_hillshade`,`paint_color-relief`,`paint_background`],paint_fill:{"fill-antialias":{type:`boolean`,default:!0,expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"fill-opacity":{type:`number`,default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"fill-layer-opacity":{type:`number`,default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[`zoom`,`global-state`]},"property-type":`data-constant`},"fill-color":{type:`color`,default:`#000000`,transition:!0,expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"fill-outline-color":{type:`color`,transition:!0,requires:[{"!":`fill-pattern`},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"fill-translate":{type:`array`,value:`number`,length:2,default:[0,0],transition:!0,units:`pixels`,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"fill-translate-anchor":{type:`enum`,values:{map:{},viewport:{}},default:`map`,requires:[`fill-translate`],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"fill-pattern":{type:`resolvedImage`,transition:!0,expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`cross-faded-data-driven`}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:`number`,default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"fill-extrusion-color":{type:`color`,default:`#000000`,transition:!0,requires:[{"!":`fill-extrusion-pattern`}],expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"fill-extrusion-translate":{type:`array`,value:`number`,length:2,default:[0,0],transition:!0,units:`pixels`,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"fill-extrusion-translate-anchor":{type:`enum`,values:{map:{},viewport:{}},default:`map`,requires:[`fill-extrusion-translate`],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"fill-extrusion-pattern":{type:`resolvedImage`,transition:!0,expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`cross-faded-data-driven`},"fill-extrusion-height":{type:`number`,default:0,units:`meters`,transition:!0,expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"fill-extrusion-base":{type:`number`,default:0,units:`meters`,transition:!0,requires:[`fill-extrusion-height`],expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"fill-extrusion-vertical-gradient":{type:`boolean`,default:!0,transition:!1,expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`}},paint_line:{"line-opacity":{type:`number`,default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"line-layer-opacity":{type:`number`,default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[`zoom`,`global-state`]},"property-type":`data-constant`},"line-color":{type:`color`,default:`#000000`,transition:!0,requires:[{"!":`line-pattern`}],expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"line-translate":{type:`array`,value:`number`,length:2,default:[0,0],transition:!0,units:`pixels`,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"line-translate-anchor":{type:`enum`,values:{map:{},viewport:{}},default:`map`,requires:[`line-translate`],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"line-width":{type:`number`,default:1,minimum:0,transition:!0,units:`pixels`,expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"line-gap-width":{type:`number`,default:0,minimum:0,transition:!0,units:`pixels`,expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"line-offset":{type:`number`,default:0,transition:!0,units:`pixels`,expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"line-blur":{type:`number`,default:0,minimum:0,transition:!0,units:`pixels`,expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"line-dasharray":{type:`array`,value:`number`,minimum:0,transition:!0,units:`line widths`,requires:[{"!":`line-pattern`}],expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`cross-faded-data-driven`},"line-pattern":{type:`resolvedImage`,transition:!0,expression:{interpolated:!1,parameters:[`zoom`,`feature`]},"property-type":`cross-faded-data-driven`},"line-gradient":{type:`color`,transition:!1,requires:[{"!":`line-dasharray`},{"!":`line-pattern`},{source:`geojson`,has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:[`line-progress`]},"property-type":`color-ramp`}},paint_circle:{"circle-radius":{type:`number`,default:5,minimum:0,transition:!0,units:`pixels`,expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"circle-color":{type:`color`,default:`#000000`,transition:!0,expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"circle-blur":{type:`number`,default:0,transition:!0,expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"circle-opacity":{type:`number`,default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"circle-translate":{type:`array`,value:`number`,length:2,default:[0,0],transition:!0,units:`pixels`,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"circle-translate-anchor":{type:`enum`,values:{map:{},viewport:{}},default:`map`,requires:[`circle-translate`],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"circle-pitch-scale":{type:`enum`,values:{map:{},viewport:{}},default:`map`,expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"circle-pitch-alignment":{type:`enum`,values:{map:{},viewport:{}},default:`viewport`,expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"circle-stroke-width":{type:`number`,default:0,minimum:0,transition:!0,units:`pixels`,expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"circle-stroke-color":{type:`color`,default:`#000000`,transition:!0,expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"circle-stroke-opacity":{type:`number`,default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`}},paint_heatmap:{"heatmap-radius":{type:`number`,default:30,minimum:1,transition:!0,units:`pixels`,expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"heatmap-weight":{type:`number`,default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"heatmap-intensity":{type:`number`,default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"heatmap-color":{type:`color`,default:[`interpolate`,[`linear`],[`heatmap-density`],0,`rgba(0, 0, 255, 0)`,.1,`royalblue`,.3,`cyan`,.5,`lime`,.7,`yellow`,1,`red`],transition:!1,expression:{interpolated:!0,parameters:[`heatmap-density`]},"property-type":`color-ramp`},"heatmap-opacity":{type:`number`,default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`}},paint_symbol:{"icon-opacity":{type:`number`,default:1,minimum:0,maximum:1,transition:!0,requires:[`icon-image`],expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"icon-color":{type:`color`,default:`#000000`,transition:!0,requires:[`icon-image`],expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"icon-halo-color":{type:`color`,default:`rgba(0, 0, 0, 0)`,transition:!0,requires:[`icon-image`],expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"icon-halo-width":{type:`number`,default:0,minimum:0,transition:!0,units:`pixels`,requires:[`icon-image`],expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"icon-halo-blur":{type:`number`,default:0,minimum:0,transition:!0,units:`pixels`,requires:[`icon-image`],expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"icon-translate":{type:`array`,value:`number`,length:2,default:[0,0],transition:!0,units:`pixels`,requires:[`icon-image`],expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"icon-translate-anchor":{type:`enum`,values:{map:{},viewport:{}},default:`map`,requires:[`icon-image`,`icon-translate`],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"text-opacity":{type:`number`,default:1,minimum:0,maximum:1,transition:!0,requires:[`text-field`],expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"text-color":{type:`color`,default:`#000000`,transition:!0,overridable:!0,requires:[`text-field`],expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"text-halo-color":{type:`color`,default:`rgba(0, 0, 0, 0)`,transition:!0,requires:[`text-field`],expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"text-halo-width":{type:`number`,default:0,minimum:0,transition:!0,units:`pixels`,requires:[`text-field`],expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"text-halo-blur":{type:`number`,default:0,minimum:0,transition:!0,units:`pixels`,requires:[`text-field`],expression:{interpolated:!0,parameters:[`zoom`,`feature`,`feature-state`]},"property-type":`data-driven`},"text-translate":{type:`array`,value:`number`,length:2,default:[0,0],transition:!0,units:`pixels`,requires:[`text-field`],expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"text-translate-anchor":{type:`enum`,values:{map:{},viewport:{}},default:`map`,requires:[`text-field`,`text-translate`],expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`}},paint_raster:{"raster-opacity":{type:`number`,default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"raster-hue-rotate":{type:`number`,default:0,period:360,transition:!0,units:`degrees`,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"raster-brightness-min":{type:`number`,default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"raster-brightness-max":{type:`number`,default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"raster-saturation":{type:`number`,default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"raster-contrast":{type:`number`,default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},resampling:{type:`enum`,values:{linear:{},nearest:{}},default:`linear`,expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"raster-resampling":{type:`enum`,values:{linear:{},nearest:{}},default:`linear`,expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"raster-fade-duration":{type:`number`,default:300,minimum:0,transition:!1,units:`milliseconds`,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`}},paint_hillshade:{"hillshade-illumination-direction":{type:`numberArray`,default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"hillshade-illumination-altitude":{type:`numberArray`,default:45,minimum:0,maximum:90,transition:!1,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"hillshade-illumination-anchor":{type:`enum`,values:{map:{},viewport:{}},default:`viewport`,expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},"hillshade-exaggeration":{type:`number`,default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"hillshade-shadow-color":{type:`colorArray`,default:`#000000`,transition:!0,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"hillshade-highlight-color":{type:`colorArray`,default:`#FFFFFF`,transition:!0,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"hillshade-accent-color":{type:`color`,default:`#000000`,transition:!0,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"hillshade-method":{type:`enum`,values:{standard:{},basic:{},combined:{},igor:{},multidirectional:{}},default:`standard`,expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`},resampling:{type:`enum`,values:{linear:{},nearest:{}},default:`linear`,expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`}},"paint_color-relief":{"color-relief-opacity":{type:`number`,default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"color-relief-color":{type:`color`,transition:!1,expression:{interpolated:!0,parameters:[`elevation`]},"property-type":`color-ramp`},resampling:{type:`enum`,values:{linear:{},nearest:{}},default:`linear`,expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`data-constant`}},paint_background:{"background-color":{type:`color`,default:`#000000`,transition:!0,requires:[{"!":`background-pattern`}],expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`},"background-pattern":{type:`resolvedImage`,transition:!0,expression:{interpolated:!1,parameters:[`zoom`]},"property-type":`cross-faded`},"background-opacity":{type:`number`,default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:[`zoom`]},"property-type":`data-constant`}},transition:{duration:{type:`number`,default:300,minimum:0,units:`milliseconds`},delay:{type:`number`,default:0,minimum:0,units:`milliseconds`}},"property-type":{"data-driven":{type:`property-type`},"cross-faded":{type:`property-type`},"cross-faded-data-driven":{type:`property-type`},"color-ramp":{type:`property-type`},"data-constant":{type:`property-type`},constant:{type:`property-type`}},promoteId:{"*":{type:`string`}},interpolation:{type:`array`,value:`interpolation_name`,minimum:1},interpolation_name:{type:`enum`,values:{linear:{syntax:{overloads:[{parameters:[],"output-type":`interpolation`}],parameters:[]}},exponential:{syntax:{overloads:[{parameters:[`base`],"output-type":`interpolation`}],parameters:[{name:`base`,type:`number literal`}]}},"cubic-bezier":{syntax:{overloads:[{parameters:[`x1`,`y1`,`x2`,`y2`],"output-type":`interpolation`}],parameters:[{name:`x1`,type:`number literal`},{name:`y1`,type:`number literal`},{name:`x2`,type:`number literal`},{name:`y2`,type:`number literal`}]}}}}},B=dr,fr=[`type`,`source`,`source-layer`,`minzoom`,`maxzoom`,`filter`,`layout`];function pr(e,t){let n={};for(let t in e)t!==`ref`&&(n[t]=e[t]);return fr.forEach(e=>{e in t&&(n[e]=t[e])}),n}function mr(e){e=e.slice();let t=Object.create(null);for(let n=0;n<e.length;n++)t[e[n].id]=e[n];for(let n=0;n<e.length;n++)`ref`in e[n]&&(e[n]=pr(e[n],t[e[n].ref]));return e}function hr(e,t){if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!hr(e[n],t[n]))return!1;return!0}if(typeof e==`object`&&e&&t!==null){if(typeof t!=`object`||Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(!hr(e[n],t[n]))return!1;return!0}return e===t}function gr(e,t){e.push(t)}function _r(e,t,n){gr(n,{command:`addSource`,args:[e,t[e]]})}function vr(e,t,n){gr(t,{command:`removeSource`,args:[e]}),n[e]=!0}function yr(e,t,n,r){vr(e,n,r),_r(e,t,n)}function br(e,t,n){let r;for(r in e[n])if(Object.prototype.hasOwnProperty.call(e[n],r)&&r!==`data`&&!hr(e[n][r],t[n][r]))return!1;for(r in t[n])if(Object.prototype.hasOwnProperty.call(t[n],r)&&r!==`data`&&!hr(e[n][r],t[n][r]))return!1;return!0}function xr(e,t,n,r){e||={},t||={};let i;for(i in e)Object.prototype.hasOwnProperty.call(e,i)&&(Object.prototype.hasOwnProperty.call(t,i)||vr(i,n,r));for(i in t)Object.prototype.hasOwnProperty.call(t,i)&&(Object.prototype.hasOwnProperty.call(e,i)?hr(e[i],t[i])||(e[i].type===`geojson`&&t[i].type===`geojson`&&br(e,t,i)?gr(n,{command:`setGeoJSONSourceData`,args:[i,t[i].data]}):yr(i,t,n,r)):_r(i,t,n))}function Sr(e,t,n,r,i){gr(t,{command:i,args:[n,r,e[r]]})}function Cr(e,t,n,r,i){e||={},t||={};for(let a in e)Object.prototype.hasOwnProperty.call(e,a)&&(hr(e[a],t[a])||Sr(t,n,r,a,i));for(let a in t)Object.prototype.hasOwnProperty.call(t,a)&&!Object.prototype.hasOwnProperty.call(e,a)&&(hr(e[a],t[a])||Sr(t,n,r,a,i))}function wr(e){return e.id}function Tr(e,t){return e[t.id]=t,e}function Er(e,t,n){e||=[],t||=[];let r=e.map(wr),i=t.map(wr),a=e.reduce(Tr,{}),o=t.reduce(Tr,{}),s=r.slice(),c=Object.create(null),l,u,d,f,p;for(let e=0,t=0;e<r.length;e++)l=r[e],Object.prototype.hasOwnProperty.call(o,l)?t++:(gr(n,{command:`removeLayer`,args:[l]}),s.splice(s.indexOf(l,t),1));for(let e=0,t=0;e<i.length;e++)l=i[i.length-1-e],s[s.length-1-e]!==l&&(Object.prototype.hasOwnProperty.call(a,l)?(gr(n,{command:`removeLayer`,args:[l]}),s.splice(s.lastIndexOf(l,s.length-t),1)):t++,f=s[s.length-e],gr(n,{command:`addLayer`,args:[o[l],f]}),s.splice(s.length-e,0,l),c[l]=!0);for(let e=0;e<i.length;e++)if(l=i[e],u=a[l],d=o[l],!(c[l]||hr(u,d))){if(!hr(u.source,d.source)||!hr(u[`source-layer`],d[`source-layer`])||!hr(u.type,d.type))gr(n,{command:`removeLayer`,args:[l]}),f=s[s.lastIndexOf(l)+1],gr(n,{command:`addLayer`,args:[d,f]});else{for(p in Cr(u.layout,d.layout,n,l,`setLayoutProperty`),Cr(u.paint,d.paint,n,l,`setPaintProperty`),hr(u.filter,d.filter)||gr(n,{command:`setFilter`,args:[l,d.filter]}),hr(u.minzoom,d.minzoom)&&hr(u.maxzoom,d.maxzoom)||gr(n,{command:`setLayerZoomRange`,args:[l,d.minzoom,d.maxzoom]}),u)Object.prototype.hasOwnProperty.call(u,p)&&p!==`layout`&&p!==`paint`&&p!==`filter`&&p!==`metadata`&&p!==`minzoom`&&p!==`maxzoom`&&(p.indexOf(`paint.`)===0?Cr(u[p],d[p],n,l,`setPaintProperty`):hr(u[p],d[p])||gr(n,{command:`setLayerProperty`,args:[l,p,d[p]]}));for(p in d)Object.prototype.hasOwnProperty.call(d,p)&&!Object.prototype.hasOwnProperty.call(u,p)&&p!==`layout`&&p!==`paint`&&p!==`filter`&&p!==`metadata`&&p!==`minzoom`&&p!==`maxzoom`&&(p.indexOf(`paint.`)===0?Cr(u[p],d[p],n,l,`setPaintProperty`):hr(u[p],d[p])||gr(n,{command:`setLayerProperty`,args:[l,p,d[p]]}))}}}function Dr(e,t){if(!e)return[{command:`setStyle`,args:[t]}];let n=[];try{if(!hr(e.version,t.version))return[{command:`setStyle`,args:[t]}];hr(e.center,t.center)||n.push({command:`setCenter`,args:[t.center]}),hr(e.state,t.state)||n.push({command:`setGlobalState`,args:[t.state]}),hr(e.centerAltitude,t.centerAltitude)||n.push({command:`setCenterAltitude`,args:[t.centerAltitude]}),hr(e.zoom,t.zoom)||n.push({command:`setZoom`,args:[t.zoom]}),hr(e.bearing,t.bearing)||n.push({command:`setBearing`,args:[t.bearing]}),hr(e.pitch,t.pitch)||n.push({command:`setPitch`,args:[t.pitch]}),hr(e.roll,t.roll)||n.push({command:`setRoll`,args:[t.roll]}),hr(e.sprite,t.sprite)||n.push({command:`setSprite`,args:[t.sprite]}),hr(e.glyphs,t.glyphs)||n.push({command:`setGlyphs`,args:[t.glyphs]}),hr(e[`font-faces`],t[`font-faces`])||n.push({command:`setFontFaces`,args:[t[`font-faces`]]}),hr(e.transition,t.transition)||n.push({command:`setTransition`,args:[t.transition]}),hr(e.light,t.light)||n.push({command:`setLight`,args:[t.light]});let r=!hr(e.terrain,t.terrain);r&&!t.terrain&&n.push({command:`setTerrain`,args:[void 0]}),hr(e.sky,t.sky)||n.push({command:`setSky`,args:[t.sky]}),hr(e.projection,t.projection)||n.push({command:`setProjection`,args:[t.projection]});let i={},a=[];xr(e.sources,t.sources,a,i);let o=[];e.layers&&e.layers.forEach(e=>{`source`in e&&i[e.source]?n.push({command:`removeLayer`,args:[e.id]}):o.push(e)}),n=n.concat(a),Er(o,t.layers,n),r&&t.terrain&&n.push({command:`setTerrain`,args:[t.terrain]})}catch(e){console.warn(`Unable to compute style diff:`,e),n=[{command:`setStyle`,args:[t]}]}return n}var V=class{constructor(e,t,n,r,i=`error`){this.message=(e?`${e}: `:``)+n,r&&(this.identifier=r),this.severity=i,t!=null&&t.__line__&&(this.line=t.__line__)}},Or={kind:`null`},H={kind:`number`},U={kind:`string`},kr={kind:`boolean`},Ar={kind:`color`},jr={kind:`projectionDefinition`},Mr={kind:`object`},W={kind:`value`},Nr={kind:`error`},Pr={kind:`collator`},Fr={kind:`formatted`},Ir={kind:`padding`},Lr={kind:`colorArray`},Rr={kind:`numberArray`},zr={kind:`resolvedImage`},Br={kind:`variableAnchorOffsetCollection`};function Vr(e,t){return{kind:`array`,itemType:e,N:t}}function Hr(e){if(e.kind===`array`){let t=Hr(e.itemType);return typeof e.N==`number`?`array<${t}, ${e.N}>`:e.itemType.kind===`value`?`array`:`array<${t}>`}return e.kind}var Ur=[Or,H,U,kr,Ar,jr,Fr,Mr,Vr(W),Ir,Rr,Lr,zr,Br];function Wr(e,t){if(t.kind===`error`)return null;if(e.kind===`array`){if(t.kind===`array`&&(t.N===0&&t.itemType.kind===`value`||!Wr(e.itemType,t.itemType))&&(typeof e.N!=`number`||e.N===t.N))return null}else if(e.kind===t.kind)return null;else if(e.kind===`value`){for(let e of Ur)if(!Wr(e,t))return null}return`Expected ${Hr(e)} but found ${Hr(t)} instead.`}function Gr(e,t){return t.some(t=>t.kind===e.kind)}function Kr(e,t){return t.some(t=>t===`null`?e===null:t===`array`?Array.isArray(e):t===`object`?e&&!Array.isArray(e)&&typeof e==`object`:t===typeof e)}function qr(e,t){return e.kind===`array`&&t.kind===`array`?e.itemType.kind===t.itemType.kind&&typeof e.N==`number`:e.kind===t.kind}var Jr=.96422,Yr=.82521,Xr=4/29,Zr=6/29,Qr=3*Zr*Zr,$r=Math.PI/180,ei=180/Math.PI;function ti(e){return e%=360,e<0&&(e+=360),e}function ni([e,t,n,r]){e=ri(e),t=ri(t),n=ri(n);let i,a,o=ii((.2225045*e+.7168786*t+.0606169*n)/1);e===t&&t===n?i=a=o:(i=ii((.4360747*e+.3850649*t+.1430804*n)/Jr),a=ii((.0139322*e+.0971045*t+.7141733*n)/Yr));let s=116*o-16;return[s<0?0:s,500*(i-o),200*(o-a),r]}function ri(e){return e<=.04045?e/12.92:((e+.055)/1.055)**2.4}function ii(e){return e>.008856451679035631?e**(1/3):e/Qr+Xr}function ai([e,t,n,r]){let i=(e+16)/116,a=isNaN(t)?i:i+t/500,o=isNaN(n)?i:i-n/200;return i=1*si(i),a=Jr*si(a),o=Yr*si(o),[oi(3.1338561*a-1.6168667*i-.4906146*o),oi(-.9787684*a+1.9161415*i+.033454*o),oi(.0719453*a-.2289914*i+1.4052427*o),r]}function oi(e){return e=e<=.00304?12.92*e:1.055*e**(1/2.4)-.055,e<0?0:e>1?1:e}function si(e){return e>Zr?e*e*e:Qr*(e-Xr)}function ci(e){let[t,n,r,i]=ni(e),a=Math.sqrt(n*n+r*r);return[Math.round(a*1e4)?ti(Math.atan2(r,n)*ei):NaN,a,t,i]}function li([e,t,n,r]){return e=isNaN(e)?0:e*$r,ai([n,Math.cos(e)*t,Math.sin(e)*t,r])}function ui([e,t,n,r]){e=ti(e),t/=100,n/=100;function i(r){let i=(r+e/30)%12,a=t*Math.min(n,1-n);return n-a*Math.max(-1,Math.min(i-3,9-i,1))}return[i(0),i(8),i(4),r]}var di=Object.hasOwn||function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};function fi(e,t){return di(e,t)?e[t]:void 0}function pi(e){if(e=e.toLowerCase().trim(),e===`transparent`)return[0,0,0,0];let t=fi(vi,e);if(t){let[e,n,r]=t;return[e/255,n/255,r/255,1]}if(e.startsWith(`#`)&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(e)){let t=e.length<6?1:2,n=1;return[mi(e.slice(n,n+=t)),mi(e.slice(n,n+=t)),mi(e.slice(n,n+=t)),mi(e.slice(n,n+t)||`ff`)]}if(e.startsWith(`rgb`)){let t=e.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(t){let[e,n,r,i,a,o,s,c,l,u,d,f]=t,p=[i||` `,s||` `,u].join(``);if(p===` `||p===` /`||p===`,,`||p===`,,,`){let e=[r,o,l].join(``),t=e===`%%%`?100:e===``?255:0;if(t){let e=[gi(+n/t,0,1),gi(+a/t,0,1),gi(+c/t,0,1),d?hi(+d,f):1];if(_i(e))return e}}return}}let n=e.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(n){let[e,t,r,i,a,o,s,c,l]=n,u=[r||` `,a||` `,s].join(``);if(u===` `||u===` /`||u===`,,`||u===`,,,`){let e=[+t,gi(+i,0,100),gi(+o,0,100),c?hi(+c,l):1];if(_i(e))return ui(e)}}}function mi(e){return parseInt(e.padEnd(2,e),16)/255}function hi(e,t){return gi(t?e/100:e,0,1)}function gi(e,t,n){return Math.min(Math.max(t,e),n)}function _i(e){return!e.some(Number.isNaN)}var vi={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};function yi(e,t,n){return e+n*(t-e)}function bi(e,t,n){return e.map((e,r)=>yi(e,t[r],n))}function xi(e){return e===`rgb`||e===`hcl`||e===`lab`}var G=class e{constructor(e,t,n,r=1,i=!0){this.r=e,this.g=t,this.b=n,this.a=r,i||(this.r*=r,this.g*=r,this.b*=r,r||this.overwriteGetter(`rgb`,[e,t,n,r]))}static{this.black=new e(0,0,0,1)}static{this.white=new e(1,1,1,1)}static{this.transparent=new e(0,0,0,0)}static{this.red=new e(1,0,0,1)}static parse(t){if(t instanceof e)return t;if(typeof t!=`string`)return;let n=pi(t);if(n)return new e(...n,!1)}get rgb(){let{r:e,g:t,b:n,a:r}=this,i=r||1/0;return this.overwriteGetter(`rgb`,[e/i,t/i,n/i,r])}get hcl(){return this.overwriteGetter(`hcl`,ci(this.rgb))}get lab(){return this.overwriteGetter(`lab`,ni(this.rgb))}overwriteGetter(e,t){return Object.defineProperty(this,e,{value:t}),t}toString(){let[e,t,n,r]=this.rgb;return`rgba(${[e,t,n].map(e=>Math.round(e*255)).join(`,`)},${r})`}static interpolate(t,n,r,i=`rgb`){switch(i){case`rgb`:{let[i,a,o,s]=bi(t.rgb,n.rgb,r);return new e(i,a,o,s,!1)}case`hcl`:{let[i,a,o,s]=t.hcl,[c,l,u,d]=n.hcl,f,p;if(!isNaN(i)&&!isNaN(c)){let e=c-i;c>i&&e>180?e-=360:c<i&&i-c>180&&(e+=360),f=i+r*e}else isNaN(i)?isNaN(c)?f=NaN:(f=c,(o===1||o===0)&&(p=l)):(f=i,(u===1||u===0)&&(p=a));let[m,h,g,_]=li([f,p??yi(a,l,r),yi(o,u,r),yi(s,d,r)]);return new e(m,h,g,_,!1)}case`lab`:{let[i,a,o,s]=ai(bi(t.lab,n.lab,r));return new e(i,a,o,s,!1)}}}},Si=[`bottom`,`center`,`top`],Ci=class{constructor(e,t,n,r,i,a){this.text=e,this.image=t,this.scale=n,this.fontStack=r,this.textColor=i,this.verticalAlign=a}},wi=class e{constructor(e){this.sections=e}static fromString(t){return new e([new Ci(t,null,null,null,null,null)])}isEmpty(){return this.sections.length===0||!this.sections.some(e=>e.text.length!==0||e.image&&e.image.name.length!==0)}static factory(t){return t instanceof e?t:e.fromString(t)}toString(){return this.sections.length===0?``:this.sections.map(e=>e.text).join(``)}},Ti=class e{constructor(e){this.values=e.slice()}static parse(t){if(t instanceof e)return t;if(typeof t==`number`)return new e([t,t,t,t]);if(Array.isArray(t)&&!(t.length<1||t.length>4)){for(let e of t)if(typeof e!=`number`)return;switch(t.length){case 1:t=[t[0],t[0],t[0],t[0]];break;case 2:t=[t[0],t[1],t[0],t[1]];break;case 3:t=[t[0],t[1],t[2],t[1]]}return new e(t)}}toString(){return JSON.stringify(this.values)}static interpolate(t,n,r){return new e(bi(t.values,n.values,r))}},Ei=class e{constructor(e){this.values=e.slice()}static parse(t){if(t instanceof e)return t;if(typeof t==`number`)return new e([t]);if(Array.isArray(t)){for(let e of t)if(typeof e!=`number`)return;return new e(t)}}toString(){return JSON.stringify(this.values)}static interpolate(t,n,r){return new e(bi(t.values,n.values,r))}},Di=class e{constructor(e){this.values=e.slice()}static parse(t){if(t instanceof e)return t;if(typeof t==`string`){let n=G.parse(t);return n?new e([n]):void 0}if(!Array.isArray(t))return;let n=[];for(let e of t){if(typeof e!=`string`)return;let t=G.parse(e);if(!t)return;n.push(t)}return new e(n)}toString(){return JSON.stringify(this.values)}static interpolate(t,n,r,i=`rgb`){let a=[];if(t.values.length!=n.values.length)throw Error(`colorArray: Arrays have mismatched length (${t.values.length} vs. ${n.values.length}), cannot interpolate.`);for(let e=0;e<t.values.length;e++)a.push(G.interpolate(t.values[e],n.values[e],r,i));return new e(a)}},Oi=class extends Error{constructor(e,t){super(e),this.name=`RuntimeError`,this.path=t}toJSON(){return this.message}},ki=new Set([`center`,`left`,`right`,`top`,`bottom`,`top-left`,`top-right`,`bottom-left`,`bottom-right`]),Ai=class e{constructor(e){this.values=e.slice()}static parse(t){if(t instanceof e)return t;if(!(!Array.isArray(t)||t.length<1||t.length%2!=0)){for(let e=0;e<t.length;e+=2){let n=t[e],r=t[e+1];if(typeof n!=`string`||!ki.has(n)||!Array.isArray(r)||r.length!==2||typeof r[0]!=`number`||typeof r[1]!=`number`)return}return new e(t)}}toString(){return JSON.stringify(this.values)}static interpolate(t,n,r,i){let a=t.values,o=n.values;if(a.length!==o.length)throw new Oi(`Cannot interpolate values of different length. from: ${t.toString()}, to: ${n.toString()}`,i);let s=[];for(let e=0;e<a.length;e+=2){if(a[e]!==o[e])throw new Oi(`Cannot interpolate values containing mismatched anchors. from[${e}]: ${a[e]}, to[${e}]: ${o[e]}`,i);s.push(a[e]);let[t,n]=a[e+1],[c,l]=o[e+1];s.push([yi(t,c,r),yi(n,l,r)])}return new e(s)}},ji=class e{constructor(e){this.name=e.name,this.available=e.available}toString(){return this.name}static fromString(t){return t?new e({name:t,available:!1}):null}},Mi=class e{constructor(e,t,n){this.from=e,this.to=t,this.transition=n}toString(){return this.from===this.to&&this.transition===1?this.from:JSON.stringify([this.from,this.to,this.transition])}static interpolate(t,n,r){return new e(t,n,r)}static parse(t){if(t instanceof e)return t;if(Array.isArray(t)&&t.length===3&&typeof t[0]==`string`&&typeof t[1]==`string`&&typeof t[2]==`number`)return new e(t[0],t[1],t[2]);if(typeof t==`object`&&typeof t.from==`string`&&typeof t.to==`string`&&typeof t.transition==`number`)return new e(t.from,t.to,t.transition);if(typeof t==`string`)return new e(t,t,1)}},Ni=class{constructor(e,t,n){this.sensitivity=e?t?`variant`:`case`:t?`accent`:`base`,this.locale=n,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:`search`})}compare(e,t){return this.collator.compare(e,t)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}};function Pi(e,t,n,r){return typeof e==`number`&&e>=0&&e<=255&&typeof t==`number`&&t>=0&&t<=255&&typeof n==`number`&&n>=0&&n<=255?r===void 0||typeof r==`number`&&r>=0&&r<=1?null:`Invalid rgba value [${[e,t,n,r].join(`, `)}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof r==`number`?[e,t,n,r]:[e,t,n]).join(`, `)}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Fi(e){if(e===null||typeof e==`string`||typeof e==`boolean`||typeof e==`number`||e instanceof Mi||e instanceof G||e instanceof Ni||e instanceof wi||e instanceof Ti||e instanceof Ei||e instanceof Di||e instanceof Ai||e instanceof ji)return!0;if(Array.isArray(e)){for(let t of e)if(!Fi(t))return!1;return!0}if(typeof e==`object`){for(let t in e)if(!Fi(e[t]))return!1;return!0}return!1}function Ii(e){if(e===null)return Or;if(typeof e==`string`)return U;if(typeof e==`boolean`)return kr;if(typeof e==`number`)return H;if(e instanceof G)return Ar;if(e instanceof Mi)return jr;if(e instanceof Ni)return Pr;if(e instanceof wi)return Fr;if(e instanceof Ti)return Ir;if(e instanceof Ei)return Rr;if(e instanceof Di)return Lr;if(e instanceof Ai)return Br;if(e instanceof ji)return zr;if(Array.isArray(e)){let t=e.length,n;for(let t of e){let e=Ii(t);if(!n)n=e;else if(n===e)continue;else{n=W;break}}return Vr(n||W,t)}return Mr}function Li(e){let t=typeof e;return e===null?``:t===`string`||t===`number`||t===`boolean`?String(e):e instanceof G||e instanceof Mi||e instanceof wi||e instanceof Ti||e instanceof Ei||e instanceof Di||e instanceof Ai||e instanceof ji?e.toString():JSON.stringify(e)}var Ri=class e{constructor(e,t){this.type=e,this.value=t}static parse(t,n){if(t.length!==2)return n.error(`'literal' expression requires exactly one argument, but found ${t.length-1} instead.`);if(!Fi(t[1]))return n.error(`invalid value of type "${typeof t[1]}"`);let r=t[1],i=Ii(r),a=n.expectedType;return i.kind===`array`&&i.N===0&&a&&a.kind===`array`&&(typeof a.N!=`number`||a.N===0)&&(i=a),new e(i,r)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}},zi=[`Unknown`,`Point`,`LineString`,`Polygon`],Bi=class{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache=new Map,this.availableImages=null,this.canonical=null}id(){return this.feature&&`id`in this.feature?this.feature.id:null}geometryType(){return this.feature?typeof this.feature.type==`number`?zi[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&`geometry`in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(e){let t=this._parseColorCache.get(e);return t||(t=G.parse(e),this._parseColorCache.set(e,t)),t}};function Vi(e,t,n){let r=e.length-1,i=0,a=r,o=0,s,c;for(;i<=a;)if(o=Math.floor((i+a)/2),s=e[o],c=e[o+1],s<=t){if(o===r||t<c)return o;i=o+1}else if(s>t)a=o-1;else throw new Oi(`Input is not a number.`,n);return 0}var Hi=class e{constructor(e,t,n,r){this.type=e,this.input=t,this.key=r,this.labels=[],this.outputs=[];for(let[e,t]of n)this.labels.push(e),this.outputs.push(t)}static parse(t,n){if(t.length-1<4)return n.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return n.error(`Expected an even number of arguments.`);let r=n.parse(t[1],1,H);if(!r)return null;let i=[],a=null;n.expectedType&&n.expectedType.kind!==`value`&&(a=n.expectedType);for(let e=1;e<t.length;e+=2){let r=e===1?-1/0:t[e],o=t[e+1],s=e,c=e+1;if(typeof r!=`number`)return n.error(`Input/output pairs for "step" expressions must be defined using literal numeric values (not computed expressions) for the input values.`,s);if(i.length&&i[i.length-1][0]>=r)return n.error(`Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.`,s);let l=n.parse(o,c,a);if(!l)return null;a||=l.type,i.push([r,l])}return new e(a,r,i,n.key)}evaluate(e){let t=this.labels,n=this.outputs;if(t.length===1)return n[0].evaluate(e);let r=this.input.evaluate(e);if(r<=t[0])return n[0].evaluate(e);let i=t.length;return r>=t[i-1]?n[i-1].evaluate(e):n[Vi(t,r,this.key)].evaluate(e)}eachChild(e){e(this.input);for(let t of this.outputs)e(t)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}};function Ui(e,t,n,r){let i=3*e,a=3*(n-e)-i,o=1-i-a,s=3*t,c=3*(r-t)-s,l=1-s-c;return function(e,t=1e-6){if(e<=0)return 0;if(e>=1)return 1;let n=e;for(let r=0;r<8;r++){let r=((o*n+a)*n+i)*n-e;if(Math.abs(r)<t)return((l*n+c)*n+s)*n;let u=(3*o*n+2*a)*n+i;if(Math.abs(u)<1e-6)break;n-=r/u}let r=0,u=1;n=e;for(let s=0;s<20;s++){let s=((o*n+a)*n+i)*n;if(Math.abs(s-e)<t)break;e>s?r=n:u=n,n=(r+u)*.5}return((l*n+c)*n+s)*n}}var Wi=class e{constructor(e,t,n,r,i,a){this.type=e,this.operator=t,this.interpolation=n,this.input=r,this.key=a,this.labels=[],this.outputs=[];for(let[e,t]of i)this.labels.push(e),this.outputs.push(t)}static interpolationFactor(e,t,n,r){let i=0;if(e.name===`exponential`)i=Gi(t,e.base,n,r);else if(e.name===`linear`)i=Gi(t,1,n,r);else if(e.name===`cubic-bezier`){let a=e.controlPoints;i=Ui(a[0],a[1],a[2],a[3])(Gi(t,1,n,r))}return i}static parse(t,n){let[r,i,a,...o]=t;if(!Array.isArray(i)||i.length===0)return n.error(`Expected an interpolation type expression.`,1);if(i[0]===`linear`)i={name:`linear`};else if(i[0]===`exponential`){let e=i[1];if(typeof e!=`number`)return n.error(`Exponential interpolation requires a numeric base.`,1,1);i={name:`exponential`,base:e}}else if(i[0]===`cubic-bezier`){let e=i.slice(1);if(e.length!==4||e.some(e=>typeof e!=`number`||e<0||e>1))return n.error(`Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.`,1);i={name:`cubic-bezier`,controlPoints:e}}else return n.error(`Unknown interpolation type ${String(i[0])}`,1,0);if(t.length-1<4)return n.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return n.error(`Expected an even number of arguments.`);if(a=n.parse(a,2,H),!a)return null;let s=[],c=null;(r===`interpolate-hcl`||r===`interpolate-lab`)&&n.expectedType!=Lr?c=Ar:n.expectedType&&n.expectedType.kind!==`value`&&(c=n.expectedType);for(let e=0;e<o.length;e+=2){let t=o[e],r=o[e+1],i=e+3,a=e+4;if(typeof t!=`number`)return n.error(`Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not computed expressions) for the input values.`,i);if(s.length&&s[s.length-1][0]>=t)return n.error(`Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.`,i);let l=n.parse(r,a,c);if(!l)return null;c||=l.type,s.push([t,l])}return!qr(c,H)&&!qr(c,jr)&&!qr(c,Ar)&&!qr(c,Ir)&&!qr(c,Rr)&&!qr(c,Lr)&&!qr(c,Br)&&!qr(c,Vr(H))?n.error(`Type ${Hr(c)} is not interpolatable.`):new e(c,r,i,a,s,n.key)}evaluate(t){let n=this.labels,r=this.outputs;if(n.length===1)return r[0].evaluate(t);let i=this.input.evaluate(t);if(i<=n[0])return r[0].evaluate(t);let a=n.length;if(i>=n[a-1])return r[a-1].evaluate(t);let o=Vi(n,i,this.key),s=n[o],c=n[o+1],l=e.interpolationFactor(this.interpolation,i,s,c),u=r[o].evaluate(t),d=r[o+1].evaluate(t);switch(this.operator){case`interpolate`:switch(this.type.kind){case`number`:return yi(u,d,l);case`color`:return G.interpolate(u,d,l);case`padding`:return Ti.interpolate(u,d,l);case`colorArray`:return Di.interpolate(u,d,l);case`numberArray`:return Ei.interpolate(u,d,l);case`variableAnchorOffsetCollection`:return Ai.interpolate(u,d,l,this.key);case`array`:return bi(u,d,l);case`projectionDefinition`:return Mi.interpolate(u,d,l)}case`interpolate-hcl`:switch(this.type.kind){case`color`:return G.interpolate(u,d,l,`hcl`);case`colorArray`:return Di.interpolate(u,d,l,`hcl`)}case`interpolate-lab`:switch(this.type.kind){case`color`:return G.interpolate(u,d,l,`lab`);case`colorArray`:return Di.interpolate(u,d,l,`lab`)}}}eachChild(e){e(this.input);for(let t of this.outputs)e(t)}outputDefined(){return this.outputs.every(e=>e.outputDefined())}};function Gi(e,t,n,r){let i=r-n,a=e-n;return i===0?0:t===1?a/i:(t**+a-1)/(t**+i-1)}var Ki={color:G.interpolate,number:yi,padding:Ti.interpolate,numberArray:Ei.interpolate,colorArray:Di.interpolate,variableAnchorOffsetCollection:Ai.interpolate,array:bi},qi=class e{constructor(e){this.type=Fr,this.sections=e}static parse(t,n){if(t.length<2)return n.error(`Expected at least one argument.`);let r=t[1];if(!Array.isArray(r)&&typeof r==`object`)return n.error(`First argument must be an image or text section.`);let i=[],a=!1;for(let e=1;e<=t.length-1;++e){let r=t[e];if(a&&typeof r==`object`&&!Array.isArray(r)){a=!1;let e=null;if(r[`font-scale`]&&(e=n.parse(r[`font-scale`],1,H),!e))return null;let t=null;if(r[`text-font`]&&(t=n.parse(r[`text-font`],1,Vr(U)),!t))return null;let o=null;if(r[`text-color`]&&(o=n.parse(r[`text-color`],1,Ar),!o))return null;let s=null;if(r[`vertical-align`]){if(typeof r[`vertical-align`]==`string`&&!Si.includes(r[`vertical-align`]))return n.error(`'vertical-align' must be one of: 'bottom', 'center', 'top' but found '${r[`vertical-align`]}' instead.`);if(s=n.parse(r[`vertical-align`],1,U),!s)return null}let c=i[i.length-1];c.scale=e,c.font=t,c.textColor=o,c.verticalAlign=s}else{let r=n.parse(t[e],1,W);if(!r)return null;let o=r.type.kind;if(o!==`string`&&o!==`value`&&o!==`null`&&o!==`resolvedImage`)return n.error(`Formatted text type must be 'string', 'value', 'image' or 'null'.`);a=!0,i.push({content:r,scale:null,font:null,textColor:null,verticalAlign:null})}}return new e(i)}evaluate(e){return new wi(this.sections.map(t=>{let n=t.content.evaluate(e);return Ii(n)===zr?new Ci(``,n,null,null,null,t.verticalAlign?t.verticalAlign.evaluate(e):null):new Ci(Li(n),null,t.scale?t.scale.evaluate(e):null,t.font?t.font.evaluate(e).join(`,`):null,t.textColor?t.textColor.evaluate(e):null,t.verticalAlign?t.verticalAlign.evaluate(e):null)}))}eachChild(e){for(let t of this.sections)e(t.content),t.scale&&e(t.scale),t.font&&e(t.font),t.textColor&&e(t.textColor),t.verticalAlign&&e(t.verticalAlign)}outputDefined(){return!1}};function Ji(e,t,n=0,r=e.length-1,i=Xi){for(;r>n;){if(r-n>600){let a=r-n+1,o=t-n+1,s=Math.log(a),c=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*c*(a-c)/a)*(o-a/2<0?-1:1);Ji(e,t,Math.max(n,Math.floor(t-o*c/a+l)),Math.min(r,Math.floor(t+(a-o)*c/a+l)),i)}let a=e[t],o=n,s=r;for(Yi(e,n,t),i(e[r],a)>0&&Yi(e,n,r);o<s;){for(Yi(e,o,s),o++,s--;i(e[o],a)<0;)o++;for(;i(e[s],a)>0;)s--}i(e[n],a)===0?Yi(e,n,s):(s++,Yi(e,s,r)),s<=t&&(n=s+1),t<=s&&(r=s-1)}}function Yi(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function Xi(e,t){return e<t?-1:+(e>t)}function Zi(e,t){if(e.length<=1)return[e];let n=[],r,i;for(let t of e){let e=$i(t);e!==0&&(t.area=Math.abs(e),i===void 0&&(i=e<0),i===e<0?(r&&n.push(r),r=[t]):r.push(t))}if(r&&n.push(r),t>1)for(let e=0;e<n.length;e++)n[e].length<=t||(Ji(n[e],t,1,n[e].length-1,Qi),n[e]=n[e].slice(0,t));return n}function Qi(e,t){return t.area-e.area}function $i(e){let t=0;for(let n=0,r=e.length,i=r-1,a,o;n<r;i=n++)a=e[n],o=e[i],t+=(o.x-a.x)*(a.y+o.y);return t}var ea={string:U,number:H,boolean:kr,object:Mr},ta=class e{constructor(e,t,n){this.type=e,this.args=t,this.key=n}static parse(t,n){if(t.length<2)return n.error(`Expected at least one argument.`);let r=1,i,a=t[0];if(a===`array`){let e;if(t.length>2){let i=t[1];if(typeof i!=`string`||!(i in ea)||i===`object`)return n.error(`The item type argument of "array" must be one of string, number, boolean`,1);e=ea[i],r++}else e=W;let a;if(t.length>3){if(t[2]!==null&&(typeof t[2]!=`number`||t[2]<0||t[2]!==Math.floor(t[2])))return n.error(`The length argument to "array" must be a positive integer literal`,2);a=t[2],r++}i=Vr(e,a)}else{if(!ea[a])throw Error(`Types doesn't contain name = ${a}`);i=ea[a]}let o=[];for(;r<t.length;r++){let e=n.parse(t[r],r,W);if(!e)return null;o.push(e)}return new e(i,o,n.key)}evaluate(e){for(let t=0;t<this.args.length;t++){let n=this.args[t].evaluate(e);if(!Wr(this.type,Ii(n)))return n;if(t===this.args.length-1)throw new Oi(`Expected value to be of type ${Hr(this.type)}, but found ${Hr(Ii(n))} instead.`,this.key)}throw Error()}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}},na={"to-boolean":kr,"to-color":Ar,"to-number":H,"to-string":U},ra=class e{constructor(e,t,n){this.type=e,this.args=t,this.key=n}static parse(t,n){if(t.length<2)return n.error(`Expected at least one argument.`);let r=t[0];if(!na[r])throw Error(`Can't parse ${r} as it is not part of the known types`);if((r===`to-boolean`||r===`to-string`)&&t.length!==2)return n.error(`Expected one argument.`);let i=na[r],a=[];for(let e=1;e<t.length;e++){let r=n.parse(t[e],e,W);if(!r)return null;a.push(r)}return new e(i,a,n.key)}evaluate(e){switch(this.type.kind){case`boolean`:return!!this.args[0].evaluate(e);case`color`:{let t,n;for(let r of this.args){if(t=r.evaluate(e),n=null,t instanceof G)return t;if(typeof t==`string`){let n=e.parseColor(t);if(n)return n}else if(Array.isArray(t)&&(n=t.length<3||t.length>4?`Invalid rgba value ${JSON.stringify(t)}: expected an array containing either three or four numeric values.`:Pi(t[0],t[1],t[2],t[3]),!n))return new G(t[0]/255,t[1]/255,t[2]/255,t[3])}throw new Oi(n||`Could not parse color from value '${typeof t==`string`?t:JSON.stringify(t)}'`,this.key)}case`padding`:{let t;for(let n of this.args){t=n.evaluate(e);let r=Ti.parse(t);if(r)return r}throw new Oi(`Could not parse padding from value '${typeof t==`string`?t:JSON.stringify(t)}'`,this.key)}case`numberArray`:{let t;for(let n of this.args){t=n.evaluate(e);let r=Ei.parse(t);if(r)return r}throw new Oi(`Could not parse numberArray from value '${typeof t==`string`?t:JSON.stringify(t)}'`,this.key)}case`colorArray`:{let t;for(let n of this.args){t=n.evaluate(e);let r=Di.parse(t);if(r)return r}throw new Oi(`Could not parse colorArray from value '${typeof t==`string`?t:JSON.stringify(t)}'`,this.key)}case`variableAnchorOffsetCollection`:{let t;for(let n of this.args){t=n.evaluate(e);let r=Ai.parse(t);if(r)return r}throw new Oi(`Could not parse variableAnchorOffsetCollection from value '${typeof t==`string`?t:JSON.stringify(t)}'`,this.key)}case`number`:{let t=null;for(let n of this.args){if(t=n.evaluate(e),t===null)return 0;let r=Number(t);if(!isNaN(r))return r}throw new Oi(`Could not convert ${JSON.stringify(t)} to number.`,this.key)}case`formatted`:return wi.fromString(Li(this.args[0].evaluate(e)));case`resolvedImage`:return ji.fromString(Li(this.args[0].evaluate(e)));case`projectionDefinition`:{let t=this.args[0].evaluate(e);if(Mi.parse(t))return t;throw new Oi(`Could not parse projectionDefinition from value '${typeof t==`string`?t:JSON.stringify(t)}'`,this.key)}default:return Li(this.args[0].evaluate(e))}}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}},ia=class e{constructor(e,t){this.type=t.type,this.bindings=[].concat(e),this.result=t}evaluate(e){return this.result.evaluate(e)}eachChild(e){for(let t of this.bindings)e(t[1]);e(this.result)}static parse(t,n){if(t.length<4)return n.error(`Expected at least 3 arguments, but found ${t.length-1} instead.`);let r=[];for(let e=1;e<t.length-1;e+=2){let i=t[e];if(typeof i!=`string`)return n.error(`Expected string, but found ${typeof i} instead.`,e);if(/[^a-zA-Z0-9_]/.test(i))return n.error(`Variable names must contain only alphanumeric characters or '_'.`,e);let a=n.parse(t[e+1],e+1);if(!a)return null;r.push([i,a])}let i=n.parse(t[t.length-1],t.length-1,n.expectedType,r);return i?new e(r,i):null}outputDefined(){return this.result.outputDefined()}},aa=class e{constructor(e,t){this.type=t.type,this.name=e,this.boundExpression=t}static parse(t,n){if(t.length!==2||typeof t[1]!=`string`)return n.error(`'var' expression requires exactly one string literal argument.`);let r=t[1];return n.scope.has(r)?new e(r,n.scope.get(r)):n.error(`Unknown variable "${r}". Make sure "${r}" has been bound in an enclosing "let" expression before using it.`,1)}evaluate(e){return this.boundExpression.evaluate(e)}eachChild(){}outputDefined(){return!1}},oa=class e{constructor(e,t,n,r){this.type=e,this.index=t,this.input=n,this.key=r}static parse(t,n){if(t.length!==3)return n.error(`Expected 2 arguments, but found ${t.length-1} instead.`);let r=n.parse(t[1],1,H),i=n.parse(t[2],2,Vr(n.expectedType||W));if(!r||!i)return null;let a=i.type;return new e(a.itemType,r,i,n.key)}evaluate(e){let t=this.index.evaluate(e),n=this.input.evaluate(e);if(t<0)throw new Oi(`Array index out of bounds: ${t} < 0.`,this.key);if(t>=n.length)throw new Oi(`Array index out of bounds: ${t} > ${n.length-1}.`,this.key);if(t!==Math.floor(t))throw new Oi(`Array index must be an integer, but found ${t} instead.`,this.key);return n[t]}eachChild(e){e(this.index),e(this.input)}outputDefined(){return!1}},sa=class e{constructor(e,t,n){this.needle=e,this.haystack=t,this.key=n,this.type=kr}static parse(t,n){if(t.length!==3)return n.error(`Expected 2 arguments, but found ${t.length-1} instead.`);let r=n.parse(t[1],1,W),i=n.parse(t[2],2,W);return!r||!i?null:Gr(r.type,[kr,U,H,Or,W])?new e(r,i,n.key):n.error(`Expected first argument to be of type boolean, string, number or null, but found ${Hr(r.type)} instead`)}evaluate(e){let t=this.needle.evaluate(e),n=this.haystack.evaluate(e);if(!n)return!1;if(!Kr(t,[`boolean`,`string`,`number`,`null`]))throw new Oi(`Expected first argument to be of type boolean, string, number or null, but found ${Hr(Ii(t))} instead.`,this.key);if(!Kr(n,[`string`,`array`]))throw new Oi(`Expected second argument to be of type array or string, but found ${Hr(Ii(n))} instead.`,this.key);return n.indexOf(t)>=0}eachChild(e){e(this.needle),e(this.haystack)}outputDefined(){return!0}},ca=class e{constructor(e,t,n,r){this.needle=e,this.haystack=t,this.key=n,this.fromIndex=r,this.type=H}static parse(t,n){if(t.length<=2||t.length>=5)return n.error(`Expected 2 or 3 arguments, but found ${t.length-1} instead.`);let r=n.parse(t[1],1,W),i=n.parse(t[2],2,W);if(!r||!i)return null;if(!Gr(r.type,[kr,U,H,Or,W]))return n.error(`Expected first argument to be of type boolean, string, number or null, but found ${Hr(r.type)} instead`);if(t.length===4){let a=n.parse(t[3],3,H);return a?new e(r,i,n.key,a):null}return new e(r,i,n.key)}evaluate(e){let t=this.needle.evaluate(e),n=this.haystack.evaluate(e);if(!Kr(t,[`boolean`,`string`,`number`,`null`]))throw new Oi(`Expected first argument to be of type boolean, string, number or null, but found ${Hr(Ii(t))} instead.`,this.key);let r;if(this.fromIndex&&(r=this.fromIndex.evaluate(e)),Kr(n,[`string`])){let e=n.indexOf(t,r);return e===-1?-1:[...n.slice(0,e)].length}if(Kr(n,[`array`]))return n.indexOf(t,r);throw new Oi(`Expected second argument to be of type array or string, but found ${Hr(Ii(n))} instead.`,this.key)}eachChild(e){e(this.needle),e(this.haystack),this.fromIndex&&e(this.fromIndex)}outputDefined(){return!1}},la=class e{constructor(e,t,n,r,i,a){this.inputType=e,this.type=t,this.input=n,this.cases=r,this.outputs=i,this.otherwise=a}static parse(t,n){if(t.length<5)return n.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if(t.length%2!=1)return n.error(`Expected an even number of arguments.`);let r,i;n.expectedType&&n.expectedType.kind!==`value`&&(i=n.expectedType);let a={},o=[];for(let e=2;e<t.length-1;e+=2){let s=t[e],c=t[e+1];Array.isArray(s)||(s=[s]);let l=n.concat(e);if(s.length===0)return l.error(`Expected at least one branch label.`);for(let e of s){if(typeof e!=`number`&&typeof e!=`string`)return l.error(`Branch labels must be numbers or strings.`);if(typeof e==`number`&&Math.abs(e)>2**53-1)return l.error(`Branch labels must be integers no larger than ${2**53-1}.`);if(typeof e==`number`&&Math.floor(e)!==e)return l.error(`Numeric branch labels must be integer values.`);if(!r)r=Ii(e);else if(l.checkSubtype(r,Ii(e)))return null;if(a[String(e)]!==void 0)return l.error(`Branch labels must be unique.`);a[String(e)]=o.length}let u=n.parse(c,e,i);if(!u)return null;i||=u.type,o.push(u)}let s=n.parse(t[1],1,W);if(!s)return null;let c=n.parse(t[t.length-1],t.length-1,i);return!c||s.type.kind!==`value`&&n.concat(1).checkSubtype(r,s.type)?null:new e(r,i,s,a,o,c)}evaluate(e){let t=this.input.evaluate(e);return(Ii(t)===this.inputType&&this.outputs[this.cases[t]]||this.otherwise).evaluate(e)}eachChild(e){e(this.input),this.outputs.forEach(e),e(this.otherwise)}outputDefined(){return this.outputs.every(e=>e.outputDefined())&&this.otherwise.outputDefined()}},ua=class e{constructor(e,t,n){this.type=e,this.branches=t,this.otherwise=n}static parse(t,n){if(t.length<4)return n.error(`Expected at least 3 arguments, but found only ${t.length-1}.`);if(t.length%2!=0)return n.error(`Expected an odd number of arguments.`);let r;n.expectedType&&n.expectedType.kind!==`value`&&(r=n.expectedType);let i=[];for(let e=1;e<t.length-1;e+=2){let a=n.parse(t[e],e,kr);if(!a)return null;let o=n.parse(t[e+1],e+1,r);if(!o)return null;i.push([a,o]),r||=o.type}let a=n.parse(t[t.length-1],t.length-1,r);if(!a)return null;if(!r)throw Error(`Can't infer output type`);return new e(r,i,a)}evaluate(e){for(let[t,n]of this.branches)if(t.evaluate(e))return n.evaluate(e);return this.otherwise.evaluate(e)}eachChild(e){for(let[t,n]of this.branches)e(t),e(n);e(this.otherwise)}outputDefined(){return this.branches.every(([e,t])=>t.outputDefined())&&this.otherwise.outputDefined()}},da=class e{constructor(e,t,n,r,i){this.type=e,this.input=t,this.beginIndex=n,this.key=r,this.endIndex=i}static parse(t,n){if(t.length<=2||t.length>=5)return n.error(`Expected 2 or 3 arguments, but found ${t.length-1} instead.`);let r=n.parse(t[1],1,W),i=n.parse(t[2],2,H);if(!r||!i)return null;if(!Gr(r.type,[Vr(W),U,W]))return n.error(`Expected first argument to be of type array or string, but found ${Hr(r.type)} instead`);if(t.length===4){let a=n.parse(t[3],3,H);return a?new e(r.type,r,i,n.key,a):null}return new e(r.type,r,i,n.key)}evaluate(e){let t=this.input.evaluate(e),n=this.beginIndex.evaluate(e),r;if(this.endIndex&&(r=this.endIndex.evaluate(e)),Kr(t,[`string`]))return[...t].slice(n,r).join(``);if(Kr(t,[`array`]))return t.slice(n,r);throw new Oi(`Expected first argument to be of type array or string, but found ${Hr(Ii(t))} instead.`,this.key)}eachChild(e){e(this.input),e(this.beginIndex),this.endIndex&&e(this.endIndex)}outputDefined(){return!1}},fa=class e{constructor(e,t){this.type=e,this.args=t}static parse(t,n){if(t.length<2)return n.error(`Expected at least one argument.`);let r=null,i=n.expectedType;i&&i.kind!==`value`&&(r=i);let a=[];for(let e of t.slice(1)){let t=n.parse(e,1+a.length,r,void 0,{typeAnnotation:`omit`});if(!t)return null;r||=t.type,a.push(t)}if(!r)throw Error(`No output type`);return i&&a.some(e=>Wr(i,e.type))?new e(W,a):new e(r,a)}evaluate(e){let t=null,n=0,r;for(let i of this.args)if(n++,t=i.evaluate(e),t&&t instanceof ji&&!t.available&&(r||=t.name,t=null,n===this.args.length&&(t=r)),t!==null)break;return t}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every(e=>e.outputDefined())}};function pa(e,t){return e===`==`||e===`!=`?t.kind===`boolean`||t.kind===`string`||t.kind===`number`||t.kind===`null`||t.kind===`value`:t.kind===`string`||t.kind===`number`||t.kind===`value`}function ma(e,t,n){return t===n}function ha(e,t,n){return t!==n}function ga(e,t,n){return t<n}function _a(e,t,n){return t>n}function va(e,t,n){return t<=n}function ya(e,t,n){return t>=n}function ba(e,t,n,r){return r.compare(t,n)===0}function xa(e,t,n,r){return!ba(e,t,n,r)}function Sa(e,t,n,r){return r.compare(t,n)<0}function Ca(e,t,n,r){return r.compare(t,n)>0}function wa(e,t,n,r){return r.compare(t,n)<=0}function Ta(e,t,n,r){return r.compare(t,n)>=0}function Ea(e,t,n){let r=e!==`==`&&e!==`!=`;return class i{constructor(e,t,n,r){this.lhs=e,this.rhs=t,this.key=n,this.collator=r,this.type=kr,this.hasUntypedArgument=e.type.kind===`value`||t.type.kind===`value`}static parse(e,t){if(e.length!==3&&e.length!==4)return t.error(`Expected two or three arguments.`);let n=e[0],a=t.parse(e[1],1,W);if(!a)return null;if(!pa(n,a.type))return t.concat(1).error(`"${n}" comparisons are not supported for type '${Hr(a.type)}'.`);let o=t.parse(e[2],2,W);if(!o)return null;if(!pa(n,o.type))return t.concat(2).error(`"${n}" comparisons are not supported for type '${Hr(o.type)}'.`);if(a.type.kind!==o.type.kind&&a.type.kind!==`value`&&o.type.kind!==`value`)return t.error(`Cannot compare types '${Hr(a.type)}' and '${Hr(o.type)}'.`);r&&(a.type.kind===`value`&&o.type.kind!==`value`?a=new ta(o.type,[a],t.key):a.type.kind!==`value`&&o.type.kind===`value`&&(o=new ta(a.type,[o],t.key)));let s=null;if(e.length===4){if(a.type.kind!==`string`&&o.type.kind!==`string`&&a.type.kind!==`value`&&o.type.kind!==`value`)return t.error(`Cannot use collator to compare non-string types.`);if(s=t.parse(e[3],3,Pr),!s)return null}return new i(a,o,t.key,s)}evaluate(i){let a=this.lhs.evaluate(i),o=this.rhs.evaluate(i);if(r&&this.hasUntypedArgument){let t=Ii(a),n=Ii(o);if(t.kind!==n.kind||t.kind!==`string`&&t.kind!==`number`)throw new Oi(`Expected arguments for "${e}" to be (string, string) or (number, number), but found (${t.kind}, ${n.kind}) instead.`,this.key)}if(this.collator&&!r&&this.hasUntypedArgument){let e=Ii(a),n=Ii(o);if(e.kind!==`string`||n.kind!==`string`)return t(i,a,o)}return this.collator?n(i,a,o,this.collator.evaluate(i)):t(i,a,o)}eachChild(e){e(this.lhs),e(this.rhs),this.collator&&e(this.collator)}outputDefined(){return!0}}}var Da=Ea(`==`,ma,ba),Oa=Ea(`!=`,ha,xa),ka=Ea(`<`,ga,Sa),Aa=Ea(`>`,_a,Ca),ja=Ea(`<=`,va,wa),Ma=Ea(`>=`,ya,Ta),Na=class e{constructor(e,t,n){this.type=Pr,this.locale=n,this.caseSensitive=e,this.diacriticSensitive=t}static parse(t,n){if(t.length!==2)return n.error(`Expected one argument.`);let r=t[1];if(typeof r!=`object`||Array.isArray(r))return n.error(`Collator options argument must be an object.`);let i=n.parse(r[`case-sensitive`]!==void 0&&r[`case-sensitive`],1,kr);if(!i)return null;let a=n.parse(r[`diacritic-sensitive`]!==void 0&&r[`diacritic-sensitive`],1,kr);if(!a)return null;let o=null;return r.locale&&(o=n.parse(r.locale,1,U),!o)?null:new e(i,a,o)}evaluate(e){return new Ni(this.caseSensitive.evaluate(e),this.diacriticSensitive.evaluate(e),this.locale?this.locale.evaluate(e):null)}eachChild(e){e(this.caseSensitive),e(this.diacriticSensitive),this.locale&&e(this.locale)}outputDefined(){return!1}},Pa=class e{constructor(e,t,n,r,i,a){this.type=U,this.number=e,this.locale=t,this.currency=n,this.unit=r,this.minFractionDigits=i,this.maxFractionDigits=a}static parse(t,n){if(t.length!==3)return n.error(`Expected two arguments.`);let r=n.parse(t[1],1,H);if(!r)return null;let i=t[2];if(typeof i!=`object`||Array.isArray(i))return n.error(`NumberFormat options argument must be an object.`);let a=null;if(i.locale&&(a=n.parse(i.locale,1,U),!a))return null;let o=null;if(i.currency&&(o=n.parse(i.currency,1,U),!o))return null;let s=null;if(i.unit&&(s=n.parse(i.unit,1,U),!s))return null;if(o&&s)return n.error("NumberFormat options `currency` and `unit` are mutually exclusive");let c=null;if(i[`min-fraction-digits`]&&(c=n.parse(i[`min-fraction-digits`],1,H),!c))return null;let l=null;return i[`max-fraction-digits`]&&(l=n.parse(i[`max-fraction-digits`],1,H),!l)?null:new e(r,a,o,s,c,l)}evaluate(e){return new Intl.NumberFormat(this.locale?this.locale.evaluate(e):[],{style:this.currency?`currency`:this.unit?`unit`:`decimal`,currency:this.currency?this.currency.evaluate(e):void 0,unit:this.unit?this.unit.evaluate(e):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(e):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(e):void 0}).format(this.number.evaluate(e))}eachChild(e){e(this.number),this.locale&&e(this.locale),this.currency&&e(this.currency),this.unit&&e(this.unit),this.minFractionDigits&&e(this.minFractionDigits),this.maxFractionDigits&&e(this.maxFractionDigits)}outputDefined(){return!1}},Fa=class e{constructor(e){this.type=zr,this.input=e}static parse(t,n){if(t.length!==2)return n.error(`Expected two arguments.`);let r=n.parse(t[1],1,U);return r?new e(r):n.error(`No image name provided.`)}evaluate(e){let t=this.input.evaluate(e),n=ji.fromString(t);return n&&e.availableImages&&(n.available=e.availableImages.indexOf(t)>-1),n}eachChild(e){e(this.input)}outputDefined(){return!1}},Ia=class e{constructor(e,t){this.input=e,this.key=t,this.type=H}static parse(t,n){if(t.length!==2)return n.error(`Expected 1 argument, but found ${t.length-1} instead.`);let r=n.parse(t[1],1);return r?r.type.kind!==`array`&&r.type.kind!==`string`&&r.type.kind!==`value`?n.error(`Expected argument of type string or array, but found ${Hr(r.type)} instead.`):new e(r,n.key):null}evaluate(e){let t=this.input.evaluate(e);if(typeof t==`string`)return[...t].length;if(Array.isArray(t))return t.length;throw new Oi(`Expected value to be of type string or array, but found ${Hr(Ii(t))} instead.`,this.key)}eachChild(e){e(this.input)}outputDefined(){return!1}},La=8192;function Ra(e,t){let n=Ba(e[0]),r=Ha(e[1]),i=2**t.z;return[Math.round(n*i*La),Math.round(r*i*La)]}function za(e,t){let n=2**t.z,r=(e[0]/La+t.x)/n,i=(e[1]/La+t.y)/n;return[Va(r),Ua(i)]}function Ba(e){return(180+e)/360}function Va(e){return e*360-180}function Ha(e){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+e*Math.PI/360)))/360}function Ua(e){return 360/Math.PI*Math.atan(Math.exp((180-e*360)*Math.PI/180))-90}function Wa(e,t){e[0]=Math.min(e[0],t[0]),e[1]=Math.min(e[1],t[1]),e[2]=Math.max(e[2],t[0]),e[3]=Math.max(e[3],t[1])}function Ga(e,t){return!(e[0]<=t[0]||e[2]>=t[2]||e[1]<=t[1]||e[3]>=t[3])}function Ka(e,t,n){return t[1]>e[1]!=n[1]>e[1]&&e[0]<(n[0]-t[0])*(e[1]-t[1])/(n[1]-t[1])+t[0]}function qa(e,t,n){let r=e[0]-t[0],i=e[1]-t[1],a=e[0]-n[0],o=e[1]-n[1];return r*o-a*i===0&&r*a<=0&&i*o<=0}function Ja(e,t,n,r){let i=[t[0]-e[0],t[1]-e[1]];return eo([r[0]-n[0],r[1]-n[1]],i)!==0&&!!(to(e,t,n,r)&&to(n,r,e,t))}function Ya(e,t,n){for(let r of n)for(let n=0;n<r.length-1;++n)if(Ja(e,t,r[n],r[n+1]))return!0;return!1}function Xa(e,t,n=!1){let r=!1;for(let i of t)for(let t=0;t<i.length-1;t++){if(qa(e,i[t],i[t+1]))return n;Ka(e,i[t],i[t+1])&&(r=!r)}return r}function Za(e,t){for(let n of t)if(Xa(e,n))return!0;return!1}function Qa(e,t){for(let n of e)if(!Xa(n,t))return!1;for(let n=0;n<e.length-1;++n)if(Ya(e[n],e[n+1],t))return!1;return!0}function $a(e,t){for(let n of t)if(Qa(e,n))return!0;return!1}function eo(e,t){return e[0]*t[1]-e[1]*t[0]}function to(e,t,n,r){let i=e[0]-n[0],a=e[1]-n[1],o=t[0]-n[0],s=t[1]-n[1],c=r[0]-n[0],l=r[1]-n[1],u=i*l-c*a,d=o*l-c*s;return u>0&&d<0||u<0&&d>0}function no(e,t,n){let r=[];for(let i=0;i<e.length;i++){let a=[];for(let r=0;r<e[i].length;r++){let o=Ra(e[i][r],n);Wa(t,o),a.push(o)}r.push(a)}return r}function ro(e,t,n){let r=[];for(let i=0;i<e.length;i++){let a=no(e[i],t,n);r.push(a)}return r}function io(e,t,n,r){if(e[0]<n[0]||e[0]>n[2]){let t=r*.5,i=e[0]-n[0]>t?-r:n[0]-e[0]>t?r:0;i===0&&(i=e[0]-n[2]>t?-r:n[2]-e[0]>t?r:0),e[0]+=i}Wa(t,e)}function ao(e){e[0]=e[1]=1/0,e[2]=e[3]=-1/0}function oo(e,t,n,r){let i=2**r.z*La,a=[r.x*La,r.y*La],o=[];for(let r of e)for(let e of r){let r=[e.x+a[0],e.y+a[1]];io(r,t,n,i),o.push(r)}return o}function so(e,t,n,r){let i=2**r.z*La,a=[r.x*La,r.y*La],o=[];for(let n of e){let e=[];for(let r of n){let n=[r.x+a[0],r.y+a[1]];Wa(t,n),e.push(n)}o.push(e)}if(t[2]-t[0]<=i/2){ao(t);for(let e of o)for(let r of e)io(r,t,n,i)}return o}function co(e,t){let n=[1/0,1/0,-1/0,-1/0],r=[1/0,1/0,-1/0,-1/0],i=e.canonicalID();if(t.type===`Polygon`){let a=no(t.coordinates,r,i),o=oo(e.geometry(),n,r,i);if(!Ga(n,r))return!1;for(let e of o)if(!Xa(e,a))return!1}if(t.type===`MultiPolygon`){let a=ro(t.coordinates,r,i),o=oo(e.geometry(),n,r,i);if(!Ga(n,r))return!1;for(let e of o)if(!Za(e,a))return!1}return!0}function lo(e,t){let n=[1/0,1/0,-1/0,-1/0],r=[1/0,1/0,-1/0,-1/0],i=e.canonicalID();if(t.type===`Polygon`){let a=no(t.coordinates,r,i),o=so(e.geometry(),n,r,i);if(!Ga(n,r))return!1;for(let e of o)if(!Qa(e,a))return!1}if(t.type===`MultiPolygon`){let a=ro(t.coordinates,r,i),o=so(e.geometry(),n,r,i);if(!Ga(n,r))return!1;for(let e of o)if(!$a(e,a))return!1}return!0}var uo=class e{constructor(e,t){this.type=kr,this.geojson=e,this.geometries=t}static parse(t,n){if(t.length!==2)return n.error(`'within' expression requires exactly one argument, but found ${t.length-1} instead.`);if(Fi(t[1])){let n=t[1];if(n.type===`FeatureCollection`){let t=[];for(let e of n.features){let{type:n,coordinates:r}=e.geometry;n===`Polygon`&&t.push(r),n===`MultiPolygon`&&t.push(...r)}if(t.length)return new e(n,{type:`MultiPolygon`,coordinates:t})}else if(n.type===`Feature`){let t=n.geometry.type;if(t===`Polygon`||t===`MultiPolygon`)return new e(n,n.geometry)}else if(n.type===`Polygon`||n.type===`MultiPolygon`)return new e(n,n)}return n.error(`'within' expression requires valid geojson object that contains polygon geometry type.`)}evaluate(e){if(e.geometry()!=null&&e.canonicalID()!=null){if(e.geometryType()===`Point`)return co(e,this.geometries);if(e.geometryType()===`LineString`)return lo(e,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}},fo=class{constructor(e=[],t=(e,t)=>e<t?-1:+(e>t)){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let e=(this.length>>1)-1;e>=0;e--)this._down(e)}push(e){this.data.push(e),this._up(this.length++)}pop(){if(this.length===0)return;let e=this.data[0],t=this.data.pop();return--this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){let{data:t,compare:n}=this,r=t[e];for(;e>0;){let i=e-1>>1,a=t[i];if(n(r,a)>=0)break;t[e]=a,e=i}t[e]=r}_down(e){let{data:t,compare:n}=this,r=this.length>>1,i=t[e];for(;e<r;){let r=(e<<1)+1,a=r+1;if(a<this.length&&n(t[a],t[r])<0&&(r=a),n(t[r],i)>=0)break;t[e]=t[r],e=r}t[e]=i}},po=Math.PI/180,mo=class{constructor(e){let t=po*6378.137*1e3,n=Math.cos(e*po),r=1/(1-.0066943799901413165*(1-n*n)),i=Math.sqrt(r);this.kx=t*i*n,this.ky=t*i*r*.9933056200098587}distance(e,t){let n=this.wrap(e[0]-t[0])*this.kx,r=(e[1]-t[1])*this.ky;return Math.sqrt(n*n+r*r)}pointOnLine(e,t){let n=1/0,r,i,a,o;for(let s=0;s<e.length-1;s++){let c=e[s][0],l=e[s][1],u=this.wrap(e[s+1][0]-c)*this.kx,d=(e[s+1][1]-l)*this.ky,f=0;(u!==0||d!==0)&&(f=(this.wrap(t[0]-c)*this.kx*u+(t[1]-l)*this.ky*d)/(u*u+d*d),f>1?(c=e[s+1][0],l=e[s+1][1]):f>0&&(c+=u/this.kx*f,l+=d/this.ky*f)),u=this.wrap(t[0]-c)*this.kx,d=(t[1]-l)*this.ky;let p=u*u+d*d;p<n&&(n=p,r=c,i=l,a=s,o=f)}return{point:[r,i],index:a,t:Math.max(0,Math.min(1,o))}}wrap(e){for(;e<-180;)e+=360;for(;e>180;)e-=360;return e}};function ho(e,t){return t[0]-e[0]}function go(e){return e[1]-e[0]+1}function _o(e,t){return e[1]>=e[0]&&e[1]<t}function vo(e,t){if(e[0]>e[1])return[null,null];let n=go(e);if(t){if(n===2)return[e,null];let t=Math.floor(n/2);return[[e[0],e[0]+t],[e[0]+t,e[1]]]}if(n===1)return[e,null];let r=Math.floor(n/2)-1;return[[e[0],e[0]+r],[e[0]+r+1,e[1]]]}function yo(e,t){if(!_o(t,e.length))return[1/0,1/0,-1/0,-1/0];let n=[1/0,1/0,-1/0,-1/0];for(let r=t[0];r<=t[1];++r)Wa(n,e[r]);return n}function bo(e){let t=[1/0,1/0,-1/0,-1/0];for(let n of e)for(let e of n)Wa(t,e);return t}function xo(e){return e[0]!==-1/0&&e[1]!==-1/0&&e[2]!==1/0&&e[3]!==1/0}function So(e,t,n){if(!xo(e)||!xo(t))return NaN;let r=0,i=0;return e[2]<t[0]&&(r=t[0]-e[2]),e[0]>t[2]&&(r=e[0]-t[2]),e[1]>t[3]&&(i=e[1]-t[3]),e[3]<t[1]&&(i=t[1]-e[3]),n.distance([0,0],[r,i])}function Co(e,t,n){let r=n.pointOnLine(t,e);return n.distance(e,r.point)}function wo(e,t,n,r,i){let a=Math.min(Co(e,[n,r],i),Co(t,[n,r],i)),o=Math.min(Co(n,[e,t],i),Co(r,[e,t],i));return Math.min(a,o)}function To(e,t,n,r,i){if(!(_o(t,e.length)&&_o(r,n.length)))return 1/0;let a=1/0;for(let o=t[0];o<t[1];++o){let t=e[o],s=e[o+1];for(let e=r[0];e<r[1];++e){let r=n[e],o=n[e+1];if(Ja(t,s,r,o))return 0;a=Math.min(a,wo(t,s,r,o,i))}}return a}function Eo(e,t,n,r,i){if(!(_o(t,e.length)&&_o(r,n.length)))return NaN;let a=1/0;for(let o=t[0];o<=t[1];++o)for(let t=r[0];t<=r[1];++t)if(a=Math.min(a,i.distance(e[o],n[t])),a===0)return a;return a}function Do(e,t,n){if(Xa(e,t,!0))return 0;let r=1/0;for(let i of t){let t=i[0],a=i[i.length-1];if(t!==a&&(r=Math.min(r,Co(e,[a,t],n)),r===0))return r;let o=n.pointOnLine(i,e);if(r=Math.min(r,n.distance(e,o.point)),r===0)return r}return r}function Oo(e,t,n,r){if(!_o(t,e.length))return NaN;for(let r=t[0];r<=t[1];++r)if(Xa(e[r],n,!0))return 0;let i=1/0;for(let a=t[0];a<t[1];++a){let t=e[a],o=e[a+1];for(let e of n)for(let n=0,a=e.length,s=a-1;n<a;s=n++){let a=e[s],c=e[n];if(Ja(t,o,a,c))return 0;i=Math.min(i,wo(t,o,a,c,r))}}return i}function ko(e,t){for(let n of e)for(let e of n)if(Xa(e,t,!0))return!0;return!1}function Ao(e,t,n,r=1/0){let i=bo(e),a=bo(t);if(r!==1/0&&So(i,a,n)>=r)return r;if(Ga(i,a)){if(ko(e,t))return 0}else if(ko(t,e))return 0;let o=1/0;for(let r of e)for(let e=0,i=r.length,a=i-1;e<i;a=e++){let i=r[a],s=r[e];for(let e of t)for(let t=0,r=e.length,a=r-1;t<r;a=t++){let r=e[a],c=e[t];if(Ja(i,s,r,c))return 0;o=Math.min(o,wo(i,s,r,c,n))}}return o}function jo(e,t,n,r,i,a){if(!a)return;let o=So(yo(r,a),i,n);o<t&&e.push([o,a,[0,0]])}function Mo(e,t,n,r,i,a,o){if(!a||!o)return;let s=So(yo(r,a),yo(i,o),n);s<t&&e.push([s,a,o])}function No(e,t,n,r,i=1/0){let a=Math.min(r.distance(e[0],n[0][0]),i);if(a===0)return a;let o=new fo([[0,[0,e.length-1],[0,0]]],ho),s=bo(n);for(;o.length>0;){let i=o.pop();if(i[0]>=a)continue;let c=i[1],l=t?50:100;if(go(c)<=l){if(!_o(c,e.length))return NaN;if(t){let t=Oo(e,c,n,r);if(isNaN(t)||t===0)return t;a=Math.min(a,t)}else for(let t=c[0];t<=c[1];++t){let i=Do(e[t],n,r);if(a=Math.min(a,i),a===0)return 0}}else{let n=vo(c,t);jo(o,a,r,e,s,n[0]),jo(o,a,r,e,s,n[1])}}return a}function Po(e,t,n,r,i,a=1/0){let o=Math.min(a,i.distance(e[0],n[0]));if(o===0)return o;let s=new fo([[0,[0,e.length-1],[0,n.length-1]]],ho);for(;s.length>0;){let a=s.pop();if(a[0]>=o)continue;let c=a[1],l=a[2],u=t?50:100,d=r?50:100;if(go(c)<=u&&go(l)<=d){if(!_o(c,e.length)&&_o(l,n.length))return NaN;let a;if(t&&r)a=To(e,c,n,l,i),o=Math.min(o,a);else if(t&&!r){let t=e.slice(c[0],c[1]+1);for(let e=l[0];e<=l[1];++e)if(a=Co(n[e],t,i),o=Math.min(o,a),o===0)return o}else if(!t&&r){let t=n.slice(l[0],l[1]+1);for(let n=c[0];n<=c[1];++n)if(a=Co(e[n],t,i),o=Math.min(o,a),o===0)return o}else a=Eo(e,c,n,l,i),o=Math.min(o,a)}else{let a=vo(c,t),u=vo(l,r);Mo(s,o,i,e,n,a[0],u[0]),Mo(s,o,i,e,n,a[0],u[1]),Mo(s,o,i,e,n,a[1],u[0]),Mo(s,o,i,e,n,a[1],u[1])}}return o}function Fo(e,t){let n=e.geometry(),r=n.flat().map(t=>za([t.x,t.y],e.canonical));if(n.length===0)return NaN;let i=new mo(r[0][1]),a=1/0;for(let e of t){switch(e.type){case`Point`:a=Math.min(a,Po(r,!1,[e.coordinates],!1,i,a));break;case`LineString`:a=Math.min(a,Po(r,!1,e.coordinates,!0,i,a));break;case`Polygon`:a=Math.min(a,No(r,!1,e.coordinates,i,a))}if(a===0)return a}return a}function Io(e,t){let n=e.geometry(),r=n.flat().map(t=>za([t.x,t.y],e.canonical));if(n.length===0)return NaN;let i=new mo(r[0][1]),a=1/0;for(let e of t){switch(e.type){case`Point`:a=Math.min(a,Po(r,!0,[e.coordinates],!1,i,a));break;case`LineString`:a=Math.min(a,Po(r,!0,e.coordinates,!0,i,a));break;case`Polygon`:a=Math.min(a,No(r,!0,e.coordinates,i,a))}if(a===0)return a}return a}function Lo(e,t){let n=e.geometry();if(n.length===0||n[0].length===0)return NaN;let r=Zi(n,0).map(t=>t.map(t=>t.map(t=>za([t.x,t.y],e.canonical)))),i=new mo(r[0][0][0][1]),a=1/0;for(let e of t)for(let t of r){switch(e.type){case`Point`:a=Math.min(a,No([e.coordinates],!1,t,i,a));break;case`LineString`:a=Math.min(a,No(e.coordinates,!0,t,i,a));break;case`Polygon`:a=Math.min(a,Ao(t,e.coordinates,i,a))}if(a===0)return a}return a}function Ro(e){return e.type===`MultiPolygon`?e.coordinates.map(e=>({type:`Polygon`,coordinates:e})):e.type===`MultiLineString`?e.coordinates.map(e=>({type:`LineString`,coordinates:e})):e.type===`MultiPoint`?e.coordinates.map(e=>({type:`Point`,coordinates:e})):[e]}var zo=class e{constructor(e,t){this.type=H,this.geojson=e,this.geometries=t}static parse(t,n){if(t.length!==2)return n.error(`'distance' expression requires exactly one argument, but found ${t.length-1} instead.`);if(Fi(t[1])){let n=t[1];if(n.type===`FeatureCollection`)return new e(n,n.features.map(e=>Ro(e.geometry)).flat());if(n.type===`Feature`)return new e(n,Ro(n.geometry));if(`type`in n&&`coordinates`in n)return new e(n,Ro(n))}return n.error(`'distance' expression requires valid geojson object that contains polygon geometry type.`)}evaluate(e){if(e.geometry()!=null&&e.canonicalID()!=null){if(e.geometryType()===`Point`)return Fo(e,this.geometries);if(e.geometryType()===`LineString`)return Io(e,this.geometries);if(e.geometryType()===`Polygon`)return Lo(e,this.geometries)}return NaN}eachChild(){}outputDefined(){return!0}},Bo=class e{constructor(e){let t=null;for(let n of e)if(!t)t=n.type;else if(t===n.type)continue;else{t=W;break}this.type=Vr(t??W,e.length),this.arr=e}static parse(t,n){if(t.length!==2)return n.error(`'semiliteral' expression requires exactly one argument, but found ${t.length-1} instead.`);if(!Fi(t[1]))return n.error(`invalid value of type "${typeof t[1]}"`);let r=t[1],i=Ii(r);if(i.kind===`array`){let t=r,i=n.concat(1),a=[];for(let e=0;e<t.length;e++){let n=i.parse(t[e],e,W);if(!n)return null;a.push(n)}return new e(a)}return new Ri(i,r)}evaluate(e){return this.arr.map(t=>t.evaluate(e))}eachChild(e){this.arr.forEach(e)}outputDefined(){return this.arr.every(e=>e.outputDefined())}},Vo=class e{constructor(e){this.key=e,this.type=W}static parse(t,n){if(t.length!==2)return n.error(`Expected 1 argument, but found ${t.length-1} instead.`);let r=t[1];return r==null?n.error(`Global state property must be defined.`):typeof r==`string`?new e(r):n.error(`Global state property must be string, but found ${typeof t[1]} instead.`)}evaluate(e){let t=e.globals?.globalState;return!t||Object.keys(t).length===0?null:fi(t,this.key)??null}eachChild(){}outputDefined(){return!1}},Ho={"==":Da,"!=":Oa,">":Aa,"<":ka,">=":Ma,"<=":ja,array:ta,at:oa,boolean:ta,case:ua,coalesce:fa,collator:Na,format:qi,image:Fa,in:sa,"index-of":ca,interpolate:Wi,"interpolate-hcl":Wi,"interpolate-lab":Wi,length:Ia,let:ia,literal:Ri,match:la,number:ta,"number-format":Pa,object:ta,semiliteral:Bo,slice:da,step:Hi,string:ta,"to-boolean":ra,"to-color":ra,"to-number":ra,"to-string":ra,var:aa,within:uo,distance:zo,"global-state":Vo},Uo=class extends Error{constructor(e,t){super(t),this.message=t,this.key=e}},Wo=class e{constructor(e,t=[]){this.parent=e,this.bindings={};for(let[e,n]of t)this.bindings[e]=n}concat(t){return new e(this,t)}get(e){if(this.bindings[e])return this.bindings[e];if(this.parent)return this.parent.get(e);throw Error(`${e} not found in scope.`)}has(e){return this.bindings[e]?!0:this.parent?this.parent.has(e):!1}},Go=class e{constructor(e,t,n=[],r,i=new Wo,a=[]){this.registry=e,this.path=n,this.key=n.map(e=>`[${e}]`).join(``),this.scope=i,this.errors=a,this.expectedType=r,this._isConstant=t}parse(e,t,n,r,i={}){return t==null?this._parse(e,i):this.concat(t,n,r)._parse(e,i)}_parse(e,t){(e===null||typeof e==`string`||typeof e==`boolean`||typeof e==`number`)&&(e=[`literal`,e]);let n=this.key;function r(e,t,r){return r===`assert`?new ta(t,[e],n):r===`coerce`?new ra(t,[e],n):e}if(Array.isArray(e)){if(e.length===0)return this.error(`Expected an array with at least one element. If you wanted a literal array, use ["literal", []].`);let n=e[0];if(typeof n!=`string`)return this.error(`Expression name must be a string, but found ${typeof n} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;let i=this.registry[n];if(i){let n=i.parse(e,this);if(!n)return null;if(this.expectedType){let e=this.expectedType,i=n.type;if((e.kind===`string`||e.kind===`number`||e.kind===`boolean`||e.kind===`object`||e.kind===`array`)&&i.kind===`value`)n=r(n,e,t.typeAnnotation||`assert`);else if(e.kind===`projectionDefinition`&&[`string`,`array`,`value`].includes(i.kind)||[`color`,`formatted`,`resolvedImage`].includes(e.kind)&&[`value`,`string`].includes(i.kind)||[`padding`,`numberArray`].includes(e.kind)&&[`value`,`number`,`array`].includes(i.kind)||e.kind===`colorArray`&&[`value`,`string`,`array`].includes(i.kind)||e.kind===`variableAnchorOffsetCollection`&&[`value`,`array`].includes(i.kind))n=r(n,e,t.typeAnnotation||`coerce`);else if(this.checkSubtype(e,i))return null}if(!(n instanceof Ri)&&n.type.kind!==`resolvedImage`&&this._isConstant(n)){let e=new Bi;try{n=new Ri(n.type,n.evaluate(e))}catch(e){return this.error(e.message),null}}return n}return this.error(`Unknown expression "${n}". If you wanted a literal array, use ["literal", [...]].`,0)}return e===void 0?this.error(`'undefined' value invalid. Use null instead.`):typeof e==`object`?this.error(`Bare objects invalid. Use ["literal", {...}] instead.`):this.error(`Expected an array, but found ${typeof e} instead.`)}concat(t,n,r){let i=typeof t==`number`?this.path.concat(t):this.path,a=r?this.scope.concat(r):this.scope;return new e(this.registry,this._isConstant,i,n||null,a,this.errors)}error(e,...t){let n=`${this.key}${t.map(e=>`[${e}]`).join(``)}`;this.errors.push(new Uo(n,e))}checkSubtype(e,t){let n=Wr(e,t);return n&&this.error(n),n}},Ko=class e{constructor(e,t,n,r,i){this.name=e,this.type=t,this._evaluate=n,this.args=r,this.key=i}evaluate(e){return this._evaluate(e,this.args,this.key)}eachChild(e){this.args.forEach(e)}outputDefined(){return!1}static parse(t,n){let r=t[0],i=e.definitions[r];if(!i)return n.error(`Unknown expression "${r}". If you wanted a literal array, use ["literal", [...]].`,0);let a=Array.isArray(i)?i[0]:i.type,o=Array.isArray(i)?[[i[1],i[2]]]:i.overloads,s=o.filter(([e])=>!Array.isArray(e)||e.length===t.length-1),c=null;for(let[i,o]of s){c=new Go(n.registry,$o,n.path,null,n.scope);let s=[],l=!1;for(let e=1;e<t.length;e++){let n=t[e],r=Array.isArray(i)?i[e-1]:i.type,a=c.parse(n,1+s.length,r);if(!a){l=!0;break}s.push(a)}if(!l){if(Array.isArray(i)&&i.length!==s.length)c.error(`Expected ${i.length} arguments, but found ${s.length} instead.`);else{for(let e=0;e<s.length;e++){let t=Array.isArray(i)?i[e]:i.type,n=s[e];c.concat(e+1).checkSubtype(t,n.type)}if(c.errors.length===0)return new e(r,a,o,s,n.key)}}}if(s.length===1)n.errors.push(...c.errors);else{let e=(s.length?s:o).map(([e])=>Qo(e)).join(` | `),r=[];for(let e=1;e<t.length;e++){let i=n.parse(t[e],1+r.length);if(!i)return null;r.push(Hr(i.type))}n.error(`Expected arguments of type ${e}, but found (${r.join(`, `)}) instead.`)}return null}static register(t,n){e.definitions=n;for(let r in n)t[r]=e}};function qo(e,[t,n,r,i],a){t=t.evaluate(e),n=n.evaluate(e),r=r.evaluate(e);let o=i?i.evaluate(e):1,s=Pi(t,n,r,o);if(s)throw new Oi(s,a);return new G(t/255,n/255,r/255,o,!1)}function Jo(e,t){return e in t&&t[e]!==void 0}function Yo(e,t){let n=t[e];return n===void 0?null:n}function Xo(e,t,n,r){for(;n<=r;){let i=n+r>>1;if(t[i]===e)return!0;t[i]>e?r=i-1:n=i+1}return!1}function Zo(e){return{type:e}}Ko.register(Ho,{error:[Nr,[U],(e,[t],n)=>{throw new Oi(t.evaluate(e),n)}],typeof:[U,[W],(e,[t])=>Hr(Ii(t.evaluate(e)))],"to-rgba":[Vr(H,4),[Ar],(e,[t])=>{let[n,r,i,a]=t.evaluate(e).rgb;return[n*255,r*255,i*255,a]}],rgb:[Ar,[H,H,H],qo],rgba:[Ar,[H,H,H,H],qo],has:{type:kr,overloads:[[[U],(e,[t])=>Jo(t.evaluate(e),e.properties())],[[U,Mr],(e,[t,n])=>Jo(t.evaluate(e),n.evaluate(e))]]},get:{type:W,overloads:[[[U],(e,[t])=>Yo(t.evaluate(e),e.properties())],[[U,Mr],(e,[t,n])=>Yo(t.evaluate(e),n.evaluate(e))]]},"feature-state":[W,[U],(e,[t])=>Yo(t.evaluate(e),e.featureState||{})],properties:[Mr,[],e=>e.properties()],"geometry-type":[U,[],e=>e.geometryType()],id:[W,[],e=>e.id()],zoom:[H,[],e=>e.globals.zoom],"heatmap-density":[H,[],e=>e.globals.heatmapDensity||0],elevation:[H,[],e=>e.globals.elevation||0],"line-progress":[H,[],e=>e.globals.lineProgress||0],accumulated:[W,[],e=>e.globals.accumulated===void 0?null:e.globals.accumulated],"+":[H,Zo(H),(e,t)=>{let n=0;for(let r of t)n+=r.evaluate(e);return n}],"*":[H,Zo(H),(e,t)=>{let n=1;for(let r of t)n*=r.evaluate(e);return n}],"-":{type:H,overloads:[[[H,H],(e,[t,n])=>t.evaluate(e)-n.evaluate(e)],[[H],(e,[t])=>-t.evaluate(e)]]},"/":[H,[H,H],(e,[t,n])=>t.evaluate(e)/n.evaluate(e)],"%":[H,[H,H],(e,[t,n])=>t.evaluate(e)%n.evaluate(e)],ln2:[H,[],()=>Math.LN2],pi:[H,[],()=>Math.PI],e:[H,[],()=>Math.E],"^":[H,[H,H],(e,[t,n])=>t.evaluate(e)**+n.evaluate(e)],sqrt:[H,[H],(e,[t])=>Math.sqrt(t.evaluate(e))],log10:[H,[H],(e,[t])=>Math.log(t.evaluate(e))/Math.LN10],ln:[H,[H],(e,[t])=>Math.log(t.evaluate(e))],log2:[H,[H],(e,[t])=>Math.log(t.evaluate(e))/Math.LN2],sin:[H,[H],(e,[t])=>Math.sin(t.evaluate(e))],cos:[H,[H],(e,[t])=>Math.cos(t.evaluate(e))],tan:[H,[H],(e,[t])=>Math.tan(t.evaluate(e))],asin:[H,[H],(e,[t])=>Math.asin(t.evaluate(e))],acos:[H,[H],(e,[t])=>Math.acos(t.evaluate(e))],atan:[H,[H],(e,[t])=>Math.atan(t.evaluate(e))],min:[H,Zo(H),(e,t)=>Math.min(...t.map(t=>t.evaluate(e)))],max:[H,Zo(H),(e,t)=>Math.max(...t.map(t=>t.evaluate(e)))],abs:[H,[H],(e,[t])=>Math.abs(t.evaluate(e))],round:[H,[H],(e,[t])=>{let n=t.evaluate(e);return n<0?-Math.round(-n):Math.round(n)}],floor:[H,[H],(e,[t])=>Math.floor(t.evaluate(e))],ceil:[H,[H],(e,[t])=>Math.ceil(t.evaluate(e))],"filter-==":[kr,[U,W],(e,[t,n])=>e.properties()[t.value]===n.value],"filter-id-==":[kr,[W],(e,[t])=>e.id()===t.value],"filter-type-==":[kr,[U],(e,[t])=>e.geometryType()===t.value],"filter-<":[kr,[U,W],(e,[t,n])=>{let r=e.properties()[t.value],i=n.value;return typeof r==typeof i&&r<i}],"filter-id-<":[kr,[W],(e,[t])=>{let n=e.id(),r=t.value;return typeof n==typeof r&&n<r}],"filter->":[kr,[U,W],(e,[t,n])=>{let r=e.properties()[t.value],i=n.value;return typeof r==typeof i&&r>i}],"filter-id->":[kr,[W],(e,[t])=>{let n=e.id(),r=t.value;return typeof n==typeof r&&n>r}],"filter-<=":[kr,[U,W],(e,[t,n])=>{let r=e.properties()[t.value],i=n.value;return typeof r==typeof i&&r<=i}],"filter-id-<=":[kr,[W],(e,[t])=>{let n=e.id(),r=t.value;return typeof n==typeof r&&n<=r}],"filter->=":[kr,[U,W],(e,[t,n])=>{let r=e.properties()[t.value],i=n.value;return typeof r==typeof i&&r>=i}],"filter-id->=":[kr,[W],(e,[t])=>{let n=e.id(),r=t.value;return typeof n==typeof r&&n>=r}],"filter-has":[kr,[W],(e,[t])=>{let n=t.value,r=e.properties();return n in r&&r[n]!==void 0}],"filter-has-id":[kr,[],e=>e.id()!==null&&e.id()!==void 0],"filter-type-in":[kr,[Vr(U)],(e,[t])=>t.value.indexOf(e.geometryType())>=0],"filter-id-in":[kr,[Vr(W)],(e,[t])=>t.value.indexOf(e.id())>=0],"filter-in-small":[kr,[U,Vr(W)],(e,[t,n])=>n.value.indexOf(e.properties()[t.value])>=0],"filter-in-large":[kr,[U,Vr(W)],(e,[t,n])=>Xo(e.properties()[t.value],n.value,0,n.value.length-1)],all:{type:kr,overloads:[[[kr,kr],(e,[t,n])=>t.evaluate(e)&&n.evaluate(e)],[Zo(kr),(e,t)=>{for(let n of t)if(!n.evaluate(e))return!1;return!0}]]},any:{type:kr,overloads:[[[kr,kr],(e,[t,n])=>t.evaluate(e)||n.evaluate(e)],[Zo(kr),(e,t)=>{for(let n of t)if(n.evaluate(e))return!0;return!1}]]},"!":[kr,[kr],(e,[t])=>!t.evaluate(e)],"is-supported-script":[kr,[U],(e,[t])=>{let n=e.globals&&e.globals.isSupportedScript;return!n||n(t.evaluate(e))}],upcase:[U,[U],(e,[t])=>t.evaluate(e).toUpperCase()],downcase:[U,[U],(e,[t])=>t.evaluate(e).toLowerCase()],concat:[U,Zo(W),(e,t)=>t.map(t=>Li(t.evaluate(e))).join(``)],split:[Vr(U),[U,U],(e,[t,n])=>t.evaluate(e).split(n.evaluate(e))],join:[U,[Vr(U),U],(e,[t,n])=>t.evaluate(e).join(n.evaluate(e))],"resolved-locale":[U,[Pr],(e,[t])=>t.evaluate(e).resolvedLocale()]});function Qo(e){return Array.isArray(e)?`(${e.map(Hr).join(`, `)})`:`(${Hr(e.type)}...)`}function $o(e){if(e instanceof aa)return $o(e.boundExpression);if(e instanceof Ko&&e.name===`error`||e instanceof Na||e instanceof uo||e instanceof zo||e instanceof Vo)return!1;let t=e instanceof ra||e instanceof ta,n=!0;return e.eachChild(e=>{n&&=t?$o(e):e instanceof Ri}),n?es(e)&&ns(e,[`zoom`,`heatmap-density`,`elevation`,`line-progress`,`accumulated`,`is-supported-script`]):!1}function es(e){if(e instanceof Ko&&(e.name===`get`&&e.args.length===1||e.name===`feature-state`||e.name===`has`&&e.args.length===1||e.name===`properties`||e.name===`geometry-type`||e.name===`id`||/^filter-/.test(e.name))||e instanceof uo||e instanceof zo)return!1;let t=!0;return e.eachChild(e=>{t&&!es(e)&&(t=!1)}),t}function ts(e){if(e instanceof Ko&&e.name===`feature-state`)return!1;let t=!0;return e.eachChild(e=>{t&&!ts(e)&&(t=!1)}),t}function ns(e,t){if(e instanceof Ko&&t.indexOf(e.name)>=0)return!1;let n=!0;return e.eachChild(e=>{n&&!ns(e,t)&&(n=!1)}),n}function rs(e){return e[`property-type`]===`data-driven`||e[`property-type`]===`cross-faded-data-driven`}function is(e){return!!e.expression&&e.expression.parameters.indexOf(`zoom`)>-1}function as(e){return!!e.expression&&e.expression.interpolated}var os=/^(.*)-transition$/;function ss(e,...t){for(let n of t)for(let t in n)e[t]=n[t];return e}function cs(e){return e instanceof Number?`number`:e instanceof String?`string`:e instanceof Boolean?`boolean`:Array.isArray(e)?`array`:e===null?`null`:typeof e}function ls(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Ii(e)===Mr}function us(e){return e}function ds(e){switch(e.type){case`color`:return G.parse;case`padding`:return Ti.parse;case`numberArray`:return Ei.parse;case`colorArray`:return Di.parse;default:return null}}function fs(e){switch(e){case`exponential`:return _s;case`interval`:return gs;case`categorical`:return hs;case`identity`:return vs;default:throw Error(`Unknown function type "${e}"`)}}function ps(e,t){let n=e.stops&&typeof e.stops[0][0]==`object`,r=n||e.property!==void 0,i=n||!r,a=e.type||(as(t)?`exponential`:`interval`),o=ds(t);if(o&&(e=ss({},e),e.stops&&(e.stops=e.stops.map(e=>[e[0],o(e[1])])),e.default?e.default=o(e.default):e.default=o(t.default)),e.colorSpace&&!xi(e.colorSpace))throw Error(`Unknown color space: "${e.colorSpace}"`);let s=fs(a),c,l;if(a===`categorical`){c=Object.create(null);for(let t of e.stops)c[t[0]]=t[1];l=typeof e.stops[0][0]}if(n){let n={},r=[];for(let t=0;t<e.stops.length;t++){let i=e.stops[t],a=i[0].zoom;n[a]===void 0&&(n[a]={zoom:a,type:e.type,property:e.property,default:e.default,stops:[]},r.push(a)),n[a].stops.push([i[0].value,i[1]])}let i=[];for(let e of r)i.push([n[e].zoom,ps(n[e],t)]);let a={name:`linear`};return{kind:`composite`,interpolationType:a,interpolationFactor:Wi.interpolationFactor.bind(void 0,a),zoomStops:i.map(e=>e[0]),evaluate({zoom:n},r){return _s({stops:i,base:e.base},t,n).evaluate(n,r)}}}if(i){let n=a===`exponential`?{name:`exponential`,base:e.base===void 0?1:e.base}:null;return{kind:`camera`,interpolationType:n,interpolationFactor:Wi.interpolationFactor.bind(void 0,n),zoomStops:e.stops.map(e=>e[0]),evaluate:({zoom:n})=>s(e,t,n,c,l)}}return{kind:`source`,evaluate(n,r){let i=r&&r.properties?r.properties[e.property]:void 0;return i===void 0?ms(e.default,t.default):s(e,t,i,c,l)}}}function ms(e,t,n){if(e!==void 0)return e;if(t!==void 0)return t;if(n!==void 0)return n}function hs(e,t,n,r,i){return ms(typeof n===i?r[n]:void 0,e.default,t.default)}function gs(e,t,n){if(cs(n)!==`number`)return ms(e.default,t.default);let r=e.stops.length;if(r===1||n<=e.stops[0][0])return e.stops[0][1];if(n>=e.stops[r-1][0])return e.stops[r-1][1];let i=Vi(e.stops.map(e=>e[0]),n,``);return e.stops[i][1]}function _s(e,t,n){let r=e.base===void 0?1:e.base;if(cs(n)!==`number`)return ms(e.default,t.default);let i=e.stops.length;if(i===1||n<=e.stops[0][0])return e.stops[0][1];if(n>=e.stops[i-1][0])return e.stops[i-1][1];let a=Vi(e.stops.map(e=>e[0]),n,``),o=ys(n,r,e.stops[a][0],e.stops[a+1][0]),s=e.stops[a][1],c=e.stops[a+1][1],l=Ki[t.type]||us;return typeof s.evaluate==`function`?{evaluate(...t){let n=s.evaluate.apply(void 0,t),r=c.evaluate.apply(void 0,t);if(n!==void 0&&r!==void 0)return l(n,r,o,e.colorSpace)}}:l(s,c,o,e.colorSpace)}function vs(e,t,n){switch(t.type){case`color`:n=G.parse(n);break;case`formatted`:n=wi.fromString(n.toString());break;case`resolvedImage`:n=ji.fromString(n.toString());break;case`padding`:n=Ti.parse(n);break;case`colorArray`:n=Di.parse(n);break;case`numberArray`:n=Ei.parse(n);break;default:cs(n)===t.type||t.type===`enum`&&t.values[n]||(n=void 0)}return ms(n,e.default,t.default)}function ys(e,t,n,r){let i=r-n,a=e-n;return i===0?0:t===1?a/i:(t**+a-1)/(t**+i-1)}function bs(e){return{result:`success`,value:e}}function xs(e){return{result:`error`,value:e}}var Ss=class{constructor(e,t,n,r){this.expression=e,this._warningHistory={},this._evaluator=new Bi,this._defaultValue=n?Is(n):null,this._enumValues=n&&n.type===`enum`?n.values:null,this._globalState=r,this._rootKey=t}evaluateWithoutErrorHandling(e,t,n,r,i,a){return this._globalState&&(e=Ls(e,this._globalState)),this._evaluator.globals=e,this._evaluator.feature=t,this._evaluator.featureState=n,this._evaluator.canonical=r,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a,this.expression.evaluate(this._evaluator)}evaluate(e,t,n,r,i,a){this._globalState&&(e=Ls(e,this._globalState)),this._evaluator.globals=e,this._evaluator.feature=t||null,this._evaluator.featureState=n||null,this._evaluator.canonical=r,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a||null;try{let e=this.expression.evaluate(this._evaluator);if(e==null||typeof e==`number`&&e!==e)return this._defaultValue;if(this._enumValues&&!(e in this._enumValues))throw new Oi(`Expected value to be one of ${Object.keys(this._enumValues).map(e=>JSON.stringify(e)).join(`, `)}, but found ${JSON.stringify(e)} instead.`,``);return e}catch(e){let t=e instanceof Oi?e.path:``,n=`${t}|${e.message}`;return this._warningHistory[n]||(this._warningHistory[n]=!0,typeof console<`u`&&console.warn(Cs(this._rootKey,t,e.message,this._defaultValue))),this._defaultValue}}};function Cs(e,t,n,r){return`${e}${t}: ${n}${r==null?``:` Falling back to ${String(r)}.`}`}function ws(e){if(!e)throw Error(`rootKey must identify the location of the expression in the style JSON, e.g. "layers[3].paint.line-width".`)}function Ts(e){return Array.isArray(e)&&e.length>0&&typeof e[0]==`string`&&e[0]in Ho}function Es(e,t,n,r){ws(t);let i=new Go(Ho,$o,[],n?Fs(n):void 0),a=i.parse(e,void 0,void 0,void 0,n&&n.type===`string`?{typeAnnotation:`coerce`}:void 0);return a?bs(new Ss(a,t,n,r)):xs(i.errors)}var Ds=class{constructor(e,t,n){this.kind=e,this._styleExpression=t,this.isStateDependent=e!==`constant`&&!ts(t.expression),this.globalStateRefs=Ps(t.expression),this._globalState=n}evaluateWithoutErrorHandling(e,t,n,r,i,a){return this._globalState&&(e=Ls(e,this._globalState)),this._styleExpression.evaluateWithoutErrorHandling(e,t,n,r,i,a)}evaluate(e,t,n,r,i,a){return this._globalState&&(e=Ls(e,this._globalState)),this._styleExpression.evaluate(e,t,n,r,i,a)}},Os=class{constructor(e,t,n,r,i){this.kind=e,this.zoomStops=n,this._styleExpression=t,this.isStateDependent=e!==`camera`&&!ts(t.expression),this.globalStateRefs=Ps(t.expression),this.interpolationType=r,this._globalState=i}evaluateWithoutErrorHandling(e,t,n,r,i,a){return this._globalState&&(e=Ls(e,this._globalState)),this._styleExpression.evaluateWithoutErrorHandling(e,t,n,r,i,a)}evaluate(e,t,n,r,i,a){return this._globalState&&(e=Ls(e,this._globalState)),this._styleExpression.evaluate(e,t,n,r,i,a)}interpolationFactor(e,t,n){return this.interpolationType?Wi.interpolationFactor(this.interpolationType,e,t,n):0}};function ks(e){return e._styleExpression!==void 0}function As(e,t,n,r){let i=Es(e,t,n,r);if(i.result===`error`)return i;let a=i.value.expression,o=es(a);if(!o&&!rs(n))return xs([new Uo(``,`data expressions not supported`)]);let s=ns(a,[`zoom`]);if(!s&&!is(n))return xs([new Uo(``,`zoom expressions not supported`)]);let c=Ns(a);if(!c&&!s)return xs([new Uo(``,`"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.`)]);if(c instanceof Uo)return xs([c]);if(c instanceof Wi&&!as(n))return xs([new Uo(``,`"interpolate" expressions cannot be used with this property`)]);if(!c)return bs(o?new Ds(`constant`,i.value,r):new Ds(`source`,i.value,r));let l=c instanceof Wi?c.interpolation:void 0;return bs(o?new Os(`camera`,i.value,c.labels,l,r):new Os(`composite`,i.value,c.labels,l,r))}var js=class e{constructor(e,t,n){this.isStateDependent=!1,this.globalStateRefs=new Set,this._globalState=null,ws(t),this._parameters=e,this._specification=n,this._rootKey=t,this._defaultValue=Is(n),this._warningHistory={};let r=ps(this._parameters,this._specification);this.kind=r.kind,this.interpolationFactor=r.interpolationFactor,this.zoomStops=r.zoomStops,this.interpolationType=r.interpolationType,this._innerEvaluate=r.evaluate}evaluate(e,t){try{return this._innerEvaluate(e,t)}catch(e){let t=e instanceof Error?e.message:String(e),n=`|${t}`;return this._warningHistory[n]||(this._warningHistory[n]=!0,typeof console<`u`&&console.warn(Cs(this._rootKey,``,t,this._defaultValue))),this._defaultValue}}static deserialize(t){return new e(t._parameters,t._rootKey,t._specification)}static serialize(e){return{_parameters:e._parameters,_specification:e._specification,_rootKey:e._rootKey}}};function Ms(e,t,n,r){if(ls(e))return new js(e,t,n);if(Ts(e)){let i=As(e,t,n,r);if(i.result===`error`)throw Error(i.value.map(e=>`${e.key}: ${e.message}`).join(`, `));return i.value}{let t=e;return n.type===`color`&&typeof e==`string`?t=G.parse(e):n.type===`padding`&&(typeof e==`number`||Array.isArray(e))?t=Ti.parse(e):n.type===`numberArray`&&(typeof e==`number`||Array.isArray(e))?t=Ei.parse(e):n.type===`colorArray`&&(typeof e==`string`||Array.isArray(e))?t=Di.parse(e):n.type===`variableAnchorOffsetCollection`&&Array.isArray(e)?t=Ai.parse(e):n.type===`projectionDefinition`&&typeof e==`string`&&(t=Mi.parse(e)),{globalStateRefs:new Set,_globalState:null,kind:`constant`,evaluate:()=>t}}}function Ns(e){let t=null;if(e instanceof ia)t=Ns(e.result);else if(e instanceof fa){for(let n of e.args)if(t=Ns(n),t)break}else(e instanceof Hi||e instanceof Wi)&&e.input instanceof Ko&&e.input.name===`zoom`&&(t=e);return t instanceof Uo||e.eachChild(e=>{let n=Ns(e);n instanceof Uo?t=n:!t&&n?t=new Uo(``,`"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.`):t&&n&&t!==n&&(t=new Uo(``,`Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.`))}),t}function Ps(e,t=new Set){return e instanceof Vo&&t.add(e.key),e.eachChild(e=>{Ps(e,t)}),t}function Fs(e){let t={color:Ar,string:U,number:H,enum:U,boolean:kr,formatted:Fr,padding:Ir,numberArray:Rr,colorArray:Lr,projectionDefinition:jr,resolvedImage:zr,variableAnchorOffsetCollection:Br};return e.type===`array`?Vr(t[e.value]||W,e.length):t[e.type]}function Is(e){if(e.type===`color`&&ls(e.default))return new G(0,0,0,0);switch(e.type){case`color`:return G.parse(e.default)||null;case`padding`:return Ti.parse(e.default)||null;case`numberArray`:return Ei.parse(e.default)||null;case`colorArray`:return Di.parse(e.default)||null;case`variableAnchorOffsetCollection`:return Ai.parse(e.default)||null;case`projectionDefinition`:return Mi.parse(e.default)||null;default:return e.default===void 0?null:e.default}}function Ls(e,t){let{zoom:n,heatmapDensity:r,elevation:i,lineProgress:a,isSupportedScript:o,accumulated:s}=e??{};return{zoom:n,heatmapDensity:r,elevation:i,lineProgress:a,isSupportedScript:o,accumulated:s,globalState:t}}function Rs(e){let t=!1;for(let n of e){let e=zs(n);if(e===`expression`)return`expression`;e===`legacy`&&(t=!0)}return t?`legacy`:`neutral`}function zs(e){if(typeof e==`boolean`)return`neutral`;if(!Array.isArray(e)||e.length===0)return`legacy`;switch(e[0]){case`has`:return e.length<2||e[1]===`$id`||e[1]===`$type`?`legacy`:e.length===2?`neutral`:`expression`;case`in`:return e.length>=3&&(typeof e[1]!=`string`||Array.isArray(e[2]))?`expression`:`legacy`;case`!in`:case`!has`:return`legacy`;case`==`:case`!=`:case`>`:case`>=`:case`<`:case`<=`:return e.length!==3||Array.isArray(e[1])||Array.isArray(e[2])?`expression`:`legacy`;case`none`:return`legacy`;case`any`:case`all`:return Rs(e.slice(1));default:return`expression`}}function Bs(e){return zs(e)!==`legacy`}function Vs(e){return e===`$type`?[`geometry-type`]:e===`$id`?[`id`]:[`get`,e]}function Hs(e){switch(e[0]){case`==`:case`!=`:case`<`:case`<=`:case`>`:case`>=`:return e.length!==3||typeof e[1]!=`string`?null:[e[0],Vs(e[1]),e[2]];case`in`:case`!in`:{if(e.length<2||typeof e[1]!=`string`)return null;let t=[`in`,Vs(e[1]),[`literal`,e.slice(2)]];return e[0]===`!in`?[`!`,t]:t}case`has`:case`!has`:{if(e.length!==2||typeof e[1]!=`string`||e[1]===`$type`||e[1]===`$id`)return null;let t=[`has`,e[1]];return e[0]===`!has`?[`!`,t]:t}default:return null}}function Us(e){if((e[0]===`<`||e[0]===`<=`||e[0]===`>`||e[0]===`>=`)&&e[1]===`$type`)return`"$type" cannot be use with operator "${e[0]}"`;let t=Hs(e);return t?`Mixing deprecated filter syntax with expression syntax is not supported. Replace ${JSON.stringify(e)} with ${JSON.stringify(t)}.`:`Mixing deprecated filter syntax with expression syntax is not supported. Convert ${JSON.stringify(e)} to expression syntax.`}function Ws(e,t,n){let r=n[e];return Array.isArray(r)?Bs(r)?Gs(r,t.concat(e)):{path:t.concat(e),legacyFilter:r}:null}function Gs(e,t=[]){if(!Array.isArray(e)||e.length<1)return null;switch(e[0]){case`all`:case`any`:case`none`:for(let n=1;n<e.length;n++){let r=Ws(n,t,e);if(r)return r}break;case`!`:{let n=Ws(1,t,e);if(n)return n;break}case`case`:for(let n=1;n<e.length-1;n+=2){let r=Ws(n,t,e);if(r)return r}}return null}function Ks(e,t){let n=Gs(e);if(!n||typeof console>`u`)return;let r=n.path.map(e=>`[${e}]`).join(``);console.warn(`${t}${r}: ${Us(n.legacyFilter)}`)}var qs={type:`boolean`,default:!1,transition:!1,"property-type":`data-driven`,expression:{interpolated:!1,parameters:[`zoom`,`feature`]}};function Js(e,t,n){if(e==null)return{filter:()=>!0,needGeometry:!1,getGlobalStateRefs:()=>new Set};Bs(e)?Ks(e,t):e=Zs(e);let r=Es(e,t,qs,n);if(r.result===`error`)throw Error(r.value.map(e=>`${e.key}: ${e.message}`).join(`, `));return{filter:(e,t,n)=>r.value.evaluate(e,t,{},n),needGeometry:Xs(e),getGlobalStateRefs:()=>Ps(r.value.expression)}}function Ys(e,t){return e<t?-1:+(e>t)}function Xs(e){if(!Array.isArray(e))return!1;if(e[0]===`within`||e[0]===`distance`)return!0;for(let t=1;t<e.length;t++)if(Xs(e[t]))return!0;return!1}function Zs(e){if(!e)return!0;let t=e[0];return e.length<=1?t!==`any`:t===`==`?Qs(e[1],e[2],`==`):t===`!=`?nc(Qs(e[1],e[2],`==`)):t===`<`||t===`>`||t===`<=`||t===`>=`?Qs(e[1],e[2],t):t===`any`?$s(e.slice(1)):t===`all`?[`all`].concat(e.slice(1).map(Zs)):t===`none`?[`all`].concat(e.slice(1).map(Zs).map(nc)):t===`in`?ec(e[1],e.slice(2)):t===`!in`?nc(ec(e[1],e.slice(2))):t===`has`?tc(e[1]):t!==`!has`||nc(tc(e[1]))}function Qs(e,t,n){switch(e){case`$type`:return[`filter-type-${n}`,t];case`$id`:return[`filter-id-${n}`,t];default:return[`filter-${n}`,e,t]}}function $s(e){return[`any`].concat(e.map(Zs))}function ec(e,t){if(t.length===0)return!1;switch(e){case`$type`:return[`filter-type-in`,[`literal`,t]];case`$id`:return[`filter-id-in`,[`literal`,t]];default:return t.length>200&&!t.some(e=>typeof e!=typeof t[0])?[`filter-in-large`,e,[`literal`,t.sort(Ys)]]:[`filter-in-small`,e,[`literal`,t]]}}function tc(e){switch(e){case`$type`:return!0;case`$id`:return[`filter-has-id`];default:return[`filter-has`,e]}}function nc(e){return[`!`,e]}function rc(){let e={},t=B.$version;for(let n in B.$root){let r=B.$root[n];if(r.required){let i=null;i=n===`version`?t:r.type===`array`?[]:{},i!=null&&(e[n]=i)}}return e}function ic(e){let t=e.key,n=e.value;return n?[new V(t,n,`constants have been deprecated as of v8`)]:[]}function ac(e){return e instanceof Number||e instanceof String||e instanceof Boolean?e.valueOf():e}function oc(e){if(Array.isArray(e))return e.map(oc);if(e instanceof Object&&!(e instanceof Number||e instanceof String||e instanceof Boolean)){let t={};for(let n in e)t[n]=oc(e[n]);return t}return ac(e)}function sc(e){let t=e.key,n=e.value,r=e.valueSpec||{},i=e.objectElementValidators||{},a=e.style,o=e.styleSpec,s=e.validateSpec,c=[],l=cs(n);if(l!==`object`)return[new V(t,n,`object expected, ${l} found`)];for(let e in n){let l=e.split(`.`)[0],u=fi(r,l)||r[`*`],d;if(fi(i,l))d=i[l];else if(fi(r,l)){if(n[e]===void 0)continue;d=s}else if(i[`*`])d=i[`*`];else if(r[`*`])d=s;else{c.push(new V(t,n[e],`unknown property "${e}"`));continue}c=c.concat(d({key:(t&&`${t}.`)+e,value:n[e],valueSpec:u,style:a,styleSpec:o,object:n,objectKey:e,validateSpec:s},n))}for(let e in r)i[e]||r[e].required&&r[e].default===void 0&&n[e]===void 0&&c.push(new V(t,n,`missing required property "${e}"`));return c}function cc(e){let t=e.value,n=e.valueSpec,r=e.validateSpec,i=e.style,a=e.styleSpec,o=e.key,s=e.arrayElementValidator||r;if(cs(t)!==`array`)return[new V(o,t,`array expected, ${cs(t)} found`)];if(n.length&&t.length!==n.length)return[new V(o,t,`array length ${n.length} expected, length ${t.length} found`)];let c={type:n.value,values:n.values};a.$version<7&&(c.function=n.function),cs(n.value)===`object`&&(c=n.value);let l=[];for(let n=0;n<t.length;n++)l=l.concat(s({array:t,arrayIndex:n,value:t[n],valueSpec:c,validateSpec:e.validateSpec,style:i,styleSpec:a,key:`${o}[${n}]`}));return l}function lc(e){let t=e.key,n=e.value,r=e.valueSpec,i=cs(n);return i===`number`&&n!==n&&(i=`NaN`),i===`number`?`minimum`in r&&n<r.minimum?[new V(t,n,`${n} is less than the minimum value ${r.minimum}`)]:`maximum`in r&&n>r.maximum?[new V(t,n,`${n} is greater than the maximum value ${r.maximum}`)]:[]:[new V(t,n,`number expected, ${i} found`)]}function uc(e){let t=e.valueSpec,n=ac(e.value.type),r,i={},a,o,s=n!==`categorical`&&e.value.property===void 0,c=!s,l=cs(e.value.stops)===`array`&&cs(e.value.stops[0])===`array`&&cs(e.value.stops[0][0])===`object`,u=sc({key:e.key,value:e.value,valueSpec:e.styleSpec.function,validateSpec:e.validateSpec,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{stops:d,default:m}});return n===`identity`&&s&&u.push(new V(e.key,e.value,`missing required property "property"`)),n!==`identity`&&!e.value.stops&&u.push(new V(e.key,e.value,`missing required property "stops"`)),n===`exponential`&&e.valueSpec.expression&&!as(e.valueSpec)&&u.push(new V(e.key,e.value,`exponential functions not supported`)),e.styleSpec.$version>=8&&(c&&!rs(e.valueSpec)?u.push(new V(e.key,e.value,`property functions not supported`)):s&&!is(e.valueSpec)&&u.push(new V(e.key,e.value,`zoom functions not supported`))),(n===`categorical`||l)&&e.value.property===void 0&&u.push(new V(e.key,e.value,`"property" property is required`)),u;function d(e){if(n===`identity`)return[new V(e.key,e.value,`identity function may not have a "stops" property`)];let t=[],r=e.value;return t=t.concat(cc({key:e.key,value:r,valueSpec:e.valueSpec,validateSpec:e.validateSpec,style:e.style,styleSpec:e.styleSpec,arrayElementValidator:f})),cs(r)===`array`&&r.length===0&&t.push(new V(e.key,r,`array must have at least one stop`)),t}function f(e){let n=[],r=e.value,s=e.key;if(cs(r)!==`array`)return[new V(s,r,`array expected, ${cs(r)} found`)];if(r.length!==2)return[new V(s,r,`array length 2 expected, length ${r.length} found`)];if(l){if(cs(r[0])!==`object`)return[new V(s,r,`object expected, ${cs(r[0])} found`)];if(r[0].zoom===void 0)return[new V(s,r,`object stop key must have zoom`)];if(r[0].value===void 0)return[new V(s,r,`object stop key must have value`)];if(o&&o>ac(r[0].zoom))return[new V(s,r[0].zoom,`stop zoom values must appear in ascending order`)];ac(r[0].zoom)!==o&&(o=ac(r[0].zoom),a=void 0,i={}),n=n.concat(sc({key:`${s}[0]`,value:r[0],valueSpec:{zoom:{}},validateSpec:e.validateSpec,style:e.style,styleSpec:e.styleSpec,objectElementValidators:{zoom:lc,value:p}}))}else n=n.concat(p({key:`${s}[0]`,value:r[0],valueSpec:{},validateSpec:e.validateSpec,style:e.style,styleSpec:e.styleSpec},r));return Ts(oc(r[1]))?n.concat([new V(`${s}[1]`,r[1],`expressions are not allowed in function stops.`)]):n.concat(e.validateSpec({key:`${s}[1]`,value:r[1],valueSpec:t,validateSpec:e.validateSpec,style:e.style,styleSpec:e.styleSpec}))}function p(e,o){let s=cs(e.value),c=ac(e.value),l=e.value===null?o:e.value;if(!r)r=s;else if(s!==r)return[new V(e.key,l,`${s} stop domain type must match previous stop domain type ${r}`)];if(s!==`number`&&s!==`string`&&s!==`boolean`)return[new V(e.key,l,`stop domain value must be a number, string, or boolean`)];if(s!==`number`&&n!==`categorical`){let r=`number expected, ${s} found`;return rs(t)&&n===void 0&&(r+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new V(e.key,l,r)]}return n===`categorical`&&s===`number`&&(!isFinite(c)||Math.floor(c)!==c)?[new V(e.key,l,`integer expected, found ${c}`)]:n!==`categorical`&&s===`number`&&a!==void 0&&c<a?[new V(e.key,l,`stop domain values must appear in ascending order`)]:(a=c,n===`categorical`&&c in i?[new V(e.key,l,`stop domain values must be unique`)]:(i[c]=!0,[]))}function m(e){return e.validateSpec({key:e.key,value:e.value,valueSpec:t,validateSpec:e.validateSpec,style:e.style,styleSpec:e.styleSpec})}}function dc(e){let t=(e.expressionContext===`property`?As:Es)(oc(e.value),e.key,e.valueSpec);if(t.result===`error`)return t.value.map(t=>new V(`${e.key}${t.key}`,e.value,t.message));let n=t.value.expression||t.value._styleExpression.expression;if(e.expressionContext===`property`&&e.propertyKey===`text-font`&&!n.outputDefined())return[new V(e.key,e.value,`Invalid data expression for "${e.propertyKey}". Output values must be contained as literals within the expression.`)];if(e.expressionContext===`property`&&e.propertyType===`layout`&&!ts(n))return[new V(e.key,e.value,`"feature-state" data expressions are not supported with layout properties.`)];if(e.expressionContext===`filter`&&!ts(n))return[new V(e.key,e.value,`"feature-state" data expressions are not supported with filters.`)];if(e.expressionContext&&e.expressionContext.indexOf(`cluster`)===0){if(!ns(n,[`zoom`,`feature-state`]))return[new V(e.key,e.value,`"zoom" and "feature-state" expressions are not supported with cluster properties.`)];if(e.expressionContext===`cluster-initial`&&!es(n))return[new V(e.key,e.value,`Feature data expressions are not supported with initial expression part of cluster properties.`)]}return[]}function fc(e){let t=e.value,n=e.key,r=cs(t);return r===`boolean`?[]:[new V(n,t,`boolean expected, ${r} found`)]}function pc(e){let t=e.key,n=e.value,r=cs(n);return r===`string`?G.parse(String(n))?[]:[new V(t,n,`color expected, "${n}" found`)]:[new V(t,n,`color expected, ${r} found`)]}function mc(e){let t=e.key,n=e.value,r=e.valueSpec,i=[];return Array.isArray(r.values)?r.values.indexOf(ac(n))===-1&&i.push(new V(t,n,`expected one of [${r.values.join(`, `)}], ${JSON.stringify(n)} found`)):Object.keys(r.values).indexOf(ac(n))===-1&&i.push(new V(t,n,`expected one of [${Object.keys(r.values).join(`, `)}], ${JSON.stringify(n)} found`)),i}function hc(e,t){let n=e;for(let e of t)n=n[e];return n}function gc(e,t){let n=Gs(t);return n?[new V(`${e.key}${n.path.map(e=>`[${e}]`).join(``)}`,hc(e.value,n.path),Us(n.legacyFilter),null,`warning`)]:[]}function _c(e){let t=oc(e.value);return Bs(t)?[...gc(e,t),...dc(ss({},e,{expressionContext:`filter`,valueSpec:{value:`boolean`}}))]:vc(e)}function vc(e){let t=e.value,n=e.key;if(cs(t)!==`array`)return[new V(n,t,`array expected, ${cs(t)} found`)];let r=e.styleSpec,i,a=[];if(t.length<1)return[new V(n,t,`filter array must have at least 1 element`)];switch(a=a.concat(mc({key:`${n}[0]`,value:t[0],valueSpec:r.filter_operator,style:e.style,styleSpec:e.styleSpec})),ac(t[0])){case`<`:case`<=`:case`>`:case`>=`:t.length>=2&&ac(t[1])===`$type`&&a.push(new V(n,t,`"$type" cannot be use with operator "${t[0]}"`));case`==`:case`!=`:t.length!==3&&a.push(new V(n,t,`filter array for operator "${t[0]}" must have 3 elements`));case`in`:case`!in`:t.length>=2&&(i=cs(t[1]),i!==`string`&&a.push(new V(`${n}[1]`,t[1],`string expected, ${i} found`)));for(let o=2;o<t.length;o++)i=cs(t[o]),ac(t[1])===`$type`?a=a.concat(mc({key:`${n}[${o}]`,value:t[o],valueSpec:r.geometry_type,style:e.style,styleSpec:e.styleSpec})):i!==`string`&&i!==`number`&&i!==`boolean`&&a.push(new V(`${n}[${o}]`,t[o],`string, number, or boolean expected, ${i} found`));break;case`any`:case`all`:case`none`:for(let r=1;r<t.length;r++)a=a.concat(vc({key:`${n}[${r}]`,value:t[r],style:e.style,styleSpec:e.styleSpec}));break;case`has`:case`!has`:i=cs(t[1]),t.length===2?i!==`string`&&a.push(new V(`${n}[1]`,t[1],`string expected, ${i} found`)):a.push(new V(n,t,`filter array for "${t[0]}" operator must have 2 elements`))}return a}function yc(e,t){let n=e.key,r=e.validateSpec,i=e.style,a=e.styleSpec,o=e.value,s=e.objectKey,c=a[`${t}_${e.layerType}`];if(!c)return[];let l=s.match(os);if(t===`paint`&&l&&c[l[1]]&&c[l[1]].transition)return r({key:n,value:o,valueSpec:a.transition,style:i,styleSpec:a});let u=e.valueSpec||c[s];if(!u)return[new V(n,o,`unknown property "${s}"`)];let d;if(cs(o)===`string`&&rs(u)&&!u.tokens&&(d=/^{([^}]+)}$/.exec(o)))return[new V(n,o,`"${s}" does not support interpolation syntax\nUse an identity property function instead: \`{ "type": "identity", "property": ${JSON.stringify(d[1])} }\`.`)];let f=[];return e.layerType===`symbol`&&s===`text-font`&&ls(oc(o))&&ac(o.type)===`identity`&&f.push(new V(n,o,`"text-font" does not support identity functions`)),f.concat(r({key:e.key,value:o,valueSpec:u,style:i,styleSpec:a,expressionContext:`property`,propertyType:t,propertyKey:s}))}function bc(e){return yc(e,`paint`)}function xc(e){return yc(e,`layout`)}function Sc(e){let t=[],n=e.value,r=e.key,i=e.style,a=e.styleSpec;if(cs(n)!==`object`)return[new V(r,n,`object expected, ${cs(n)} found`)];!n.type&&!n.ref&&t.push(new V(r,n,`either "type" or "ref" is required`));let o=ac(n.type),s=ac(n.ref);if(n.id){let a=ac(n.id);for(let o=0;o<e.arrayIndex;o++){let e=i.layers[o];ac(e.id)===a&&t.push(new V(r,n.id,`duplicate layer id "${n.id}", previously used at line ${e.id.__line__}`))}}if(`ref`in n){[`type`,`source`,`source-layer`,`filter`,`layout`].forEach(e=>{e in n&&t.push(new V(r,n[e],`"${e}" is prohibited for ref layers`))});let e;i.layers.forEach(t=>{ac(t.id)===s&&(e=t)}),e?e.ref?t.push(new V(r,n.ref,`ref cannot reference another ref layer`)):o=ac(e.type):t.push(new V(r,n.ref,`ref layer "${s}" not found`))}else if(o!==`background`){if(!n.source)t.push(new V(r,n,`missing required property "source"`));else{let e=i.sources&&i.sources[n.source],a=e&&ac(e.type);e?a===`vector`&&o===`raster`?t.push(new V(r,n.source,`layer "${n.id}" requires a raster source`)):a!==`raster-dem`&&o===`hillshade`||a!==`raster-dem`&&o===`color-relief`?t.push(new V(r,n.source,`layer "${n.id}" requires a raster-dem source`)):a===`raster`&&o!==`raster`?t.push(new V(r,n.source,`layer "${n.id}" requires a vector source`)):a===`vector`&&!n[`source-layer`]?t.push(new V(r,n,`layer "${n.id}" must specify a "source-layer"`)):a===`raster-dem`&&o!==`hillshade`&&o!==`color-relief`?t.push(new V(r,n.source,`raster-dem source can only be used with layer type 'hillshade' or 'color-relief'.`)):o===`line`&&n.paint&&n.paint[`line-gradient`]&&(a!==`geojson`||!e.lineMetrics)&&t.push(new V(r,n,`layer "${n.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):t.push(new V(r,n.source,`source "${n.source}" not found`))}}return o===`raster`&&n.paint?.resampling&&n.paint?.[`raster-resampling`]&&t.push(new V(r,n.paint,`layer "${n.id}" redundantly specifies "resampling" and "raster-resampling" paint properties, but only one is allowed. It is advised to use "resampling".`)),t=t.concat(sc({key:r,value:n,valueSpec:a.layer,style:e.style,styleSpec:e.styleSpec,validateSpec:e.validateSpec,objectElementValidators:{"*"(){return[]},type(){return e.validateSpec({key:`${r}.type`,value:n.type,valueSpec:a.layer.type,style:e.style,styleSpec:e.styleSpec,validateSpec:e.validateSpec,object:n,objectKey:`type`})},filter:_c,layout(e){return sc({layer:n,key:e.key,value:e.value,style:e.style,styleSpec:e.styleSpec,validateSpec:e.validateSpec,objectElementValidators:{"*"(e){return xc(ss({layerType:o},e))}}})},paint(e){return sc({layer:n,key:e.key,value:e.value,style:e.style,styleSpec:e.styleSpec,validateSpec:e.validateSpec,objectElementValidators:{"*"(e){return bc(ss({layerType:o},e))}}})}}})),t}function Cc(e){let t=e.value,n=e.key,r=cs(t);return r===`string`?[]:[new V(n,t,`string expected, ${r} found`)]}function wc(e){let t=e.sourceName??``,n=e.value,r=e.styleSpec,i=r.source_raster_dem,a=e.style,o=[],s=cs(n);if(n===void 0)return o;if(s!==`object`)return o.push(new V(`source_raster_dem`,n,`object expected, ${s} found`)),o;let c=ac(n.encoding)===`custom`,l=[`redFactor`,`greenFactor`,`blueFactor`,`baseShift`],u=e.value.encoding?`"${e.value.encoding}"`:`Default`;for(let s in n)!c&&l.includes(s)?o.push(new V(s,n[s],`In "${t}": "${s}" is only valid when "encoding" is set to "custom". ${u} encoding found`)):i[s]?o=o.concat(e.validateSpec({key:s,value:n[s],valueSpec:i[s],validateSpec:e.validateSpec,style:a,styleSpec:r})):o.push(new V(s,n[s],`unknown property "${s}"`));return o}var Tc={promoteId:Dc};function Ec(e){let t=e.value,n=e.key,r=e.styleSpec,i=e.style,a=e.validateSpec;if(!t.type)return[new V(n,t,`"type" is required`)];let o=ac(t.type),s;switch(o){case`vector`:case`raster`:return s=sc({key:n,value:t,valueSpec:r[`source_${o.replace(`-`,`_`)}`],style:e.style,styleSpec:r,objectElementValidators:Tc,validateSpec:a}),s;case`raster-dem`:return s=wc({sourceName:n,value:t,style:e.style,styleSpec:r,validateSpec:a}),s;case`geojson`:if(s=sc({key:n,value:t,valueSpec:r.source_geojson,style:i,styleSpec:r,validateSpec:a,objectElementValidators:Tc}),t.cluster)for(let e in t.clusterProperties){let[r,i]=t.clusterProperties[e],o=typeof r==`string`?[r,[`accumulated`],[`get`,e]]:r;s.push(...dc({key:`${n}.${e}.map`,value:i,validateSpec:a,expressionContext:`cluster-map`})),s.push(...dc({key:`${n}.${e}.reduce`,value:o,validateSpec:a,expressionContext:`cluster-reduce`}))}return s;case`video`:return sc({key:n,value:t,valueSpec:r.source_video,style:i,validateSpec:a,styleSpec:r});case`image`:return sc({key:n,value:t,valueSpec:r.source_image,style:i,validateSpec:a,styleSpec:r});case`canvas`:return[new V(n,null,`Please use runtime APIs to add canvas sources, rather than including them in stylesheets.`,`source.canvas`)];default:return mc({key:`${n}.type`,value:t.type,valueSpec:{values:[`vector`,`raster`,`raster-dem`,`geojson`,`video`,`image`]},style:i,validateSpec:a,styleSpec:r})}}function Dc({key:e,value:t}){if(cs(t)===`string`)return Cc({key:e,value:t});{let n=[];for(let r in t)n.push(...Cc({key:`${e}.${r}`,value:t[r]}));return n}}function Oc(e){let t=e.value,n=e.styleSpec,r=n.light,i=e.style,a=[],o=cs(t);if(t===void 0)return a;if(o!==`object`)return a=a.concat([new V(`light`,t,`object expected, ${o} found`)]),a;for(let o in t){let s=o.match(os);a=s&&r[s[1]]&&r[s[1]].transition?a.concat(e.validateSpec({key:o,value:t[o],valueSpec:n.transition,validateSpec:e.validateSpec,style:i,styleSpec:n})):r[o]?a.concat(e.validateSpec({key:o,value:t[o],valueSpec:r[o],validateSpec:e.validateSpec,style:i,styleSpec:n})):a.concat([new V(o,t[o],`unknown property "${o}"`)])}return a}function kc(e){let t=e.value,n=e.styleSpec,r=n.sky,i=e.style,a=cs(t);if(t===void 0)return[];if(a!==`object`)return[new V(`sky`,t,`object expected, ${a} found`)];let o=[];for(let a in t){let s=a.match(os);o=s&&r[s[1]]&&r[s[1]].transition?o.concat(e.validateSpec({key:a,value:t[a],valueSpec:n.transition,style:i,styleSpec:n})):r[a]?o.concat(e.validateSpec({key:a,value:t[a],valueSpec:r[a],style:i,styleSpec:n})):o.concat([new V(a,t[a],`unknown property "${a}"`)])}return o}function Ac(e){let t=e.value,n=e.styleSpec,r=n.terrain,i=e.style,a=[],o=cs(t);if(t===void 0)return a;if(o!==`object`)return a=a.concat([new V(`terrain`,t,`object expected, ${o} found`)]),a;for(let o in t)a=r[o]?a.concat(e.validateSpec({key:o,value:t[o],valueSpec:r[o],validateSpec:e.validateSpec,style:i,styleSpec:n})):a.concat([new V(o,t[o],`unknown property "${o}"`)]);return a}function jc(e){return Cc(e).length===0?[]:dc(e)}function Mc(e){return Cc(e).length===0?[]:dc(e)}function Nc(e){let t=e.key,n=e.value;if(cs(n)===`array`){if(n.length<1||n.length>4)return[new V(t,n,`padding requires 1 to 4 values; ${n.length} values found`)];let r={type:`number`},i=[];for(let a=0;a<n.length;a++)i=i.concat(e.validateSpec({key:`${t}[${a}]`,value:n[a],validateSpec:e.validateSpec,valueSpec:r}));return i}return lc({key:t,value:n,valueSpec:{}})}function Pc(e){let t=e.key,n=e.value;if(cs(n)===`array`){let r={type:`number`};if(n.length<1)return[new V(t,n,`array length at least 1 expected, length 0 found`)];let i=[];for(let a=0;a<n.length;a++)i=i.concat(e.validateSpec({key:`${t}[${a}]`,value:n[a],validateSpec:e.validateSpec,valueSpec:r}));return i}return lc({key:t,value:n,valueSpec:{}})}function Fc(e){let t=e.key,n=e.value;if(cs(n)===`array`){if(n.length<1)return[new V(t,n,`array length at least 1 expected, length 0 found`)];let e=[];for(let r=0;r<n.length;r++)e=e.concat(pc({key:`${t}[${r}]`,value:n[r],valueSpec:{}}));return e}return pc({key:t,value:n,valueSpec:{}})}function Ic(e){let t=e.key,n=e.value,r=cs(n),i=e.styleSpec;if(r!==`array`||n.length<1||n.length%2!=0)return[new V(t,n,`variableAnchorOffsetCollection requires a non-empty array of even length`)];let a=[];for(let r=0;r<n.length;r+=2)a=a.concat(mc({key:`${t}[${r}]`,value:n[r],valueSpec:i.layout_symbol[`text-anchor`]})),a=a.concat(cc({key:`${t}[${r+1}]`,value:n[r+1],valueSpec:{length:2,value:`number`},validateSpec:e.validateSpec,style:e.style,styleSpec:i}));return a}function Lc(e){let t=[],n=e.value,r=e.key;if(Array.isArray(n)){let i=[],a=[];for(let o in n)n[o].id&&i.includes(n[o].id)&&t.push(new V(r,n,`all the sprites' ids must be unique, but ${n[o].id} is duplicated`)),i.push(n[o].id),n[o].url&&a.includes(n[o].url)&&t.push(new V(r,n,`all the sprites' URLs must be unique, but ${n[o].url} is duplicated`)),a.push(n[o].url),t=t.concat(sc({key:`${r}[${o}]`,value:n[o],valueSpec:{id:{type:`string`,required:!0},url:{type:`string`,required:!0}},validateSpec:e.validateSpec}));return t}return Cc({key:r,value:n})}function Rc(e){let t=e.value,n=e.styleSpec,r=n.projection,i=e.style,a=cs(t);if(t===void 0)return[];if(a!==`object`)return[new V(`projection`,t,`object expected, ${a} found`)];let o=[];for(let a in t)o=r[a]?o.concat(e.validateSpec({key:a,value:t[a],valueSpec:r[a],style:i,styleSpec:n})):o.concat([new V(a,t[a],`unknown property "${a}"`)]);return o}function zc(e){let t=e.key,n=e.value;n=n instanceof String?n.valueOf():n;let r=cs(n);return r===`array`&&!Vc(n)&&!Bc(n)?[new V(t,n,`projection expected, invalid array ${JSON.stringify(n)} found`)]:[`array`,`string`].includes(r)?[]:[new V(t,n,`projection expected, invalid type "${r}" found`)]}function Bc(e){return!![`interpolate`,`step`,`literal`].includes(e[0])}function Vc(e){return Array.isArray(e)&&e.length===3&&typeof e[0]==`string`&&typeof e[1]==`string`&&typeof e[2]==`number`}function Hc(e){return!!e&&e.constructor===Object}function Uc(e){return Hc(e.value)?[]:[new V(e.key,e.value,`object expected, ${cs(e.value)} found`)]}var Wc=1114111,Gc=/^u\+(?:([0-9a-f]{1,6})(?:-([0-9a-f]{1,6}))?|([0-9a-f]{0,5}\?{1,6}))$/i;function Kc(e,t){if(cs(t)!==`string`)return[];let n=`${t}`,r=()=>[new V(e,t,`invalid unicode range, expected a value such as "U+26", "U+0-10FFFF" or "U+4??"`)],i=n.match(Gc);if(!i)return r();let[,a,o,s]=i;if(s!==void 0)return s.length>6?r():[];let c=parseInt(a,16),l=o===void 0?c:parseInt(o,16);return c>Wc||l>Wc?[new V(e,t,`unicode range is out of bounds, the maximum code point is U+10FFFF`)]:c>l?[new V(e,t,`unicode range start must not be greater than its end, but ${n} is`)]:[]}function qc(e){let t=e.key??`font-faces`,n=e.value,r=e.validateSpec,i=e.styleSpec??dr,a=e.style;if(!Hc(n))return[new V(t,n,`object expected, ${cs(n)} found`)];let o=[];for(let e in n){let s=n[e],c=cs(s);if(c===`string`)o.push(...Cc({key:`${t}.${e}`,value:s}));else if(c===`array`){let n={url:{type:`string`,required:!0},"unicode-range":{type:`array`,value:`string`}};for(let[c,l]of s.entries()){let s=`${t}.${e}[${c}]`;o.push(...sc({key:s,value:l,valueSpec:n,styleSpec:i,style:a,validateSpec:r}));let u=Hc(l)?l[`unicode-range`]:void 0;if(cs(u)===`array`)for(let[e,t]of u.entries())o.push(...Kc(`${s}.unicode-range[${e}]`,t))}}else o.push(new V(`${t}.${e}`,s,`string or array expected, ${c} found`))}return o}var Jc={"*"(){return[]},array:cc,boolean:fc,number:lc,color:pc,constants:ic,enum:mc,filter:_c,function:uc,layer:Sc,object:sc,source:Ec,light:Oc,sky:kc,terrain:Ac,projection:Rc,projectionDefinition:zc,string:Cc,formatted:jc,resolvedImage:Mc,padding:Nc,numberArray:Pc,colorArray:Fc,variableAnchorOffsetCollection:Ic,sprite:Lc,state:Uc,fontFaces:qc};function Yc(e){let t=e.value,n=e.valueSpec,r=e.styleSpec;return e.validateSpec=Yc,n.expression&&ls(ac(t))?uc(e):n.expression&&Ts(oc(t))?dc(e):n.type&&Jc[n.type]?Jc[n.type](e):sc(ss({},e,{valueSpec:n.type?r[n.type]:n}))}function Xc(e){let t=e.value,n=e.key,r=Cc(e);return r.length||(t.indexOf(`{fontstack}`)===-1&&r.push(new V(n,t,`"glyphs" url must include a "{fontstack}" token`)),t.indexOf(`{range}`)===-1&&r.push(new V(n,t,`"glyphs" url must include a "{range}" token`))),r}function Zc(e,t=B){let n=[];return n=n.concat(Yc({key:``,value:e,valueSpec:t.$root,styleSpec:t,style:e,validateSpec:Yc,objectElementValidators:{glyphs:Xc,"*"(){return[]}}})),e.constants&&(n=n.concat(ic({key:`constants`,value:e.constants,style:e,styleSpec:t,validateSpec:Yc}))),$c(n)}Zc.source=el(Qc(Ec)),Zc.sprite=el(Qc(Lc)),Zc.glyphs=el(Qc(Xc)),Zc.fontFaces=el(Qc(qc)),Zc.light=el(Qc(Oc)),Zc.sky=el(Qc(kc)),Zc.terrain=el(Qc(Ac)),Zc.state=el(Qc(Uc)),Zc.layer=el(Qc(Sc)),Zc.filter=el(Qc(_c)),Zc.paintProperty=el(Qc(bc)),Zc.layoutProperty=el(Qc(xc));function Qc(e){return function(t){return e(Object.assign({},t,{validateSpec:Yc}))}}function $c(e){return[].concat(e).sort((e,t)=>e.line-t.line)}function el(e){return function(...t){return $c(e.apply(this,t))}}var tl={type:`enum`,"property-type":`data-constant`,expression:{interpolated:!1,parameters:[`global-state`]},values:{visible:{},none:{}},transition:!1,default:`visible`},nl=class{constructor(e,t,n){this._rootKey=t,this._globalState=n,this.setValue(e)}evaluate(){return this._literalValue??this._compiledValue.evaluate({})}setValue(e){if(e==null||e===`visible`||e===`none`){this._literalValue=e===`none`?`none`:`visible`,this._compiledValue=void 0,this._globalStateRefs=new Set;return}let t=Es(e,this._rootKey,tl,this._globalState);if(t.result===`error`)throw this._literalValue=`visible`,this._compiledValue=void 0,Error(t.value.map(e=>`${e.key}: ${e.message}`).join(`, `));this._literalValue=void 0,this._compiledValue=t.value,this._globalStateRefs=Ps(t.value.expression)}getGlobalStateRefs(){return this._globalStateRefs}};function rl(e,t,n){return new nl(e,t,n)}var il=Zc,al=new Set(Object.keys(B).filter(e=>e.startsWith(`source_`)).map(e=>e.slice(7).replaceAll(`_`,`-`)));function ol(e){return Object.entries(e.sources??{}).filter(([,e])=>!al.has(e.type)).map(([e])=>`sources.${e}`)}function sl(e,t){let n=ol(t);return cl(e,il(t).filter(({message:e})=>!n.some(t=>e.startsWith(`${t}:`)||e.startsWith(`${t}.`))))}function cl(e,t){let n=!1;for(let r of t)r.severity===`warning`?I(r.message):(e.fire(new R(Error(r.message))),n=!0);return n}function ll(e,t,n,r){return r?.validate!==!1&&cl(e,t({styleSpec:B,...n}))}var ul=class e{constructor(e,t,n){let r=this.cells=[];if(e instanceof ArrayBuffer){this.arrayBuffer=e;let i=new Int32Array(this.arrayBuffer);e=i[0],t=i[1],n=i[2],this.d=t+2*n;for(let e=0;e<this.d*this.d;e++){let t=i[3+e],n=i[3+e+1];r.push(t===n?null:i.subarray(t,n))}let a=i[3+r.length],o=i[3+r.length+1];this.keys=i.subarray(a,o),this.bboxes=i.subarray(o),this.insert=this._insertReadonly}else{this.d=t+2*n;for(let e=0;e<this.d*this.d;e++)r.push([]);this.keys=[],this.bboxes=[]}this.n=t,this.extent=e,this.padding=n,this.scale=t/e,this.uid=0;let i=n/t*e;this.min=-i,this.max=e+i}insert(e,t,n,r,i){this._forEachCell(t,n,r,i,this._insertCell,this.uid++,void 0,void 0),this.keys.push(e),this.bboxes.push(t),this.bboxes.push(n),this.bboxes.push(r),this.bboxes.push(i)}_insertReadonly(){throw Error(`Cannot insert into a GridIndex created from an ArrayBuffer.`)}_insertCell(e,t,n,r,i,a){this.cells[i].push(a)}query(e,t,n,r,i){let a=this.min,o=this.max;if(e<=a&&t<=a&&o<=n&&o<=r&&!i)return[...this.keys];{let a=[];return this._forEachCell(e,t,n,r,this._queryCell,a,{},i),a}}_queryCell(e,t,n,r,i,a,o,s){let c=this.cells[i];if(c!==null){let i=this.keys,l=this.bboxes;for(let u of c)if(o[u]===void 0){let c=u*4;(s?s(l[c+0],l[c+1],l[c+2],l[c+3]):e<=l[c+2]&&t<=l[c+3]&&n>=l[c+0]&&r>=l[c+1])?(o[u]=!0,a.push(i[u])):o[u]=!1}}}_forEachCell(e,t,n,r,i,a,o,s){let c=this._convertToCellCoord(e),l=this._convertToCellCoord(t),u=this._convertToCellCoord(n),d=this._convertToCellCoord(r);for(let f=c;f<=u;f++)for(let c=l;c<=d;c++){let l=this.d*c+f;if((!s||s(this._convertFromCellCoord(f),this._convertFromCellCoord(c),this._convertFromCellCoord(f+1),this._convertFromCellCoord(c+1)))&&i.call(this,e,t,n,r,l,a,o,s))return}}_convertFromCellCoord(e){return(e-this.padding)/this.scale}_convertToCellCoord(e){return Math.max(0,Math.min(this.d-1,Math.floor(e*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;let e=this.cells,t=3+this.cells.length+1+1,n=0;for(let e of this.cells)n+=e.length;let r=new Int32Array(t+n+this.keys.length+this.bboxes.length);r[0]=this.extent,r[1]=this.n,r[2]=this.padding;let i=t;for(let t=0;t<e.length;t++){let n=e[t];r[3+t]=i,r.set(n,i),i+=n.length}return r[3+e.length]=i,r.set(this.keys,i),i+=this.keys.length,r[3+e.length+1]=i,r.set(this.bboxes,i),i+=this.bboxes.length,r.buffer}static serialize(e,t){let n=e.toArrayBuffer();return t&&t.push(n),{buffer:n}}static deserialize(t){return new e(t.buffer)}},dl={};function K(e,t,n={}){if(dl[e])throw Error(`${e} is already registered.`);Object.defineProperty(t,"_classRegistryKey",{value:e,writeable:!1}),dl[e]={klass:t,omit:n.omit||[],shallow:n.shallow||[]}}K(`Object`,Object),K(`Set`,Set),K(`TransferableGridIndex`,ul),K(`Color`,G),K(`Error`,Error),K(`AJAXError`,Ln),K(`ResolvedImage`,ji),K(`StylePropertyFunction`,js),K(`StyleExpression`,Ss,{omit:[`_evaluator`]}),K(`ZoomDependentExpression`,Os),K(`ZoomConstantExpression`,Ds),K(`CompoundExpression`,Ko,{omit:[`_evaluate`]});for(let e in Ho)Ho[e]._classRegistryKey||K(`Expression_${e}`,Ho[e]);function fl(e){return e&&typeof ArrayBuffer<`u`&&(e instanceof ArrayBuffer||e.constructor?.name===`ArrayBuffer`)}function pl(e){let t=e.constructor;return e.$name||t._classRegistryKey}function ml(e){if(typeof e!=`object`||!e)return!1;let t=pl(e);return t&&t!==`Object`}function hl(e){return!ml(e)&&(e==null||typeof e==`boolean`||typeof e==`number`||typeof e==`string`||e instanceof Boolean||e instanceof Number||e instanceof String||e instanceof Date||e instanceof RegExp||e instanceof Blob||e instanceof Error||fl(e)||Jt(e)||ArrayBuffer.isView(e)||e instanceof ImageData)}function gl(e,t){if(hl(e))return(fl(e)||Jt(e))&&t&&t.push(e),ArrayBuffer.isView(e)&&t&&t.push(e.buffer),e instanceof ImageData&&t&&t.push(e.data.buffer),e;if(Array.isArray(e)){let n=[];for(let r of e)n.push(gl(r,t));return n}if(typeof e!=`object`)throw Error(`can't serialize object of type ${typeof e}`);let n=pl(e);if(!n)throw Error(`can't serialize object of unregistered class ${e.constructor.name}`);if(!dl[n])throw Error(`${n} is not registered.`);let{klass:r}=dl[n],i=r.serialize?r.serialize(e,t):{};if(!r.serialize){for(let r in e){if(!e.hasOwnProperty(r)||dl[n].omit.includes(r))continue;let a=e[r];a!==void 0&&(i[r]=dl[n].shallow.includes(r)?a:gl(a,t))}e instanceof Error&&(i.message=e.message)}else if(i===t?.[t.length-1])throw Error(`statically serialized object won't survive transfer of $name property`);if(i.$name)throw Error(`$name property is reserved for worker serialization logic.`);return n!==`Object`&&(i.$name=n),i}function _l(e){if(hl(e))return e;if(Array.isArray(e))return e.map(_l);if(typeof e!=`object`)throw Error(`can't deserialize object of type ${typeof e}`);let t=pl(e)||`Object`;if(!dl[t])throw Error(`can't deserialize unregistered class ${t}`);let{klass:n}=dl[t];if(!n)throw Error(`can't deserialize unregistered class ${t}`);if(n.deserialize)return n.deserialize(e);let r=Object.create(n.prototype);for(let n of Object.keys(e)){if(n===`$name`)continue;let i=e[n];r[n]=dl[t].shallow.includes(n)?i:_l(i)}return r}var vl=class{constructor(){this.first=!0}update(e,t){let n=Math.floor(e);return this.first?(this.first=!1,this.lastIntegerZoom=n,this.lastIntegerZoomTime=0,this.lastZoom=e,this.lastFloorZoom=n,!0):(this.lastFloorZoom>n?(this.lastIntegerZoom=n+1,this.lastIntegerZoomTime=t):this.lastFloorZoom<n&&(this.lastIntegerZoom=n,this.lastIntegerZoomTime=t),e!==this.lastZoom&&(this.lastZoom=e,this.lastFloorZoom=n,!0))}},yl=class{constructor(e,t){this.zoom=e,t?(this.now=t.now||0,this.fadeDuration=t.fadeDuration||0,this.zoomHistory=t.zoomHistory||new vl,this.transition=t.transition||{}):(this.now=0,this.fadeDuration=0,this.zoomHistory=new vl,this.transition={})}crossFadingFactor(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){let e=this.zoom,t=e-Math.floor(e),n=this.crossFadingFactor();return e>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:t+(1-t)*n}:{fromScale:.5,toScale:1,t:1-(1-n)*t}}},bl=class{constructor(e,t,n,r){this.property=e,this.value=t,this.expression=Ms(t===void 0?e.specification.default:t,n,e.specification,r)}isDataDriven(){return this.expression.kind===`source`||this.expression.kind===`composite`}getGlobalStateRefs(){return this.expression.globalStateRefs||new Set}readsGlobalState(e){let t=this.getGlobalStateRefs();return e.some(e=>t.has(e))}possiblyEvaluate(e,t,n){return this.property.possiblyEvaluate(this,e,t,n)}},xl=class{constructor(e,t,n){this.property=e,this.value=new bl(e,void 0,t,n)}transitioned(e,t){return t.value===this.value?t:new Cl(this.property,this.value,t,F({},e.transition,this.transition),e.now)}untransitioned(){return new Cl(this.property,this.value,null,{},0)}},Sl=class{constructor(e,t,n){this._properties=e,this._values=Object.create(e.defaultTransitionablePropertyValues),this._globalState=n,this._rootKey=t}_propertyRootKey(e){return`${this._rootKey}.${String(e)}`}hasProperty(e){return e in this._properties.defaultTransitionablePropertyValues}getValue(e){return zt(this._values[e].value.value)}setValue(e,t){Object.hasOwn(this._values,e)||(this._values[e]=new xl(this._values[e].property,this._propertyRootKey(e),this._globalState)),this._values[e].value=new bl(this._values[e].property,t===null?void 0:zt(t),this._propertyRootKey(e),this._globalState)}setValues(e){for(let t in e){let n=e[t];t.endsWith(`-transition`)?this.setTransition(t.slice(0,-11),n):Rt(this._values[t].value.value,n)||this.setValue(t,n)}}getTransition(e){return zt(this._values[e].transition)}setTransition(e,t){Object.hasOwn(this._values,e)||(this._values[e]=new xl(this._values[e].property,this._propertyRootKey(e),this._globalState)),this._values[e].transition=zt(t)||void 0}retainPriorGlobalState(e,t,n){for(let r of Object.keys(n._values))for(let i=n._values[r];i;i=i.prior){let{value:n}=i;n.property.specification.transition&&!n.isDataDriven()&&n.expression._globalState===this._globalState&&n.readsGlobalState(e)&&(i.value=new bl(n.property,n.value,this._propertyRootKey(r),t))}}applyGlobalStateChange(e,t,n,r){this.retainPriorGlobalState(e,t,n);let i=!1;for(let t of Object.keys(this._values)){let{value:n}=this._values[t];n.readsGlobalState(e)&&(this.setValue(t,n.value),i=!0)}return i?this.transitioned(r,n):n}serialize(){let e={};for(let t of Object.keys(this._values)){let n=this.getValue(t);n!==void 0&&(e[t]=n);let r=this.getTransition(t);r!==void 0&&(e[`${t}-transition`]=r)}return e}transitioned(e,t){let n=new wl(this._properties);for(let r of Object.keys(this._values))n._values[r]=this._values[r].transitioned(e,t._values[r]);return n}untransitioned(){let e=new wl(this._properties);for(let t of Object.keys(this._values))e._values[t]=this._values[t].untransitioned();return e}},Cl=class{constructor(e,t,n,r,i){this.property=e,this.value=t,this.begin=i+r.delay||0,this.end=this.begin+r.duration||0,e.specification.transition&&(r.delay||r.duration)&&(this.prior=n)}possiblyEvaluate(e,t,n){let r=e.now||0,i=this.value.possiblyEvaluate(e,t,n),a=this.prior;if(!a)return i;if(r>this.end||this.value.isDataDriven())return this.prior=null,i;if(r<this.begin)return a.possiblyEvaluate(e,t,n);{let o=(r-this.begin)/(this.end-this.begin);return this.property.interpolate(a.possiblyEvaluate(e,t,n),i,wt(o))}}},wl=class{constructor(e){this._properties=e,this._values=Object.create(e.defaultTransitioningPropertyValues)}possiblyEvaluate(e,t,n){let r=new Dl(this._properties);for(let i of Object.keys(this._values))r._values[i]=this._values[i].possiblyEvaluate(e,t,n);return r}hasTransition(){for(let e of Object.keys(this._values))if(this._values[e].prior)return!0;return!1}},Tl=class{constructor(e,t,n){this._properties=e,this._values=Object.create(e.defaultPropertyValues),this._globalState=n,this._rootKey=t}_propertyRootKey(e){return`${this._rootKey}.${String(e)}`}hasValue(e){return this._values[e].value!==void 0}hasProperty(e){return e in this._properties.defaultPropertyValues}getValue(e){return zt(this._values[e].value)}setValue(e,t){this._values[e]=new bl(this._values[e].property,t===null?void 0:zt(t),this._propertyRootKey(e),this._globalState)}serialize(){let e={};for(let t of Object.keys(this._values)){let n=this.getValue(t);n!==void 0&&(e[t]=n)}return e}possiblyEvaluate(e,t,n){let r=new Dl(this._properties);for(let i of Object.keys(this._values))r._values[i]=this._values[i].possiblyEvaluate(e,t,n);return r}},El=class{constructor(e,t,n){this.property=e,this.value=t,this.parameters=n}isConstant(){return this.value.kind===`constant`}constantOr(e){return this.value.kind===`constant`?this.value.value:e}evaluate(e,t,n,r){return this.property.evaluate(this.value,this.parameters,e,t,n,r)}},Dl=class{constructor(e){this._properties=e,this._values=Object.create(e.defaultPossiblyEvaluatedValues)}get(e){return this._values[e]}};function Ol(e){if(Array.isArray(e))return e.length;let t=e?.values;return Array.isArray(t)?t.length:void 0}function kl(e,t){let n=Ol(e),r=Ol(t);return n!==void 0&&r!==void 0&&n!==r}var q=class{constructor(e,t){this.specification=e,this.name=t}possiblyEvaluate(e,t){if(e.isDataDriven())throw Error(`Value should not be data driven`);return e.expression.evaluate(t)}interpolate(e,t,n){if(kl(e,t))return I(`Property "${this.name}" is trying to interpolate arrays of different lengths. Rendering may 'jump'.`),t;let r=Ki[this.specification.type];return r?r(e,t,n):e}},J=class{constructor(e,t,n){this.specification=e,this.name=t,this.overrides=n}possiblyEvaluate(e,t,n,r){return e.expression.kind===`constant`||e.expression.kind===`camera`?new El(this,{kind:`constant`,value:e.expression.evaluate(t,null,{},n,r)},t):new El(this,e.expression,t)}interpolate(e,t,n){if(e.value.kind!==`constant`||t.value.kind!==`constant`)return e;if(e.value.value===void 0||t.value.value===void 0)return new El(this,{kind:`constant`,value:void 0},e.parameters);if(kl(e.value.value,t.value.value))return I(`Property "${this.name}" is trying to interpolate arrays of different lengths. Rendering may 'jump'.`),t;let r=Ki[this.specification.type];if(r){let i=r(e.value.value,t.value.value,n);return new El(this,{kind:`constant`,value:i},e.parameters)}return e}evaluate(e,t,n,r,i,a){return e.kind===`constant`?e.value:e.evaluate(t,n,r,i,a)}},Al=class extends J{possiblyEvaluate(e,t,n,r){if(e.value===void 0)return new El(this,{kind:`constant`,value:void 0},t);if(e.expression.kind===`constant`){let i=e.expression.evaluate(t,null,{},n,r),a=e.property.specification.type===`resolvedImage`&&typeof i!=`string`?i.name:i,o=this._calculate(a,a,a,t);return new El(this,{kind:`constant`,value:o},t)}if(e.expression.kind===`camera`){let n=this._calculate(e.expression.evaluate({zoom:t.zoom-1}),e.expression.evaluate({zoom:t.zoom}),e.expression.evaluate({zoom:t.zoom+1}),t);return new El(this,{kind:`constant`,value:n},t)}return new El(this,e.expression,t)}evaluate(e,t,n,r,i,a){if(e.kind===`source`){let o=e.evaluate(t,n,r,i,a);return this._calculate(o,o,o,t)}return e.kind===`composite`?this._calculate(e.evaluate({zoom:Math.floor(t.zoom)-1},n,r),e.evaluate({zoom:Math.floor(t.zoom)},n,r),e.evaluate({zoom:Math.floor(t.zoom)+1},n,r),t):e.value}_calculate(e,t,n,r){return r.zoom>r.zoomHistory.lastIntegerZoom?{from:e,to:t}:{from:n,to:t}}interpolate(e){return e}},jl=class{constructor(e,t){this.specification=e,this.name=t}possiblyEvaluate(e,t,n,r){if(e.value!==void 0){if(e.expression.kind===`constant`){let i=e.expression.evaluate(t,null,{},n,r);return this._calculate(i,i,i,t)}return this._calculate(e.expression.evaluate(new yl(Math.floor(t.zoom-1),t)),e.expression.evaluate(new yl(Math.floor(t.zoom),t)),e.expression.evaluate(new yl(Math.floor(t.zoom+1),t)),t)}}_calculate(e,t,n,r){return r.zoom>r.zoomHistory.lastIntegerZoom?{from:e,to:t}:{from:n,to:t}}interpolate(e){return e}},Ml=class{constructor(e,t){this.specification=e,this.name=t}possiblyEvaluate(e,t,n,r){return!!e.expression.evaluate(t,null,{},n,r)}interpolate(){return!1}},Nl=class{constructor(e){this.properties=e,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(let t in e){let n=e[t];n.specification.overridable&&this.overridableProperties.push(t);let r=this.defaultPropertyValues[t]=new bl(n,void 0,n.name,void 0),i=this.defaultTransitionablePropertyValues[t]=new xl(n,n.name,void 0);this.defaultTransitioningPropertyValues[t]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[t]=r.possiblyEvaluate({})}}};K(`DataDrivenProperty`,J),K(`DataConstantProperty`,q),K(`CrossFadedDataDrivenProperty`,Al),K(`CrossFadedProperty`,jl),K(`ColorRampProperty`,Ml);var Pl=` is a PAINT property not a LAYOUT property. Use get/setPaintProperty instead?`,Fl=` is a LAYOUT property not a PAINT property. Use get/setLayoutProperty instead?`,Il=class extends Qn{constructor(e,t,n){if(super(),this.id=e.id,this.type=e.type,this._globalState=n,this._featureFilter={filter:()=>!0,needGeometry:!1,getGlobalStateRefs:()=>new Set},this._visibilityExpression=rl(this.visibility,`layers[${this.id}].layout.visibility`,n),e.type!==`custom`&&(this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,e.type!==`background`&&(this.source=e.source,this.sourceLayer=e[`source-layer`],this.filter=e.filter,this._featureFilter=Js(e.filter,`layers[${this.id}].filter`,n)),t.layout&&(this._unevaluatedLayout=new Tl(t.layout,`layers[${this.id}].layout`,n)),t.paint)){this._transitionablePaint=new Sl(t.paint,`layers[${this.id}].paint`,n);for(let t in e.paint)this.setPaintProperty(t,e.paint[t],{validate:!1});for(let t in e.layout)this.setLayoutProperty(t,e.layout[t],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Dl(t.paint)}}setFilter(e){this.filter=e,this._featureFilter=Js(e,`layers[${this.id}].filter`,this._globalState)}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(e){if(e===`visibility`)return this.visibility;if(this._transitionablePaint?.hasProperty(e))throw Error(e+Pl);if(!this._unevaluatedLayout)throw Error(`Cannot get layout property "${e}" on layer type "${this.type}" which has no layout properties.`);return this._unevaluatedLayout.getValue(e)}getLayoutAffectingGlobalStateRefs(){let e=new Set;for(let t of this._visibilityExpression.getGlobalStateRefs())e.add(t);if(this._unevaluatedLayout)for(let t in this._unevaluatedLayout._values){let n=this._unevaluatedLayout._values[t];for(let t of n.getGlobalStateRefs())e.add(t)}for(let t of this._featureFilter.getGlobalStateRefs())e.add(t);return e}getPaintAffectingGlobalStateRefs(){let e=new globalThis.Map;if(this._transitionablePaint)for(let t in this._transitionablePaint._values){let n=this._transitionablePaint._values[t].value;for(let r of n.getGlobalStateRefs()){let i=e.get(r)??[];i.push({name:t,value:n.value}),e.set(r,i)}}return e}getVisibilityAffectingGlobalStateRefs(){return this._visibilityExpression.getGlobalStateRefs()}setLayoutProperty(e,t,n={}){e===`visibility`?(this.visibility=t,this._visibilityExpression.setValue(t),this.recalculateVisibility()):this._transitionablePaint?.hasProperty(e)?this.fire(new R(Error(e+Pl))):t!=null&&this._validate(il.layoutProperty,`layers.${this.id}.layout.${e}`,e,t,n)||this._unevaluatedLayout.setValue(e,t)}getPaintProperty(e){if(e.endsWith(`-transition`)){let t=e.slice(0,-11);if(t===`visibility`||this._unevaluatedLayout?.hasProperty(t))throw Error(e+Fl);return this._transitionablePaint.getTransition(t)}if(e===`visibility`||this._unevaluatedLayout?.hasProperty(e))throw Error(e+Fl);return this._transitionablePaint.getValue(e)}setPaintProperty(e,t,n={}){if(e===`visibility`||this._unevaluatedLayout?.hasProperty(e))return this.fire(new R(Error(e+Fl))),!1;if(t!=null&&this._validate(il.paintProperty,`layers.${this.id}.paint.${e}`,e,t,n))return!1;if(e.endsWith(`-transition`))return this._transitionablePaint.setTransition(e.slice(0,-11),t||void 0),!1;{let n=this._transitionablePaint._values[e],r=n.property.specification[`property-type`]===`cross-faded-data-driven`,i=n.value.isDataDriven(),a=n.value;this._transitionablePaint.setValue(e,t),this._handleSpecialPaintPropertyUpdate(e);let o=this._transitionablePaint._values[e].value;return o.isDataDriven()||i||r||this._handleOverridablePaintPropertyUpdate(e,a,o)}}_handleSpecialPaintPropertyUpdate(e){}_handleOverridablePaintPropertyUpdate(e,t,n){return!1}isHidden(e=this.minzoom,t=!1){return this.minzoom&&e<(t?Math.floor(this.minzoom):this.minzoom)||this.maxzoom&&e>=this.maxzoom?!0:this._evaluatedVisibility===`none`}updateTransitions(e){this._transitioningPaint=this._transitionablePaint.transitioned(e,this._transitioningPaint)}retainPriorGlobalState(e,t){this._transitionablePaint?.retainPriorGlobalState(e,t,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculateVisibility(){this._evaluatedVisibility=this._visibilityExpression.evaluate()}recalculate(e,t){e.getCrossfadeParameters&&(this._crossfadeParameters=e.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(e,void 0,t)),this.paint=this._transitioningPaint.possiblyEvaluate(e,void 0,t)}serialize(){let e={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout?.serialize(),paint:this._transitionablePaint?.serialize()};return this.visibility&&(e.layout||={},e.layout.visibility=this.visibility),Lt(e,(e,t)=>e!==void 0&&!(t===`layout`&&!Object.keys(e).length)&&!(t===`paint`&&!Object.keys(e).length))}_validate(e,t,n,r,i={}){return ll(this,e,{key:t,layerType:this.type,objectKey:n,value:r},i)}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(let e in this.paint._values){let t=this.paint.get(e);if(t instanceof El&&rs(t.property.specification)&&(t.value.kind===`source`||t.value.kind===`composite`)&&t.value.isStateDependent)return!0}return!1}},Ll,Rl=()=>Ll||=new Nl({"raster-opacity":new q(B.paint_raster[`raster-opacity`],`raster-opacity`),"raster-hue-rotate":new q(B.paint_raster[`raster-hue-rotate`],`raster-hue-rotate`),"raster-brightness-min":new q(B.paint_raster[`raster-brightness-min`],`raster-brightness-min`),"raster-brightness-max":new q(B.paint_raster[`raster-brightness-max`],`raster-brightness-max`),"raster-saturation":new q(B.paint_raster[`raster-saturation`],`raster-saturation`),"raster-contrast":new q(B.paint_raster[`raster-contrast`],`raster-contrast`),resampling:new q(B.paint_raster.resampling,`resampling`),"raster-resampling":new q(B.paint_raster[`raster-resampling`],`raster-resampling`),"raster-fade-duration":new q(B.paint_raster[`raster-fade-duration`],`raster-fade-duration`)}),zl={get paint(){return Rl()}},Bl=e=>e.type===`raster`,Vl=class extends Il{constructor(e,t){super(e,zl,t)}},Hl={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Ul=class{constructor(e,t){this._structArray=e,this._pos1=t*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}},Wl=class{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(e,t){return e._trim(),t&&(e.isTransferred=!0,t.push(e.arrayBuffer)),{length:e.length,arrayBuffer:e.arrayBuffer}}static deserialize(e){let t=Object.create(this.prototype);return t.arrayBuffer=e.arrayBuffer,t.length=e.length,t.capacity=e.arrayBuffer.byteLength/t.bytesPerElement,t._refreshViews(),t}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())}clear(){this.length=0}resize(e){this.reserve(e),this.length=e}reserve(e){if(e>this.capacity){this.capacity=Math.max(e,Math.floor(this.capacity*5),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);let t=this.uint8;this._refreshViews(),t&&this.uint8.set(t)}}_refreshViews(){throw Error(`_refreshViews() must be implemented by each concrete StructArray layout`)}freeBufferAfterUpload(){this.arrayBuffer=new ArrayBuffer(0),this._refreshViews()}};function Gl(e,t=1){let n=0,r=0;return{members:e.map(e=>{let i=Kl(e.type),a=n=ql(n,Math.max(t,i)),o=e.components||1;return r=Math.max(r,i),n+=i*o,{name:e.name,type:e.type,components:o,offset:a}}),size:ql(n,Math.max(r,t)),alignment:t}}function Kl(e){return Hl[e].BYTES_PER_ELEMENT}function ql(e,t){return Math.ceil(e/t)*t}var Jl=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t){let n=this.length;return this.resize(n+1),this.emplace(n,e,t)}emplace(e,t,n){let r=e*2;return this.int16[r+0]=t,this.int16[r+1]=n,e}};Jl.prototype.bytesPerElement=4,K(`StructArrayLayout2i4`,Jl);var Yl=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,n){let r=this.length;return this.resize(r+1),this.emplace(r,e,t,n)}emplace(e,t,n,r){let i=e*3;return this.int16[i+0]=t,this.int16[i+1]=n,this.int16[i+2]=r,e}};Yl.prototype.bytesPerElement=6,K(`StructArrayLayout3i6`,Yl);var Xl=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,n,r){let i=this.length;return this.resize(i+1),this.emplace(i,e,t,n,r)}emplace(e,t,n,r,i){let a=e*4;return this.int16[a+0]=t,this.int16[a+1]=n,this.int16[a+2]=r,this.int16[a+3]=i,e}};Xl.prototype.bytesPerElement=8,K(`StructArrayLayout4i8`,Xl);var Zl=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,n,r,i,a){let o=this.length;return this.resize(o+1),this.emplace(o,e,t,n,r,i,a)}emplace(e,t,n,r,i,a,o){let s=e*6;return this.int16[s+0]=t,this.int16[s+1]=n,this.int16[s+2]=r,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,e}};Zl.prototype.bytesPerElement=12,K(`StructArrayLayout2i4i12`,Zl);var Ql=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.int8=new Int8Array(this.arrayBuffer)}emplaceBack(e,t,n,r,i,a,o,s){let c=this.length;return this.resize(c+1),this.emplace(c,e,t,n,r,i,a,o,s)}emplace(e,t,n,r,i,a,o,s,c){let l=e*5,u=e*10;return this.int16[l+0]=t,this.int16[l+1]=n,this.uint8[u+4]=r,this.uint8[u+5]=i,this.uint8[u+6]=a,this.uint8[u+7]=o,this.int8[u+8]=s,this.int8[u+9]=c,e}};Ql.prototype.bytesPerElement=10,K(`StructArrayLayout2i4ub2b10`,Ql);var $l=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t){let n=this.length;return this.resize(n+1),this.emplace(n,e,t)}emplace(e,t,n){let r=e*2;return this.float32[r+0]=t,this.float32[r+1]=n,e}};$l.prototype.bytesPerElement=8,K(`StructArrayLayout2f8`,$l);var eu=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,n,r,i,a,o,s,c,l){let u=this.length;return this.resize(u+1),this.emplace(u,e,t,n,r,i,a,o,s,c,l)}emplace(e,t,n,r,i,a,o,s,c,l,u){let d=e*10;return this.uint16[d+0]=t,this.uint16[d+1]=n,this.uint16[d+2]=r,this.uint16[d+3]=i,this.uint16[d+4]=a,this.uint16[d+5]=o,this.uint16[d+6]=s,this.uint16[d+7]=c,this.uint16[d+8]=l,this.uint16[d+9]=u,e}};eu.prototype.bytesPerElement=20,K(`StructArrayLayout10ui20`,eu);var tu=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,n,r,i,a,o,s){let c=this.length;return this.resize(c+1),this.emplace(c,e,t,n,r,i,a,o,s)}emplace(e,t,n,r,i,a,o,s,c){let l=e*8;return this.uint16[l+0]=t,this.uint16[l+1]=n,this.uint16[l+2]=r,this.uint16[l+3]=i,this.uint16[l+4]=a,this.uint16[l+5]=o,this.uint16[l+6]=s,this.uint16[l+7]=c,e}};tu.prototype.bytesPerElement=16,K(`StructArrayLayout8ui16`,tu);var nu=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,n,r,i,a,o,s,c,l,u,d,f){let p=this.length;return this.resize(p+1),this.emplace(p,e,t,n,r,i,a,o,s,c,l,u,d,f)}emplace(e,t,n,r,i,a,o,s,c,l,u,d,f,p){let m=e*14,h=e*7;return this.int16[m+0]=t,this.int16[m+1]=n,this.int16[m+2]=r,this.int16[m+3]=i,this.uint16[m+4]=a,this.uint16[m+5]=o,this.uint16[m+6]=s,this.uint16[m+7]=c,this.int16[m+8]=l,this.int16[m+9]=u,this.int16[m+10]=d,this.int16[m+11]=f,this.float32[h+6]=p,e}};nu.prototype.bytesPerElement=28,K(`StructArrayLayout4i4ui4i1f28`,nu);var ru=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,n){let r=this.length;return this.resize(r+1),this.emplace(r,e,t,n)}emplace(e,t,n,r){let i=e*3;return this.float32[i+0]=t,this.float32[i+1]=n,this.float32[i+2]=r,e}};ru.prototype.bytesPerElement=12,K(`StructArrayLayout3f12`,ru);var iu=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e){let t=this.length;return this.resize(t+1),this.emplace(t,e)}emplace(e,t){let n=e*1;return this.uint32[n+0]=t,e}};iu.prototype.bytesPerElement=4,K(`StructArrayLayout1ul4`,iu);var au=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,n,r,i,a,o,s,c){let l=this.length;return this.resize(l+1),this.emplace(l,e,t,n,r,i,a,o,s,c)}emplace(e,t,n,r,i,a,o,s,c,l){let u=e*10,d=e*5;return this.int16[u+0]=t,this.int16[u+1]=n,this.int16[u+2]=r,this.int16[u+3]=i,this.int16[u+4]=a,this.int16[u+5]=o,this.uint32[d+3]=s,this.uint16[u+8]=c,this.uint16[u+9]=l,e}};au.prototype.bytesPerElement=20,K(`StructArrayLayout6i1ul2ui20`,au);var ou=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,n,r,i,a){let o=this.length;return this.resize(o+1),this.emplace(o,e,t,n,r,i,a)}emplace(e,t,n,r,i,a,o){let s=e*6;return this.int16[s+0]=t,this.int16[s+1]=n,this.int16[s+2]=r,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,e}};ou.prototype.bytesPerElement=12,K(`StructArrayLayout2i2i2i12`,ou);var su=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,n,r,i){let a=this.length;return this.resize(a+1),this.emplace(a,e,t,n,r,i)}emplace(e,t,n,r,i,a){let o=e*4,s=e*8;return this.float32[o+0]=t,this.float32[o+1]=n,this.float32[o+2]=r,this.int16[s+6]=i,this.int16[s+7]=a,e}};su.prototype.bytesPerElement=16,K(`StructArrayLayout2f1f2i16`,su);var cu=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,t,n,r,i,a){let o=this.length;return this.resize(o+1),this.emplace(o,e,t,n,r,i,a)}emplace(e,t,n,r,i,a,o){let s=e*16,c=e*4,l=e*8;return this.uint8[s+0]=t,this.uint8[s+1]=n,this.float32[c+1]=r,this.float32[c+2]=i,this.int16[l+6]=a,this.int16[l+7]=o,e}};cu.prototype.bytesPerElement=16,K(`StructArrayLayout2ub2f2i16`,cu);var lu=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,n){let r=this.length;return this.resize(r+1),this.emplace(r,e,t,n)}emplace(e,t,n,r){let i=e*3;return this.uint16[i+0]=t,this.uint16[i+1]=n,this.uint16[i+2]=r,e}};lu.prototype.bytesPerElement=6,K(`StructArrayLayout3ui6`,lu);var uu=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_){let v=this.length;return this.resize(v+1),this.emplace(v,e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_)}emplace(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v){let y=e*26,b=e*13,x=e*52;return this.int16[y+0]=t,this.int16[y+1]=n,this.uint16[y+2]=r,this.uint16[y+3]=i,this.uint32[b+2]=a,this.uint32[b+3]=o,this.uint32[b+4]=s,this.uint16[y+10]=c,this.uint16[y+11]=l,this.uint16[y+12]=u,this.float32[b+7]=d,this.float32[b+8]=f,this.uint8[x+36]=p,this.uint8[x+37]=m,this.uint8[x+38]=h,this.uint32[b+10]=g,this.int16[y+22]=_,this.float32[b+12]=v,e}};uu.prototype.bytesPerElement=52,K(`StructArrayLayout2i2ui3ul3ui2f3ub1ul1i1f52`,uu);var du=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x,S,C,w,T,E,D,O){let k=this.length;return this.resize(k+1),this.emplace(k,e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x,S,C,w,T,E,D,O)}emplace(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x,S,C,w,T,E,D,O,k){let A=e*34,j=e*17;return this.int16[A+0]=t,this.int16[A+1]=n,this.int16[A+2]=r,this.int16[A+3]=i,this.int16[A+4]=a,this.int16[A+5]=o,this.int16[A+6]=s,this.int16[A+7]=c,this.uint16[A+8]=l,this.uint16[A+9]=u,this.uint16[A+10]=d,this.uint16[A+11]=f,this.uint16[A+12]=p,this.uint16[A+13]=m,this.uint16[A+14]=h,this.uint16[A+15]=g,this.uint16[A+16]=_,this.uint16[A+17]=v,this.uint16[A+18]=y,this.uint16[A+19]=b,this.uint16[A+20]=x,this.uint16[A+21]=S,this.uint16[A+22]=C,this.uint32[j+12]=w,this.float32[j+13]=T,this.float32[j+14]=E,this.uint16[A+30]=D,this.uint16[A+31]=O,this.float32[j+16]=k,e}};du.prototype.bytesPerElement=68,K(`StructArrayLayout8i15ui1ul2f2ui1f68`,du);var fu=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e){let t=this.length;return this.resize(t+1),this.emplace(t,e)}emplace(e,t){let n=e*1;return this.float32[n+0]=t,e}};fu.prototype.bytesPerElement=4,K(`StructArrayLayout1f4`,fu);var pu=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,n){let r=this.length;return this.resize(r+1),this.emplace(r,e,t,n)}emplace(e,t,n,r){let i=e*6,a=e*3;return this.uint16[i+0]=t,this.float32[a+1]=n,this.float32[a+2]=r,e}};pu.prototype.bytesPerElement=12,K(`StructArrayLayout1ui2f12`,pu);var mu=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t,n){let r=this.length;return this.resize(r+1),this.emplace(r,e,t,n)}emplace(e,t,n,r){let i=e*2,a=e*4;return this.uint32[i+0]=t,this.uint16[a+2]=n,this.uint16[a+3]=r,e}};mu.prototype.bytesPerElement=8,K(`StructArrayLayout1ul2ui8`,mu);var hu=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,t){let n=this.length;return this.resize(n+1),this.emplace(n,e,t)}emplace(e,t,n){let r=e*2;return this.uint16[r+0]=t,this.uint16[r+1]=n,e}};hu.prototype.bytesPerElement=4,K(`StructArrayLayout2ui4`,hu);var gu=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e){let t=this.length;return this.resize(t+1),this.emplace(t,e)}emplace(e,t){let n=e*1;return this.uint16[n+0]=t,e}};gu.prototype.bytesPerElement=2,K(`StructArrayLayout1ui2`,gu);var _u=class extends Wl{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,t,n,r){let i=this.length;return this.resize(i+1),this.emplace(i,e,t,n,r)}emplace(e,t,n,r,i){let a=e*4;return this.float32[a+0]=t,this.float32[a+1]=n,this.float32[a+2]=r,this.float32[a+3]=i,e}};_u.prototype.bytesPerElement=16,K(`StructArrayLayout4f16`,_u);var vu=class extends Ul{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new f(this.anchorPointX,this.anchorPointY)}};vu.prototype.size=20;var yu=class extends au{get(e){return new vu(this,e)}};K(`CollisionBoxArray`,yu);var bu=class extends Ul{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(e){this._structArray.uint8[this._pos1+37]=e}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(e){this._structArray.uint8[this._pos1+38]=e}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(e){this._structArray.uint32[this._pos4+10]=e}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}get heightOffset(){return this._structArray.float32[this._pos4+12]}};bu.prototype.size=52;var xu=class extends uu{get(e){return new bu(this,e)}};K(`PlacedSymbolArray`,xu);var Su=class extends Ul{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(e){this._structArray.uint32[this._pos4+12]=e}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}get heightOffset(){return this._structArray.float32[this._pos4+16]}};Su.prototype.size=68;var Cu=class extends du{get(e){return new Su(this,e)}};K(`SymbolInstanceArray`,Cu);var wu=class extends fu{getoffsetX(e){return this.float32[e*1+0]}};K(`GlyphOffsetArray`,wu);var Tu=class extends Yl{getx(e){return this.int16[e*3+0]}gety(e){return this.int16[e*3+1]}gettileUnitDistanceFromAnchor(e){return this.int16[e*3+2]}};K(`SymbolLineVertexArray`,Tu);var Eu=class extends Ul{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}};Eu.prototype.size=12;var Du=class extends pu{get(e){return new Eu(this,e)}};K(`TextAnchorOffsetArray`,Du);var Ou=class extends Ul{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}};Ou.prototype.size=8;var ku=class extends mu{get(e){return new Ou(this,e)}};K(`FeatureIndexArray`,ku);var Au=class extends Jl{},ju=class extends Yl{},Mu=class extends Xl{},Nu=class extends Jl{},Pu=class extends Jl{},Fu=class extends Zl{},Iu=class extends Ql{},Lu=class extends $l{},Ru=class extends eu{},zu=class extends tu{},Bu=class extends nu{},Vu=class extends ru{},Hu=class extends iu{},Uu=class extends ou{},Wu=class extends su{},Gu=class extends cu{},Ku=class extends lu{},qu=class extends lu{},Ju=class extends hu{},Yu=class extends gu{},Xu=Gl([{name:`a_pos`,components:2,type:`Int16`}],4),Zu=Xu.members;Xu.size,Xu.alignment;var Qu=class e{constructor(e=[]){this._forceNewSegmentOnNextPrepare=!1,this.segments=e}prepareSegment(t,n,r,i){let a=this.segments[this.segments.length-1];return t>e.MAX_VERTEX_ARRAY_LENGTH&&I(`Max vertices per segment is ${e.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${t}. Consider using the \`fillLargeMeshArrays\` function if you require meshes with more than ${e.MAX_VERTEX_ARRAY_LENGTH} vertices.`),this._forceNewSegmentOnNextPrepare||!a||a.vertexLength+t>e.MAX_VERTEX_ARRAY_LENGTH||a.sortKey!==i?this.createNewSegment(n,r,i):a}createNewSegment(e,t,n){let r={vertexOffset:e.length,primitiveOffset:t.length,vertexLength:0,primitiveLength:0,vaos:{}};return n!==void 0&&(r.sortKey=n),this._forceNewSegmentOnNextPrepare=!1,this.segments.push(r),r}getOrCreateLatestSegment(e,t,n){return this.prepareSegment(0,e,t,n)}forceNewSegmentOnNextPrepare(){this._forceNewSegmentOnNextPrepare=!0}get(){return this.segments}destroy(){for(let e of this.segments)for(let t in e.vaos)e.vaos[t].destroy()}static simpleSegment(t,n,r,i){return new e([{vertexOffset:t,primitiveOffset:n,vertexLength:r,primitiveLength:i,vaos:{},sortKey:0}])}};Qu.MAX_VERTEX_ARRAY_LENGTH=2**16-1,K(`SegmentVector`,Qu);function $u(e,t){return e=P(Math.floor(e),0,255),t=P(Math.floor(t),0,255),256*e+t}var ed=Gl([{name:`a_pattern_from`,components:4,type:`Uint16`},{name:`a_pattern_to`,components:4,type:`Uint16`},{name:`a_pixel_ratio_from`,components:1,type:`Uint16`},{name:`a_pixel_ratio_to`,components:1,type:`Uint16`}]),td=Gl([{name:`a_dasharray_from`,components:4,type:`Uint16`},{name:`a_dasharray_to`,components:4,type:`Uint16`}]),nd=c(((e,t)=>{function n(e,t){for(var n=e.length&3,r=e.length-n,i=t,a,o=3432918353,s=461845907,c,l=0;l<r;)c=e.charCodeAt(l)&255|(e.charCodeAt(++l)&255)<<8|(e.charCodeAt(++l)&255)<<16|(e.charCodeAt(++l)&255)<<24,++l,c=(c&65535)*o+(((c>>>16)*o&65535)<<16)|0,c=c<<15|c>>>17,c=(c&65535)*s+(((c>>>16)*s&65535)<<16)|0,i^=c,i=i<<13|i>>>19,a=(i&65535)*5+(((i>>>16)*5&65535)<<16)|0,i=(a&65535)+27492+(((a>>>16)+58964&65535)<<16);switch(c=0,n){case 3:c^=(e.charCodeAt(l+2)&255)<<16;case 2:c^=(e.charCodeAt(l+1)&255)<<8;case 1:c^=e.charCodeAt(l)&255,c=(c&65535)*o+(((c>>>16)*o&65535)<<16)|0,c=c<<15|c>>>17,c=(c&65535)*s+(((c>>>16)*s&65535)<<16)|0,i^=c}return i^=e.length,i^=i>>>16,i=(i&65535)*2246822507+(((i>>>16)*2246822507&65535)<<16)|0,i^=i>>>13,i=(i&65535)*3266489909+(((i>>>16)*3266489909&65535)<<16)|0,i^=i>>>16,i>>>0}t!==void 0&&(t.exports=n)})),rd=c(((e,t)=>{function n(e,t){for(var n=e.length,r=t^n,i=0,a;n>=4;)a=e.charCodeAt(i)&255|(e.charCodeAt(++i)&255)<<8|(e.charCodeAt(++i)&255)<<16|(e.charCodeAt(++i)&255)<<24,a=(a&65535)*1540483477+(((a>>>16)*1540483477&65535)<<16),a^=a>>>24,a=(a&65535)*1540483477+(((a>>>16)*1540483477&65535)<<16),r=(r&65535)*1540483477+(((r>>>16)*1540483477&65535)<<16)^a,n-=4,++i;switch(n){case 3:r^=(e.charCodeAt(i+2)&255)<<16;case 2:r^=(e.charCodeAt(i+1)&255)<<8;case 1:r^=e.charCodeAt(i)&255,r=(r&65535)*1540483477+(((r>>>16)*1540483477&65535)<<16)}return r^=r>>>13,r=(r&65535)*1540483477+(((r>>>16)*1540483477&65535)<<16),r^=r>>>15,r>>>0}t.exports=n})),id=u(c(((e,t)=>{var n=nd(),r=rd();t.exports=n,t.exports.murmur3=n,t.exports.murmur2=r}))(),1),ad=class e{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(e,t,n,r){this.ids.push(od(e)),this.positions.push(t,n,r)}getPositions(e){if(!this.indexed)throw Error(`Trying to get index, but feature positions are not indexed`);let t=od(e),n=0,r=this.ids.length-1;for(;n<r;){let e=n+r>>1;this.ids[e]>=t?r=e:n=e+1}let i=[];for(;this.ids[n]===t;){let e=this.positions[3*n],t=this.positions[3*n+1],r=this.positions[3*n+2];i.push({index:e,start:t,end:r}),n++}return i}static serialize(e,t){let n=new Float64Array(e.ids),r=new Uint32Array(e.positions);return sd(n,r,0,n.length-1),t&&t.push(n.buffer,r.buffer),{ids:n,positions:r}}static deserialize(t){let n=new e;return n.ids=t.ids,n.positions=t.positions,n.indexed=!0,n}};function od(e){let t=+e;return!isNaN(t)&&t<=2**53-1?t:(0,id.default)(String(e))}function sd(e,t,n,r){for(;n<r;){let i=e[n+r>>1],a=n-1,o=r+1;for(;;){do a++;while(e[a]<i);do o--;while(e[o]>i);if(a>=o)break;cd(e,a,o),cd(t,3*a,3*o),cd(t,3*a+1,3*o+1),cd(t,3*a+2,3*o+2)}o-n<r-o?(sd(e,t,n,o),n=o+1):(sd(e,t,o+1,r),r=o)}}function cd(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}K(`FeaturePositionMap`,ad);var ld=class{constructor(e,t){this.gl=e.gl,this.location=t}},Y=class extends ld{constructor(e,t){super(e,t),this.current=0}set(e){this.current!==e&&(this.current=e,this.gl.uniform1i(this.location,e))}},X=class extends ld{constructor(e,t){super(e,t),this.current=0}set(e){this.current!==e&&(this.current=e,this.gl.uniform1f(this.location,e))}},Z=class extends ld{constructor(e,t){super(e,t),this.current=[0,0]}set(e){(e[0]!==this.current[0]||e[1]!==this.current[1])&&(this.current=e,this.gl.uniform2f(this.location,e[0],e[1]))}},ud=class extends ld{constructor(e,t){super(e,t),this.current=[0,0,0]}set(e){(e[0]!==this.current[0]||e[1]!==this.current[1]||e[2]!==this.current[2])&&(this.current=e,this.gl.uniform3f(this.location,e[0],e[1],e[2]))}},dd=class extends ld{constructor(e,t){super(e,t),this.current=[0,0,0,0]}set(e){(e[0]!==this.current[0]||e[1]!==this.current[1]||e[2]!==this.current[2]||e[3]!==this.current[3])&&(this.current=e,this.gl.uniform4f(this.location,e[0],e[1],e[2],e[3]))}},fd=class extends ld{constructor(e,t){super(e,t),this.current=G.transparent}set(e){(e.r!==this.current.r||e.g!==this.current.g||e.b!==this.current.b||e.a!==this.current.a)&&(this.current=e,this.gl.uniform4f(this.location,e.r,e.g,e.b,e.a))}},pd=class extends ld{constructor(e,t){super(e,t),this.current=[]}set(e){if(e!=this.current){this.current=e;let t=new Float32Array(e.length*4);for(let n=0;n<e.length;n++)t[4*n]=e[n].r,t[4*n+1]=e[n].g,t[4*n+2]=e[n].b,t[4*n+3]=e[n].a;this.gl.uniform4fv(this.location,t)}}},md=class extends ld{constructor(e,t){super(e,t),this.current=[]}set(e){if(e!=this.current){this.current=e;let t=new Float32Array(e);this.gl.uniform1fv(this.location,t)}}},hd=new Float32Array(16),gd=class extends ld{constructor(e,t){super(e,t),this.current=hd}set(e){if(e[12]!==this.current[12]||e[0]!==this.current[0])this.current=e,this.gl.uniformMatrix4fv(this.location,!1,e);else for(let t=1;t<16;t++)if(e[t]!==this.current[t]){this.current=e,this.gl.uniformMatrix4fv(this.location,!1,e);break}}};function _d(e){return[$u(255*e.r,255*e.g),$u(255*e.b,255*e.a)]}var vd=class{constructor(e,t,n){this.value=e,this.uniformNames=t.map(e=>`u_${e}`),this.type=n}setUniform(e,t,n){e.set(n.constantOr(this.value))}getBinding(e,t,n){return this.type===`color`?new fd(e,t):new X(e,t)}},yd=class{constructor(e,t){this.uniformNames=t.map(e=>`u_${e}`),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(e,t){this.pixelRatioFrom=t.pixelRatio,this.pixelRatioTo=e.pixelRatio,this.patternFrom=t.tlbr,this.patternTo=e.tlbr}setConstantDashPositions(e,t){this.dashTo=[0,e.y,e.height,e.width],this.dashFrom=[0,t.y,t.height,t.width]}setUniform(e,t,n,r){let i=null;r===`u_pattern_to`?i=this.patternTo:r===`u_pattern_from`?i=this.patternFrom:r===`u_dasharray_to`?i=this.dashTo:r===`u_dasharray_from`?i=this.dashFrom:r===`u_pixel_ratio_to`?i=this.pixelRatioTo:r===`u_pixel_ratio_from`&&(i=this.pixelRatioFrom),i!==null&&e.set(i)}getBinding(e,t,n){return n.startsWith(`u_pattern`)||n.startsWith(`u_dasharray_`)?new dd(e,t):new X(e,t)}},bd=class{constructor(e,t,n,r){this.expression=e,this.type=n,this.maxValue=0,this.paintVertexAttributes=t.map(e=>({name:`a_${e}`,type:`Float32`,components:n===`color`?2:1,offset:0})),this.paintVertexArray=new r}populatePaintArray(e,t,n){let r=this.paintVertexArray.length,i=this.expression.evaluate(new yl(0,n),t,{},n.canonical,[],n.formattedSection);this.paintVertexArray.resize(e),this._setPaintValue(r,e,i)}updatePaintArray(e,t,n,r,i){let a=this.expression.evaluate(new yl(0,i),n,r);this._setPaintValue(e,t,a)}_setPaintValue(e,t,n){if(this.type===`color`){let r=_d(n);for(let n=e;n<t;n++)this.paintVertexArray.emplace(n,r[0],r[1])}else{for(let r=e;r<t;r++)this.paintVertexArray.emplace(r,n);this.maxValue=Math.max(this.maxValue,Math.abs(n))}}upload(e){this.paintVertexArray?.arrayBuffer.byteLength&&(this.paintVertexBuffer?.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=e.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent))}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()}},xd=class{constructor(e,t,n,r,i,a){this.expression=e,this.uniformNames=t.map(e=>`u_${e}_t`),this.type=n,this.useIntegerZoom=r,this.zoom=i,this.maxValue=0,this.paintVertexAttributes=t.map(e=>({name:`a_${e}`,type:`Float32`,components:n===`color`?4:2,offset:0})),this.paintVertexArray=new a}populatePaintArray(e,t,n){let r=this.expression.evaluate(new yl(this.zoom,n),t,{},n.canonical,[],n.formattedSection),i=this.expression.evaluate(new yl(this.zoom+1,n),t,{},n.canonical,[],n.formattedSection),a=this.paintVertexArray.length;this.paintVertexArray.resize(e),this._setPaintValue(a,e,r,i)}updatePaintArray(e,t,n,r,i){let a=this.expression.evaluate(new yl(this.zoom,i),n,r),o=this.expression.evaluate(new yl(this.zoom+1,i),n,r);this._setPaintValue(e,t,a,o)}_setPaintValue(e,t,n,r){if(this.type===`color`){let i=_d(n),a=_d(r);for(let n=e;n<t;n++)this.paintVertexArray.emplace(n,i[0],i[1],a[0],a[1])}else{for(let i=e;i<t;i++)this.paintVertexArray.emplace(i,n,r);this.maxValue=Math.max(this.maxValue,Math.abs(n),Math.abs(r))}}upload(e){this.paintVertexArray?.arrayBuffer.byteLength&&(this.paintVertexBuffer?.buffer?this.paintVertexBuffer.updateData(this.paintVertexArray):this.paintVertexBuffer=e.createVertexBuffer(this.paintVertexArray,this.paintVertexAttributes,this.expression.isStateDependent))}destroy(){this.paintVertexBuffer&&this.paintVertexBuffer.destroy()}setUniform(e,t){let n=this.useIntegerZoom?Math.floor(t.zoom):t.zoom,r=P(this.expression.interpolationFactor(n,this.zoom,this.zoom+1),0,1);e.set(r)}getBinding(e,t,n){return new X(e,t)}},Sd=class{constructor(e,t,n,r,i,a){this.expression=e,this.type=t,this.useIntegerZoom=n,this.zoom=r,this.layerId=a,this.zoomInPaintVertexArray=new i,this.zoomOutPaintVertexArray=new i}populatePaintArray(e,t,n){let r=this.zoomInPaintVertexArray.length;this.zoomInPaintVertexArray.resize(e),this.zoomOutPaintVertexArray.resize(e),this._setPaintValues(r,e,this.getPositionIds(t),n)}updatePaintArray(e,t,n,r,i){this._setPaintValues(e,t,this.getPositionIds(n),i)}_setPaintValues(e,t,n,r){let i=this.getPositions(r);if(!i||!n)return;let a=i[n.min],o=i[n.mid],s=i[n.max];if(a&&o&&s)for(let n=e;n<t;n++)this.emplace(this.zoomInPaintVertexArray,n,a,o),this.emplace(this.zoomOutPaintVertexArray,n,s,o)}upload(e){if(this.zoomInPaintVertexArray?.arrayBuffer.byteLength&&this.zoomOutPaintVertexArray?.arrayBuffer.byteLength){let t=this.getVertexAttributes();this.zoomInPaintVertexBuffer=e.createVertexBuffer(this.zoomInPaintVertexArray,t,this.expression.isStateDependent),this.zoomOutPaintVertexBuffer=e.createVertexBuffer(this.zoomOutPaintVertexArray,t,this.expression.isStateDependent)}}destroy(){this.zoomOutPaintVertexBuffer&&this.zoomOutPaintVertexBuffer.destroy(),this.zoomInPaintVertexBuffer&&this.zoomInPaintVertexBuffer.destroy()}},Cd=class extends Sd{getPositions(e){return e.imagePositions}getPositionIds(e){return e.patterns?.[this.layerId]}getVertexAttributes(){return ed.members}emplace(e,t,n,r){e.emplace(t,n.tlbr[0],n.tlbr[1],n.tlbr[2],n.tlbr[3],r.tlbr[0],r.tlbr[1],r.tlbr[2],r.tlbr[3],n.pixelRatio,r.pixelRatio)}},wd=class extends Sd{getPositions(e){return e.dashPositions}getPositionIds(e){return e.dashes?.[this.layerId]}getVertexAttributes(){return td.members}emplace(e,t,n,r){e.emplace(t,0,n.y,n.height,n.width,0,r.y,r.height,r.width)}},Td=class{constructor(e,t,n){this.binders={},this._buffers=[];let r=[];for(let i in e.paint._values){if(!n(i))continue;let a=e.paint.get(i);if(!(a instanceof El)||!rs(a.property.specification))continue;let o=Dd(i,e.type),s=a.value,c=a.property.specification.type,l=a.property.useIntegerZoom,u=a.property.specification[`property-type`],d=u===`cross-faded`||u===`cross-faded-data-driven`;if(s.kind===`constant`)this.binders[i]=d?new yd(s.value,o):new vd(s.value,o,c),r.push(`/u_${i}`);else if(s.kind===`source`||d){let n=kd(i,c,`source`);this.binders[i]=d?i===`line-dasharray`?new wd(s,c,l,t,n,e.id):new Cd(s,c,l,t,n,e.id):new bd(s,o,c,n),r.push(`/a_${i}`)}else{let e=kd(i,c,`composite`);this.binders[i]=new xd(s,o,c,l,t,e),r.push(`/z_${i}`)}}this.cacheKey=r.sort().join(``)}getMaxValue(e){let t=this.binders[e];return t instanceof bd||t instanceof xd?t.maxValue:0}populatePaintArrays(e,t,n){for(let r in this.binders){let i=this.binders[r];(i instanceof bd||i instanceof xd||i instanceof Sd)&&i.populatePaintArray(e,t,n)}}setConstantPatternPositions(e,t){for(let n in this.binders){let r=this.binders[n];r instanceof yd&&r.setConstantPatternPositions(e,t)}}setConstantDashPositions(e,t){for(let n in this.binders){let r=this.binders[n];r instanceof yd&&r.setConstantDashPositions(e,t)}}updatePaintArrays(e,t,n,r,i){let a=!1;for(let o of e){let e=t.getPositions(o.id);for(let t of e){let e=n.feature(t.index);for(let n in this.binders){let s=this.binders[n];(s instanceof bd||s instanceof xd||s instanceof Sd)&&s.expression.isStateDependent===!0&&(s.expression=r.paint.get(n).value,s.updatePaintArray(t.start,t.end,e,o.state,i),a=!0)}}}return a}defines(){let e=[];for(let t in this.binders){let n=this.binders[t];(n instanceof vd||n instanceof yd)&&e.push(...n.uniformNames.map(e=>`#define HAS_UNIFORM_${e}`))}return e}getBinderAttributes(){let e=[];for(let t in this.binders){let n=this.binders[t];if(n instanceof bd||n instanceof xd)for(let t of n.paintVertexAttributes)e.push(t.name);else if(n instanceof Sd){let t=n.getVertexAttributes();for(let n of t)e.push(n.name)}}return e}getBinderUniforms(){let e=[];for(let t in this.binders){let n=this.binders[t];if(n instanceof vd||n instanceof yd||n instanceof xd)for(let t of n.uniformNames)e.push(t)}return e}getPaintVertexBuffers(){return this._buffers}getUniforms(e,t){let n=[];for(let r in this.binders){let i=this.binders[r];if(i instanceof vd||i instanceof yd||i instanceof xd){for(let a of i.uniformNames)if(t[a]){let o=i.getBinding(e,t[a],a);n.push({name:a,property:r,binding:o})}}}return n}setUniforms(e,t,n,r){for(let{name:e,property:i,binding:a}of t)this.binders[i].setUniform(a,r,n.get(i),e)}updatePaintBuffers(e){this._buffers=[];for(let t in this.binders){let n=this.binders[t];if(e&&n instanceof Sd){let t=e.fromScale===2?n.zoomInPaintVertexBuffer:n.zoomOutPaintVertexBuffer;t&&this._buffers.push(t)}else(n instanceof bd||n instanceof xd)&&n.paintVertexBuffer&&this._buffers.push(n.paintVertexBuffer)}}upload(e){for(let t in this.binders){let n=this.binders[t];(n instanceof bd||n instanceof xd||n instanceof Sd)&&n.upload(e)}this.updatePaintBuffers()}destroy(){for(let e in this.binders){let t=this.binders[e];(t instanceof bd||t instanceof xd||t instanceof Sd)&&t.destroy()}}},Ed=class{constructor(e,t,n=()=>!0){this.programConfigurations={};for(let r of e)this.programConfigurations[r.id]=new Td(r,t,n);this.needsUpload=!1,this._featureMap=new ad,this._bufferOffset=0}populatePaintArrays(e,t,n,r){for(let n in this.programConfigurations)this.programConfigurations[n].populatePaintArrays(e,t,r);t.id!==void 0&&this._featureMap.add(t.id,n,this._bufferOffset,e),this._bufferOffset=e,this.needsUpload=!0}updatePaintArrays(e,t,n,r){for(let i of n)this.needsUpload=this.programConfigurations[i.id].updatePaintArrays(e,this._featureMap,t,i,r)||this.needsUpload}get(e){return this.programConfigurations[e]}upload(e){if(this.needsUpload){for(let t in this.programConfigurations)this.programConfigurations[t].upload(e);this.needsUpload=!1}}destroy(){for(let e in this.programConfigurations)this.programConfigurations[e].destroy()}};function Dd(e,t){return{"text-opacity":[`opacity`],"icon-opacity":[`opacity`],"text-color":[`fill_color`],"icon-color":[`fill_color`],"text-halo-color":[`halo_color`],"icon-halo-color":[`halo_color`],"text-halo-blur":[`halo_blur`],"icon-halo-blur":[`halo_blur`],"text-halo-width":[`halo_width`],"icon-halo-width":[`halo_width`],"line-gap-width":[`gapwidth`],"line-dasharray":[`dasharray_to`,`dasharray_from`],"line-pattern":[`pattern_to`,`pattern_from`,`pixel_ratio_to`,`pixel_ratio_from`],"fill-pattern":[`pattern_to`,`pattern_from`,`pixel_ratio_to`,`pixel_ratio_from`],"fill-extrusion-pattern":[`pattern_to`,`pattern_from`,`pixel_ratio_to`,`pixel_ratio_from`]}[e]||[e.replace(`${t}-`,``).replace(/-/g,`_`)]}function Od(e){return{"line-pattern":{source:Ru,composite:Ru},"fill-pattern":{source:Ru,composite:Ru},"fill-extrusion-pattern":{source:Ru,composite:Ru},"line-dasharray":{source:zu,composite:zu}}[e]}function kd(e,t,n){let r={color:{source:$l,composite:_u},number:{source:fu,composite:$l}};return Od(e)?.[n]||r[t][n]}K(`ConstantBinder`,vd),K(`CrossFadedConstantBinder`,yd),K(`SourceExpressionBinder`,bd),K(`CrossFadedPatternBinder`,Cd),K(`CrossFadedDasharrayBinder`,wd),K(`CompositeExpressionBinder`,xd),K(`ProgramConfiguration`,Td,{omit:[`_buffers`]}),K(`ProgramConfigurationSet`,Ed);var Ad=2**14-1,jd=-Ad-1;function Md(e){let t=N/e.extent,n=e.loadGeometry();for(let e of n)for(let n of e){let e=Math.round(n.x*t),r=Math.round(n.y*t);n.x=P(e,jd,Ad),n.y=P(r,jd,Ad),(e<n.x||e>n.x+1||r<n.y||r>n.y+1)&&I(`Geometry exceeds allowed extent, reduce your vector tile buffer size`)}return n}function Nd(e,t){return{type:e.type,id:e.id,properties:e.properties,geometry:t?Md(e):[]}}var Pd=class e{constructor(){this.minX=1/0,this.maxX=-1/0,this.minY=1/0,this.maxY=-1/0}extend(e){return this.minX=Math.min(this.minX,e.x),this.minY=Math.min(this.minY,e.y),this.maxX=Math.max(this.maxX,e.x),this.maxY=Math.max(this.maxY,e.y),this}expandBy(e){return this.minX-=e,this.minY-=e,this.maxX+=e,this.maxY+=e,(this.minX>this.maxX||this.minY>this.maxY)&&(this.minX=1/0,this.maxX=-1/0,this.minY=1/0,this.maxY=-1/0),this}shrinkBy(e){return this.expandBy(-e)}map(t){let n=new e;return n.extend(t(new f(this.minX,this.minY))),n.extend(t(new f(this.maxX,this.minY))),n.extend(t(new f(this.minX,this.maxY))),n.extend(t(new f(this.maxX,this.maxY))),n}static fromPoints(t){let n=new e;for(let e of t)n.extend(e);return n}contains(e){return e.x>=this.minX&&e.x<=this.maxX&&e.y>=this.minY&&e.y<=this.maxY}empty(){return this.minX>this.maxX}width(){return this.maxX-this.minX}height(){return this.maxY-this.minY}covers(e){return!this.empty()&&!e.empty()&&e.minX>=this.minX&&e.maxX<=this.maxX&&e.minY>=this.minY&&e.maxY<=this.maxY}intersects(e){return!this.empty()&&!e.empty()&&e.minX<=this.maxX&&e.maxX>=this.minX&&e.minY<=this.maxY&&e.maxY>=this.minY}},Fd=Pd.fromPoints([new f(0,0),new f(N,N)]);function Id(e,t){return e.x===t.x&&(e.x<0||e.x>8192)||e.y===t.y&&(e.y<0||e.y>8192)}function Ld(e){return e.every(e=>e.x<0)||e.every(e=>e.x>8192)||e.every(e=>e.y<0)||e.every(e=>e.y>8192)}function Rd(e){return e.x<0||e.x>=8192||e.y<0||e.y>=8192}var zd=-32768;function Bd(e,t,n,r,i){e.emplaceBack(zd+t*8+r,zd+n*8+i)}var Vd=class{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(e=>e.id),this.index=e.index,this.hasDependencies=!1,this.layoutVertexArray=new Nu,this.indexArray=new qu,this.segments=new Qu,this.programConfigurations=new Ed(e.layers,e.zoom),this.stateDependentLayerIds=this.layers.filter(e=>e.isStateDependent()).map(e=>e.id)}populate(e,t,n){let r=this.layers[0],i=[],a=null,o=!1,s=r.type===`heatmap`;if(r.type===`circle`){let e=r;a=e.layout.get(`circle-sort-key`),o=!a.isConstant(),s||=e.paint.get(`circle-pitch-alignment`)===`map`}let c=s?t.subdivisionGranularity.circle:1,l=new yl(this.zoom),u=this.layers[0]._featureFilter.needGeometry;for(let{feature:t,id:r,index:s,sourceLayerIndex:c}of e){let e=Nd(t,u);if(!this.layers[0]._featureFilter.filter(l,e,n))continue;let d=o?a.evaluate(e,{},n):void 0,f={id:r,properties:t.properties,type:t.type,sourceLayerIndex:c,index:s,geometry:u?e.geometry:Md(t),patterns:{},sortKey:d};i.push(f)}o&&i.sort((e,t)=>e.sortKey-t.sortKey);for(let r of i){let{geometry:i,index:a,sourceLayerIndex:o}=r,s=e[a].feature;this.addFeature(r,i,a,n,c),t.featureIndex.insert(s,i,a,o,this.index)}}update(e,t,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,{imagePositions:n})}addFeatures(e){}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Zu),this.indexBuffer=e.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(e,t,n,r,i=1){let a;switch(i){case 1:a=[0,7];break;case 3:a=[0,2,5,7];break;case 5:a=[0,1,3,4,6,7];break;case 7:a=[0,1,2,3,4,5,6,7];break;default:throw Error(`Invalid circle bucket granularity: ${i}; valid values are 1, 3, 5, 7.`)}let o=a.length;for(let n of t)for(let t of n){let n=t.x,r=t.y;if(Rd(t))continue;let i=this.segments.prepareSegment(o*o,this.layoutVertexArray,this.indexArray,e.sortKey),s=i.vertexLength;for(let e=0;e<o;e++)for(let t=0;t<o;t++)Bd(this.layoutVertexArray,n,r,a[t],a[e]);for(let e=0;e<o-1;e++)for(let t=0;t<o-1;t++){let n=s+e*o+t,r=s+(e+1)*o+t;this.indexArray.emplaceBack(n,r+1,n+1),this.indexArray.emplaceBack(n,r,r+1)}i.vertexLength+=o*o,i.primitiveLength+=(o-1)*(o-1)*2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,n,{imagePositions:{},canonical:r})}};K(`CircleBucket`,Vd,{omit:[`layers`]});function Hd(e,t){for(let n of e)if(Qd(t,n))return!0;for(let n of t)if(Qd(e,n))return!0;return qd(e,t)}function Ud(e,t,n){return Qd(e,t)?!0:Yd(t,e,n)}function Wd(e,t){if(e.length===1)return Zd(t,e[0]);for(let n of t)for(let t of n)if(Qd(e,t))return!0;for(let n of e)if(Zd(t,n))return!0;for(let n of t)if(qd(e,n))return!0;return!1}function Gd(e,t,n){for(let r of t){if(e.length>=3){for(let t of r)if(Qd(e,t))return!0}if(Kd(e,r,n))return!0}return!1}function Kd(e,t,n){if(e.length>1){if(qd(e,t))return!0;for(let r of t)if(Yd(r,e,n))return!0}for(let r of e)if(Yd(r,t,n))return!0;return!1}function qd(e,t){if(e.length===0||t.length===0)return!1;for(let n=0;n<e.length-1;n++){let r=e[n],i=e[n+1];for(let e=0;e<t.length-1;e++){let n=t[e],a=t[e+1];if(Jd(r,i,n,a))return!0}}return!1}function Jd(e,t,n,r){return Vt(e,n,r)!==Vt(t,n,r)&&Vt(e,t,n)!==Vt(e,t,r)}function Yd(e,t,n){let r=n*n;if(t.length===1)return e.distSqr(t[0])<r;for(let n=1;n<t.length;n++){let i=t[n-1],a=t[n];if(Xd(e,i,a)<r)return!0}return!1}function Xd(e,t,n){let r=t.distSqr(n);if(r===0)return e.distSqr(t);let i=((e.x-t.x)*(n.x-t.x)+(e.y-t.y)*(n.y-t.y))/r;return i<0?e.distSqr(t):i>1?e.distSqr(n):e.distSqr(n.sub(t)._mult(i)._add(t))}function Zd(e,t){let n=!1,r,i,a;for(let o of e){r=o;for(let e=0,o=r.length-1;e<r.length;o=e++)i=r[e],a=r[o],i.y>t.y!=a.y>t.y&&t.x<(a.x-i.x)*(t.y-i.y)/(a.y-i.y)+i.x&&(n=!n)}return n}function Qd(e,t){let n=!1;for(let r=0,i=e.length-1;r<e.length;i=r++){let a=e[r],o=e[i];a.y>t.y!=o.y>t.y&&t.x<(o.x-a.x)*(t.y-a.y)/(o.y-a.y)+a.x&&(n=!n)}return n}function $d(e,t,n,r,i){for(let a of e)if(t<=a.x&&n<=a.y&&r>=a.x&&i>=a.y)return!0;let a=[new f(t,n),new f(t,i),new f(r,i),new f(r,n)];if(e.length>2){for(let t of a)if(Qd(e,t))return!0}for(let t=0;t<e.length-1;t++){let n=e[t],r=e[t+1];if(ef(n,r,a))return!0}return!1}function ef(e,t,n){let r=n[0],i=n[2];if(e.x<r.x&&t.x<r.x||e.x>i.x&&t.x>i.x||e.y<r.y&&t.y<r.y||e.y>i.y&&t.y>i.y)return!1;let a=Vt(e,t,n[0]);return a!==Vt(e,t,n[1])||a!==Vt(e,t,n[2])||a!==Vt(e,t,n[3])}function tf(e,t,n){let r=t.paint.get(e).value;return r.kind===`constant`?r.value:n.programConfigurations.get(t.id).getMaxValue(e)}function nf(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1])}function rf(e,t,n,r,i){if(!t[0]&&!t[1])return e;let a=f.convert(t)._mult(i);n===`viewport`&&a._rotate(-r);let o=[];for(let t of e)o.push(t.sub(a));return o}function af(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n],i=t.at(-1);(n===0||i&&!r.equals(i))&&t.push(r)}return t}function of(e,t){let n=[];for(let r of e){let e=af(r),i=[];for(let n=0;n<e.length;n++){let r=e[n],a=e[n-1],o=e[n+1],s=n===0?new f(0,0):r.sub(a)._unit()._perp(),c=n===e.length-1?new f(0,0):o.sub(r)._unit()._perp(),l=s._add(c)._unit(),u=l.x*c.x+l.y*c.y;u!==0&&l._mult(1/u),i.push(l._mult(t)._add(r))}n.push(i)}return n}function sf({queryGeometry:e,size:t},n){return Ud(e,n,t)}function cf({queryGeometry:e,size:t,transform:n,unwrappedTileID:r,getElevation:i},a){return Ud(e,a,t*(n.projectTileCoordinates(a.x,a.y,r,i?.(a.x,a.y)).signedDistanceFromCamera/n.cameraToCenterDistance))}function lf({queryGeometry:e,size:t,transform:n,unwrappedTileID:r,getElevation:i},a){let o=n.projectTileCoordinates(a.x,a.y,r,i?.(a.x,a.y)).signedDistanceFromCamera,s=t*(n.cameraToCenterDistance/o);return Ud(e,ff(a,n,r,i),s)}function uf({queryGeometry:e,size:t,transform:n,unwrappedTileID:r,getElevation:i},a){return Ud(e,ff(a,n,r,i),t)}function df({queryGeometry:e,size:t,transform:n,unwrappedTileID:r,getElevation:i,pitchAlignment:a=`map`,pitchScale:o=`map`},s){let c=a===`map`?o===`map`?sf:cf:o===`map`?lf:uf,l={queryGeometry:e,size:t,transform:n,unwrappedTileID:r,getElevation:i};for(let e of s)for(let t of e)if(c(l,t))return!0;return!1}function ff(e,t,n,r){let i=t.projectTileCoordinates(e.x,e.y,n,r?.(e.x,e.y)).point;return new f((i.x*.5+.5)*t.width,(-i.y*.5+.5)*t.height)}function pf(e,t,n,r){return e.map(e=>ff(e,t,n,r))}var mf,hf=()=>mf||=new Nl({"circle-sort-key":new J(B.layout_circle[`circle-sort-key`],`circle-sort-key`)}),gf,_f=()=>gf||=new Nl({"circle-radius":new J(B.paint_circle[`circle-radius`],`circle-radius`),"circle-color":new J(B.paint_circle[`circle-color`],`circle-color`),"circle-blur":new J(B.paint_circle[`circle-blur`],`circle-blur`),"circle-opacity":new J(B.paint_circle[`circle-opacity`],`circle-opacity`),"circle-translate":new q(B.paint_circle[`circle-translate`],`circle-translate`),"circle-translate-anchor":new q(B.paint_circle[`circle-translate-anchor`],`circle-translate-anchor`),"circle-pitch-scale":new q(B.paint_circle[`circle-pitch-scale`],`circle-pitch-scale`),"circle-pitch-alignment":new q(B.paint_circle[`circle-pitch-alignment`],`circle-pitch-alignment`),"circle-stroke-width":new J(B.paint_circle[`circle-stroke-width`],`circle-stroke-width`),"circle-stroke-color":new J(B.paint_circle[`circle-stroke-color`],`circle-stroke-color`),"circle-stroke-opacity":new J(B.paint_circle[`circle-stroke-opacity`],`circle-stroke-opacity`)}),vf={get paint(){return _f()},get layout(){return hf()}},yf=e=>e.type===`circle`,bf=class extends Il{constructor(e,t){super(e,vf,t)}createBucket(e){return new Vd(e)}queryRadius(e){let t=e;return tf(`circle-radius`,this,t)+tf(`circle-stroke-width`,this,t)+nf(this.paint.get(`circle-translate`))}queryIntersectsFeature({queryGeometry:e,feature:t,featureState:n,geometry:r,transform:i,pixelsToTileUnits:a,unwrappedTileID:o,getElevation:s}){let c=rf(e,this.paint.get(`circle-translate`),this.paint.get(`circle-translate-anchor`),-i.bearingInRadians,a),l=this.paint.get(`circle-radius`).evaluate(t,n)+this.paint.get(`circle-stroke-width`).evaluate(t,n),u=this.paint.get(`circle-pitch-scale`),d=this.paint.get(`circle-pitch-alignment`),f,p;return d===`map`?(f=c,p=l*a):(f=pf(c,i,o,s),p=l),df({queryGeometry:f,size:p,transform:i,unwrappedTileID:o,getElevation:s,pitchAlignment:d,pitchScale:u},r)}},xf=class extends Vd{};K(`HeatmapBucket`,xf,{omit:[`layers`]});var Sf,Cf=()=>Sf||=new Nl({"heatmap-radius":new J(B.paint_heatmap[`heatmap-radius`],`heatmap-radius`),"heatmap-weight":new J(B.paint_heatmap[`heatmap-weight`],`heatmap-weight`),"heatmap-intensity":new q(B.paint_heatmap[`heatmap-intensity`],`heatmap-intensity`),"heatmap-color":new Ml(B.paint_heatmap[`heatmap-color`],`heatmap-color`),"heatmap-opacity":new q(B.paint_heatmap[`heatmap-opacity`],`heatmap-opacity`)}),wf={get paint(){return Cf()}};function Tf(e,{width:t,height:n},r,i){if(!i)i=new Uint8Array(t*n*r);else if(i instanceof Uint8ClampedArray)i=new Uint8Array(i.buffer);else if(i.length!==t*n*r)throw RangeError(`mismatched image size. expected: ${i.length} but got: ${t*n*r}`);return e.width=t,e.height=n,e.data=i,e}function Ef(e,{width:t,height:n},r){if(t===e.width&&n===e.height)return;let i=Tf({},{width:t,height:n},r);Df(e,i,{x:0,y:0},{x:0,y:0},{width:Math.min(e.width,t),height:Math.min(e.height,n)},r),e.width=t,e.height=n,e.data=i.data}function Df(e,t,n,r,i,a){if(i.width===0||i.height===0)return t;if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw RangeError(`out of range source coordinates for image copy`);if(i.width>t.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw RangeError(`out of range destination coordinates for image copy`);let o=e.data,s=t.data;if(o===s)throw Error(`srcData equals dstData, so image is already copied`);for(let c=0;c<i.height;c++){let l=((n.y+c)*e.width+n.x)*a,u=((r.y+c)*t.width+r.x)*a;for(let e=0;e<i.width*a;e++)s[u+e]=o[l+e]}return t}var Of=class e{constructor(e,t){Tf(this,e,1,t)}resize(e){Ef(this,e,1)}clone(){return new e({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(e,t,n,r,i){Df(e,t,n,r,i,1)}},kf=class e{constructor(e,t){Tf(this,e,4,t)}resize(e){Ef(this,e,4)}replace(e,t){t?this.data.set(e):this.data=e instanceof Uint8ClampedArray?new Uint8Array(e.buffer):e}clone(){return new e({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(e,t,n,r,i){Df(e,t,n,r,i,4)}setPixel(e,t,n){let r=(e*this.width+t)*4;this.data[r+0]=Math.round(n.r*255/n.a),this.data[r+1]=Math.round(n.g*255/n.a),this.data[r+2]=Math.round(n.b*255/n.a),this.data[r+3]=Math.round(n.a*255)}};function Af(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n+=4){let r=e[n+3];t[n+0]=Math.round(e[n+0]*r/255),t[n+1]=Math.round(e[n+1]*r/255),t[n+2]=Math.round(e[n+2]*r/255),t[n+3]=r}return t}K(`AlphaImage`,Of),K(`RGBAImage`,kf);function jf(e){let t={},n=e.resolution||256,r=e.clips?e.clips.length:1,i=e.image||new kf({width:n,height:r});if(!jt(n))throw Error(`width is not a power of 2 - ${n}`);let a=(r,a,o)=>{t[e.evaluationKey]=o;let s=e.expression.evaluate(t);i.setPixel(r/4/n,a/4,s)};if(e.clips)for(let t=0,i=0;t<r;++t,i+=n*4)for(let r=0,o=0;r<n;r++,o+=4){let s=r/(n-1),{start:c,end:l}=e.clips[t],u=c*(1-s)+l*s;a(i,o,u)}else for(let e=0,t=0;e<n;e++,t+=4){let r=e/(n-1);a(0,t,r)}return i}var Mf=`big-fb`,Nf=e=>e.type===`heatmap`,Pf=class extends Il{createBucket(e){return new xf(e)}constructor(e,t){super(e,wf,t),this.heatmapFbos=new Map,this._updateColorRamp()}_handleSpecialPaintPropertyUpdate(e){e===`heatmap-color`&&this._updateColorRamp()}_updateColorRamp(){let e=this._transitionablePaint._values[`heatmap-color`].value.expression;this.colorRamp=jf({expression:e,evaluationKey:`heatmapDensity`,image:this.colorRamp}),this.colorRampTexture=null}resize(){this.heatmapFbos.has(`big-fb`)&&this.heatmapFbos.delete(Mf)}queryRadius(e){return tf(`heatmap-radius`,this,e)}queryIntersectsFeature({queryGeometry:e,feature:t,featureState:n,geometry:r,transform:i,pixelsToTileUnits:a,unwrappedTileID:o,getElevation:s}){return df({queryGeometry:e,size:this.paint.get(`heatmap-radius`).evaluate(t,n)*a,transform:i,unwrappedTileID:o,getElevation:s},r)}hasOffscreenPass(){return this.paint.get(`heatmap-opacity`)!==0&&!this.isHidden()}},Ff,If=()=>Ff||=new Nl({"hillshade-illumination-direction":new q(B.paint_hillshade[`hillshade-illumination-direction`],`hillshade-illumination-direction`),"hillshade-illumination-altitude":new q(B.paint_hillshade[`hillshade-illumination-altitude`],`hillshade-illumination-altitude`),"hillshade-illumination-anchor":new q(B.paint_hillshade[`hillshade-illumination-anchor`],`hillshade-illumination-anchor`),"hillshade-exaggeration":new q(B.paint_hillshade[`hillshade-exaggeration`],`hillshade-exaggeration`),"hillshade-shadow-color":new q(B.paint_hillshade[`hillshade-shadow-color`],`hillshade-shadow-color`),"hillshade-highlight-color":new q(B.paint_hillshade[`hillshade-highlight-color`],`hillshade-highlight-color`),"hillshade-accent-color":new q(B.paint_hillshade[`hillshade-accent-color`],`hillshade-accent-color`),"hillshade-method":new q(B.paint_hillshade[`hillshade-method`],`hillshade-method`),resampling:new q(B.paint_hillshade.resampling,`resampling`)}),Lf={get paint(){return If()}},Rf=e=>e.type===`hillshade`,zf=class extends Il{constructor(e,t){super(e,Lf,t),this.recalculate({zoom:0,zoomHistory:{}},void 0)}getIlluminationProperties(){let e=this.paint.get(`hillshade-illumination-direction`).values,t=this.paint.get(`hillshade-illumination-altitude`).values,n=this.paint.get(`hillshade-highlight-color`).values,r=this.paint.get(`hillshade-shadow-color`).values,i=Math.max(e.length,t.length,n.length,r.length);e=e.concat(Array(i-e.length).fill(e.at(-1))),t=t.concat(Array(i-t.length).fill(t.at(-1))),n=n.concat(Array(i-n.length).fill(n.at(-1))),r=r.concat(Array(i-r.length).fill(r.at(-1)));let a=t.map(en);return{directionRadians:e.map(en),altitudeRadians:a,shadowColor:r,highlightColor:n}}hasOffscreenPass(){return this.paint.get(`hillshade-exaggeration`)!==0&&!this.isHidden()}},Bf,Vf=()=>Bf||=new Nl({"color-relief-opacity":new q(B[`paint_color-relief`][`color-relief-opacity`],`color-relief-opacity`),"color-relief-color":new Ml(B[`paint_color-relief`][`color-relief-color`],`color-relief-color`),resampling:new q(B[`paint_color-relief`].resampling,`resampling`)}),Hf={get paint(){return Vf()}};function Uf(e){return`data`in e}var Wf=class{constructor(e,t,n,r){this.context=e,this.format=n,this.texture=e.gl.createTexture(),this._ownedHandle=this.texture,this.update(t,r)}update(e,t,n){let{width:r,height:i}=e,a=(this.size?.[0]!==r||this.size[1]!==i)&&!n,{context:o}=this,{gl:s}=o;this.useMipmap=!!t?.useMipmap,a&&this.size&&this.format===s.RGBA&&(s.deleteTexture(this.texture),this.texture=s.createTexture(),this._ownedHandle=this.texture,this.magFilter=void 0,this.minFilter=void 0,this.wrap=void 0),s.bindTexture(s.TEXTURE_2D,this.texture),o.pixelStoreUnpackFlipY.set(!1),o.pixelStoreUnpack.set(1);let c=this.format===s.RGBA&&t?.premultiply!==!1;if(a){if(this.size=[r,i],this.format===s.RGBA&&r>0&&i>0){let t=this.useMipmap?Math.floor(Math.log2(Math.max(r,i)))+1:1;if(s.texStorage2D(s.TEXTURE_2D,t,s.RGBA8,r,i),Uf(e)){o.pixelStoreUnpackPremultiplyAlpha.set(!1);let{data:t}=e;c&&t&&(t=Af(t)),t&&s.texSubImage2D(s.TEXTURE_2D,0,0,0,r,i,s.RGBA,s.UNSIGNED_BYTE,t)}else o.pixelStoreUnpackPremultiplyAlpha.set(c),s.texSubImage2D(s.TEXTURE_2D,0,0,0,s.RGBA,s.UNSIGNED_BYTE,e)}else Uf(e)?(o.pixelStoreUnpackPremultiplyAlpha.set(!1),this._uploadRawData(e,c,r,i,s)):(o.pixelStoreUnpackPremultiplyAlpha.set(c),this._uploadDomImage(e,s))}else{let{x:t,y:a}=n||{x:0,y:0};Uf(e)?(o.pixelStoreUnpackPremultiplyAlpha.set(!1),this._updateRawData(e,c,t,a,r,i,s)):(o.pixelStoreUnpackPremultiplyAlpha.set(c),this._updateDomImage(e,t,a,s))}this.useMipmap&&!(Uf(e)&&e.data===null)&&s.generateMipmap(s.TEXTURE_2D),o.pixelStoreUnpackFlipY.setDefault(),o.pixelStoreUnpack.setDefault(),o.pixelStoreUnpackPremultiplyAlpha.setDefault()}_uploadDomImage(e,t){t.texImage2D(t.TEXTURE_2D,0,this.format,this.format,t.UNSIGNED_BYTE,e)}_uploadRawData(e,t,n,r,i){let{data:a}=e;t&&a&&(a=Af(a)),i.texImage2D(i.TEXTURE_2D,0,this.format,n,r,0,this.format,i.UNSIGNED_BYTE,a)}_updateDomImage(e,t,n,r){r.texSubImage2D(r.TEXTURE_2D,0,t,n,r.RGBA,r.UNSIGNED_BYTE,e)}_updateRawData(e,t,n,r,i,a,o){let{data:s}=e;t&&s&&(s=Af(s)),o.texSubImage2D(o.TEXTURE_2D,0,n,r,i,a,o.RGBA,o.UNSIGNED_BYTE,s)}bind(e,t,n){let{context:r}=this,{gl:i}=r;this.texture!==this._ownedHandle&&(this.texture=this._ownedHandle),i.bindTexture(i.TEXTURE_2D,this.texture),n!==i.LINEAR_MIPMAP_NEAREST&&n!==i.LINEAR_MIPMAP_LINEAR||this.useMipmap||(n=i.LINEAR);let a=n||e;e!==this.magFilter&&(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,e),this.magFilter=e),a!==this.minFilter&&(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,a),this.minFilter=a),t!==this.wrap&&(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,t),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,t),this.wrap=t)}generateMipmap(){if(!this.useMipmap)return;let{gl:e}=this.context;e.bindTexture(e.TEXTURE_2D,this.texture),e.generateMipmap(e.TEXTURE_2D)}destroy(){let{gl:e}=this.context;e.deleteTexture(this.texture),this.texture=null,this._ownedHandle=null}},Gf=class e{static{this.byteViewCache=new WeakMap}constructor(t,n,r,i=1,a=1,o=1,s=0){if(this.uid=t,n.height!==n.width)throw RangeError(`DEM tiles must be square`);if(r&&![`mapbox`,`terrarium`,`custom`].includes(r)){I(`"${r}" is not a valid encoding type. Valid types include "mapbox", "terrarium" and "custom".`);return}this.stride=n.height;let c=this.dim=n.height-4;switch(this.data=new Uint32Array(n.data.buffer),e.byteViewCache.set(this,new Uint8Array(this.data.buffer)),r){case`terrarium`:this.redFactor=256,this.greenFactor=1,this.blueFactor=1/256,this.baseShift=32768;break;case`custom`:this.redFactor=i,this.greenFactor=a,this.blueFactor=o,this.baseShift=s;break;default:this.redFactor=6553.6,this.greenFactor=25.6,this.blueFactor=.1,this.baseShift=1e4}for(let e=-2;e<c+2;e++){let t=this._idx(0,Math.max(0,Math.min(c-1,e)));(e<0||e>=c)&&this.data.copyWithin(this._idx(0,e),t,t+c),this.data.fill(this.data[t],this._idx(-2,e),this._idx(0,e)),this.data.fill(this.data[t+c-1],this._idx(c,e),this._idx(c+1,e)+1)}let l=this._getByteView();this.min=2**53-1,this.max=-(2**53-1);for(let e=0;e<c;e++)for(let t=0;t<c;t++){let n=this._idx(e,t)*4,r=this._unpackAtIndex(l,n);r>this.max&&(this.max=r),r<this.min&&(this.min=r)}}get(e,t){let n=this._getByteView(),r=this._idx(e,t)*4;return this._unpackAtIndex(n,r)}sampleBilinear(e,t){let n=Math.floor(e),r=Math.floor(t);if(n<-1||n>=this.dim||r<-1||r>=this.dim)throw RangeError(`Out of range source coordinates for DEM data. x: ${e}, y: ${t}, dim: ${this.dim}`);let i=this._getByteView(),a=((r+2)*this.stride+n+2)*4,o=this.stride*4,s=e-n,c=t-r,l=this._unpackAtIndex(i,a),u=this._unpackAtIndex(i,a+4),d=this._unpackAtIndex(i,a+o),f=this._unpackAtIndex(i,a+o+4);return l*(1-s)*(1-c)+u*s*(1-c)+d*(1-s)*c+f*s*c}getUnpackVector(){return[this.redFactor,this.greenFactor,this.blueFactor,this.baseShift]}_idx(e,t){if(e<-2||e>=this.dim+2||t<-2||t>=this.dim+2)throw RangeError(`Out of range source coordinates for DEM data. x: ${e}, y: ${t}, dim: ${this.dim}`);return(t+2)*this.stride+(e+2)}unpack(e,t,n){return e*this.redFactor+t*this.greenFactor+n*this.blueFactor-this.baseShift}pack(e){return Kf(e,this.getUnpackVector())}getPixels(){return new kf({width:this.stride,height:this.stride},this._getByteView())}backfillBorder(e,t,n){if(this.dim!==e.dim)throw Error(`dem dimension mismatch`);let r=t*this.dim,i=t*this.dim+this.dim,a=n*this.dim,o=n*this.dim+this.dim;switch(t){case-1:r=i-2;break;case 1:i=r+2}switch(n){case-1:a=o-2;break;case 1:o=a+2}let s=-t*this.dim,c=-n*this.dim;for(let t=a;t<o;t++)for(let n=r;n<i;n++)this.data[this._idx(n,t)]=e.data[this._idx(n+s,t+c)]}_getByteView(){let t=e.byteViewCache.get(this);return t?.buffer!==this.data.buffer&&(t=new Uint8Array(this.data.buffer),e.byteViewCache.set(this,t)),t}_unpackAtIndex(e,t){return this.unpack(e[t],e[t+1],e[t+2])}};function Kf(e,t){let n=t[0],r=t[1],i=t[2],a=t[3],o=[n,r,i].filter(e=>e!==0);if(o.length===0)return{r:0,g:0,b:0};let s=Math.min(...o),c=Math.round((e+a)/s),l=e=>e===0?0:Math.floor(c*s/e)%256;return{r:l(n),g:l(r),b:l(i)}}K(`DEMData`,Gf);var qf=e=>e.type===`color-relief`,Jf=class extends Il{constructor(e,t){super(e,Hf,t)}_createColorRamp(e){let t={elevationStops:[],colorStops:[]},n=this._transitionablePaint._values[`color-relief-color`].value.expression;if(n instanceof Ds&&n._styleExpression.expression instanceof Wi){this.colorRampExpression=n;let e=n._styleExpression.expression;t.elevationStops=e.labels,t.colorStops=[];for(let n of t.elevationStops)t.colorStops.push(e.evaluate({globals:{elevation:n}}))}if(t.elevationStops.length<1&&(t.elevationStops=[0],t.colorStops=[G.transparent]),t.elevationStops.length<2&&(t.elevationStops.push(t.elevationStops[0]+1),t.colorStops.push(t.colorStops[0])),t.elevationStops.length<=e)return t;let r={elevationStops:[],colorStops:[]},i=(t.elevationStops.length-1)/(e-1);for(let e=0;e<t.elevationStops.length-.5;e+=i)r.elevationStops.push(t.elevationStops[Math.round(e)]),r.colorStops.push(t.colorStops[Math.round(e)]);return I(`Too many colors in specification of ${this.id} color-relief layer, may not render properly. Max possible colors: ${e}, provided: ${t.elevationStops.length}`),r}_colorRampChanged(){return this.colorRampExpression!=this._transitionablePaint._values[`color-relief-color`].value.expression}getColorRampTextures(e,t,n){if(this.colorRampTextures&&!this._colorRampChanged())return this.colorRampTextures;let r=this._createColorRamp(t),i=new kf({width:r.colorStops.length,height:1}),a=new kf({width:r.colorStops.length,height:1});for(let e=0;e<r.elevationStops.length;e++){let t=Kf(r.elevationStops[e],n);a.setPixel(0,e,new G(t.r/255,t.g/255,t.b/255,1)),i.setPixel(0,e,r.colorStops[e])}return this.colorRampTextures={elevationTexture:new Wf(e,a,e.gl.RGBA),colorTexture:new Wf(e,i,e.gl.RGBA)},this.colorRampTextures}hasOffscreenPass(){return!this.isHidden()&&!!this.colorRampTextures}},Yf=Gl([{name:`a_pos`,components:2,type:`Int16`}],4),Xf=Yf.members;Yf.size,Yf.alignment;function Zf(e,t,n){let r=n.patternDependencies,i=!1;for(let n of t){let t=n.paint.get(`${e}-pattern`);t.isConstant()||(i=!0);let a=t.constantOr(null);a&&(i=!0,r[a.to]=!0,r[a.from]=!0)}return i}function Qf(e,t,n,r,i){let{zoom:a}=r,o=i.patternDependencies;for(let r of t){let t=r.paint.get(`${e}-pattern`).value;if(t.kind!==`constant`){let e=t.evaluate({zoom:a-1},n,{},i.availableImages),s=t.evaluate({zoom:a},n,{},i.availableImages),c=t.evaluate({zoom:a+1},n,{},i.availableImages);e=e?.name?e.name:e,s=s?.name?s.name:s,c=c?.name?c.name:c,o[e]=!0,o[s]=!0,o[c]=!0,n.patterns[r.id]={min:e,mid:s,max:c}}}return n}var $f=new Set,ep=!1;function tp(e,t,n=2){let r=t&&t.length,i=r?t[0]*n:e.length;$f.size&&$f.clear();let a=np(e,0,i,n,!0),o=[];if(!a||a.next===a.prev)return o;let s=0,c=0,l=0;if(r&&(a=up(e,t,a,n)),e.length>80*n){s=e[0],c=e[1];let t=s,r=c;for(let a=n;a<i;a+=n){let n=e[a],i=e[a+1];n<s&&(s=n),i<c&&(c=i),n>t&&(t=n),i>r&&(r=i)}l=Math.max(t-s,r-c),l=l===0?0:32767/l}return ip(a,o,s,c,l),o}function np(e,t,n,r,i){let a=null;if(i===qp(e,t,n,r)>0)for(let i=t;i<n;i+=r)a=Wp(i/r|0,e[i],e[i+1],a);else for(let i=n-r;i>=t;i-=r)a=Wp(i/r|0,e[i],e[i+1],a);return a&&Lp(a,a.next)&&(Gp(a),a=a.next),a}function rp(e,t=e){let n=t===e,r=e,i;do i=!1,r!==r.next&&($f.size===0||!$f.has(r))&&(Lp(r,r.next)||Ip(r.prev,r,r.next)===0)?((n||r===t)&&(t=r.prev),ep=!0,Gp(r),r=r.prev,i=!0):(n||r!==t)&&(r=r.next,i=!n);while(i||r!==t);return t}function ip(e,t,n,r,i){i&&kp(e,n,r,i);let a=e,o=!1;for(;e.prev!==e.next;){let s=e.prev,c=e.next;if(Ip(s,e,c)<0&&(i?op(e,n,r,i):ap(e)))t.push(s.i,e.i,c.i),Gp(e),e=c,a=c;else if(e=c,e===a){if(ep=!1,e=rp(e),ep){a=e;continue}if(!o){e=sp(e,t),a=e,o=!0;continue}cp(e,t,n,r,i);break}}}function ap(e){let t=e.prev,n=e,r=e.next,i=t.x,a=n.x,o=r.x,s=t.y,c=n.y,l=r.y,u=Math.min(i,a,o),d=Math.min(s,c,l),f=Math.max(i,a,o),p=Math.max(s,c,l),m=r.next;for(;m!==t;){if(m.x>=u&&m.x<=f&&m.y>=d&&m.y<=p&&(i!==m.x||s!==m.y)&&Pp(i,s,a,c,o,l,m.x,m.y)&&Ip(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function op(e,t,n,r){let i=e.prev,a=e,o=e.next,s=i.x,c=a.x,l=o.x,u=i.y,d=a.y,f=o.y,p=Math.min(s,c,l),m=Math.min(u,d,f),h=Math.max(s,c,l),g=Math.max(u,d,f),_=Mp(p,m,t,n,r),v=Mp(h,g,t,n,r),y=e.prevZ;for(;y&&y.z>=_;){if(y.x>=p&&y.x<=h&&y.y>=m&&y.y<=g&&y!==o&&(s!==y.x||u!==y.y)&&Pp(s,u,c,d,l,f,y.x,y.y)&&Ip(y.prev,y,y.next)>=0)return!1;y=y.prevZ}let b=e.nextZ;for(;b&&b.z<=v;){if(b.x>=p&&b.x<=h&&b.y>=m&&b.y<=g&&b!==o&&(s!==b.x||u!==b.y)&&Pp(s,u,c,d,l,f,b.x,b.y)&&Ip(b.prev,b,b.next)>=0)return!1;b=b.nextZ}return!0}function sp(e,t){let n=e,r=!1;do{let i=n.prev,a=n.next.next;Rp(i,n,n.next,a,!1)&&Vp(i,a)&&Vp(a,i)&&(t.push(i.i,n.i,a.i),Gp(n),Gp(n.next),n=e=a,r=!0),n=n.next}while(n!==e);return r?rp(n):n}function cp(e,t,n,r,i){let a=e;do{let e=a.next.next;for(;e!==a.prev;){if(a.i!==e.i&&Fp(a,e)){let o=Up(a,e);a=rp(a,a.next),o=rp(o,o.next),ip(a,t,n,r,i),ip(o,t,n,r,i);return}e=e.next}a=a.next}while(a!==e)}var lp=!1;function up(e,t,n,r){let i=[];for(let n=0,a=t.length;n<a;n++){let o=np(e,t[n]*r,n<a-1?t[n+1]*r:e.length,r,!1);o===o.next&&$f.add(o),i.push(Np(o))}i.sort(dp),_p(e.length/r,t.length),vp(n,n),lp=!0;for(let e=0;e<i.length;e++)n=fp(i[e],n);return lp=!1,rp(n)}function dp(e,t){return e.x-t.x||e.y-t.y||(e.next.y-e.y)/(e.next.x-e.x)-(t.next.y-t.y)/(t.next.x-t.x)}function fp(e,t){let n=Sp(e,t);if(!n)return t;let r=Up(n,e),i=r.next;return vp(n,i.next),rp(r,r.next),rp(n,n.next)}var pp=new Float64Array,mp=0,hp=[],gp=[];function _p(e,t){let n=Math.ceil((e+2*t)/16)+t+2;pp.length<n*4&&(pp=new Float64Array(n*4)),mp=0}function vp(e,t){let n=e;do{let e=mp++;hp[e]=n;let r=n.x,i=n.y,a=n.x,o=n.y,s=0;do{let t=n.next;n.z=e,t.x<r&&(r=t.x),t.x>a&&(a=t.x),t.y<i&&(i=t.y),t.y>o&&(o=t.y),n=t}while(++s<16&&n!==t);gp[e]=n;let c=e*4;pp[c]=r,pp[c+1]=i,pp[c+2]=a,pp[c+3]=o}while(n!==t)}function yp(e,t){let n=e.z*4;t.x<pp[n]&&(pp[n]=t.x),t.y<pp[n+1]&&(pp[n+1]=t.y),t.x>pp[n+2]&&(pp[n+2]=t.x),t.y>pp[n+3]&&(pp[n+3]=t.y)}function bp(e){let t=gp[e];for(;t.prev.next!==t;)t=t.next;return gp[e]=t,t}function xp(e){let t=hp[e];for(;t.prev.next!==t;)t=t.next;return hp[e]=t,t}function Sp(e,t){let n=t,r=e.x,i=e.y,a=-1/0,o;if(Lp(e,n))return n;for(let t=0,s=0;t<mp;t++,s+=4){if(i<pp[s+1]||i>pp[s+3]||pp[s]>r||pp[s+2]<=a)continue;let c=bp(t);n=xp(t);do{if(n.prev.next===n){if(Lp(e,n.next))return n.next;if(i<=n.y&&i>=n.next.y&&n.next.y!==n.y){let e=n.x+(i-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(e<=r&&e>a&&(a=e,o=n.x<n.next.x?n:n.next,e===r))return o}}n=n.next}while(n!==c)}if(!o)return null;let s=o.x,c=o.y,l=Math.min(i,c),u=Math.max(i,c),d=1/0;for(let t=0,f=0;t<mp;t++,f+=4){if(pp[f+2]<s||pp[f]>r||pp[f+3]<l||pp[f+1]>u)continue;let p=bp(t);n=xp(t);do{if(n.prev.next===n&&r>=n.x&&n.x>=s&&r!==n.x&&Pp(i<c?r:a,i,s,c,i<c?a:r,i,n.x,n.y)){let t=Math.abs(i-n.y)/(r-n.x);(Vp(n,e)||n.y===i&&n.next.y===i&&n.next.x>r)&&(t<d||t===d&&(n.x>o.x||n.x===o.x&&Cp(o,n)))&&(o=n,d=t)}n=n.next}while(n!==p)}return o}function Cp(e,t){return Ip(e.prev,e,t.prev)<0&&Ip(t.next,e,e.next)<0}var wp=[],Tp=[],Ep=new Uint32Array,Dp=new Uint32Array,Op=new Uint32Array(256);function kp(e,t,n,r){let i=e,a=0;do i.z=Mp(i.x,i.y,t,n,r),wp[a++]=i,i=i.next;while(i!==e);Ap(a);let o=null;for(let e=0;e<a;e++){let t=wp[e];t.prevZ=o,o&&(o.nextZ=t),o=t}o.nextZ=null,wp.fill(null,0,a),Tp.fill(null,0,a)}function Ap(e){if(e<=32)for(let t=1;t<e;t++){let e=wp[t],n=e.z,r=t-1;for(;r>=0&&wp[r].z>n;)wp[r+1]=wp[r],r--;wp[r+1]=e}else{Ep.length<e&&(Ep=new Uint32Array(e),Dp=new Uint32Array(e),Tp=Array(e));for(let t=0;t<e;t++)Ep[t]=wp[t].z;jp(e,wp,Ep,Tp,Dp,0),jp(e,Tp,Dp,wp,Ep,8),jp(e,wp,Ep,Tp,Dp,16),jp(e,Tp,Dp,wp,Ep,24)}}function jp(e,t,n,r,i,a){Op.fill(0);for(let t=0;t<e;t++)Op[n[t]>>>a&255]++;let o=0;for(let e=0;e<256;e++){let t=Op[e];Op[e]=o,o+=t}for(let o=0;o<e;o++){let e=n[o],s=Op[e>>>a&255]++;r[s]=t[o],i[s]=e}}function Mp(e,t,n,r,i){return e=(e-n)*i|0,t=(t-r)*i|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function Np(e){let t=e,n=e;do(t.x<n.x||t.x===n.x&&t.y<n.y)&&(n=t),t=t.next;while(t!==e);return n}function Pp(e,t,n,r,i,a,o,s){return(i-o)*(t-s)>=(e-o)*(a-s)&&(e-o)*(r-s)>=(n-o)*(t-s)&&(n-o)*(a-s)>=(i-o)*(r-s)}function Fp(e,t){let n=Lp(e,t)&&Ip(e.prev,e,e.next)>0&&Ip(t.prev,t,t.next)>0;return e.next.i!==t.i&&(n||Vp(e,t)&&Vp(t,e)&&(Ip(e.prev,e,t.prev)!==0||Ip(e,t.prev,t)!==0))&&!Bp(e,t)&&(n||Hp(e,t))}function Ip(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function Lp(e,t){return e.x===t.x&&e.y===t.y}function Rp(e,t,n,r,i=!0){let a=Ip(e,t,n),o=Ip(e,t,r),s=Ip(n,r,e),c=Ip(n,r,t);return(a>0&&o<0||a<0&&o>0)&&(s>0&&c<0||s<0&&c>0)?!0:i?!!(a===0&&zp(e,n,t)||o===0&&zp(e,r,t)||s===0&&zp(n,e,r)||c===0&&zp(n,t,r)):!1}function zp(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function Bp(e,t){let n=Math.min(e.x,t.x),r=Math.max(e.x,t.x),i=Math.min(e.y,t.y),a=Math.max(e.y,t.y),o=e;do{let s=o.next;if(o.x>r&&s.x>r||o.x<n&&s.x<n||o.y>a&&s.y>a||o.y<i&&s.y<i)o=s;else{if(o.i!==e.i&&s.i!==e.i&&o.i!==t.i&&s.i!==t.i&&Rp(o,s,e,t))return!0;o=s}}while(o!==e);return!1}function Vp(e,t){return Ip(e.prev,e,e.next)<0?Ip(e,t,e.next)>=0&&Ip(e,e.prev,t)>=0:Ip(e,t,e.prev)<0||Ip(e,e.next,t)<0}function Hp(e,t){let n=e,r=!1,i=(e.x+t.x)/2,a=(e.y+t.y)/2;do{let e=n.next;n.y>a!=e.y>a&&i<(e.x-n.x)*(a-n.y)/(e.y-n.y)+n.x&&(r=!r),n=e}while(n!==e);return r}function Up(e,t){let n=Kp(e.i,e.x,e.y),r=Kp(t.i,t.x,t.y),i=e.next,a=t.prev;return e.next=t,t.prev=e,n.next=i,i.prev=n,r.next=n,n.prev=r,a.next=r,r.prev=a,r}function Wp(e,t,n,r){let i=Kp(e,t,n);return r?(i.next=r.next,i.prev=r,r.next.prev=i,r.next=i):(i.prev=i,i.next=i),i}function Gp(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ),lp&&yp(e.prev,e.next)}function Kp(e,t,n){return{i:e,x:t,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null}}function qp(e,t,n,r){let i=0;for(let a=t,o=n-r;a<n;a+=r)i+=(e[o]-e[a])*(e[a+1]+e[o+1]),o=a;return i}var Jp=class{constructor(e,t){if(t>e)throw Error(`Min granularity must not be greater than base granularity.`);this._baseZoomGranularity=e,this._minGranularity=t}getGranularityForZoomLevel(e){let t=1<<e;return Math.max(Math.floor(this._baseZoomGranularity/t),this._minGranularity,1)}},Yp=class e{constructor(e){this.fill=e.fill,this.line=e.line,this.tile=e.tile,this.stencil=e.stencil,this.circle=e.circle}static{this.noSubdivision=new e({fill:new Jp(0,0),line:new Jp(0,0),tile:new Jp(0,0),stencil:new Jp(0,0),circle:1})}};K(`SubdivisionGranularityExpression`,Jp),K(`SubdivisionGranularitySetting`,Yp);var Xp=-32768,Zp=32767,Qp=class{constructor(e,t){this._vertexBuffer=[],this._vertexDictionary=new Map,this._used=!1,this._granularity=e,this._granularityCellSize=N/e,this._canonical=t}_getKey(e,t){return e+=32768,t+=32768,e<<16|t}_vertexToIndex(e,t){if(e<-32768||t<-32768||e>32767||t>32767)throw Error(`Vertex coordinates are out of signed 16 bit integer range.`);let n=Math.round(e)|0,r=Math.round(t)|0,i=this._getKey(n,r),a=this._vertexDictionary.get(i);if(a!==void 0)return a;let o=this._vertexBuffer.length/2;return this._vertexDictionary.set(i,o),this._vertexBuffer.push(n,r),o}_subdivideTrianglesScanline(e,t){if(this._granularity<2)return im(this._vertexBuffer,rm(e,t));let n=[],r=e.length;for(let i=0;i<r;i+=3){let r=[t[e[i+0]],t[e[i+1]],t[e[i+2]]],a=[this._vertexBuffer[r[0]*2+0],this._vertexBuffer[r[0]*2+1],this._vertexBuffer[r[1]*2+0],this._vertexBuffer[r[1]*2+1],this._vertexBuffer[r[2]*2+0],this._vertexBuffer[r[2]*2+1]],o=1/0,s=1/0,c=-1/0,l=-1/0;for(let e=0;e<3;e++){let t=a[e*2],n=a[e*2+1];o=Math.min(o,t),c=Math.max(c,t),s=Math.min(s,n),l=Math.max(l,n)}if(o===c||s===l)continue;let u=Math.floor(o/this._granularityCellSize),d=Math.ceil(c/this._granularityCellSize),f=Math.floor(s/this._granularityCellSize),p=Math.ceil(l/this._granularityCellSize);if(u===d&&f===p)n.push(...r);else for(let e=f;e<p;e++){let t=this._scanlineGenerateVertexRingForCellRow(e,a,r);am(this._vertexBuffer,t,n)}}return n}_scanlineGenerateVertexRingForCellRow(e,t,n){let r=e*this._granularityCellSize,i=r+this._granularityCellSize,a=[];for(let e=0;e<3;e++){let o=t[e*2],s=t[e*2+1],c=t[(e+1)*2%6],l=t[((e+1)*2+1)%6],u=t[(e+2)*2%6],d=t[((e+2)*2+1)%6],f=c-o,p=l-s,m=f===0,h=p===0,g=(r-s)/p,_=(i-s)/p,v=Math.min(g,_),y=Math.max(g,_);if(!h&&(v>=1||y<=0)||h&&(s<r||s>i)){l>=r&&l<=i&&a.push(n[(e+1)%3]);continue}if(!h&&v>0){let e=o+f*v,t=s+p*v;a.push(this._vertexToIndex(e,t))}let b=o+f*Math.max(v,0),x=o+f*Math.min(y,1);if(m||this._generateIntraEdgeVertices(a,o,s,c,l,b,x),!h&&y<1){let e=o+f*y,t=s+p*y;a.push(this._vertexToIndex(e,t))}(h||l>=r&&l<=i)&&a.push(n[(e+1)%3]),!h&&(l<=r||l>=i)&&this._generateInterEdgeVertices(a,o,s,c,l,u,d,x,r,i)}return a}_generateIntraEdgeVertices(e,t,n,r,i,a,o){let s=r-t,c=i-n,l=c===0,u=l?Math.min(t,r):Math.min(a,o),d=l?Math.max(t,r):Math.max(a,o),f=Math.floor(u/this._granularityCellSize)+1,p=Math.ceil(d/this._granularityCellSize)-1;if(l?t<r:a<o)for(let r=f;r<=p;r++){let i=r*this._granularityCellSize,a=n+c*(i-t)/s;e.push(this._vertexToIndex(i,a))}else for(let r=p;r>=f;r--){let i=r*this._granularityCellSize,a=n+c*(i-t)/s;e.push(this._vertexToIndex(i,a))}}_generateInterEdgeVertices(e,t,n,r,i,a,o,s,c,l){let u=i-n,d=a-r,f=o-i,p=(c-i)/f,m=(l-i)/f,h=Math.min(p,m),g=Math.max(p,m),_=r+d*h,v=Math.floor(Math.min(_,s)/this._granularityCellSize)+1,y=Math.ceil(Math.max(_,s)/this._granularityCellSize)-1,b=s<_,x=f===0;if(x&&(o===c||o===l))return;if(x||h>=1||g<=0){let e=t-a,r=n-o,i=(c-o)/r,u=(l-o)/r,d=a+e*Math.min(i,u);v=Math.floor(Math.min(d,s)/this._granularityCellSize)+1,y=Math.ceil(Math.max(d,s)/this._granularityCellSize)-1,b=s<d}let S=u>0?l:c;if(b)for(let t=v;t<=y;t++){let n=t*this._granularityCellSize;e.push(this._vertexToIndex(n,S))}else for(let t=y;t>=v;t--){let n=t*this._granularityCellSize;e.push(this._vertexToIndex(n,S))}}_generateOutline(e,t){let n=[],r=0;for(let i of e){let e=this._granularity<2?this._ringPathIndices(i,r,t):this._pointArrayToIndices(em(i,this._granularity,!0));r+=i.length;let a=[];for(let t=1;t<e.length;t++)a.push(e[t-1]),a.push(e[t]);n.push(a)}return n}_ringPathIndices(e,t,n){let r=n.slice(t,t+e.length);return r.length>=2&&tm(e)&&r.push(r[0]),r}_handlePoles(e){let t=!1,n=!1;this._canonical&&(this._canonical.y===0&&(t=!0),this._canonical.y===(1<<this._canonical.z)-1&&(n=!0)),(t||n)&&this._fillPoles(e,t,n)}_ensureNoPoleVertices(){let e=this._vertexBuffer;for(let t=0;t<e.length;t+=2){let n=e[t+1];n===-32768&&(e[t+1]=-32767),n===32767&&(e[t+1]=32766)}}_generatePoleQuad(e,t,n,r,i,a){r>i==(a===-32768)?(e.push(n),e.push(t),e.push(this._vertexToIndex(r,a)),e.push(this._vertexToIndex(i,a)),e.push(n),e.push(this._vertexToIndex(r,a))):(e.push(t),e.push(n),e.push(this._vertexToIndex(r,a)),e.push(n),e.push(this._vertexToIndex(i,a)),e.push(this._vertexToIndex(r,a)))}_fillPoles(e,t,n){let r=this._vertexBuffer,i=N,a=e.length;for(let o=2;o<a;o+=3){let a=e[o-2],s=e[o-1],c=e[o],l=r[a*2],u=r[a*2+1],d=r[s*2],f=r[s*2+1],p=r[c*2],m=r[c*2+1];t&&(u===0&&f===0&&this._generatePoleQuad(e,a,s,l,d,Xp),f===0&&m===0&&this._generatePoleQuad(e,s,c,d,p,Xp),m===0&&u===0&&this._generatePoleQuad(e,c,a,p,l,Xp)),n&&(u===i&&f===i&&this._generatePoleQuad(e,a,s,l,d,Zp),f===i&&m===i&&this._generatePoleQuad(e,s,c,d,p,Zp),m===i&&u===i&&this._generatePoleQuad(e,c,a,p,l,Zp))}}_initializeVertices(e){let t=[];for(let n=0;n<e.length;n+=2)t.push(this._vertexToIndex(e[n],e[n+1]));return t}subdividePolygonInternal(e,t){if(this._used)throw Error(`Subdivision: multiple use not allowed.`);this._used=!0;let{flattened:n,holeIndices:r}=nm(e),i=this._initializeVertices(n),a;try{let e=tp(n,r);a=this._subdivideTrianglesScanline(e,i)}catch(e){console.error(e)}let o=[];return t&&(o=this._generateOutline(e,i)),this._ensureNoPoleVertices(),this._handlePoles(a),this._granularity>=2&&this._canonical?.z===0&&(a=this._removeTrianglesOutsideTileX(a),o=o.map(e=>this._removeLinesOutsideTileX(e))),{verticesFlattened:this._vertexBuffer,indicesTriangles:a,indicesLineList:o}}_vertexOutsideTileX(e){let t=this._vertexBuffer[e*2];return t<0||t>8192}_removeTrianglesOutsideTileX(e){let t=[];for(let n=0;n<e.length;n+=3)this._vertexOutsideTileX(e[n])||this._vertexOutsideTileX(e[n+1])||this._vertexOutsideTileX(e[n+2])||t.push(e[n],e[n+1],e[n+2]);return t}_removeLinesOutsideTileX(e){let t=[];for(let n=0;n<e.length;n+=2)this._vertexOutsideTileX(e[n])||this._vertexOutsideTileX(e[n+1])||t.push(e[n],e[n+1]);return t}_pointArrayToIndices(e){let t=[];for(let n of e)t.push(this._vertexToIndex(n.x,n.y));return t}};function $p(e,t,n,r=!0){return new Qp(n,t).subdividePolygonInternal(e,r)}function em(e,t,n=!1){if(!e||e.length<1||e.length<2)return[];let r=n&&tm(e);if(t<2)return r?[...e,e[0]]:[...e];let i=Math.floor(N/t),a=[];a.push(new f(e[0].x,e[0].y));let o=e.length,s=r?o:o-1;for(let t=0;t<s;t++){let n=e[t],r=t<o-1?e[t+1]:e[0],s=n.x,c=n.y,l=r.x,u=r.y,d=s!==l,p=c!==u;if(!d&&!p)continue;let m=l-s,h=u-c,g=Math.abs(m),_=Math.abs(h),v=s,y=c;for(;;){let e=m>0?(Math.floor(v/i)+1)*i:(Math.ceil(v/i)-1)*i,t=h>0?(Math.floor(y/i)+1)*i:(Math.ceil(y/i)-1)*i,n=Math.abs(v-e),r=Math.abs(y-t),o=Math.abs(v-l),s=Math.abs(y-u),c=d?n/g:1/0,b=p?r/_:1/0;if((o<=n||!d)&&(s<=r||!p))break;if(c<b&&d||!p){v=e,y+=h*c;let t=new f(v,Math.round(y));(a[a.length-1].x!==t.x||a[a.length-1].y!==t.y)&&a.push(t)}else{v+=m*b,y=t;let e=new f(Math.round(v),y);(a[a.length-1].x!==e.x||a[a.length-1].y!==e.y)&&a.push(e)}}let b=new f(l,u);(a[a.length-1].x!==b.x||a[a.length-1].y!==b.y)&&a.push(b)}return a}function tm(e){return!e[0].equals(e[e.length-1])}function nm(e){let t=[],n=[];for(let r of e)if(r.length!==0){r!==e[0]&&t.push(n.length/2);for(let e of r)n.push(e.x),n.push(e.y)}return{flattened:n,holeIndices:t}}function rm(e,t){let n=Array(e.length);for(let r=0;r<e.length;r++)n[r]=t[e[r]];return n}function im(e,t){let n=[];for(let r=0;r<t.length;r+=3){let i=t[r],a=t[r+1],o=t[r+2],s=e[i*2],c=e[i*2+1],l=e[a*2],u=e[a*2+1],d=e[o*2],f=e[o*2+1],p=l-s,m=u-c,h=d-s;p*(f-c)-m*h>0?(n.push(i),n.push(o),n.push(a)):(n.push(i),n.push(a),n.push(o))}return n}function am(e,t,n){if(t.length===0)throw Error(`Subdivision vertex ring is empty.`);let r=0,i=e[t[0]*2];for(let n=1;n<t.length;n++){let a=e[t[n]*2];a<i&&(i=a,r=n)}let a=t.length,o=r,s=(o+1)%a;for(;;){let r=o-1>=0?o-1:a-1,i=(s+1)%a,c=e[t[r]*2],l=e[t[r]*2+1],u=e[t[i]*2],d=e[t[i]*2+1],f=e[t[o]*2],p=e[t[o]*2+1],m=e[t[s]*2],h=e[t[s]*2+1],g=!1;if(c<u)g=!0;else if(c>u)g=!1;else{let e=h-p,t=-(m-f),n=p<h?1:-1;((c-f)*e+(l-p)*t)*n>((u-f)*e+(d-p)*t)*n&&(g=!0)}if(g){let e=t[r],i=t[o],c=t[s];e!==i&&e!==c&&i!==c&&n.push(c,i,e),o--,o<0&&(o=a-1)}else{let e=t[i],r=t[o],c=t[s];e!==r&&e!==c&&r!==c&&n.push(c,r,e),s++,s>=a&&(s=0)}if(r===i)break}}function om(e,t,n,r,i,a,o,s,c){let l=i.length/2,u=o&&s&&c;if(l<Qu.MAX_VERTEX_ARRAY_LENGTH){let d=t.prepareSegment(l,n,r),f=d.vertexLength;for(let e=0;e<a.length;e+=3)r.emplaceBack(f+a[e],f+a[e+1],f+a[e+2]);d.vertexLength+=l,d.primitiveLength+=a.length/3;let p,m;u&&(m=o.prepareSegment(l,n,s),p=m.vertexLength,m.vertexLength+=l);for(let t=0;t<i.length;t+=2)e(i[t],i[t+1]);if(u)for(let e of c){for(let t=1;t<e.length;t+=2)s.emplaceBack(p+e[t-1],p+e[t]);m.primitiveLength+=e.length/2}}else cm(t,n,r,i,a,e),u&&lm(o,n,s,i,c,e),t.forceNewSegmentOnNextPrepare(),o?.forceNewSegmentOnNextPrepare()}function sm(e,t,n,r,i,a,o){if(a){let a=r.count;return n(t[i*2],t[i*2+1]),e[i]=r.count,r.count++,o.vertexLength++,a}return e[i]}function cm(e,t,n,r,i,a){let o=[];for(let e=0;e<r.length/2;e++)o.push(-1);let s={count:0},c=0,l=e.getOrCreateLatestSegment(t,n),u=l.vertexLength;for(let d=2;d<i.length;d+=3){let f=i[d-2],p=i[d-1],m=i[d],h=o[f]<c,g=o[p]<c,_=o[m]<c,v=+!!h+ +!!g+ +!!_;l.vertexLength+v>Qu.MAX_VERTEX_ARRAY_LENGTH&&(l=e.createNewSegment(t,n),c=s.count,h=!0,g=!0,_=!0,u=0);let y=sm(o,r,a,s,f,h,l),b=sm(o,r,a,s,p,g,l),x=sm(o,r,a,s,m,_,l);n.emplaceBack(u+y-c,u+b-c,u+x-c),l.primitiveLength++}}function lm(e,t,n,r,i,a){let o=[];for(let e=0;e<r.length/2;e++)o.push(-1);let s={count:0},c=0,l=e.getOrCreateLatestSegment(t,n),u=l.vertexLength;for(let d of i)for(let i=1;i<d.length;i+=2){let f=d[i-1],p=d[i],m=o[f]<c,h=o[p]<c,g=+!!m+ +!!h;l.vertexLength+g>Qu.MAX_VERTEX_ARRAY_LENGTH&&(l=e.createNewSegment(t,n),c=s.count,m=!0,h=!0,u=0);let _=sm(o,r,a,s,f,m,l),v=sm(o,r,a,s,p,h,l);n.emplaceBack(u+_-c,u+v-c),l.primitiveLength++}}var um=class{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(e=>e.id),this.index=e.index,this.hasDependencies=!1,this.sdfPatterns={},this.patternFeatures=[],this.layoutVertexArray=new Pu,this.indexArray=new qu,this.indexArray2=new Ju,this.programConfigurations=new Ed(e.layers,e.zoom),this.segments=new Qu,this.segments2=new Qu,this.stateDependentLayerIds=this.layers.filter(e=>e.isStateDependent()).map(e=>e.id)}populate(e,t,n){this.hasDependencies=Zf(`fill`,this.layers,t);let r=this.layers[0].layout.get(`fill-sort-key`),i=!r.isConstant(),a=[],o=new yl(this.zoom),s=this.layers[0]._featureFilter.needGeometry;for(let{feature:c,id:l,index:u,sourceLayerIndex:d}of e){let e=Nd(c,s);if(!this.layers[0]._featureFilter.filter(o,e,n))continue;let f=i?r.evaluate(e,{},n,t.availableImages):void 0,p={id:l,properties:c.properties,type:c.type,sourceLayerIndex:d,index:u,geometry:s?e.geometry:Md(c),patterns:{},sortKey:f};a.push(p)}i&&a.sort((e,t)=>e.sortKey-t.sortKey);for(let r of a){let{geometry:i,index:a,sourceLayerIndex:o}=r;if(this.hasDependencies){let e=Qf(`fill`,this.layers,r,{zoom:this.zoom},t);this.patternFeatures.push(e)}else this.addFeature(r,i,a,n,{},t.subdivisionGranularity);let s=e[a].feature;t.featureIndex.insert(s,i,a,o,this.index)}}update(e,t,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,{imagePositions:n})}addFeatures({options:e,canonical:t,patternPositions:n,patternMap:r}){this.detectSdfPatterns(r);for(let r of this.patternFeatures)this.addFeature(r,r.geometry,r.index,t,n,e.subdivisionGranularity)}detectSdfPatterns(e){for(let t of this.patternFeatures)for(let n in t.patterns){let r=t.patterns[n];this.recordSdfPattern(n,e[r.min]),this.recordSdfPattern(n,e[r.mid]),this.recordSdfPattern(n,e[r.max])}for(let t of this.layers){let n=t.paint.get(`fill-pattern`).constantOr(null);n&&(this.recordSdfPattern(t.id,e[n.from.toString()]),this.recordSdfPattern(t.id,e[n.to.toString()]))}}recordSdfPattern(e,t){if(!t)return;let n=t.sdf===!0,r=this.sdfPatterns[e];r===void 0?this.sdfPatterns[e]=n:r!==n&&I(`Style sheet warning: Cannot mix SDF and non-SDF fill patterns in layer "${e}"`)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Xf),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.indexBuffer2=e.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())}addFeature(e,t,n,r,i,a){for(let e of Zi(t,500)){let t=$p(e,r,a.fill.getGranularityForZoomLevel(r.z)),n=this.layoutVertexArray;om((e,t)=>{n.emplaceBack(e,t)},this.segments,this.layoutVertexArray,this.indexArray,t.verticesFlattened,t.indicesTriangles,this.segments2,this.indexArray2,t.indicesLineList)}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,n,{imagePositions:i,canonical:r})}};K(`FillBucket`,um,{omit:[`layers`,`patternFeatures`]});var dm,fm=()=>dm||=new Nl({"fill-sort-key":new J(B.layout_fill[`fill-sort-key`],`fill-sort-key`)}),pm,mm=()=>pm||=new Nl({"fill-antialias":new q(B.paint_fill[`fill-antialias`],`fill-antialias`),"fill-opacity":new J(B.paint_fill[`fill-opacity`],`fill-opacity`),"fill-layer-opacity":new q(B.paint_fill[`fill-layer-opacity`],`fill-layer-opacity`),"fill-color":new J(B.paint_fill[`fill-color`],`fill-color`),"fill-outline-color":new J(B.paint_fill[`fill-outline-color`],`fill-outline-color`),"fill-translate":new q(B.paint_fill[`fill-translate`],`fill-translate`),"fill-translate-anchor":new q(B.paint_fill[`fill-translate-anchor`],`fill-translate-anchor`),"fill-pattern":new Al(B.paint_fill[`fill-pattern`],`fill-pattern`)}),hm={get paint(){return mm()},get layout(){return fm()}},gm=e=>e.type===`fill`,_m=class extends Il{constructor(e,t){super(e,hm,t)}recalculate(e,t){super.recalculate(e,t);let n=this.paint._values[`fill-outline-color`];n.value.kind===`constant`&&n.value.value===void 0&&(this.paint._values[`fill-outline-color`]=this.paint._values[`fill-color`])}createBucket(e){return new um(e)}queryRadius(){return nf(this.paint.get(`fill-translate`))}queryIntersectsFeature({queryGeometry:e,geometry:t,transform:n,pixelsToTileUnits:r}){return Wd(rf(e,this.paint.get(`fill-translate`),this.paint.get(`fill-translate-anchor`),-n.bearingInRadians,r),t)}isTileClipped(){return!0}},vm=Gl([{name:`a_pos`,components:2,type:`Int16`},{name:`a_normal_ed`,components:4,type:`Int16`}],4),ym=Gl([{name:`a_centroid`,components:2,type:`Int16`}],4),bm=vm.members;vm.size,vm.alignment;var xm=class{constructor(e,t,n,r,i){for(this.properties=Object.create(null),this.extent=n,this.type=0,this.id=void 0,this._pbf=e,this._geometry=-1,this._keys=r,this._values=i;e.pos<t;){let t=e.readVarint();if(t===8)this.id=e.readVarint();else if(t===18){let t=e.readVarint()+e.pos;for(;e.pos<t;){let t=r[e.readVarint()],n=i[e.readVarint()];this.properties[t]=n}}else t===24?this.type=e.readVarint():(t===34&&(this._geometry=e.pos),e.skip(t))}}loadGeometry(){if(this._geometry<0)throw Error(`feature has no geometry`);let e=this._pbf;e.pos=this._geometry;let t=e.readVarint()+e.pos,n=[],r,i=1,a=0,o=0,s=0;for(;e.pos<t;){if(a<=0){let t=e.readVarint();if(i=t&7,a=t>>3,a===0)continue}if(a--,i===1)o+=e.readSVarint(),s+=e.readSVarint(),r&&n.push(r),r=[new f(o,s)];else if(i===2)o+=e.readSVarint(),s+=e.readSVarint(),r&&r.push(new f(o,s));else if(i===7)r&&r.push(r[0].clone());else throw Error(`unknown command ${i}`)}return r&&n.push(r),n}bbox(){if(this._geometry<0)throw Error(`feature has no geometry`);let e=this._pbf;e.pos=this._geometry;let t=e.readVarint()+e.pos,n=1,r=0,i=0,a=0,o=1/0,s=-1/0,c=1/0,l=-1/0;for(;e.pos<t;){if(r<=0){let t=e.readVarint();if(n=t&7,r=t>>3,r===0)continue}if(r--,n===1||n===2)i+=e.readSVarint(),a+=e.readSVarint(),i<o&&(o=i),i>s&&(s=i),a<c&&(c=a),a>l&&(l=a);else if(n!==7)throw Error(`unknown command ${n}`)}return[o,c,s,l]}toGeoJSON(e,t,n){let r=this.extent*2**n,i=this.extent*e,a=this.extent*t,o=this.loadGeometry();function s(e){return[(e.x+i)*360/r-180,360/Math.PI*Math.atan(Math.exp((1-(e.y+a)*2/r)*Math.PI))-90]}function c(e){return e.map(s)}let l;if(this.type===1){let e=[];for(let t of o)e.push(t[0]);let t=c(e);l=e.length===1?{type:`Point`,coordinates:t[0]}:{type:`MultiPoint`,coordinates:t}}else if(this.type===2){let e=o.map(c);l=e.length===1?{type:`LineString`,coordinates:e[0]}:{type:`MultiLineString`,coordinates:e}}else if(this.type===3){let e=Sm(o),t=[];for(let n of e)t.push(n.map(c));l=t.length===1?{type:`Polygon`,coordinates:t[0]}:{type:`MultiPolygon`,coordinates:t}}else throw Error(`unknown feature type`);let u={type:`Feature`,geometry:l,properties:this.properties};return this.id!=null&&(u.id=this.id),u}};xm.types=[`Unknown`,`Point`,`LineString`,`Polygon`];function Sm(e){let t=e.length;if(t<=1)return[e];let n=[],r,i;for(let a=0;a<t;a++){let t=Cm(e[a]);t!==0&&(i===void 0&&(i=t<0),i===t<0?(r&&n.push(r),r=[e[a]]):r&&r.push(e[a]))}return r&&n.push(r),n}function Cm(e){let t=0;for(let n=0,r=e.length,i=r-1,a,o;n<r;i=n++)a=e[n],o=e[i],t+=(o.x-a.x)*(a.y+o.y);return t}var wm=class{constructor(e,t){for(this.version=1,this.name=``,this.extent=4096,this.length=0,this._pbf=e,this._keys=[],this._values=[],this._features=[],t===void 0&&(t=e.length);e.pos<t;){let t=e.readVarint();t===10?this.name=e.readString():t===18?(this._features.push(e.pos),e.skip(t)):t===26?this._keys.push(e.readString()):t===34?this._values.push(Tm(e)):t===40?this.extent=e.readVarint():t===120?this.version=e.readVarint():e.skip(t)}this.length=this._features.length}feature(e){if(e<0||e>=this._features.length)throw Error(`feature index out of bounds`);this._pbf.pos=this._features[e];let t=this._pbf.readVarint()+this._pbf.pos;return new xm(this._pbf,t,this.extent,this._keys,this._values)}};function Tm(e){let t=null,n=e.readVarint()+e.pos;for(;e.pos<n;){let n=e.readVarint();t=n===10?e.readString():n===21?e.readFloat():n===25?e.readDouble():n===32?e.readVarint(!0):n===40?e.readVarint():n===48?e.readSVarint():n===56?e.readBoolean():(e.skip(n),null)}if(t==null)throw Error(`unknown feature value`);return t}var Em=class{constructor(e,t=e.length){let n=Object.create(null);for(;e.pos<t;){let t=e.readVarint();if(t===26){let t=new wm(e,e.readVarint()+e.pos);t.length&&(n[t.name]=t)}else e.skip(t)}this.layers=n}},Dm=6371008.8,Q=class e{constructor(e,t){if(isNaN(e)||isNaN(t))throw Error(`Invalid LngLat object: (${e}, ${t})`);if(this.lng=+e,this.lat=+t,this.lat>90||this.lat<-90)throw Error(`Invalid LngLat latitude value: must be between -90 and 90`)}wrap(){return new e(Dt(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(e){let t=Math.PI/180,n=this.lat*t,r=e.lat*t,i=Math.sin(n)*Math.sin(r)+Math.cos(n)*Math.cos(r)*Math.cos((e.lng-this.lng)*t);return Dm*Math.acos(Math.min(i,1))}static convert(t){if(t instanceof e)return t;if(Array.isArray(t)&&(t.length===2||t.length===3))return new e(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&typeof t==`object`&&t)return new e(Number(`lng`in t?t.lng:t.lon),Number(t.lat));throw Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: <lng>, lat: <lat>}, an object {lon: <lng>, lat: <lat>}, or an array of [<lng>, <lat>]")}},Om=6378137,km={origin:[-Math.PI*Om,Math.PI*Om],extentAtZoom0:2*Math.PI*Om},Am=2*Math.PI*Dm;function jm(e){return Am*Math.cos(e*Math.PI/180)}function Mm(e){return(180+e)/360}function Nm(e){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+e*Math.PI/360)))/360}function Pm(e,t){return e/jm(t)}function Fm(e){return e*360-180}function Im(e){let t=180-e*360;return 360/Math.PI*Math.atan(Math.exp(t*Math.PI/180))-90}function Lm(e,t){return e*jm(Im(t))}function Rm(e){return 1/Math.cos(e*Math.PI/180)}var zm=class e{constructor(e,t,n=0){this.x=+e,this.y=+t,this.z=+n}static fromLngLat(t,n=0){let r=Q.convert(t);return new e(Mm(r.lng),Nm(r.lat),Pm(n,r.lat))}toLngLat(){return new Q(Fm(this.x),Im(this.y))}toAltitude(){return Lm(this.z,this.y)}meterInMercatorCoordinateUnits(){return 1/Am*Rm(Im(this.y))}},Bm=new class{constructor(){this.name=`mercator`,this.wraps=!0,this.tileMatrixSet=km}worldFromLngLat(e,t,n){return new zm(Mm(e),Nm(t),n===void 0?0:Pm(n,t))}lngLatFromWorld(e,t){return new Q(Fm(e),Im(t))}hasLngLat(e,t){return!0}metersPerWorldUnit(e,t){return 1/(1/Am*Rm(Im(t)))}worldZFromAltitude(e,t){return Pm(e,t.lat)}},Vm=89.25;function Hm(e,t,n){let r=1/(1<<n.z);return new zm(e/N*r+n.x*r,t/N*r+n.y*r)}function Um(e,t,n){return Hm(e,t,n).toLngLat()}function Wm(e,t,n){let r=n.wraps?P(t.lat,-85.051129,sn):t.lat,{x:i,y:a}=n.worldFromLngLat(t.lng,r);return new f(i*e,a*e)}function Gm(e,t,n){return n.lngLatFromWorld(t.x/e,t.y/e)}function Km(e){return e.cameraToCenterDistance*Math.min(Math.tan(en(90-e.pitch))*.85,Math.tan(en(Vm-e.pitch)))}function qm(e,t){let n=e.canonical,r=t/Nt(n.z),i=n.x+2**n.z*e.wrap,a=new Float64Array(16);return A(a),te(a,a,[i*r,n.y*r,0]),ne(a,a,[r/N,r/N,1]),a}function Jm(e,t,n,r){let{x:i,y:a,z:o}=Xm(t,n),s=r*-i,c=r*-a,l=r*o;return new zm(e.x+s,e.y+c,e.z+l)}function Ym(e,t=e.center){let n=e.worldCoordinateHelper,r=n.worldZFromAltitude(1,t),i=r*e.worldSize,a=e.cameraToCenterDistance/i;return Jm(n.worldFromLngLat(t.lng,t.lat,e.elevation),e.pitch,e.bearing,a*r)}function Xm(e,t){let n=en(e),r=en(t),i=Math.cos(-n),a=Math.sin(n);return{x:a*Math.sin(r),y:-a*Math.cos(r),z:i}}function Zm(e,t,n,r,i){let a=(t,n)=>{let{x:r,y:i}=e.worldFromLngLat(t,n);return new f(r,i)},o=e=>e===16?r:t+(r-t)*e/16,s=e=>e===16?n:i+(n-i)*e/16,c=[];for(let e=0;e<=16;e++)for(let t=0;t<=16;t++)c.push(a(o(t),s(e)));let l=(e,t)=>c[e*17+t],u=0;for(let e=0;e<16;e++){let c=(o(e)+o(e+1))/2,d=(s(e)+s(e+1))/2,f=[[l(0,e),l(0,e+1),a(c,i)],[l(16,e),l(16,e+1),a(c,n)],[l(e,0),l(e+1,0),a(t,d)],[l(e,16),l(e+1,16),a(r,d)]];for(let[e,t,n]of f){let r=t.sub(e),i=n.sub(e),a=r.mag(),o=a>0?Math.abs(r.x*i.y-r.y*i.x)/a:i.mag();o>u&&(u=o)}}return{points:c,bulge:u}}function Qm(e,t,n,r,i){let{points:a,bulge:o}=Zm(e,t,n,r,i),s=1/0,c=1/0,l=-1/0,u=-1/0;for(let{x:e,y:t}of a)e<s&&(s=e),t<c&&(c=t),e>l&&(l=e),t>u&&(u=t);return{minX:s-o,minY:c-o,maxX:l+o,maxY:u+o}}function $m(e,t,n,r,i){let a=[e.lngLatFromWorld(t,n),e.lngLatFromWorld(r,n),e.lngLatFromWorld(r,i),e.lngLatFromWorld(t,i)];return{west:Math.min(a[0].lng,a[1].lng,a[2].lng,a[3].lng),south:Math.min(a[0].lat,a[1].lat,a[2].lat,a[3].lat),east:Math.max(a[0].lng,a[1].lng,a[2].lng,a[3].lng),north:Math.max(a[0].lat,a[1].lat,a[2].lat,a[3].lat)}}var eh=1e-4;function th(e,t){if(e.wraps)return 360;let n=t.lat>0?-1e-4:eh,r=e.worldFromLngLat(t.lng,t.lat),i=e.worldFromLngLat(t.lng+eh,t.lat),a=e.worldFromLngLat(t.lng,t.lat+n);return eh/Math.max(Math.hypot(i.x-r.x,i.y-r.y),Math.hypot(a.x-r.x,a.y-r.y))}function nh(e,t){return t<=0||!e||e.length===0?e:e.map(e=>sh(e,t))}function rh(e,t){let n=Um(N/2,N/2,t),r=zm.fromLngLat(n).meterInMercatorCoordinateUnits(),i=(1<<t.z)*N;return e*r*i}var ih=Math.cos(35*Math.PI/180);function ah(e){let t=[null];for(let n=1;n<e.length;n++){let r=e[n].sub(e[n-1]),i=!Id(e[n],e[n-1])&&r.mag()>0;t.push(i?r._perp():null)}let n=e.length-1,r=n>1&&e[0].equals(e[n]),i=[null];for(let e=1;e<=n;e++){let a=t[e];if(!a){i.push(null);continue}let o=r&&e===1?t[n]:t[e-1],s=r&&e===n?t[1]:t[e+1];i.push({start:oh(a,o),end:oh(a,s)})}return i}function oh(e,t){if(!t)return e.unit();let n=e.mag(),r=t.mag();return e.x*t.x+e.y*t.y<ih*n*r||n>=2*r?e.unit():r>=2*n?t.unit():e.add(t)._unit()}function sh(e,t){if(!e||e.length<3)return e;let n=e[0].x===e[e.length-1].x&&e[0].y===e[e.length-1].y,r=n?e.length-1:e.length;if(r<3)return e;let i=[],a=Id(e[r-1],e[0]);for(let n=0;n<r;n++){let o=e[(n-1+r)%r],s=e[n],c=e[(n+1)%r],l=Id(s,c);a||l?i.push(s.clone()):lh(i,o,s,c,t),a=l}let o=ch(i);return o.length<3?e:(n&&o.push(o[0].clone()),o)}function ch(e){let t=[];for(let n of e){let e=n.round(),r=t[t.length-1];(r?.x!==e.x||r?.y!==e.y)&&t.push(e)}for(;t.length>1&&t[0].x===t[t.length-1].x&&t[0].y===t[t.length-1].y;)t.pop();return t}function lh(e,t,n,r,i){let a=t.sub(n),o=r.sub(n),s=a.mag(),c=o.mag();if(s<1e-6||c<1e-6){e.push(n.clone());return}a._div(s),o._div(c);let l=a.x*o.x+a.y*o.y;if(Math.abs(l)>Math.cos(5*Math.PI/180)){e.push(n.clone());return}let u=.2,d=Math.min(i,s*u,c*u),f=n.add(a.mult(d)),p=n.add(o.mult(d)),m=Math.sqrt((1+l)/2),h=n.add(a.add(o)._unit()._mult(d/m)),g=f.sub(h).angleWith(p.sub(h)),_=Math.max(2,Math.ceil(Math.abs(g)/(Math.PI/6)-1e-6));for(let t=0;t<=_;t++)e.push(f.rotateAround(t/_*g,h))}var uh=8192;function dh(e,t,n,r,i,a,o,s){e.emplaceBack(t,n,Math.floor(r*uh)*2+o,i*uh*2,a*uh*2,Math.round(s))}var fh=class{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(e=>e.id),this.index=e.index,this.hasDependencies=!1,this.layoutVertexArray=new Fu,this.centroidVertexArray=new Au,this.indexArray=new qu,this.programConfigurations=new Ed(e.layers,e.zoom),this.segments=new Qu,this.stateDependentLayerIds=this.layers.filter(e=>e.isStateDependent()).map(e=>e.id)}populate(e,t,n){this.features=[],this.hasDependencies=Zf(`fill-extrusion`,this.layers,t);let r=new yl(this.zoom),i=this.layers[0],a=i.layout.get(`fill-extrusion-rounded-corner-distance`),o=a>0?rh(a,n):0,s=i._featureFilter.needGeometry;for(let{feature:a,id:c,index:l,sourceLayerIndex:u}of e){let e=Nd(a,s);if(!i._featureFilter.filter(r,e,n))continue;let d={id:c,sourceLayerIndex:u,index:l,geometry:nh(s?e.geometry:Md(a),o),properties:a.properties,type:a.type,patterns:{}};this.hasDependencies?this.features.push(Qf(`fill-extrusion`,this.layers,d,{zoom:this.zoom},t)):this.addFeature(d,d.geometry,l,n,{},t.subdivisionGranularity),t.featureIndex.insert(a,d.geometry,l,u,this.index,!0)}}addFeatures({options:e,canonical:t,patternPositions:n}){for(let r of this.features){let{geometry:i}=r;this.addFeature(r,i,r.index,t,n,e.subdivisionGranularity)}}update(e,t,n){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,{imagePositions:n})}isEmpty(){return this.layoutVertexArray.length===0&&this.centroidVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,bm),this.centroidVertexBuffer=e.createVertexBuffer(this.centroidVertexArray,ym.members,!0),this.indexBuffer=e.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy())}addFeature(e,t,n,r,i,a){for(let n of Zi(t,500)){let t={x:0,y:0,sampleCount:0},i=this.layoutVertexArray.length;this.processPolygon(t,r,e,n,a);let o=this.layoutVertexArray.length-i,s=Math.floor(t.x/t.sampleCount),c=Math.floor(t.y/t.sampleCount);for(let e=0;e<o;e++)this.centroidVertexArray.emplaceBack(s,c)}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,n,{imagePositions:i,canonical:r})}processPolygon(e,t,n,r,i){if(r.length<1||Ld(r[0]))return;for(let t of r)t.length!==0&&ph(e,t);let a={segment:this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray)},o=i.fill.getGranularityForZoomLevel(t.z),s=xm.types[n.type]===`Polygon`;for(let e of r){if(e.length===0||Ld(e))continue;let t=em(e,o,s);this._generateSideFaces(t,a)}if(!s)return;let c=$p(r,t,o,!1),l=this.layoutVertexArray;om((e,t)=>{dh(l,e,t,0,0,1,1,0)},this.segments,this.layoutVertexArray,this.indexArray,c.verticesFlattened,c.indicesTriangles)}_generateSideFaces(e,t){let n=0,r=this.layers[0].layout.get(`fill-extrusion-rounded-corner-distance`)>0?ah(e):null;for(let i=1;i<e.length;i++){let a=e[i],o=e[i-1];if(Id(a,o)||r&&!r[i])continue;t.segment.vertexLength+4>Qu.MAX_VERTEX_ARRAY_LENGTH&&(t.segment=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));let s=a.sub(o)._perp()._unit(),{start:c,end:l}=r?r[i]:{start:s,end:s},u=o.dist(a);n+u>32768&&(n=0),dh(this.layoutVertexArray,a.x,a.y,l.x,l.y,0,0,n),dh(this.layoutVertexArray,a.x,a.y,l.x,l.y,0,1,n),n+=u,dh(this.layoutVertexArray,o.x,o.y,c.x,c.y,0,0,n),dh(this.layoutVertexArray,o.x,o.y,c.x,c.y,0,1,n);let d=t.segment.vertexLength;this.indexArray.emplaceBack(d,d+2,d+1),this.indexArray.emplaceBack(d+1,d+2,d+3),t.segment.vertexLength+=4,t.segment.primitiveLength+=2}}};function ph(e,t){for(let n=0;n<t.length;n++){let r=t[n];(n!==t.length-1||t[0].x!==r.x||t[0].y!==r.y)&&(e.x+=r.x,e.y+=r.y,e.sampleCount++)}}K(`FillExtrusionBucket`,fh,{omit:[`layers`,`features`]});var mh,hh=()=>mh||=new Nl({"fill-extrusion-rounded-corner-distance":new q(B[`layout_fill-extrusion`][`fill-extrusion-rounded-corner-distance`],`fill-extrusion-rounded-corner-distance`)}),gh,_h=()=>gh||=new Nl({"fill-extrusion-opacity":new q(B[`paint_fill-extrusion`][`fill-extrusion-opacity`],`fill-extrusion-opacity`),"fill-extrusion-color":new J(B[`paint_fill-extrusion`][`fill-extrusion-color`],`fill-extrusion-color`),"fill-extrusion-translate":new q(B[`paint_fill-extrusion`][`fill-extrusion-translate`],`fill-extrusion-translate`),"fill-extrusion-translate-anchor":new q(B[`paint_fill-extrusion`][`fill-extrusion-translate-anchor`],`fill-extrusion-translate-anchor`),"fill-extrusion-pattern":new Al(B[`paint_fill-extrusion`][`fill-extrusion-pattern`],`fill-extrusion-pattern`),"fill-extrusion-height":new J(B[`paint_fill-extrusion`][`fill-extrusion-height`],`fill-extrusion-height`),"fill-extrusion-base":new J(B[`paint_fill-extrusion`][`fill-extrusion-base`],`fill-extrusion-base`),"fill-extrusion-vertical-gradient":new q(B[`paint_fill-extrusion`][`fill-extrusion-vertical-gradient`],`fill-extrusion-vertical-gradient`)}),vh={get paint(){return _h()},get layout(){return hh()}},yh=e=>e.type===`fill-extrusion`,bh=class extends Il{constructor(e,t){super(e,vh,t)}createBucket(e){return new fh(e)}queryRadius(){return nf(this.paint.get(`fill-extrusion-translate`))}is3D(){return!0}queryIntersectsFeature({queryGeometry:e,feature:t,featureState:n,geometry:r,transform:i,pixelsToTileUnits:a,pixelPosMatrix:o}){let s=rf(e,this.paint.get(`fill-extrusion-translate`),this.paint.get(`fill-extrusion-translate-anchor`),-i.bearingInRadians,a),c=this.paint.get(`fill-extrusion-height`).evaluate(t,n),l=this.paint.get(`fill-extrusion-base`).evaluate(t,n),u=Th(s,o,0),d=wh(r,l,c,o),f=d[0],p=d[1];return Ch(f,p,u)}};function xh(e,t){return e.x*t.x+e.y*t.y}function Sh(e,t){if(e.length===1){let n=0,r=t[n++],i;for(;!i||r.equals(i);)if(i=t[n++],!i)return 1/0;for(;n<t.length;n++){let a=t[n],o=e[0],s=i.sub(r),c=a.sub(r),l=o.sub(r),u=xh(s,s),d=xh(s,c),f=xh(c,c),p=xh(l,s),m=xh(l,c),h=u*f-d*d,g=(f*p-d*m)/h,_=(u*m-d*p)/h,v=1-g-_,y=r.z*v+i.z*g+a.z*_;if(isFinite(y))return y}return 1/0}{let e=1/0;for(let n of t)e=Math.min(e,n.z);return e}}function Ch(e,t,n){let r=1/0;Wd(n,t)&&(r=Sh(n,t[0]));for(let i=0;i<t.length;i++){let a=t[i],o=e[i];for(let e=0;e<a.length-1;e++){let t=a[e],i=a[e+1],s=o[e],c=[t,i,o[e+1],s,t];Hd(n,c)&&(r=Math.min(r,Sh(n,c)))}}return r!==1/0&&r}function wh(e,t,n,r){let i=[],a=[],o=r[8]*t,s=r[9]*t,c=r[10]*t,l=r[11]*t,u=r[8]*n,d=r[9]*n,p=r[10]*n,m=r[11]*n;for(let t of e){let e=[],n=[];for(let i of t){let t=i.x,a=i.y,h=r[0]*t+r[4]*a+r[12],g=r[1]*t+r[5]*a+r[13],_=r[2]*t+r[6]*a+r[14],v=r[3]*t+r[7]*a+r[15],y=h+o,b=g+s,x=_+c,S=v+l,C=h+u,w=g+d,T=_+p,E=v+m,D=new f(y/S,b/S);D.z=x/S,e.push(D);let O=new f(C/E,w/E);O.z=T/E,n.push(O)}i.push(e),a.push(n)}return[i,a]}function Th(e,t,n){let r=[];for(let i of e){let e=[i.x,i.y,n,1];Ve(e,e,t),r.push(new f(e[0]/e[3],e[1]/e[3]))}return r}var Eh=class{projectX(e){return e/360+.5}projectY(e){let t=Math.sin(e*Math.PI/180),n=.5-.25*Math.log((1+t)/(1-t))/Math.PI;return n<0?0:n>1?1:n}unprojectX(e){return(e-.5)*360}unprojectY(e){let t=(180-e*360)*Math.PI/180;return 360*Math.atan(Math.exp(t))/Math.PI-90}},Dh=class{projectX(e){return e}projectY(e){return e}unprojectX(e){return e}unprojectY(e){return e}};new Eh,new Dh;var Oh=Gl([{name:`a_pos_normal`,components:2,type:`Int16`},{name:`a_data`,components:4,type:`Uint8`},{name:`a_offset_normal`,components:2,type:`Int8`}],2),kh=Oh.members;Oh.size,Oh.alignment;var Ah=Gl([{name:`a_uv_x`,components:1,type:`Float32`},{name:`a_split_index`,components:1,type:`Float32`}]),jh=Ah.members;Ah.size,Ah.alignment;var Mh=Math.cos(75/2*(Math.PI/180)),Nh=1/2,Ph=2**14/Nh,Fh=class{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(e=>e.id),this.index=e.index,this.hasDependencies=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={};for(let e of this.layers)this.gradients[e.id]={};this.layoutVertexArray=new Iu,this.layoutVertexArray2=new Lu,this.indexArray=new qu,this.programConfigurations=new Ed(e.layers,e.zoom),this.segments=new Qu,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(e=>e.isStateDependent()).map(e=>e.id)}populate(e,t,n){this.hasDependencies=Zf(`line`,this.layers,t)||this.hasLineDasharray(this.layers);let r=this.layers[0].layout.get(`line-sort-key`),i=!r.isConstant(),a=[],o=new yl(this.zoom),s=this.layers[0]._featureFilter.needGeometry;for(let{feature:t,id:c,index:l,sourceLayerIndex:u}of e){let e=Nd(t,s);if(!this.layers[0]._featureFilter.filter(o,e,n))continue;let d=i?r.evaluate(e,{},n):void 0,f={id:c,properties:t.properties,type:t.type,sourceLayerIndex:u,index:l,geometry:s?e.geometry:Md(t),patterns:{},dashes:{},sortKey:d};a.push(f)}i&&a.sort((e,t)=>e.sortKey-t.sortKey);for(let r of a){let{geometry:i,index:a,sourceLayerIndex:o}=r;this.hasDependencies?(Zf(`line`,this.layers,t)?Qf(`line`,this.layers,r,{zoom:this.zoom},t):this.hasLineDasharray(this.layers)&&this.addLineDashDependencies(this.layers,r,this.zoom,t),this.patternFeatures.push(r)):this.addFeature(r,i,a,n,{},{},t.subdivisionGranularity);let s=e[a].feature;t.featureIndex.insert(s,i,a,o,this.index)}}update(e,t,n,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,t,this.stateDependentLayers,{imagePositions:n,dashPositions:r})}addFeatures({options:e,canonical:t,patternPositions:n,dashPositions:r}){for(let i of this.patternFeatures)this.addFeature(i,i.geometry,i.index,t,n,r,e.subdivisionGranularity)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexArray2.length!==0&&(this.layoutVertexBuffer2=e.createVertexBuffer(this.layoutVertexArray2,jh)),this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,kh),this.indexBuffer=e.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(e),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(e){if(e.properties&&Object.hasOwn(e.properties,`geojsonvt_clip_start`)&&Object.hasOwn(e.properties,`geojsonvt_clip_end`))return{start:+e.properties.geojsonvt_clip_start,end:+e.properties.geojsonvt_clip_end}}addFeature(e,t,n,r,i,a,o){let s=this.layers[0].layout,c=s.get(`line-join`).evaluate(e,{}),l=s.get(`line-cap`).evaluate(e,{}),u=s.get(`line-miter-limit`).evaluate(e,{}),d=s.get(`line-round-limit`).evaluate(e,{});this.lineClips=this.lineFeatureClips(e);for(let n of t)this.addLine(n,e,c,l,u,d,r,o);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,n,{imagePositions:i,dashPositions:a,canonical:r})}addLine(e,t,n,r,i,a,o,s){this.distance=0,this.scaledDistance=0,this.totalDistance=0;let c=o?s.line.getGranularityForZoomLevel(o.z):1;if(e=em(e,c),this.lineClips){this.lineClipsArray.push(this.lineClips);for(let t=0;t<e.length-1;t++)this.totalDistance+=e[t].dist(e[t+1]);this.updateScaledDistance(),this.maxLineLength=Math.max(this.maxLineLength,this.totalDistance)}let l=xm.types[t.type]===`Polygon`,u=e.length;for(;u>=2&&e[u-1].equals(e[u-2]);)u--;let d=0;for(;d<u-1&&e[d].equals(e[d+1]);)d++;if(u-d<(l?3:2))return;n===`bevel`&&(i=1.05);let f=this.overscaling<=16?15*N/(512*this.overscaling):0,p=this.segments.prepareSegment(u*10,this.layoutVertexArray,this.indexArray),m,h,g,_,v;this.e1=this.e2=-1,l&&(m=e[u-2],v=e[d].sub(m)._unit()._perp());for(let t=d;t<u;t++){if(g=t===u-1?l?e[d+1]:void 0:e[t+1],g&&e[t].equals(g))continue;v&&(_=v),m&&(h=m),m=e[t],v=g?g.sub(m)._unit()._perp():_,_||=v;let o=_.add(v);(o.x!==0||o.y!==0)&&o._unit();let s=_.x*v.x+_.y*v.y,c=o.x*v.x+o.y*v.y,y=c===0?1/0:1/c,b=2*Math.sqrt(2-2*c),x=c<Mh&&h&&g,S=_.x*v.y-_.y*v.x>0,C=o.mult(Math.min(y,2)),w=P((y-3)/5,0,1);if(x&&t>d){let e=m.dist(h);if(e>2*f){let t=m.sub(m.sub(h)._mult(f/e)._round());this.updateDistance(h,t),this.addCurrentVertex(t,_,0,0,p),h=t}}let T=h&&g,E=T?n:l?`butt`:r;if(T&&E===`round`&&(y<a?E=`miter`:y<=2&&(E=`fakeround`)),E===`miter`&&y>i&&(E=`bevel`),E===`bevel`&&(y>2&&(E=`flipbevel`),y<i&&(E=`miter`)),h&&this.updateDistance(h,m),E===`miter`)o._mult(y),this.addCurrentVertex(m,o,0,0,p,!1,C);else if(E===`flipbevel`){if(y>100)o=v.mult(-1);else{let e=y*_.add(v).mag()/_.sub(v).mag();o._perp()._mult(e*(S?-1:1))}this.addCurrentVertex(m,o,0,0,p,!1,C,w),this.addCurrentVertex(m,o.mult(-1),0,0,p,!1,C,w)}else if(E===`bevel`||E===`fakeround`){let e=-Math.sqrt(y*y-1),t=S?e:0,n=S?0:e;if(h&&this.addCurrentVertex(m,_,t,n,p,!1,C),E===`fakeround`){let e=Math.round(b*180/Math.PI/20);for(let t=1;t<e;t++){let n=t/e;if(n!==.5){let e=n-.5,t=1.0904+s*(-3.2452+s*(3.55645-s*1.43519)),r=.848013+s*(-1.06021+s*.215638);n+=n*e*(n-1)*(t*e*e+r)}let r=v.sub(_)._mult(n)._add(_)._unit()._mult(S?-1:1);this.addHalfVertex(m,r.x,r.y,S?-C.x:C.x,S?-C.y:C.y,!1,S,p)}}g&&this.addCurrentVertex(m,v,-t,-n,p,!1,C)}else if(E===`butt`)this.addCurrentVertex(m,o,0,0,p,!1,C);else if(E===`square`){let e=h?1:-1;this.addCurrentVertex(m,o,e,e,p,!1,C)}else E===`round`&&(h&&(this.addCurrentVertex(m,_,0,0,p,!1,C,w),this.addCurrentVertex(m,_,1,1,p,!0,C,w)),g&&(this.addCurrentVertex(m,v,-1,-1,p,!0,C,w),this.addCurrentVertex(m,v,0,0,p,!1,C,w)));if(x&&t<u-1){let e=m.dist(g);if(e>2*f){let t=m.add(g.sub(m)._mult(f/e)._round());this.updateDistance(m,t),this.addCurrentVertex(t,v,0,0,p),m=t}}}}addCurrentVertex(e,t,n,r,i,a=!1,o=t,s=0){let c=t.x+t.y*n,l=t.y-t.x*n,u=-t.x+t.y*r,d=-t.y-t.x*r,f=o.x+(t.x-o.x)*s,p=o.y+(t.y-o.y)*s;this.addHalfVertex(e,c,l,f,p,a,!1,i),this.addHalfVertex(e,u,d,-f,-p,a,!0,i),this.distance>Ph/2&&this.totalDistance===0&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(e,t,n,r,i,a,o,s))}addHalfVertex({x:e,y:t},n,r,i,a,o,s,c){let l=(this.lineClips?this.scaledDistance*(Ph-1):this.scaledDistance)*Nh;if(this.layoutVertexArray.emplaceBack((e<<1)+ +!!o,(t<<1)+ +!!s,Math.round(63*n)+128,Math.round(63*r)+128,(l&63)<<2,l>>6,Math.round(63*i),Math.round(63*a)),this.lineClips){let e=(this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start);this.layoutVertexArray2.emplaceBack(e,this.lineClipsArray.length)}let u=c.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,u,this.e2),c.primitiveLength++),s?this.e2=u:this.e1=u}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(e,t){this.distance+=e.dist(t),this.updateScaledDistance()}hasLineDasharray(e){for(let t of e){let e=t.paint.get(`line-dasharray`);if(e&&!e.isConstant())return!0}return!1}addLineDashDependencies(e,t,n,r){for(let i of e){let e=i.paint.get(`line-dasharray`);if(!e||e.value.kind===`constant`)continue;let a=i.layout.get(`line-cap`).evaluate(t,{})===`round`,o={dasharray:e.value.evaluate({zoom:n-1},t,{}),round:a},s={dasharray:e.value.evaluate({zoom:n},t,{}),round:a},c={dasharray:e.value.evaluate({zoom:n+1},t,{}),round:a},l=`${o.dasharray.join(`,`)},${o.round}`,u=`${s.dasharray.join(`,`)},${s.round}`,d=`${c.dasharray.join(`,`)},${c.round}`;r.dashDependencies[l]=o,r.dashDependencies[u]=s,r.dashDependencies[d]=c,t.dashes[i.id]={min:l,mid:u,max:d}}}};K(`LineBucket`,Fh,{omit:[`layers`,`patternFeatures`]});var Ih,Lh=()=>Ih||=new Nl({"line-cap":new J(B.layout_line[`line-cap`],`line-cap`),"line-join":new J(B.layout_line[`line-join`],`line-join`),"line-miter-limit":new J(B.layout_line[`line-miter-limit`],`line-miter-limit`),"line-round-limit":new J(B.layout_line[`line-round-limit`],`line-round-limit`),"line-sort-key":new J(B.layout_line[`line-sort-key`],`line-sort-key`)}),Rh,zh=()=>Rh||=new Nl({"line-opacity":new J(B.paint_line[`line-opacity`],`line-opacity`),"line-layer-opacity":new q(B.paint_line[`line-layer-opacity`],`line-layer-opacity`),"line-color":new J(B.paint_line[`line-color`],`line-color`),"line-translate":new q(B.paint_line[`line-translate`],`line-translate`),"line-translate-anchor":new q(B.paint_line[`line-translate-anchor`],`line-translate-anchor`),"line-width":new J(B.paint_line[`line-width`],`line-width`),"line-gap-width":new J(B.paint_line[`line-gap-width`],`line-gap-width`),"line-offset":new J(B.paint_line[`line-offset`],`line-offset`),"line-blur":new J(B.paint_line[`line-blur`],`line-blur`),"line-dasharray":new Al(B.paint_line[`line-dasharray`],`line-dasharray`),"line-pattern":new Al(B.paint_line[`line-pattern`],`line-pattern`),"line-gradient":new Ml(B.paint_line[`line-gradient`],`line-gradient`)}),Bh={get paint(){return zh()},get layout(){return Lh()}},Vh=class extends J{possiblyEvaluate(e,t){return t=new yl(Math.floor(t.zoom),{now:t.now,fadeDuration:t.fadeDuration,zoomHistory:t.zoomHistory,transition:t.transition}),super.possiblyEvaluate(e,t)}evaluate(e,t,n,r){return t=F({},t,{zoom:Math.floor(t.zoom)}),super.evaluate(e,t,n,r)}},Hh,Uh=e=>e.type===`line`,Wh=class extends Il{constructor(e,t){super(e,Bh,t),this.gradientVersion=0,Hh||(Hh=new Vh(Bh.paint.properties[`line-width`].specification,`line-floorwidth`),Hh.useIntegerZoom=!0)}_handleSpecialPaintPropertyUpdate(e){if(e===`line-gradient`){let e=this.gradientExpression();this.stepInterpolant=ks(e)?e._styleExpression.expression instanceof Hi:!1,this.gradientVersion=(this.gradientVersion+1)%(2**53-1)}}gradientExpression(){return this._transitionablePaint._values[`line-gradient`].value.expression}recalculate(e,t){super.recalculate(e,t),this.paint._values[`line-floorwidth`]=Hh.possiblyEvaluate(this._transitioningPaint._values[`line-width`].value,e)}createBucket(e){return new Fh(e)}queryRadius(e){let t=e,n=Gh(tf(`line-width`,this,t),tf(`line-gap-width`,this,t)),r=tf(`line-offset`,this,t);return n/2+Math.abs(r)+nf(this.paint.get(`line-translate`))}queryIntersectsFeature({queryGeometry:e,feature:t,featureState:n,geometry:r,transform:i,pixelsToTileUnits:a}){let o=rf(e,this.paint.get(`line-translate`),this.paint.get(`line-translate-anchor`),-i.bearingInRadians,a),s=a/2*Gh(this.paint.get(`line-width`).evaluate(t,n),this.paint.get(`line-gap-width`).evaluate(t,n)),c=this.paint.get(`line-offset`).evaluate(t,n);return c&&(r=of(r,c*a)),Gd(o,r,s)}isTileClipped(){return!0}};function Gh(e,t){return t>0?t+2*e:e}var Kh=Gl([{name:`a_pos_offset`,components:4,type:`Int16`},{name:`a_data`,components:4,type:`Uint16`},{name:`a_pixeloffset`,components:4,type:`Int16`},{name:`a_height_offset`,components:1,type:`Float32`}],4),qh=Gl([{name:`a_projected_pos`,components:3,type:`Float32`}],4);Gl([{name:`a_fade_opacity`,components:1,type:`Uint32`}],4);var Jh=Gl([{name:`a_placed`,components:2,type:`Uint8`},{name:`a_shift`,components:2,type:`Float32`},{name:`a_box_real`,components:2,type:`Int16`}]);Gl([{type:`Int16`,name:`anchorPointX`},{type:`Int16`,name:`anchorPointY`},{type:`Int16`,name:`x1`},{type:`Int16`,name:`y1`},{type:`Int16`,name:`x2`},{type:`Int16`,name:`y2`},{type:`Uint32`,name:`featureIndex`},{type:`Uint16`,name:`sourceLayerIndex`},{type:`Uint16`,name:`bucketIndex`}]);var Yh=Gl([{name:`a_pos`,components:2,type:`Int16`},{name:`a_anchor_pos`,components:2,type:`Int16`},{name:`a_extrude`,components:2,type:`Int16`}],4),Xh=Gl([{name:`a_pos`,components:2,type:`Float32`},{name:`a_radius`,components:1,type:`Float32`},{name:`a_flags`,components:2,type:`Int16`}],4);Gl([{name:`triangle`,components:3,type:`Uint16`}]),Gl([{type:`Int16`,name:`anchorX`},{type:`Int16`,name:`anchorY`},{type:`Uint16`,name:`glyphStartIndex`},{type:`Uint16`,name:`numGlyphs`},{type:`Uint32`,name:`vertexStartIndex`},{type:`Uint32`,name:`lineStartIndex`},{type:`Uint32`,name:`lineLength`},{type:`Uint16`,name:`segment`},{type:`Uint16`,name:`lowerSize`},{type:`Uint16`,name:`upperSize`},{type:`Float32`,name:`lineOffsetX`},{type:`Float32`,name:`lineOffsetY`},{type:`Uint8`,name:`writingMode`},{type:`Uint8`,name:`placedOrientation`},{type:`Uint8`,name:`hidden`},{type:`Uint32`,name:`crossTileID`},{type:`Int16`,name:`associatedIconIndex`},{type:`Float32`,name:`heightOffset`}]);var Zh=Gl([{type:`Int16`,name:`anchorX`},{type:`Int16`,name:`anchorY`},{type:`Int16`,name:`rightJustifiedTextSymbolIndex`},{type:`Int16`,name:`centerJustifiedTextSymbolIndex`},{type:`Int16`,name:`leftJustifiedTextSymbolIndex`},{type:`Int16`,name:`verticalPlacedTextSymbolIndex`},{type:`Int16`,name:`placedIconSymbolIndex`},{type:`Int16`,name:`verticalPlacedIconSymbolIndex`},{type:`Uint16`,name:`key`},{type:`Uint16`,name:`textBoxStartIndex`},{type:`Uint16`,name:`textBoxEndIndex`},{type:`Uint16`,name:`verticalTextBoxStartIndex`},{type:`Uint16`,name:`verticalTextBoxEndIndex`},{type:`Uint16`,name:`iconBoxStartIndex`},{type:`Uint16`,name:`iconBoxEndIndex`},{type:`Uint16`,name:`verticalIconBoxStartIndex`},{type:`Uint16`,name:`verticalIconBoxEndIndex`},{type:`Uint16`,name:`featureIndex`},{type:`Uint16`,name:`numHorizontalGlyphVertices`},{type:`Uint16`,name:`numVerticalGlyphVertices`},{type:`Uint16`,name:`numIconVertices`},{type:`Uint16`,name:`numVerticalIconVertices`},{type:`Uint16`,name:`useRuntimeCollisionCircles`},{type:`Uint32`,name:`crossTileID`},{type:`Float32`,name:`textBoxScale`},{type:`Float32`,name:`collisionCircleDiameter`},{type:`Uint16`,name:`textAnchorOffsetStartIndex`},{type:`Uint16`,name:`textAnchorOffsetEndIndex`},{type:`Float32`,name:`heightOffset`}]);Gl([{type:`Float32`,name:`offsetX`}]),Gl([{type:`Int16`,name:`x`},{type:`Int16`,name:`y`},{type:`Int16`,name:`tileUnitDistanceFromAnchor`}]),Gl([{type:`Uint16`,name:`textAnchor`},{type:`Float32`,components:2,name:`textOffset`}]);var Qh=new class{constructor(){this.TIMEOUT=5e3,this.applyArabicShaping=null,this.processBidirectionalText=null,this.processStyledBidirectionalText=null,this.pluginStatus=`unavailable`,this.pluginURL=null,this.loadScriptResolve=()=>{}}setState(e){this.pluginStatus=e.pluginStatus,this.pluginURL=e.pluginURL}getState(){return{pluginStatus:this.pluginStatus,pluginURL:this.pluginURL}}setMethods(e){if(Qh.isParsed())throw Error(`RTL text plugin already registered.`);this.applyArabicShaping=e.applyArabicShaping,this.processBidirectionalText=e.processBidirectionalText,this.processStyledBidirectionalText=e.processStyledBidirectionalText,this.loadScriptResolve()}isParsed(){return this.applyArabicShaping!=null&&this.processBidirectionalText!=null&&this.processStyledBidirectionalText!=null}getRTLTextPluginStatus(){return this.pluginStatus}async syncState(e,t){if(this.isParsed())return this.getState();if(e.pluginStatus!==`loading`)return this.setState(e),e;let n=e.pluginURL,r=new Promise(e=>{this.loadScriptResolve=e}),i=new Promise(e=>setTimeout(()=>e(),this.TIMEOUT));if(await t(n),await Promise.race([r,i]),this.isParsed()){let e={pluginStatus:`loaded`,pluginURL:n};return this.setState(e),e}throw this.setState({pluginStatus:`error`,pluginURL:``}),Error(`RTL Text Plugin failed to import scripts from ${n}`)}};function $h(e){return/[\u0600-\u0604\u0606-\u060B\u060D-\u061A\u061C-\u061E\u0620-\u063F\u0641-\u064A\u0656-\u066F\u0671-\u06DC\u06DE-\u070D\u070F-\u074A\u074D-\u077F\u07C0-\u07FA\u07FD-\u07FF\u0840-\u085B\u085E\u0860-\u086A\u0870-\u0891\u0897-\u08E1\u08E3-\u08FF\u1800\u1801\u1804\u1806-\u1819\u1820-\u1878\u1880-\u18AA\uA840-\uA877\uFB50-\uFD3D\uFD40-\uFDCF\uFDF0-\uFDFF\uFE70-\uFE74\uFE76-\uFEFC]|\uD802[\uDEC0-\uDEE6\uDEEB-\uDEF6\uDF80-\uDF91\uDF99-\uDF9C\uDFA9-\uDFAF]|\uD803[\uDD00-\uDD27\uDD30-\uDD39\uDE60-\uDE7E\uDEC2-\uDEC7\uDED0-\uDED8\uDEFA-\uDEFF\uDF30-\uDF59\uDF70-\uDF89\uDFB0-\uDFCB]|\uD805[\uDE60-\uDE6C]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9C-\uDC9F]|\uD83A[\uDD00-\uDD4B\uDD50-\uDD59\uDD5E\uDD5F]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB\uDEF0\uDEF1]/gim.test(String.fromCodePoint(e))}function eg(e){return/[\u0591-\u05C7\u05D0-\u05EA\u05EF-\u05F4\u0600-\u0604\u0606-\u060B\u060D-\u061A\u061C-\u061E\u0620-\u063F\u0641-\u064A\u0656-\u066F\u0671-\u06DC\u06DE-\u070D\u070F-\u074A\u074D-\u07B1\u07C0-\u07FA\u07FD-\u082D\u0830-\u083E\u0840-\u085B\u085E\u0860-\u086A\u0870-\u0891\u0897-\u08E1\u08E3-\u08FF\uFB1D-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFD3D\uFD40-\uFDCF\uFDF0-\uFDFF\uFE70-\uFE74\uFE76-\uFEFC]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC57-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD1F-\uDD39\uDD3F-\uDD59\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE38-\uDE3A\uDE3F-\uDE48\uDE50-\uDE58\uDE60-\uDE9F\uDEC0-\uDEE6\uDEEB-\uDEF6\uDF00-\uDF35\uDF39-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDF99-\uDF9C\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD27\uDD30-\uDD39\uDD40-\uDD65\uDD69-\uDD85\uDD8E\uDD8F\uDE60-\uDE7E\uDE80-\uDEA9\uDEAB-\uDEAD\uDEB0\uDEB1\uDEC2-\uDEC7\uDED0-\uDED8\uDEFA-\uDF27\uDF30-\uDF59\uDF70-\uDF89\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCD6\uDD00-\uDD4B\uDD50-\uDD59\uDD5E\uDD5F]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB\uDEF0\uDEF1]/gim.test(String.fromCodePoint(e))}function tg(e){return/[\u0900-\u109F\u1700-\u17FF\u1900-\u194F\u19E0-\u1AAF\u1B00-\u1C4F\u1CC0-\u1CCF\uA800-\uA82F\uA880-\uA8FF\uA930-\uA95F\uA980-\uAAFF\uABC0-\uABFF]|\uD802[\uDE00-\uDE5F]|\uD804[\uDC00-\uDCCF\uDD00-\uDD4F\uDD80-\uDE4F\uDEB0-\uDFFF]|\uD805[\uDC00-\uDCDF\uDD80-\uDE5F\uDE80-\uDF4F]|\uD806[\uDC00-\uDC4F\uDD00-\uDD5F\uDDA0-\uDEAF\uDF00-\uDF7F]|\uD807[\uDC00-\uDCBF\uDD00-\uDDAF\uDEE0-\uDF5F\uDFC0-\uDFFF]|\uD818[\uDD00-\uDD3F]/gim.test(String.fromCodePoint(e))}function ng(e){return/[\u02EA\u02EB\u1100-\u11FF\u2E80-\u2FDF\u3000-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFE10-\uFE1F\uFE30-\uFE4F\uFF00-\uFFEF]|\uD81B[\uDFE0-\uDFFF]|[\uD81C-\uD822\uD840-\uD868\uD86A-\uD86D\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD88C][\uDC00-\uDFFF]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD1E\uDD80-\uDDF2]|\uD82B[\uDFF0-\uDFFF]|\uD82C[\uDC00-\uDEFB]|\uD83C[\uDE00-\uDEFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEAD\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD88D[\uDC00-\uDC79]/gim.test(String.fromCodePoint(e))}function rg(e){return/[\u02EA\u02EB\u2E80-\u2FDF\u2FF0-\u303F\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FD-\u30FF\u3105-\u312F\u31A0-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uF900-\uFA6D\uFA70-\uFAD9\uFE10-\uFE1F\uFE30-\uFE4F\uFF00-\uFFEF]|\uD81B[\uDFE0-\uDFFF]|[\uD81C-\uD822\uD840-\uD868\uD86A-\uD86D\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD88C][\uDC00-\uDFFF]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD1E\uDD80-\uDDF2]|\uD82B[\uDFF0-\uDFFF]|\uD82C[\uDC00-\uDEFB]|\uD83C[\uDE00-\uDEFF]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEAD\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD88D[\uDC00-\uDC79]/gim.test(String.fromCodePoint(e))}function ig(e){return/[\u02EA\u02EB\u1100-\u11FF\u1401-\u167F\u18B0-\u18FF\u2065\u20DD-\u20E0\u20E2-\u20E4\u2B97\u2BF0-\u2BFF\u2E50\u2E51\u2E80-\u3007\u3012\u3013\u3020-\u302F\u3031-\u30FB\u30FD-\uA4CF\uA960-\uA97F\uAC00-\uD7FF\uF900-\uFAFF\uFE10-\uFE1F\uFE30-\uFE48\uFE50-\uFE57\uFE5F-\uFE62\uFE67-\uFE6F\uFF00-\uFF07\uFF0A-\uFF0C\uFF0E-\uFF19\uFF1F-\uFF3A\uFF3C\uFF3E\uFF40-\uFF5A\uFFE0-\uFFE2\uFFE4-\uFFE7\uFFF0-\uFFF8]|\uD802[\uDD80-\uDD9F]|\uD805[\uDD80-\uDDFF]|\uD806[\uDE00-\uDEBF]|[\uD80C-\uD810\uD81C-\uD822\uD83C\uD83D\uD840-\uD87E\uD880-\uD8BE][\uDC00-\uDFFF]|\uD811[\uDC00-\uDE7F]|\uD81B[\uDFE0-\uDFFF]|\uD823[\uDC00-\uDDFF]|\uD82B[\uDFF0-\uDFFF]|\uD82C[\uDC00-\uDEFF]|\uD833[\uDEC0-\uDFCF]|\uD834[\uDC00-\uDDFF\uDEE0-\uDF7F]|\uD836[\uDC00-\uDEAF]|\uD83E[\uDD00-\uDEFF]|[\uD87F\uD8BF][\uDC00-\uDFFD]/gim.test(String.fromCodePoint(e))}function ag(e){return/[\xA7\xA9\xAE\xB1\xBC-\xBE\xD7\xF7\u2016\u2020\u2021\u2030\u2031\u203B\u203C\u2042\u2047-\u2049\u2051\u2100-\u218F\u221E\u2234\u2235\u2300-\u2307\u230C-\u231F\u2324-\u2328\u232B\u237D-\u239A\u23BE-\u23CD\u23CF\u23D1-\u23DB\u23E2-\u2422\u2424-\u24FF\u25A0-\u2619\u2620-\u2767\u2776-\u2793\u2B12-\u2B2F\u2B50-\u2B59\u2BB8-\u2BEB\u3000-\u303F\u30A0-\u30FF\uE000-\uF8FF\uFE30-\uFE6F\uFF00-\uFFEF\uFFFC\uFFFD]|[\uDB80-\uDBFF][\uDC00-\uDFFF]/gim.test(String.fromCodePoint(e))}function og(e){return/[\r\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0600-\u0605\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DD\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u070F\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0890\u0891\u0897-\u089F\u08CA-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C04\u0C3C\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CF3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D62\u0D63\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E33-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB3-\u0EBC\u0EC8-\u0ECE\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1037\u1039-\u103E\u1056-\u1059\u105E-\u1060\u1071-\u1074\u1082\u1084-\u1086\u108D\u109D\u1100-\u11FF\u135D-\u135F\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u180F\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60\u1A62\u1A65-\u1A7C\u1A7F\u1AB0-\u1ADD\u1AE0-\u1AEB\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DFF\u200C\u200D\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA953\uA960-\uA97C\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFF9E\uFF9F]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD803[\uDD24-\uDD27\uDD69-\uDD6D\uDEAB\uDEAC\uDEFA-\uDEFF\uDF46-\uDF50\uDF82-\uDF85]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC70\uDC73\uDC74\uDC7F-\uDC82\uDCB0-\uDCBA\uDCBD\uDCC2\uDCCD\uDD00-\uDD02\uDD27-\uDD34\uDD45\uDD46\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDDC2\uDDC3\uDDC9-\uDDCC\uDDCE\uDDCF\uDE2C-\uDE37\uDE3E\uDE41\uDEDF-\uDEEA\uDF00-\uDF03\uDF3B\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74\uDFB8-\uDFC0\uDFC2\uDFC5\uDFC7-\uDFCA\uDFCC-\uDFD2\uDFE1\uDFE2]|\uD805[\uDC35-\uDC46\uDC5E\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDDDC\uDDDD\uDE30-\uDE40\uDEAB-\uDEB7\uDF1D-\uDF1F\uDF22-\uDF2B]|\uD806[\uDC2C-\uDC3A\uDD30-\uDD35\uDD37\uDD38\uDD3B-\uDD43\uDDD1-\uDDD7\uDDDA-\uDDE0\uDDE4\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE3E\uDE47\uDE51-\uDE5B\uDE84-\uDE99\uDF60-\uDF67]|\uD807[\uDC2F-\uDC36\uDC38-\uDC3F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD31-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD8A-\uDD8E\uDD90\uDD91\uDD93-\uDD97\uDEF3-\uDEF6\uDF00-\uDF03\uDF34-\uDF3A\uDF3E-\uDF42\uDF5A]|\uD80D[\uDC40\uDC47-\uDC55]|\uD818[\uDD1E-\uDD2F]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDD63\uDD67-\uDD6A\uDF4F\uDF51-\uDF87\uDF8F-\uDF92\uDFE4\uDFF0\uDFF1]|\uD82F[\uDC9D\uDC9E]|\uD833[\uDF00-\uDF2D\uDF30-\uDF46]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDC8F\uDD30-\uDD36\uDEAE\uDEEC-\uDEEF]|\uD839[\uDCEC-\uDCEF\uDDEE\uDDEF\uDEE3\uDEE6\uDEEE\uDEEF\uDEF5]|\uD83A[\uDCD0-\uDCD6\uDD44-\uDD4A]|\uD83C[\uDDE6-\uDDFF\uDFFB-\uDFFF]|\uDB40[\uDC20-\uDC7F\uDD00-\uDDEF]/.test(e)}function sg(e){return/[\u0E01-\u0E3A\u0E40-\u0E4E\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECE\u0EDC-\u0EDF\u0F00-\u0F47\u0F49-\u0F6C\u0F71-\u0F97\u0F99-\u0FBC\u0FBE-\u0FCC\u0FCE-\u0FD4\u0FD9\u0FDA\u1000-\u103F\u1050-\u108F\u109A-\u109F\u1780-\u17D3\u17D7\u17DC\u17DD\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19DE\u19DF\u1A20-\u1A5E\u1A60-\u1A7C\u1AA0-\u1AAD\u1B00-\u1B4C\u1B4E-\u1B7F\uA980-\uA9CD\uA9D0-\uA9D9\uA9DE-\uA9EF\uA9FA-\uA9FE\uAA60-\uAAC2\uAADB-\uAADF]|\uD805[\uDF00-\uDF1A\uDF1D-\uDF2B\uDF3A\uDF3B\uDF3F-\uDF46]/gim.test(String.fromCodePoint(e))}function cg(e,t){return/(?:[\u1039\u17D2\u1A60\u1BAB\u200D\uAAF6]|\uD802\uDE3F|\uD804[\uDD33\uDFD0]|\uD806[\uDD3E\uDE47\uDE99]|\uD807[\uDD45\uDD97\uDF42])$/.test(e)||/^\p{gc=Mc}/u.test(t)}var lg={C:`18g,1;g2,3;4nb,1`,D:`17k,1;5,1;1,1;1,5;4,d;1,7;1,2;z,2;8,g;i,12;1,2;9,1;1,1;1,2;14,3;2,1;28,9;3,f;2,4;1,1;2,3;2,6;7a,1;2,5;1,1;g,a;5,2;2,6;1,f`,R:`17m,4;1,1;1,1;5,4;l,1;14,3;1,3;g,i;12,1;2,9;1,1;1,1;2,2;1,1;o,2;2x,3;f,2;4,1;1,2;3,2;6u,j;b,1;r,3;1,1;2,2;6,1`,T:`174,b;1,1;1a,l;g,1;2t,7;2,6;2,2;1,4;bt,9;16,o;1,t;1clb,1`},ug={1569:[65152,0,0,0],1570:[65153,65154,0,0],1571:[65155,65156,0,0],1572:[65157,65158,0,0],1573:[65159,65160,0,0],1574:[65161,65162,65163,65164],1575:[65165,65166,0,0],1576:[65167,65168,65169,65170],1577:[65171,65172,0,0],1578:[65173,65174,65175,65176],1579:[65177,65178,65179,65180],1580:[65181,65182,65183,65184],1581:[65185,65186,65187,65188],1582:[65189,65190,65191,65192],1583:[65193,65194,0,0],1584:[65195,65196,0,0],1585:[65197,65198,0,0],1586:[65199,65200,0,0],1587:[65201,65202,65203,65204],1588:[65205,65206,65207,65208],1589:[65209,65210,65211,65212],1590:[65213,65214,65215,65216],1591:[65217,65218,65219,65220],1592:[65221,65222,65223,65224],1593:[65225,65226,65227,65228],1594:[65229,65230,65231,65232],1601:[65233,65234,65235,65236],1602:[65237,65238,65239,65240],1603:[65241,65242,65243,65244],1604:[65245,65246,65247,65248],1605:[65249,65250,65251,65252],1606:[65253,65254,65255,65256],1607:[65257,65258,65259,65260],1608:[65261,65262,0,0],1609:[65263,65264,64488,64489],1610:[65265,65266,65267,65268],1611:[65136,0,0,65137],1612:[65138,0,0,0],1613:[65140,0,0,0],1614:[65142,0,0,65143],1615:[65144,0,0,65145],1616:[65146,0,0,65147],1617:[65148,0,0,65149],1618:[65150,0,0,65151],1649:[64336,64337,0,0],1655:[64477,0,0,0],1657:[64358,64359,64360,64361],1658:[64350,64351,64352,64353],1659:[64338,64339,64340,64341],1662:[64342,64343,64344,64345],1663:[64354,64355,64356,64357],1664:[64346,64347,64348,64349],1667:[64374,64375,64376,64377],1668:[64370,64371,64372,64373],1670:[64378,64379,64380,64381],1671:[64382,64383,64384,64385],1672:[64392,64393,0,0],1676:[64388,64389,0,0],1677:[64386,64387,0,0],1678:[64390,64391,0,0],1681:[64396,64397,0,0],1688:[64394,64395,0,0],1700:[64362,64363,64364,64365],1702:[64366,64367,64368,64369],1705:[64398,64399,64400,64401],1709:[64467,64468,64469,64470],1711:[64402,64403,64404,64405],1713:[64410,64411,64412,64413],1715:[64406,64407,64408,64409],1722:[64414,64415,0,0],1723:[64416,64417,64418,64419],1726:[64426,64427,64428,64429],1728:[64420,64421,0,0],1729:[64422,64423,64424,64425],1733:[64480,64481,0,0],1734:[64473,64474,0,0],1735:[64471,64472,0,0],1736:[64475,64476,0,0],1737:[64482,64483,0,0],1739:[64478,64479,0,0],1740:[64508,64509,64510,64511],1744:[64484,64485,64486,64487],1746:[64430,64431,0,0],1747:[64432,64433,0,0]},dg={لآ:[65269,65270],لأ:[65271,65272],لإ:[65273,65274],لا:[65275,65276]},fg=1604,pg=/[\u0600-\u06ff\u0750-\u077f\u0870-\u089f\u08a0-\u08ff\ufb50-\ufdff\ufe70-\ufeff]/;function mg(e,t,n){let r=0;for(let i of e.split(`;`)){let[e,a]=i.split(`,`).map(e=>parseInt(e,36)),o=r+e;for(let e=o;e<o+a;e++)n.set(e,t);r=o+a}}var hg=new Map;for(let[e,t]of Object.entries(lg))mg(t,e,hg);function gg(e){return hg.get(e)??`U`}function _g(e){return e===`D`||e===`L`||e===`C`}function vg(e){return e===`D`||e===`R`||e===`C`}function yg(e,t,n){return e===`D`?t&&n?3:t?1:n?2:0:e===`R`?+!!t:e===`L`?n?2:0:null}function bg(e){return[...e].map(e=>{let t=e.codePointAt(0);return{codePoint:t,type:gg(t),form:null}})}function xg(e){let t=e.filter(e=>e.type!==`T`);for(let e=0;e<t.length;e++){let n=t[e],r=e>0&&_g(t[e-1].type),i=e+1<t.length&&vg(t[e+1].type);n.form=yg(n.type,r,i)}}function Sg(e){let t=!1;for(let n of e)n.type===`T`?n.form=t?3:0:t=n.form===2||n.form===3}function Cg(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];if(r.codePoint!==fg){t.push(r);continue}let i=n+1;for(;i<e.length&&e[i].type===`T`;)i++;let a=e[i],o=a&&dg[String.fromCodePoint(fg,a.codePoint)];if(!o){t.push(r);continue}let s=r.form===3||r.form===1;t.push({codePoint:o[+!!s],type:`R`,form:0}),t.push(...e.slice(n+1,i)),n=i}return t}function wg(e){if(e.form===null)return e.codePoint;let t=ug[e.codePoint];return t&&(t[e.form]||t[0])||e.codePoint}function Tg(e){if(!pg.test(e))return e;let t=bg(e);return xg(t),Sg(t),Cg(t).map(e=>String.fromCodePoint(wg(e))).join(``)}function Eg(e,t,n){let r=t.layout.get(`text-transform`).evaluate(n,{});return r===`uppercase`?e=e.toLocaleUpperCase():r===`lowercase`&&(e=e.toLocaleLowerCase()),(Qh.applyArabicShaping??Tg)(e)}function Dg(e,t,n){for(let r of e.sections)r.text=Eg(r.text,t,n);return e}function Og(e,t,n){let r=n?t.last.points:t.first.points,i=n?r[r.length-1]:r[0];return`${e}:${i.x}:${i.y}`}function kg(e){let t=e.first.points,n=t.length;for(let t=e.first.next;t;t=t.next)n+=t.points.length-1;let r=Array(n);for(let e=0;e<t.length;e++)r[e]=t[e];let i=t.length;for(let t=e.first.next;t;t=t.next){let e=t.points;for(let t=1;t<e.length;t++)r[i++]=e[t]}return r}function Ag(e,t,n,r,i){let a=t[n];delete t[n],t[r]=a;let o=e[a];return o.last.next=i.first,o.last=i.last,a}function jg(e,t,n,r,i){let a=t[r];delete t[r],t[n]=a;let o=e[a];return i.last.next=o.first,o.first=i.first,a}function Mg(e){let t={},n={},r=[];for(let i of e){let e=i.text?i.text.toString():null,a={points:i.geometry[0],next:null},o={feature:i,first:a,last:a};if(!e){r.push(o);continue}let s=Og(e,o),c=Og(e,o,!0);if(s in n&&c in t&&n[s]!==t[c]){let i=jg(r,t,s,c,o),a=Ag(r,n,s,c,r[i]);delete t[s],delete n[c],n[Og(e,r[a],!0)]=a,r[i].feature.geometry=null}else if(s in n)Ag(r,n,s,c,o);else if(c in t)jg(r,t,s,c,o);else{let e=r.push(o)-1;t[s]=e,n[c]=e}}let i=[];for(let e of r){let t=e.feature;t.geometry&&(e.first.next&&(t.geometry[0]=kg(e)),i.push(t))}return i}var Ng=typeof Intl<`u`&&`Segmenter`in Intl,Pg,Fg;function Ig(e){if(!Ng||!og(e))return[...e];Pg??=new Intl.Segmenter(void 0,{granularity:`grapheme`});let t=[];for(let{segment:n}of Pg.segment(e)){let e=t.length-1;e>=0&&cg(t[e],n)?t[e]+=n:t.push(n)}return t}function Lg(e){let t=new Set;if(Ng){Fg??=new Intl.Segmenter(void 0,{granularity:`word`});for(let{index:n}of Fg.segment(e))t.add(n);return t}let n=0;for(let r of e.split(/\b|(?=\p{Ideo})/u))t.add(n),n+=r.length;return t}function Rg(e){let t=e.codePointAt(0);return e.length>(t>65535?2:1)}function zg(e){return/\s/u.test(String.fromCodePoint(e))}function Bg(e){return/[\p{P}\p{S}]/u.test(String.fromCodePoint(e))}function Vg(e){for(let t of e)if(ig(t.codePointAt(0)))return!0;return!1}function Hg(e){for(let t of e)if(!Ug(t.codePointAt(0)))return!1;return!0}function Ug(e){return!$h(e)}function Wg(e){return!(ig(e)||ag(e))}function Gg(e){return/\p{sc=Arab}/u.test(String.fromCodePoint(e))}function Kg(e){return eg(e)}function qg(e){for(let t of e)if(Kg(t.codePointAt(0)))return!0;return!1}var Jg={"!":`︕`,"#":`#`,$:`$`,"%":`%`,"&":`&`,"(":`︵`,")":`︶`,"*":`*`,"+":`+`,",":`︐`,"-":`︲`,".":`・`,"/":`/`,":":`︓`,";":`︔`,"<":`︿`,"=":`=`,">":`﹀`,"?":`︖`,"@":`@`,"[":`﹇`,"\\":`\`,"]":`﹈`,"^":`^`,_:`︳`,"`":```,"{":`︷`,"|":`―`,"}":`︸`,"~":`~`,"¢":`¢`,"£":`£`,"¥":`¥`,"¦":`¦`,"¬":`¬`,"¯":` ̄`,"–":`︲`,"—":`︱`,"‘":`﹃`,"’":`﹄`,"“":`﹁`,"”":`﹂`,"…":`︙`,"⋯":`︙`,"‧":`・`,"₩":`₩`,"、":`︑`,"。":`︒`,"〈":`︿`,"〉":`﹀`,"《":`︽`,"》":`︾`,"「":`﹁`,"」":`﹂`,"『":`﹃`,"』":`﹄`,"【":`︻`,"】":`︼`,"〔":`︹`,"〕":`︺`,"〖":`︗`,"〗":`︘`,"!":`︕`,"(":`︵`,")":`︶`,",":`︐`,"-":`︲`,".":`・`,":":`︓`,";":`︔`,"<":`︿`,">":`﹀`,"?":`︖`,"[":`﹇`,"]":`﹈`,"_":`︳`,"{":`︷`,"|":`―`,"}":`︸`,"⦅":`︵`,"⦆":`︶`,"。":`︒`,"「":`﹁`,"」":`﹂`};function Yg(e){let t=``,n={premature:!0,value:void 0},r=e[Symbol.iterator](),i=r.next(),a=e[Symbol.iterator]();a.next();let o=a.next();for(;!i.done;)(o.done||!Wg(o.value.codePointAt(0))||Jg[o.value])&&(n.premature||!Wg(n.value.codePointAt(0))||Jg[n.value])&&Jg[i.value]?t+=Jg[i.value]:t+=i.value,n={value:i.value,premature:!1},i=r.next(),o=a.next();return t}var Xg={10:!0,13:!0,32:!0,38:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0},Zg={40:!0};function Qg(e,t,n,r,i,a){if(`fontStack`in t){let r=n[t.fontStack]?.default,a=r?.[e];if(a)return a.metrics.advance*t.scale+i;let o=0;for(let n of e){let e=r?.[n];e&&(o+=e.metrics.advance*t.scale+i)}return o}{let e=r[t.imageName];return e?e.displaySize[0]*t.scale*24/a+i:0}}function $g(e,t,n,r){let i=(e-t)**2;return r?e<t?i/2:i*2:i+Math.abs(n)*n}function e_(e){return/^\s+$/u.test(e)}function t_(e,t,n){let r=0;return(e===10||e===13)&&(r-=1e4),n&&(r+=150),(e===40||e===65288)&&(r+=50),(t===41||t===65289)&&(r+=50),r}function n_(e,t,n,r,i,a){let o=null,s=$g(t,n,i,a);for(let e of r){let r=$g(t-e.x,n,i,a)+e.badness;r<=s&&(o=e,s=r)}return{index:e,x:t,priorBreak:o,badness:s}}function r_(e){return e?r_(e.priorBreak).concat(e.index):[]}var i_=class e{constructor(e=``,t=[],n=[]){this.text=e,this.sections=t,this.sectionIndex=n,this.imageSectionID=null,this.cachedGraphemes=null}graphemes(){return this.cachedGraphemes??=Ig(this.text),this.cachedGraphemes}static fromFeature(t,n,r,i){let a=new e;for(let e of t.sections)e.image?a.addImageSection(e):a.addTextSection(e,n);return r&&a.verticalizePunctuation(i),a}length(){return this.graphemes().length}getSection(e){return this.sections[this.sectionIndex[e]]}getSectionIndex(e){return this.sectionIndex[e]}verticalizePunctuation(e={},t){let n=Yg(this.text),r=0;this.cachedGraphemes=this.graphemes().map((i,a)=>{let o=n.slice(r,r+i.length);r+=i.length;let s=this.getSection(a);return t?.[a]!==!1&&`fontStack`in s&&e[s.fontStack]?.vertical?.[i]?i:o}),this.text=this.cachedGraphemes.join(``)}hasZeroWidthSpaces(){return this.text.includes(``)}trim(){let e=this.graphemes(),t=0;for(;t<e.length&&e_(e[t]);)t++;let n=e.length;for(;n>t&&e_(e[n-1]);)n--;this.text=e.slice(t,n).join(``),this.sectionIndex=this.sectionIndex.slice(t,n),this.cachedGraphemes=null}substring(t,n){let r=this.graphemes().slice(t,n).join(``),i=this.sectionIndex.slice(t,n);return new e(r,this.sections,i)}toCodeUnitIndex(e){return this.graphemes().slice(0,e).join(``).length}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce((e,t)=>Math.max(e,this.sections[t].scale),0)}getMaxImageSize(e){let t=0,n=0;for(let r=0;r<this.length();r++){let i=this.getSection(r);if(`imageName`in i){let r=e[i.imageName];if(!r)continue;let a=r.displaySize;t=Math.max(t,a[0]),n=Math.max(n,a[1])}}return{maxImageWidth:t,maxImageHeight:n}}_appendSection(e,t){let n=this.graphemes(),r=n.length>0?n[n.length-1]:``,i=Ig(r+e);this.text+=e,this.cachedGraphemes=n.slice(0,r?-1:void 0).concat(i);let a=i.length-+!!r;for(let e=0;e<a;e++)this.sectionIndex.push(t)}addTextSection(e,t){this.sections.push({scale:e.scale||1,verticalAlign:e.verticalAlign||`bottom`,fontStack:e.fontStack||t}),this._appendSection(e.text,this.sections.length-1)}addImageSection(e){let t=e.image?e.image.name:``;if(t.length===0){I(`Can't add FormattedSection with an empty image.`);return}let n=this.getNextImageSectionCharCode();n?(this.sections.push({scale:1,verticalAlign:e.verticalAlign||`bottom`,imageName:t}),this._appendSection(String.fromCharCode(n),this.sections.length-1)):I(`Reached maximum number of images 6401`)}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}determineLineBreaks(e,t,n,r,i){let a=this.determineTotalWidth(e,n,r,i);if(e>=0&&a>0&&a<=t&&!/[\n\r]/.test(this.text))return[this.length()];let o=[],s=a/Math.max(1,Math.ceil(a/t)),c=this.hasZeroWidthSpaces(),l=this.graphemes(),u=null,d=0,f=0;for(let t=0;t<l.length;t++){let a=l[t];if(t>0){let e=l[t-1].codePointAt(0),n=a.codePointAt(0),r=rg(e),i=sg(e)&&sg(n);(Xg[e]||r||`imageName`in this.getSection(t-1)||l[t+1]!==void 0&&Zg[n]||i&&(u??=Lg(this.text)).has(f))&&o.push(n_(t,d,s,o,t_(e,n,r&&c),!1))}zg(a.codePointAt(0))||(d+=Qg(a,this.getSection(t),n,r,e,i)),f+=a.length}return r_(n_(this.length(),d,s,o,0,!0))}determineTotalWidth(e,t,n,r){let i=0,a=0;for(let o of this.graphemes()){let s=this.getSection(a);i+=Qg(o,s,t,n,e,r),a++}return i}};function a_(){return(function(e){var t={R:`13k,1a,2,3,3,2+1j,ch+16,a+1,5+2,2+n,5,a,4,6+16,4+3,h+1b,4mo,179q,2+9,2+11,2i9+7y,2+68,4,3+4,5+13,4+3,2+4k,3+29,8+cf,1t+7z,w+17,3+3m,1t+3z,16o1+5r,8+30,8+mc,29+1r,29+4v,75+73`,EN:`1c+9,3d+1,6,187+9,513,4+5,7+9,sf+j,175h+9,qw+q,161f+1d,4xt+a,25i+9`,ES:`17,2,6dp+1,f+1,av,16vr,mx+1,4o,2`,ET:`z+2,3h+3,b+1,ym,3e+1,2o,p4+1,8,6u,7c,g6,1wc,1n9+4,30+1b,2n,6d,qhx+1,h0m,a+1,49+2,63+1,4+1,6bb+3,12jj`,AN:`16o+5,2j+9,2+1,35,ed,1ff2+9,87+u`,CS:`18,2+1,b,2u,12k,55v,l,17v0,2,3,53,2+1,b`,B:`a,3,f+2,2v,690`,S:`9,2,k`,WS:`c,k,4f4,1vk+a,u,1j,335`,ON:`x+1,4+4,h+5,r+5,r+3,z,5+3,2+1,2+1,5,2+2,3+4,o,w,ci+1,8+d,3+d,6+8,2+g,39+1,9,6+1,2,33,b8,3+1,3c+1,7+1,5r,b,7h+3,sa+5,2,3i+6,jg+3,ur+9,2v,ij+1,9g+9,7+a,8m,4+1,49+x,14u,2+2,c+2,e+2,e+2,e+1,i+n,e+e,2+p,u+2,e+2,36+1,2+3,2+1,b,2+2,6+5,2,2,2,h+1,5+4,6+3,3+f,16+2,5+3l,3+81,1y+p,2+40,q+a,m+13,2r+ch,2+9e,75+hf,3+v,2+2w,6e+5,f+6,75+2a,1a+p,2+2g,d+5x,r+b,6+3,4+o,g,6+1,6+2,2k+1,4,2j,5h+z,1m+1,1e+f,t+2,1f+e,d+3,4o+3,2s+1,w,535+1r,h3l+1i,93+2,2s,b+1,3l+x,2v,4g+3,21+3,kz+1,g5v+1,5a,j+9,n+v,2,3,2+8,2+1,3+2,2,3,46+1,4+4,h+5,r+5,r+a,3h+2,4+6,b+4,78,1r+24,4+c,4,1hb,ey+6,103+j,16j+c,1ux+7,5+g,fsh,jdq+1t,4,57+2e,p1,1m,1m,1m,1m,4kt+1,7j+17,5+2r,d+e,3+e,2+e,2+10,m+4,w,1n+5,1q,4z+5,4b+rb,9+c,4+c,4+37,d+2g,8+b,l+b,5+1j,9+9,7+13,9+t,3+1,27+3c,2+29,2+3q,d+d,3+4,4+2,6+6,a+o,8+6,a+2,e+6,16+42,2+1i`,BN:`0+8,6+d,2s+5,2+p,e,4m9,1kt+2,2b+5,5+5,17q9+v,7k,6p+8,6+1,119d+3,440+7,96s+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+75,6p+2rz,1ben+1,1ekf+1,1ekf+1`,NSM:`lc+33,7o+6,7c+18,2,2+1,2+1,2,21+a,1d+k,h,2u+6,3+5,3+1,2+3,10,v+q,2k+a,1n+8,a,p+3,2+8,2+2,2+4,18+2,3c+e,2+v,1k,2,5+7,5,4+6,b+1,u,1n,5+3,9,l+1,r,3+1,1m,5+1,5+1,3+2,4,v+1,4,c+1,1m,5+4,2+1,5,l+1,n+5,2,1n,3,2+3,9,8+1,c+1,v,1q,d,1f,4,1m+2,6+2,2+3,8+1,c+1,u,1n,g+1,l+1,t+1,1m+1,5+3,9,l+1,u,21,8+2,2,2j,3+6,d+7,2r,3+8,c+5,23+1,s,2,2,1k+d,2+4,2+1,6+a,2+z,a,2v+3,2+5,2+1,3+1,q+1,5+2,h+3,e,3+1,7,g,jk+2,qb+2,u+2,u+1,v+1,1t+1,2+6,9,3+a,a,1a+2,3c+1,z,3b+2,5+1,a,7+2,64+1,3,1n,2+6,2,2,3+7,7+9,3,1d+g,1s+3,1d,2+4,2,6,15+8,d+1,x+3,3+1,2+2,1l,2+1,4,2+2,1n+7,3+1,49+2,2+c,2+6,5,7,4+1,5j+1l,2+4,k1+w,2db+2,3y,2p+v,ff+3,30+1,n9x+3,2+9,x+1,29+1,7l,4,5,q+1,6,48+1,r+h,e,13+7,q+a,1b+2,1d,3+3,3+1,14,1w+5,3+1,3+1,d,9,1c,1g,2+2,3+1,6+1,2,17+1,9,6n,3,5,fn5,ki+f,h+f,r2,6b,46+4,1af+2,2+1,6+3,15+2,5,4m+1,fy+3,as+1,4a+a,4x,1j+e,1l+2,1e+3,3+1,1y+2,11+4,2+7,1r,d+1,1h+8,b+3,3,2o+2,3,2+1,7,4h,4+7,m+1,1m+1,4,12+6,4+4,5g+7,3+2,2,o,2d+5,2,5+1,2+1,6n+3,7+1,2+1,s+1,2e+7,3,2+1,2z,2,3+5,2,2u+2,3+3,2+4,78+8,2+1,75+1,2,5,41+3,3+1,5,x+5,3+1,15+5,3+3,9,a+5,3+2,1b+c,2+1,bb+6,2+5,2d+l,3+6,2+1,2+1,3f+5,4,2+1,2+6,2,21+1,4,2,9o+1,f0c+4,1o+6,t5,1s+3,2a,f5l+1,43t+2,i+7,3+6,v+3,45+2,1j0+1i,5+1d,9,f,n+4,2+e,11t+6,2+g,3+6,2+1,2+4,7a+6,c6+3,15t+6,32+6,gzhy+6n`,AL:`16w,3,2,e+1b,z+2,2+2s,g+1,8+1,b+m,2+t,s+2i,c+e,4h+f,1d+1e,1bwe+dp,3+3z,x+c,2+1,35+3y,2rm+z,5+7,b+5,dt+l,c+u,17nl+27,1t+27,4x+6n,3+d`,LRO:`6ct`,RLO:`6cu`,LRE:`6cq`,RLE:`6cr`,PDF:`6cs`,LRI:`6ee`,RLI:`6ef`,FSI:`6eg`,PDI:`6eh`},n={},r={};n.L=1,r[1]=`L`,Object.keys(t).forEach(function(e,t){n[e]=1<<t+1,r[n[e]]=e}),Object.freeze(n);var i=n.LRI|n.RLI|n.FSI,a=n.L|n.R|n.AL,o=n.B|n.S|n.WS|n.ON|n.FSI|n.LRI|n.RLI|n.PDI,s=n.BN|n.RLE|n.LRE|n.RLO|n.LRO|n.PDF,c=n.S|n.WS|n.B|i|n.PDI|s,l=null;function u(){if(!l){l=new Map;var e=0;for(var r in t)if(t.hasOwnProperty(r))for(var i=t[r],a=``,o=void 0,s=!1,c=0,u=0;u<=i.length+1;u+=1){var d=i[u];if(d!==`,`&&u!==i.length)d===`+`?(s=!0,c=e=c+parseInt(a,36),a=``):a+=d;else{s?o=e+parseInt(a,36):(c=e=c+parseInt(a,36),o=e),s=!1,a=``,c=o;for(var f=e;f<o+1;f+=1)l.set(f,n[r])}}}}function d(e){return u(),l.get(e.codePointAt(0))||n.L}function f(e){return r[d(e)]}var p={pairs:`14>1,1e>2,u>2,2wt>1,1>1,1ge>1,1wp>1,1j>1,f>1,hm>1,1>1,u>1,u6>1,1>1,+5,28>1,w>1,1>1,+3,b8>1,1>1,+3,1>3,-1>-1,3>1,1>1,+2,1s>1,1>1,x>1,th>1,1>1,+2,db>1,1>1,+3,3>1,1>1,+2,14qm>1,1>1,+1,4q>1,1e>2,u>2,2>1,+1`,canonical:`6f1>-6dx,6dy>-6dx,6ec>-6ed,6ee>-6ed,6ww>2jj,-2ji>2jj,14r4>-1e7l,1e7m>-1e7l,1e7m>-1e5c,1e5d>-1e5b,1e5c>-14qx,14qy>-14qx,14vn>-1ecg,1ech>-1ecg,1edu>-1ecg,1eci>-1ecg,1eda>-1ecg,1eci>-1ecg,1eci>-168q,168r>-168q,168s>-14ye,14yf>-14ye`};function m(e,t){var n=0,r=new Map,i=t&&new Map,a;return e.split(`,`).forEach(function e(o){if(o.indexOf(`+`)!==-1)for(var s=+o;s--;)e(a);else{a=o;var c=o.split(`>`),l=c[0],u=c[1];l=String.fromCodePoint(n+=parseInt(l,36)),u=String.fromCodePoint(n+=parseInt(u,36)),r.set(l,u),t&&i.set(u,l)}}),{map:r,reverseMap:i}}var h,g,_;function v(){if(!h){var e=m(p.pairs,!0),t=e.map,n=e.reverseMap;h=t,g=n,_=m(p.canonical,!1).map}}function y(e){return v(),h.get(e)||null}function b(e){return v(),g.get(e)||null}function x(e){return v(),_.get(e)||null}var S=n.L,C=n.R,w=n.EN,T=n.ES,E=n.ET,D=n.AN,O=n.CS,k=n.B,A=n.S,j=n.ON,ee=n.BN,te=n.NSM,ne=n.AL,re=n.LRO,ie=n.RLO,ae=n.LRE,oe=n.RLE,se=n.PDF,ce=n.LRI,le=n.RLI,ue=n.FSI,de=n.PDI;function fe(e,t){for(var n=125,r=new Uint32Array(e.length),l=0;l<e.length;l++)r[l]=d(e[l]);var u=new Map;function f(e,t){var n=r[e];r[e]=t,u.set(n,u.get(n)-1),n&o&&u.set(o,u.get(o)-1),u.set(t,(u.get(t)||0)+1),t&o&&u.set(o,(u.get(o)||0)+1)}for(var p=new Uint8Array(e.length),m=new Map,h=[],g=null,_=0;_<e.length;_++)g||h.push(g={start:_,end:e.length-1,level:t===`rtl`?1:t===`ltr`?0:an(_,!1)}),r[_]&k&&(g.end=_,g=null);for(var v=oe|ae|ie|re|i|de|se|k,fe=function(e){return e+(e&1?1:2)},pe=function(e){return e+(e&1?2:1)},me=0;me<h.length;me++){g=h[me];var he=[{_level:g.level,_override:0,_isolate:0}],ge=void 0,_e=0,ve=0,ye=0;u.clear();for(var be=g.start;be<=g.end;be++){var xe=r[be];if(ge=he[he.length-1],u.set(xe,(u.get(xe)||0)+1),xe&o&&u.set(o,(u.get(o)||0)+1),xe&v){if(xe&(oe|ae)){p[be]=ge._level;var Se=(xe===oe?pe:fe)(ge._level);Se<=n&&!_e&&!ve?he.push({_level:Se,_override:0,_isolate:0}):_e||ve++}else if(xe&(ie|re)){p[be]=ge._level;var Ce=(xe===ie?pe:fe)(ge._level);Ce<=n&&!_e&&!ve?he.push({_level:Ce,_override:xe&ie?C:S,_isolate:0}):_e||ve++}else if(xe&i){xe&ue&&(xe=an(be+1,!0)===1?le:ce),p[be]=ge._level,ge._override&&f(be,ge._override);var we=(xe===le?pe:fe)(ge._level);we<=n&&_e===0&&ve===0?(ye++,he.push({_level:we,_override:0,_isolate:1,_isolInitIndex:be})):_e++}else if(xe&de){if(_e>0)_e--;else if(ye>0){for(ve=0;!he[he.length-1]._isolate;)he.pop();var Te=he[he.length-1]._isolInitIndex;Te!=null&&(m.set(Te,be),m.set(be,Te)),he.pop(),ye--}ge=he[he.length-1],p[be]=ge._level,ge._override&&f(be,ge._override)}else xe&se?(_e===0&&(ve>0?ve--:!ge._isolate&&he.length>1&&(he.pop(),ge=he[he.length-1])),p[be]=ge._level):xe&k&&(p[be]=g.level)}else p[be]=ge._level,ge._override&&xe!==ee&&f(be,ge._override)}for(var Ee=[],De=null,Oe=g.start;Oe<=g.end;Oe++){var ke=r[Oe];if(!(ke&s)){var Ae=p[Oe],je=ke&i,Me=ke===de;De&&Ae===De._level?(De._end=Oe,De._endsWithIsolInit=je):Ee.push(De={_start:Oe,_end:Oe,_level:Ae,_startsWithPDI:Me,_endsWithIsolInit:je})}}for(var Ne=[],Pe=0;Pe<Ee.length;Pe++){var Fe=Ee[Pe];if(!Fe._startsWithPDI||Fe._startsWithPDI&&!m.has(Fe._start)){for(var Ie=[De=Fe],Le=void 0;De&&De._endsWithIsolInit&&(Le=m.get(De._end))!=null;)for(var Re=Pe+1;Re<Ee.length;Re++)if(Ee[Re]._start===Le){Ie.push(De=Ee[Re]);break}for(var ze=[],Be=0;Be<Ie.length;Be++)for(var Ve=Ie[Be],He=Ve._start;He<=Ve._end;He++)ze.push(He);for(var Ue=p[ze[0]],We=g.level,Ge=ze[0]-1;Ge>=0;Ge--)if(!(r[Ge]&s)){We=p[Ge];break}var Ke=ze[ze.length-1],qe=p[Ke],Je=g.level;if(!(r[Ke]&i)){for(var Ye=Ke+1;Ye<=g.end;Ye++)if(!(r[Ye]&s)){Je=p[Ye];break}}Ne.push({_seqIndices:ze,_sosType:Math.max(We,Ue)%2?C:S,_eosType:Math.max(Je,qe)%2?C:S})}}for(var Xe=0;Xe<Ne.length;Xe++){var Ze=Ne[Xe],M=Ze._seqIndices,Qe=Ze._sosType,$e=Ze._eosType,et=p[M[0]]&1?C:S;if(u.get(te))for(var tt=0;tt<M.length;tt++){var nt=M[tt];if(r[nt]&te){for(var rt=Qe,it=tt-1;it>=0;it--)if(!(r[M[it]]&s)){rt=r[M[it]];break}f(nt,rt&(i|de)?j:rt)}}if(u.get(w))for(var N=0;N<M.length;N++){var at=M[N];if(r[at]&w)for(var ot=N-1;ot>=-1;ot--){var st=ot===-1?Qe:r[M[ot]];if(st&a){st===ne&&f(at,D);break}}}if(u.get(ne))for(var ct=0;ct<M.length;ct++){var lt=M[ct];r[lt]&ne&&f(lt,C)}if(u.get(T)||u.get(O))for(var ut=1;ut<M.length-1;ut++){var dt=M[ut];if(r[dt]&(T|O)){for(var ft=0,pt=0,mt=ut-1;mt>=0&&(ft=r[M[mt]],ft&s);mt--);for(var ht=ut+1;ht<M.length&&(pt=r[M[ht]],pt&s);ht++);ft===pt&&(r[dt]===T?ft===w:ft&(w|D))&&f(dt,ft)}}if(u.get(w)){for(var gt=0;gt<M.length;gt++)if(r[M[gt]]&w){for(var _t=gt-1;_t>=0&&r[M[_t]]&(E|s);_t--)f(M[_t],w);for(gt++;gt<M.length&&r[M[gt]]&(E|s|w);gt++)r[M[gt]]!==w&&f(M[gt],w)}}if(u.get(E)||u.get(T)||u.get(O))for(var vt=0;vt<M.length;vt++){var yt=M[vt];if(r[yt]&(E|T|O)){f(yt,j);for(var bt=vt-1;bt>=0&&r[M[bt]]&s;bt--)f(M[bt],j);for(var xt=vt+1;xt<M.length&&r[M[xt]]&s;xt++)f(M[xt],j)}}if(u.get(w))for(var St=0,Ct=Qe;St<M.length;St++){var wt=M[St],Tt=r[wt];Tt&w?Ct===S&&f(wt,S):Tt&a&&(Ct=Tt)}if(u.get(o)){for(var Et=C|w|D,P=Et|S,Dt=[],F=[],Ot=0;Ot<M.length;Ot++)if(r[M[Ot]]&o){var kt=e[M[Ot]],At=void 0;if(y(kt)!==null){if(F.length<63)F.push({char:kt,seqIndex:Ot});else break}else if((At=b(kt))!==null)for(var jt=F.length-1;jt>=0;jt--){var Mt=F[jt].char;if(Mt===At||Mt===b(x(kt))||y(x(Mt))===kt){Dt.push([F[jt].seqIndex,Ot]),F.length=jt;break}}}Dt.sort(function(e,t){return e[0]-t[0]});for(var Nt=0;Nt<Dt.length;Nt++){for(var Pt=Dt[Nt],Ft=Pt[0],It=Pt[1],Lt=!1,Rt=0,zt=Ft+1;zt<It;zt++){var Bt=M[zt];if(r[Bt]&P){Lt=!0;var I=r[Bt]&Et?C:S;if(I===et){Rt=I;break}}}if(Lt&&!Rt){Rt=Qe;for(var Vt=Ft-1;Vt>=0;Vt--){var Ht=M[Vt];if(r[Ht]&P){var Ut=r[Ht]&Et?C:S;Rt=Ut===et?et:Ut;break}}}if(Rt){if(r[M[Ft]]=r[M[It]]=Rt,Rt!==et){for(var Wt=Ft+1;Wt<M.length;Wt++)if(!(r[M[Wt]]&s)){d(e[M[Wt]])&te&&(r[M[Wt]]=Rt);break}}if(Rt!==et){for(var Gt=It+1;Gt<M.length;Gt++)if(!(r[M[Gt]]&s)){d(e[M[Gt]])&te&&(r[M[Gt]]=Rt);break}}}}for(var Kt=0;Kt<M.length;Kt++)if(r[M[Kt]]&o){for(var qt=Kt,Jt=Kt,Yt=Qe,Xt=Kt-1;Xt>=0;Xt--)if(r[M[Xt]]&s)qt=Xt;else{Yt=r[M[Xt]]&Et?C:S;break}for(var Zt=$e,Qt=Kt+1;Qt<M.length;Qt++)if(r[M[Qt]]&(o|s))Jt=Qt;else{Zt=r[M[Qt]]&Et?C:S;break}for(var $t=qt;$t<=Jt;$t++)r[M[$t]]=Yt===Zt?Yt:et;Kt=Jt}}}for(var en=g.start;en<=g.end;en++){var tn=p[en],nn=r[en];if(tn&1?nn&(S|w|D)&&p[en]++:nn&C?p[en]++:nn&(D|w)&&(p[en]+=2),nn&s&&(p[en]=en===0?g.level:p[en-1]),en===g.end||d(e[en])&(A|k))for(var rn=en;rn>=0&&d(e[rn])&c;rn--)p[rn]=g.level}}return{levels:p,paragraphs:h};function an(t,n){for(var a=t;a<e.length;a++){var o=r[a];if(o&(C|ne))return 1;if(o&(k|S)||n&&o===de)return 0;if(o&i){var s=on(a);a=s===-1?e.length:s}}return 0}function on(t){for(var n=1,a=t+1;a<e.length;a++){var o=r[a];if(o&k)break;if(o&de){if(--n===0)return a}else o&i&&n++}return-1}}var pe=`14>1,j>2,t>2,u>2,1a>g,2v3>1,1>1,1ge>1,1wd>1,b>1,1j>1,f>1,ai>3,-2>3,+1,8>1k0,-1jq>1y7,-1y6>1hf,-1he>1h6,-1h5>1ha,-1h8>1qi,-1pu>1,6>3u,-3s>7,6>1,1>1,f>1,1>1,+2,3>1,1>1,+13,4>1,1>1,6>1eo,-1ee>1,3>1mg,-1me>1mk,-1mj>1mi,-1mg>1mi,-1md>1,1>1,+2,1>10k,-103>1,1>1,4>1,5>1,1>1,+10,3>1,1>8,-7>8,+1,-6>7,+1,a>1,1>1,u>1,u6>1,1>1,+5,26>1,1>1,2>1,2>2,8>1,7>1,4>1,1>1,+5,b8>1,1>1,+3,1>3,-2>1,2>1,1>1,+2,c>1,3>1,1>1,+2,h>1,3>1,a>1,1>1,2>1,3>1,1>1,d>1,f>1,3>1,1a>1,1>1,6>1,7>1,13>1,k>1,1>1,+19,4>1,1>1,+2,2>1,1>1,+18,m>1,a>1,1>1,lk>1,1>1,4>1,2>1,f>1,3>1,1>1,+3,db>1,1>1,+3,3>1,1>1,+2,14qm>1,1>1,+1,6>1,4j>1,j>2,t>2,u>2,2>1,+1`,me;function he(){if(!me){var e=m(pe,!0),t=e.map;e.reverseMap.forEach(function(e,n){t.set(n,e)}),me=t}}function ge(e){return he(),me.get(e)||null}function _e(e,t,n,r){var i=e.length;n=Math.max(0,n==null?0:+n),r=Math.min(i-1,r==null?i-1:+r);for(var a=new Map,o=n;o<=r;o++)if(t[o]&1){var s=ge(e[o]);s!==null&&a.set(o,s)}return a}function ve(e,t,n,r){var i=e.length;n=Math.max(0,n==null?0:+n),r=Math.min(i-1,r==null?i-1:+r);var a=[];return t.paragraphs.forEach(function(i){var o=Math.max(n,i.start),s=Math.min(r,i.end);if(o<s){for(var l=t.levels.slice(o,s+1),u=s;u>=o&&d(e[u])&c;u--)l[u]=i.level;for(var f=i.level,p=1/0,m=0;m<l.length;m++){var h=l[m];h>f&&(f=h),h<p&&(p=h|1)}for(var g=f;g>=p;g--)for(var _=0;_<l.length;_++)if(l[_]>=g){for(var v=_;_+1<l.length&&l[_+1]>=g;)_++;_>v&&a.push([v+o,_+o])}}}),a}function ye(e,t,n,r){var i=be(e,t,n,r),a=[].concat(e);return i.forEach(function(n,r){a[r]=(t.levels[n]&1?ge(e[n]):null)||e[n]}),a.join(``)}function be(e,t,n,r){for(var i=ve(e,t,n,r),a=[],o=0;o<e.length;o++)a[o]=o;return i.forEach(function(e){for(var t=e[0],n=e[1],r=a.slice(t,n+1),i=r.length;i--;)a[n-i]=r[i]}),a}return e.closingToOpeningBracket=b,e.getBidiCharType=d,e.getBidiCharTypeName=f,e.getCanonicalBracket=x,e.getEmbeddingLevels=fe,e.getMirroredCharacter=ge,e.getMirroredCharactersMap=_e,e.getReorderSegments=ve,e.getReorderedIndices=be,e.getReorderedString=ye,e.openingToClosingBracket=y,Object.defineProperty(e,"__esModule",{value:!0}),e})({})}var o_=a_(),s_=/[\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]/,c_=new Set([`WS`,`FSI`,`LRI`,`RLI`,`PDI`]),l_=new Set([`S`,`B`]);function u_(e,t,n,r){let i=[],a=n;for(let o of Ig(e.slice(n,r)))i.push({index:a,text:o,level:t[a]}),a+=o.length;return i}function d_(e,t){let n=!0;for(let r=e.length-1;r>=0;r--){let i=o_.getBidiCharTypeName(e[r].text[0]);l_.has(i)?(e[r].level=t,n=!0):n&&c_.has(i)?e[r].level=t:n=!1}}function f_(e,t){let n=t,r=1/0;for(let{level:t}of e)t>n&&(n=t),(t|1)<r&&(r=t|1);let i=e.slice();for(let e=n;e>=r;e--)for(let t=0;t<i.length;t++){if(i[t].level<e)continue;let n=t;for(;n+1<i.length&&i[n+1].level>=e;)n++;for(let e=t,r=n;e<r;e++,r--)[i[e],i[r]]=[i[r],i[e]];t=n}return i}function p_(e){return e.level%2==0?e.text:o_.getMirroredCharacter(e.text)??e.text}function m_(e,t){return e.find(e=>t>=e.start&&t<=e.end)?.level??0}function h_(e,t,n,r,i){let a=u_(e,t,r,i);d_(a,n);let o=``,s=[];for(let e of f_(a,n)){if(s_.test(e.text))continue;let t=p_(e);o+=t,s.push(...Array(t.length).fill(e.index))}return{text:o,sourceIndices:s}}function g_(e,t){let n=t.filter(t=>t>0&&t<e.length),r=[...new Set([0,...n,e.length])].sort((e,t)=>e-t),i=[];for(let e=0;e+1<r.length;e++)i.push([r[e],r[e+1]]);return i}function __(e,t){let{levels:n,paragraphs:r}=o_.getEmbeddingLevels(e);return g_(e,t.concat(r.map(e=>e.start))).map(([t,i])=>h_(e,n,m_(r,t),t,i))}function v_(e,t){return __(e,t).map(e=>e.text)}function y_(e,t,n){return __(e,n).map(e=>[e.text,e.sourceIndices.map(e=>t[e]??0)])}var b_=4294967296,x_=typeof TextDecoder>`u`?null:new TextDecoder(`utf-8`),S_=class{constructor(e){this.buf=ArrayBuffer.isView(e)?e:new Uint8Array(e),this.dataView=new DataView(this.buf.buffer,this.buf.byteOffset,this.buf.byteLength),this.pos=0,this.type=0,this._valueStart=-1,this.length=this.buf.length}readFields(e,t,n=this.length){let r;for(;r=this.nextField(n);)e(r,t,this);return t}readMessage(e,t){return this.readFields(e,t,this.readVarint()+this.pos)}readFixed32(){let e=this.dataView.getUint32(this.pos,!0);return this.pos+=4,e}readSFixed32(){let e=this.dataView.getInt32(this.pos,!0);return this.pos+=4,e}readFixed64(){let e=this.dataView.getUint32(this.pos,!0)+this.dataView.getUint32(this.pos+4,!0)*b_;return this.pos+=8,e}readSFixed64(){let e=this.dataView.getUint32(this.pos,!0)+this.dataView.getInt32(this.pos+4,!0)*b_;return this.pos+=8,e}readFloat(){let e=this.dataView.getFloat32(this.pos,!0);return this.pos+=4,e}readDouble(){let e=this.dataView.getFloat64(this.pos,!0);return this.pos+=8,e}readVarint(e){let t=this.buf,n=t[this.pos++];if(n<128)return n;let r=n&127,i;return i=t[this.pos++],r|=(i&127)<<7,i<128||(i=t[this.pos++],r|=(i&127)<<14,i<128)||(i=t[this.pos++],r|=(i&127)<<21,i<128)?r:(i=t[this.pos],r|=(i&15)<<28,C_(r,e,this))}readSVarint(){let e=this.readVarint();return e%2==1?(e+1)/-2:e/2}readBoolean(){return!!this.readVarint()}readString(){let e=this.readVarint()+this.pos,t=this.pos;return this.pos=e,e-t>=12&&x_?x_.decode(this.buf.subarray(t,e)):T_(this.buf,t,e)}readBytes(){let e=this.readVarint()+this.pos,t=this.buf.subarray(this.pos,e);return this.pos=e,t}readPackedVarint(e=[],t){let n=this.readPackedEnd();for(;this.pos<n;)e.push(this.readVarint(t));return e}readPackedSVarint(e=[]){let t=this.readPackedEnd();for(;this.pos<t;)e.push(this.readSVarint());return e}readPackedBoolean(e=[]){let t=this.readPackedEnd();for(;this.pos<t;)e.push(this.readBoolean());return e}readPackedFloat(e=[]){let t=this.readPackedEnd();for(;this.pos<t;)e.push(this.readFloat());return e}readPackedDouble(e=[]){let t=this.readPackedEnd();for(;this.pos<t;)e.push(this.readDouble());return e}readPackedFixed32(e=[]){let t=this.readPackedEnd();for(;this.pos<t;)e.push(this.readFixed32());return e}readPackedSFixed32(e=[]){let t=this.readPackedEnd();for(;this.pos<t;)e.push(this.readSFixed32());return e}readPackedFixed64(e=[]){let t=this.readPackedEnd();for(;this.pos<t;)e.push(this.readFixed64());return e}readPackedSFixed64(e=[]){let t=this.readPackedEnd();for(;this.pos<t;)e.push(this.readSFixed64());return e}readPackedEnd(){return this.type===2?this.readVarint()+this.pos:this.pos+1}nextField(e=this.length){if(this.pos===this._valueStart&&this.skip(this.type),this.pos>=e)return 0;let t=this.readVarint();return this.type=t&7,this._valueStart=this.pos,t>>>3}skip(e){let t=e&7;if(t===0)for(;this.buf[this.pos++]>127;);else if(t===2)this.pos=this.readVarint()+this.pos;else if(t===5)this.pos+=4;else if(t===1)this.pos+=8;else throw Error(`Unimplemented type: ${t}`)}};function C_(e,t,n){let r=n.buf,i,a;if(a=r[n.pos++],i=(a&112)>>4,a<128||(a=r[n.pos++],i|=(a&127)<<3,a<128)||(a=r[n.pos++],i|=(a&127)<<10,a<128)||(a=r[n.pos++],i|=(a&127)<<17,a<128)||(a=r[n.pos++],i|=(a&127)<<24,a<128)||(a=r[n.pos++],i|=(a&1)<<31,a<128))return w_(e,i,t);throw Error(`Expected varint not more than 10 bytes`)}function w_(e,t,n){return n?t*4294967296+(e>>>0):(t>>>0)*4294967296+(e>>>0)}function T_(e,t,n){let r=``,i=t;for(;i<n;){let t=e[i],a=null,o=t>239?4:t>223?3:t>191?2:1;if(i+o>n)break;let s,c,l;o===1?t<128&&(a=t):o===2?(s=e[i+1],(s&192)==128&&(a=(t&31)<<6|s&63,a<=127&&(a=null))):o===3?(s=e[i+1],c=e[i+2],(s&192)==128&&(c&192)==128&&(a=(t&15)<<12|(s&63)<<6|c&63,(a<=2047||a>=55296&&a<=57343)&&(a=null))):o===4&&(s=e[i+1],c=e[i+2],l=e[i+3],(s&192)==128&&(c&192)==128&&(l&192)==128&&(a=(t&15)<<18|(s&63)<<12|(c&63)<<6|l&63,(a<=65535||a>=1114112)&&(a=null))),a===null?(a=65533,o=1):a>65535&&(a-=65536,r+=String.fromCharCode(a>>>10&1023|55296),a=56320|a&1023),r+=String.fromCharCode(a),i+=o}return r}function E_(e,t,n){e===1&&n.readMessage(D_,t)}function D_(e,t,n){if(e===3){let{id:e,bitmap:r,width:i,height:a,left:o,top:s,advance:c}=n.readMessage(O_,{});t.push({id:e,bitmap:new Of({width:i+6,height:a+6},r),metrics:{width:i,height:a,left:o,top:s,advance:c}})}}function O_(e,t,n){e===1?t.id=n.readVarint():e===2?t.bitmap=n.readBytes():e===3?t.width=n.readVarint():e===4?t.height=n.readVarint():e===5?t.left=n.readSVarint():e===6?t.top=n.readSVarint():e===7&&(t.advance=n.readVarint())}function k_(e){return new S_(e).readFields(E_,[])}function A_(e){return typeof e?.renderWithWebGL==`function`}function j_(e){let{userImage:t}=e;return!t?.render||!t.render()?!1:(A_(t.data)||e.data.replace(new Uint8Array(t.data.buffer)),!0)}function M_(e){let t=0,n=0;for(let r of e)t+=r.w*r.h,n=Math.max(n,r.w);e.sort((e,t)=>t.h-e.h);let r=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(t/.95)),n),h:1/0}],i=0,a=0;for(let t of e)for(let e=r.length-1;e>=0;e--){let n=r[e];if(!(t.w>n.w||t.h>n.h)){if(t.x=n.x,t.y=n.y,a=Math.max(a,t.y+t.h),i=Math.max(i,t.x+t.w),t.w===n.w&&t.h===n.h){let t=r.pop();t&&e<r.length&&(r[e]=t)}else t.h===n.h?(n.x+=t.w,n.w-=t.w):t.w===n.w?(n.y+=t.h,n.h-=t.h):(r.push({x:n.x+t.w,y:n.y,w:n.w-t.w,h:t.h}),n.y+=t.h,n.h-=t.h);break}}return{w:i,h:a,fill:t/(i*a)||0}}var N_=class{constructor(e,{pixelRatio:t,version:n,isWebGLImage:r=!1,stretchX:i,stretchY:a,content:o,textFitWidth:s,textFitHeight:c}){this.paddedRect=e,this.pixelRatio=t,this.stretchX=i,this.stretchY=a,this.content=o,this.version=n,this.needsFirstWebGLRender=r,this.textFitWidth=s,this.textFitHeight=c}get tl(){return[this.paddedRect.x+1,this.paddedRect.y+1]}get br(){return[this.paddedRect.x+this.paddedRect.w-1,this.paddedRect.y+this.paddedRect.h-1]}get tlbr(){return this.tl.concat(this.br)}get displaySize(){return[(this.paddedRect.w-2)/this.pixelRatio,(this.paddedRect.h-2)/this.pixelRatio]}},P_=class{constructor(e,t){let n={},r={};this.haveRenderCallbacks=[],this.patchedUpdateVersion=-1;let i=[];this.addImages(e,n,i),this.addImages(t,r,i);let{w:a,h:o}=M_(i),s=new kf({width:a||1,height:o||1});for(let t in e){let r=e[t];if(r.isWebGLImage)continue;let i=n[t].paddedRect;kf.copy(r.data,s,{x:0,y:0},{x:i.x+1,y:i.y+1},r.data)}for(let e in t){let n=t[e],i=r[e].paddedRect,a=i.x+1,o=i.y+1,c=n.data.width,l=n.data.height;kf.copy(n.data,s,{x:0,y:0},{x:a,y:o},n.data),kf.copy(n.data,s,{x:0,y:l-1},{x:a,y:o-1},{width:c,height:1}),kf.copy(n.data,s,{x:0,y:0},{x:a,y:o+l},{width:c,height:1}),kf.copy(n.data,s,{x:c-1,y:0},{x:a-1,y:o},{width:1,height:l}),kf.copy(n.data,s,{x:0,y:0},{x:a+c,y:o},{width:1,height:l})}this.image=s,this.iconPositions=n,this.patternPositions=r}addImages(e,t,n){for(let r in e){let i=e[r],a={x:0,y:0,w:i.data.width+2,h:i.data.height+2};n.push(a),t[r]=new N_(a,i),i.hasRenderCallback&&this.haveRenderCallbacks.push(r)}}patchUpdatedImages(e,t){if(e.dispatchRenderCallbacks(this.haveRenderCallbacks),this.patchedUpdateVersion!==e.updateVersion){this.patchedUpdateVersion=e.updateVersion;for(let n in this.iconPositions)this.patchUpdatedImage(this.iconPositions[n],e.getImage(n),t);for(let n in this.patternPositions)this.patchUpdatedImage(this.patternPositions[n],e.getImage(n),t)}}patchUpdatedImage(e,t,n){if(!e||!t||!e.needsFirstWebGLRender&&e.version===t.version)return;e.needsFirstWebGLRender=!1,e.version=t.version;let[r,i]=e.tl,a=t.userImage?.data;if(!A_(a)){n.update(t.data,void 0,{x:r,y:i});return}let{width:o,height:s}=t.data;n.context.setCustomLayerDefaults(),a.renderWithWebGL({gl:n.context.gl,texture:n.texture,x:r,y:i,width:o,height:s}),n.context.setDirty()}};K(`ImagePosition`,N_),K(`ImageAtlas`,P_);var F_=function(e){return e[e.none=0]=`none`,e[e.horizontal=1]=`horizontal`,e[e.vertical=2]=`vertical`,e[e.horizontalOnly=3]=`horizontalOnly`,e}(F_||{});function I_(e){for(let t of e)if(t.positionedGlyphs.length!==0)return!1;return!0}function L_(e,t){let n=[],r=0;for(let i of t)n.push(e.substring(r,i)),r=i;return r<e.length()&&n.push(e.substring(r,e.length())),n}var R_=/^\p{gc=M}$/u;function z_(e){let t=[],n=0;for(;n<e.length;){if(!R_.test(e[n])){t.push(n),n++;continue}let r=n;for(;r<e.length&&R_.test(e[r]);)r++;let i=e[r];if(i!==void 0&&Kg(i.codePointAt(0))){t.push(r);for(let e=r-1;e>=n;e--)t.push(e);n=r+1}else{for(let e=n;e<r;e++)t.push(e);n=r}}return t}function B_(e){let t=[],n=0;for(let r of e.graphemes())t.push(...Array(r.length).fill(e.sectionIndex[n])),n++;return t}function V_(e,t){let n=t.map(t=>e.toCodeUnitIndex(t)),r=Qh.isParsed()?Qh:null;if(e.sections.length===1)return r?r.processBidirectionalText(e.toString(),n).map(t=>W_(t,e.sections,[...t].map(()=>0))):v_(e.toString(),n).map(t=>H_([...t],e.sections,[...t].map(()=>0)));let i=B_(e);return r?r.processStyledBidirectionalText(e.text,i,n).map(([t,n])=>W_(t,e.sections,n)):y_(e.text,i,n).map(([t,n])=>{let r=[...t];return H_(r,e.sections,U_(r).map(e=>n[e]??0))})}function H_(e,t,n){let r=new i_(e.join(``),t,[]),i=0;for(let e of r.graphemes())r.sectionIndex.push(n[i]??0),i+=[...e].length;return r}function U_(e){let t=[],n=0;for(let r of e)t.push(n),n+=r.length;return t}function W_(e,t,n){let r=[...e],i=U_(r),a=z_(r);return H_(a.map(e=>r[e]),t,a.map(e=>n[i[e]]??0))}function G_(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m){let h=i_.fromFeature(e,i,d===2,t),g=h.determineLineBreaks(l,a,t,r,p),_=qg(h.text)?V_(h,g):L_(h,g),v=[],y={positionedLines:v,text:h.toString(),top:u[1],bottom:u[1],left:u[0],right:u[0],writingMode:d,iconsInText:!1,verticalizable:!1};return av(y,t,n,r,_,o,s,c,d,l,f,m),!I_(v)&&y}function K_(e){let t=.5,n=.5;switch(e){case`right`:case`top-right`:case`bottom-right`:t=1;break;case`left`:case`top-left`:case`bottom-left`:t=0}switch(e){case`bottom`:case`bottom-right`:case`bottom-left`:n=1;break;case`top`:case`top-right`:case`top-left`:n=0}return{horizontalAlign:t,verticalAlign:n}}function q_(e,t,n){let r=t.getMaxScale()*24,{maxImageWidth:i,maxImageHeight:a}=t.getMaxImageSize(e),o=Math.max(r,a*n);return{verticalLineContentWidth:Math.max(r,i*n),horizontalLineContentHeight:o}}function J_(e){switch(e){case`top`:return 0;case`center`:return .5;default:return 1}}function Y_(e,t){return e?.rect?e:t?{rect:null,metrics:t.metrics}:null}function X_(e,t,n){return!(e===1||!t&&!ig(n)||t&&(zg(n)||Gg(n)))}function Z_(e){return/\p{Nd}/u.test(String.fromCodePoint(e))}function Q_(e){return/\p{Lu}/u.test(String.fromCodePoint(e))}function $_(e){let t=e.some(Z_)&&e.every(e=>Z_(e)||Bg(e)),n=e.length<=3&&e.every(e=>Q_(e)||Z_(e));return t||n}function ev(e){return(Z_(e)||Q_(e))&&!Gg(e)}function tv(e,t){return t?X_(2,!0,e):!Wg(e)||ev(e)||Bg(e)}function nv(e,t,n){let r=!1;for(let i=0;i<e.length;i++){if(t[i])continue;let a=Jg[e[i]];if(a&&(i===0||t[i-1])&&(i===e.length-1||t[i+1])){if(t[i]=!0,n[i])continue;e[i]=a,r=!0}}return r}function rv(e,t,n){for(;t>=0&&t<e.length&&zg(e[t]);)t+=n;let r=[];for(;t>=0&&t<e.length&&!ig(e[t])&&!zg(e[t]);)r.push(e[t]),t+=n;return!$_(r)&&!r.every(Bg)&&r.some(Wg)}function iv(e,t){let n=e.graphemes().slice(),r=n.map(e=>e.codePointAt(0)),i=n.map((n,r)=>{let i=e.getSection(r);return`fontStack`in i&&!!t[i.fontStack]?.vertical?.[n]}),a=r.map(ig),o=t=>!a[t]&&!zg(r[t])&&!(`imageName`in e.getSection(t));for(let e=0;e<r.length;e++){if(!o(e))continue;let t=e;for(;t+1<r.length&&o(t+1);)t++;let n=r.slice(e,t+1),s=$_(n),c=n.every(Bg),l=c&&(rv(r,e-1,-1)||rv(r,t+1,1)),u=!s&&n.some(Wg);for(let n=e;n<=t;n++)a[n]=s&&ev(r[n])||i[n]&&!l&&(c||!u&&!Wg(r[n]));e=t}if(i.some((e,t)=>e&&!a[t])){let n=e.text;if(e.verticalizePunctuation(t,a),e.text!==n)return iv(e,t)}return nv(n,a,i)&&(e.text=n.join(``),e.cachedGraphemes=n),a}function av(e,t,n,r,i,a,o,s,c,l,u,d){let f=0,p=0,m=0,h=0,g=s===`right`?1:s===`left`?0:.5,_=24/d,v=0;for(let o of i){o.trim();let i=o.getMaxScale(),s={positionedGlyphs:[],lineOffset:0};e.positionedLines[v]=s;let d=s.positionedGlyphs,y=0;if(!o.length()){p+=a,++v;continue}let b=q_(r,o,_),x=c===2&&!u?iv(o,t):null,S=o.graphemes();for(let a=0;a<S.length;a++){let s=o.getSection(a),m=S[a],h=m.codePointAt(0),g=x?x[a]:X_(c,u,h),v=`fontStack`in s&&Rg(m)&&!t[s.fontStack]?.default?.[m]?[...m]:[m];for(let c of v){let u={glyph:c.codePointAt(0),grapheme:c,imageName:null,x:f,y:p+-17,vertical:g,scale:1,fontStack:``,sectionIndex:o.getSectionIndex(a),metrics:null,rect:null},m;if(`fontStack`in s){if(m=ov(s,c,g,b,t,n),!m)continue;u.fontStack=s.fontStack}else{if(e.iconsInText=!0,s.scale*=_,m=sv(s,g,i,b,r),!m)continue;y=Math.max(y,m.imageOffset),u.imageName=s.imageName}let{rect:h,metrics:v,baselineOffset:x}=m;if(u.y+=x,u.scale=s.scale,u.metrics=v,u.rect=h,d.push(u),!g)f+=v.advance*s.scale+l;else{e.verticalizable=!0;let t=`imageName`in s?v.advance:24;f+=t*s.scale+l}}}if(d.length!==0){let e=f-l;m=Math.max(e,m),cv(d,0,d.length-1,g)}f=0;let C=(i-1)*24;s.lineOffset=Math.max(y,C);let w=a*i+y;p+=w,h=Math.max(w,h),++v}let{horizontalAlign:y,verticalAlign:b}=K_(o);lv(e.positionedLines,g,y,b,m,h,a,p,i.length),e.top+=-b*p,e.bottom=e.top+p,e.left+=-y*m,e.right=e.left+m}function ov(e,t,n,r,i,a){let o=n&&i[e.fontStack]?.vertical?.[t]?`vertical`:`default`,s=a[e.fontStack]?.[o]?.[t],c=i[e.fontStack]?.[o]?.[t],l=Y_(s,c);if(l===null)return null;let u;if(n)u=r.verticalLineContentWidth-e.scale*24;else{let t=J_(e.verticalAlign);u=(r.horizontalLineContentHeight-e.scale*24)*t}return{rect:l.rect,metrics:l.metrics,baselineOffset:u}}function sv(e,t,n,r,i){let a=i[e.imageName];if(!a)return null;let o=a.paddedRect,s=a.displaySize,c={width:s[0],height:s[1],left:1,top:-3,advance:t?s[1]:s[0]},l;if(t)l=r.verticalLineContentWidth-s[1]*e.scale;else{let t=J_(e.verticalAlign);l=(r.horizontalLineContentHeight-s[1]*e.scale)*t}let u=(t?s[0]:s[1])*e.scale-24*n;return{rect:o,metrics:c,baselineOffset:l,imageOffset:u}}function cv(e,t,n,r){if(r===0)return;let i=e[n],a=i.metrics.advance*i.scale,o=(e[n].x+a)*r;for(let r=t;r<=n;r++)e[r].x-=o}function lv(e,t,n,r,i,a,o,s,c){let l=(t-n)*i,u=0;u=a===o?-r*c*o+.5*o:-s*r- -17;for(let t of e)for(let e of t.positionedGlyphs)e.x+=l,e.y+=u}function uv(e,t,n){let{horizontalAlign:r,verticalAlign:i}=K_(n),a=t[0],o=t[1],s=a-e.displaySize[0]*r,c=s+e.displaySize[0],l=o-e.displaySize[1]*i;return{image:e,top:l,bottom:l+e.displaySize[1],left:s,right:c}}function dv(e){let t=e.left,n=e.top,r=e.right-t,i=e.bottom-n,a=e.image.content[2]-e.image.content[0],o=e.image.content[3]-e.image.content[1],s=e.image.textFitWidth??`stretchOrShrink`,c=e.image.textFitHeight??`stretchOrShrink`,l=a/o;if(c===`proportional`){if(s===`stretchOnly`&&r/i<l||s===`proportional`){let e=Math.ceil(i*l);t*=e/r,r=e}}else if(s===`proportional`&&c===`stretchOnly`&&l!==0&&r/i>l){let e=Math.ceil(r/l);n*=e/i,i=e}return{x1:t,y1:n,x2:t+r,y2:n+i}}function fv(e,t,n,r,i,a){let o=e.image,s;if(o.content){let e=o.content,t=o.pixelRatio||1;s=[e[0]/t,e[1]/t,o.displaySize[0]-e[2]/t,o.displaySize[1]-e[3]/t]}let c=t.left*a,l=t.right*a,u,d,f,p;n===`width`||n===`both`?(p=i[0]+c-r[3],d=i[0]+l+r[1]):(p=i[0]+(c+l-o.displaySize[0])/2,d=p+o.displaySize[0]);let m=t.top*a,h=t.bottom*a;return n===`height`||n===`both`?(u=i[1]+m-r[0],f=i[1]+h+r[2]):(u=i[1]+(m+h-o.displaySize[1])/2,f=u+o.displaySize[1]),{image:o,top:u,right:d,bottom:f,left:p,collisionPadding:s}}var pv=32640;function mv(e,t){let{expression:n}=t;if(n.kind===`constant`)return{kind:`constant`,layoutSize:n.evaluate(new yl(e+1))};if(n.kind===`source`)return{kind:`source`};if(n.kind===`composite`){let{minZoom:t,maxZoom:r}=hv(n.zoomStops,e);return{kind:`composite`,minZoom:t,maxZoom:r,interpolationType:n.interpolationType}}{let t=gv(n),r=n.evaluate(new yl(e+1));return{kind:`camera`,zoomStops:n.zoomStops,sizes:t,layoutSize:r,interpolationType:n.interpolationType}}}function hv(e,t){let n=0;for(;n<e.length&&e[n]<=t;)n++;n=Math.max(0,n-1);let r=n;for(;r<e.length&&e[r]<t+1;)r++;return r=Math.min(e.length-1,r),{minZoom:e[n],maxZoom:e[r]}}function gv(e){return e.zoomStops.map(t=>e.evaluate(new yl(t===-1/0?e.zoomStops[1]-1:t)))}function _v(e,{uSize:t,uSizeT:n},{lowerSize:r,upperSize:i}){return e.kind===`source`?r/128:e.kind===`composite`?Ki.number(r/128,i/128,n):t}function vv(e,t){let n=0,r=0;return e.kind===`constant`?r=e.layoutSize:e.kind===`camera`?r=yv(e,t):e.kind===`composite`&&(n=bv(e,t)),{uSizeT:n,uSize:r}}function yv({zoomStops:e,sizes:t,layoutSize:n,interpolationType:r},i){let a=e.length-1;for(;a>0&&e[a]>i;)a--;let o=Math.min(a+1,e.length-1),s=r?P(Wi.interpolationFactor(r,i,e[a],e[o]),0,1):0;return Math.min(Ki.number(t[a],t[o],s),n)}function bv({interpolationType:e,minZoom:t,maxZoom:n},r){return e?P(Wi.interpolationFactor(e,r,t,n),0,1):0}var xv=class e extends f{constructor(e,t,n,r){super(e,t),this.angle=n,r!==void 0&&(this.segment=r)}clone(){return new e(this.x,this.y,this.angle,this.segment)}};K(`Anchor`,xv);function Sv(e,t,n,r,i){if(t.segment===void 0||n===0)return!0;let a=t,o=t.segment+1,s=0;for(;s>-n/2;){if(o--,o<0)return!1;s-=e[o].dist(a),a=e[o]}s+=e[o].dist(e[o+1]),o++;let c=[],l=0;for(;s<n/2;){let t=e[o-1],n=e[o],a=e[o+1];if(!a)return!1;let u=t.angleTo(n)-n.angleTo(a);for(u=Math.abs((u+3*Math.PI)%(Math.PI*2)-Math.PI),c.push({distance:s,angleDelta:u}),l+=u;s-c[0].distance>r;)l-=c.shift().angleDelta;if(l>i)return!1;o++,s+=n.dist(a)}return!0}function Cv(e){let t=0;for(let n=0;n<e.length-1;n++)t+=e[n].dist(e[n+1]);return t}function wv(e,t,n){return e?3/5*t*n:0}function Tv(e,t){return Math.max(e?e.right-e.left:0,t?t.right-t.left:0)}function Ev(e,t,n,r,i,a){let o=wv(n,i,a),s=Tv(n,r)*a,c=0,l=Cv(e)/2;for(let n=0;n<e.length-1;n++){let r=e[n],i=e[n+1],a=r.dist(i);if(c+a>l){let u=(l-c)/a,d=new xv(Ki.number(r.x,i.x,u),Ki.number(r.y,i.y,u),i.angleTo(r),n);return d._round(),!o||Sv(e,d,s,o,t)?d:void 0}c+=a}}function Dv(e,t,n,r,i,a,o,s,c){let l=wv(r,a,o),u=Tv(r,i),d=u*o,f=e[0].x===0||e[0].x===c||e[0].y===0||e[0].y===c;t-d<t/4&&(t=d+t/4);let p=a*2;return Ov(e,f?t/2*s%t:(u/2+p)*o*s%t,t,l,n,d,f,!1,c)}function Ov(e,t,n,r,i,a,o,s,c){let l=a/2,u=Cv(e),d=0,f=t-n,p=[];for(let t=0;t<e.length-1;t++){let o=e[t],s=e[t+1],m=o.dist(s),h=s.angleTo(o);for(;f+n<d+m;){f+=n;let g=(f-d)/m,_=Ki.number(o.x,s.x,g),v=Ki.number(o.y,s.y,g);if(_>=0&&_<c&&v>=0&&v<c&&f-l>=0&&f+l<=u){let n=new xv(_,v,h,t);n._round(),(!r||Sv(e,n,a,r,i))&&p.push(n)}}d+=m}return s||p.length||o||(p=Ov(e,d/2,n,r,i,a,o,!0,c)),p}function kv(e,t,n,r,i){let a=[];for(let o of e){let e;for(let s=0;s<o.length-1;s++){let c=o[s],l=o[s+1];c.x<t&&l.x<t||(c.x<t?c=new f(t,c.y+(l.y-c.y)*((t-c.x)/(l.x-c.x)))._round():l.x<t&&(l=new f(t,c.y+(l.y-c.y)*((t-c.x)/(l.x-c.x)))._round()),!(c.y<n&&l.y<n)&&(c.y<n?c=new f(c.x+(l.x-c.x)*((n-c.y)/(l.y-c.y)),n)._round():l.y<n&&(l=new f(c.x+(l.x-c.x)*((n-c.y)/(l.y-c.y)),n)._round()),!(c.x>=r&&l.x>=r)&&(c.x>=r?c=new f(r,c.y+(l.y-c.y)*((r-c.x)/(l.x-c.x)))._round():l.x>=r&&(l=new f(r,c.y+(l.y-c.y)*((r-c.x)/(l.x-c.x)))._round()),!(c.y>=i&&l.y>=i)&&(c.y>=i?c=new f(c.x+(l.x-c.x)*((i-c.y)/(l.y-c.y)),i)._round():l.y>=i&&(l=new f(c.x+(l.x-c.x)*((i-c.y)/(l.y-c.y)),i)._round()),e&&c.equals(e[e.length-1])||(e=[c],a.push(e)),e.push(l)))))}}return a}function Av(e,t,n,r){let i=[],a=e.image,o=a.pixelRatio,s=a.paddedRect.w-2,c=a.paddedRect.h-2,l={x1:e.left,y1:e.top,x2:e.right,y2:e.bottom},u=a.stretchX||[[0,s]],d=a.stretchY||[[0,c]],p=(e,t)=>e+t[1]-t[0],m=u.reduce(p,0),h=d.reduce(p,0),g=s-m,_=c-h,v=0,y=m,b=0,x=h,S=0,C=g,w=0,T=_;if(a.content&&r){let t=a.content,n=t[2]-t[0],r=t[3]-t[1];(a.textFitWidth||a.textFitHeight)&&(l=dv(e)),v=jv(u,0,t[0]),b=jv(d,0,t[1]),y=jv(u,t[0],t[2]),x=jv(d,t[1],t[3]),S=t[0]-v,w=t[1]-b,C=n-y,T=r-x}let E=l.x1,D=l.y1,O=l.x2-E,k=l.y2-D,A=(e,r,i,s)=>{let c=Nv(e.stretch-v,y,O,E),l=Pv(e.fixed-S,C,e.stretch,m),u=Nv(r.stretch-b,x,k,D),d=Pv(r.fixed-w,T,r.stretch,h),p=Nv(i.stretch-v,y,O,E),g=Pv(i.fixed-S,C,i.stretch,m),_=Nv(s.stretch-b,x,k,D),A=Pv(s.fixed-w,T,s.stretch,h),j=new f(c,u),ee=new f(p,u),te=new f(p,_),ne=new f(c,_),re=new f(l/o,d/o),ie=new f(g/o,A/o),ae=t*Math.PI/180;if(ae){let e=Math.sin(ae),t=Math.cos(ae),n=[t,-e,e,t];j._matMult(n),ee._matMult(n),ne._matMult(n),te._matMult(n)}let oe=e.stretch+e.fixed,se=i.stretch+i.fixed,ce=r.stretch+r.fixed,le=s.stretch+s.fixed;return{tl:j,tr:ee,bl:ne,br:te,tex:{x:a.paddedRect.x+1+oe,y:a.paddedRect.y+1+ce,w:se-oe,h:le-ce},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:re,pixelOffsetBR:ie,minFontScaleX:C/o/O,minFontScaleY:T/o/k,isSDF:n}};if(!r||!a.stretchX&&!a.stretchY)i.push(A({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:s+1},{fixed:0,stretch:c+1}));else{let e=Mv(u,g,m),t=Mv(d,_,h);for(let n=0;n<e.length-1;n++){let r=e[n],a=e[n+1];for(let e=0;e<t.length-1;e++){let n=t[e],o=t[e+1];i.push(A(r,n,a,o))}}}return i}function jv(e,t,n){let r=0;for(let i of e)r+=Math.max(t,Math.min(n,i[1]))-Math.max(t,Math.min(n,i[0]));return r}function Mv(e,t,n){let r=[{fixed:-1,stretch:0}];for(let[t,n]of e){let e=r[r.length-1];r.push({fixed:t-e.stretch,stretch:e.stretch}),r.push({fixed:t-e.stretch,stretch:e.stretch+(n-t)})}return r.push({fixed:t+1,stretch:n}),r}function Nv(e,t,n,r){return e/t*n+r}function Pv(e,t,n,r){return e-t*n/r}function Fv(e,t,n,r,i,a,o,s){let c=r.layout.get(`text-rotate`).evaluate(a,{})*Math.PI/180,l=[];for(let e of t.positionedLines)for(let r of e.positionedGlyphs){if(!r.rect)continue;let a=r.rect||{},u=4,d=!0,p=1,m=0,h=(i||s)&&r.vertical,g=r.metrics.advance*r.scale/2;if(s&&t.verticalizable){let t=(r.scale-1)*24,n=(24-r.metrics.width*r.scale)/2;m=e.lineOffset/2-(r.imageName?-n:t)}if(r.imageName){let e=o[r.imageName];d=e.sdf,p=e.pixelRatio,u=1/p}let _=i?[r.x+g,r.y]:[0,0],v=i?[0,0]:[r.x+g+n[0],r.y+n[1]-m],y=[0,0];h&&(y=v,v=[0,0]);let b=r.metrics.isDoubleResolution?2:1,x=(r.metrics.left-u)*r.scale-g+v[0],S=(-r.metrics.top-u)*r.scale+v[1],C=x+a.w/b*r.scale/p,w=S+a.h/b*r.scale/p,T=new f(x,S),E=new f(C,S),D=new f(x,w),O=new f(C,w);if(h){let e=new f(-g,g- -17),t=-Math.PI/2,n=12-g,i=r.imageName?n:0,a=new f(22-n,-i),o=new f(...y);T._rotateAround(t,e)._add(a)._add(o),E._rotateAround(t,e)._add(a)._add(o),D._rotateAround(t,e)._add(a)._add(o),O._rotateAround(t,e)._add(a)._add(o)}if(c){let e=Math.sin(c),t=Math.cos(c),n=[t,-e,e,t];T._matMult(n),E._matMult(n),D._matMult(n),O._matMult(n)}let k=new f(0,0),A=new f(0,0);l.push({tl:T,tr:E,bl:D,br:O,tex:a,writingMode:t.writingMode,glyphOffset:_,sectionIndex:r.sectionIndex,isSDF:d,pixelOffsetTL:k,pixelOffsetBR:A,minFontScaleX:0,minFontScaleY:0})}return l}var Iv=class{constructor(e,t,n,r,i,a,o,s,c,l){if(this.boxStartIndex=e.length,c){let e=a.top,t=a.bottom,n=a.collisionPadding;n&&(e-=n[1],t+=n[3]);let r=t-e;r>0&&(r=Math.max(10,r),this.circleDiameter=r)}else{let c=a.image?.content&&(a.image.textFitWidth||a.image.textFitHeight)?dv(a):{x1:a.left,y1:a.top,x2:a.right,y2:a.bottom};c.y1=c.y1*o-s[0],c.y2=c.y2*o+s[2],c.x1=c.x1*o-s[3],c.x2=c.x2*o+s[1];let u=a.collisionPadding;if(u&&(c.x1-=u[0]*o,c.y1-=u[1]*o,c.x2+=u[2]*o,c.y2+=u[3]*o),l){let e=new f(c.x1,c.y1),t=new f(c.x2,c.y1),n=new f(c.x1,c.y2),r=new f(c.x2,c.y2),i=l*Math.PI/180;e._rotate(i),t._rotate(i),n._rotate(i),r._rotate(i),c.x1=Math.min(e.x,t.x,n.x,r.x),c.x2=Math.max(e.x,t.x,n.x,r.x),c.y1=Math.min(e.y,t.y,n.y,r.y),c.y2=Math.max(e.y,t.y,n.y,r.y)}e.emplaceBack(t.x,t.y,c.x1,c.y1,c.x2,c.y2,n,r,i)}this.boxEndIndex=e.length}},Lv=class{constructor(e=[],t=(e,t)=>e<t?-1:+(e>t)){if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let e=(this.length>>1)-1;e>=0;e--)this._down(e)}push(e){this.data.push(e),this._up(this.length++)}pop(){if(this.length===0)return;let e=this.data[0],t=this.data.pop();return--this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){let{data:t,compare:n}=this,r=t[e];for(;e>0;){let i=e-1>>1,a=t[i];if(n(r,a)>=0)break;t[e]=a,e=i}t[e]=r}_down(e){let{data:t,compare:n}=this,r=this.length>>1,i=t[e];for(;e<r;){let r=(e<<1)+1,a=r+1;if(a<this.length&&n(t[a],t[r])<0&&(r=a),n(t[r],i)>=0)break;t[e]=t[r],e=r}t[e]=i}};function Rv(e,t=1){let n=Pd.fromPoints(e[0]),r=Math.min(n.width(),n.height()),i=r/2,a=new Lv([],zv),{minX:o,minY:s,maxX:c,maxY:l}=n;if(r===0)return new f(o,s);for(let t=o;t<c;t+=r)for(let n=s;n<l;n+=r)a.push(new Bv(t+i,n+i,i,e));let u=Hv(e),d=u;for(;a.length;){let n=a.pop();(n.d>d.d||!d.d)&&(d=n),!(n.max-d.d<=t)&&(i=n.h/2,a.push(new Bv(n.p.x-i,n.p.y-i,i,e)),a.push(new Bv(n.p.x+i,n.p.y-i,i,e)),a.push(new Bv(n.p.x-i,n.p.y+i,i,e)),a.push(new Bv(n.p.x+i,n.p.y+i,i,e)))}return u.d>0&&d.d-u.d<=t?u.p:d.p}function zv(e,t){return t.max-e.max}var Bv=class{constructor(e,t,n,r){this.p=new f(e,t),this.h=n,this.d=Vv(this.p,r),this.max=this.d+this.h*Math.SQRT2}};function Vv(e,t){let n=!1,r=1/0;for(let i of t)for(let t=0,a=i.length,o=a-1;t<a;o=t++){let a=i[t],s=i[o];a.y>e.y!=s.y>e.y&&e.x<(s.x-a.x)*(e.y-a.y)/(s.y-a.y)+a.x&&(n=!n),r=Math.min(r,Xd(e,a,s))}return(n?1:-1)*Math.sqrt(r)}function Hv(e){let t=0,n=0,r=0,i=e[0];for(let e=0,a=i.length,o=a-1;e<a;o=e++){let a=i[e],s=i[o],c=a.x*s.y-s.x*a.y;n+=(a.x+s.x)*c,r+=(a.y+s.y)*c,t+=c*3}return new Bv(n/t,r/t,0,e)}var Uv=function(e){return e[e.center=1]=`center`,e[e.left=2]=`left`,e[e.right=3]=`right`,e[e.top=4]=`top`,e[e.bottom=5]=`bottom`,e[e[`top-left`]=6]=`top-left`,e[e[`top-right`]=7]=`top-right`,e[e[`bottom-left`]=8]=`bottom-left`,e[e[`bottom-right`]=9]=`bottom-right`,e}({}),Wv=1/0;function Gv(e,t){function n(e,t){let n=0,r=0;t<0&&(t=0);let i=t/Math.SQRT2;switch(e){case`top-right`:case`top-left`:r=i-7;break;case`bottom-right`:case`bottom-left`:r=-i+7;break;case`bottom`:r=-t+7;break;case`top`:r=t-7}switch(e){case`top-right`:case`bottom-right`:n=-i;break;case`top-left`:case`bottom-left`:n=i;break;case`left`:n=t;break;case`right`:n=-t}return[n,r]}function r(e,t,n){let r=0,i=0;switch(t=Math.abs(t),n=Math.abs(n),e){case`top-right`:case`top-left`:case`top`:i=n-7;break;case`bottom-right`:case`bottom-left`:case`bottom`:i=-n+7}switch(e){case`top-right`:case`bottom-right`:case`right`:r=-t;break;case`top-left`:case`bottom-left`:case`left`:r=t}return[r,i]}return t[1]===Wv?n(e,t[0]):r(e,t[0],t[1])}function Kv(e,t,n){let r=e.layout,i=r.get(`text-variable-anchor-offset`)?.evaluate(t,{},n);if(i){let e=i.values,t=[];for(let n=0;n<e.length;n+=2){let r=t[n]=e[n],i=e[n+1].map(e=>e*24);r.startsWith(`top`)?i[1]-=7:r.startsWith(`bottom`)&&(i[1]+=7),t[n+1]=i}return new Ai(t)}let a=r.get(`text-variable-anchor`);if(a){let i;i=e._unevaluatedLayout.getValue(`text-radial-offset`)===void 0?r.get(`text-offset`).evaluate(t,{},n).map(e=>e*24):[r.get(`text-radial-offset`).evaluate(t,{},n)*24,Wv];let o=[];for(let e of a)o.push(e,Gv(e,i));return new Ai(o)}return null}function qv(e){e.bucket.createArrays();let t=512*e.bucket.overscaling;e.bucket.tilePixelRatio=N/t,e.bucket.compareText={},e.bucket.iconsNeedLinear=!1;let n=e.bucket.layers[0],r=n.layout,i=n._unevaluatedLayout._values,a={layoutIconSize:i[`icon-size`].possiblyEvaluate(new yl(e.bucket.zoom+1),e.canonical),layoutTextSize:i[`text-size`].possiblyEvaluate(new yl(e.bucket.zoom+1),e.canonical),textMaxSize:i[`text-size`].possiblyEvaluate(new yl(18))};if(e.bucket.textSizeData.kind===`composite`){let{minZoom:t,maxZoom:n}=e.bucket.textSizeData;a.compositeTextSizes=[i[`text-size`].possiblyEvaluate(new yl(t),e.canonical),i[`text-size`].possiblyEvaluate(new yl(n),e.canonical)]}if(e.bucket.iconSizeData.kind===`composite`){let{minZoom:t,maxZoom:n}=e.bucket.iconSizeData;a.compositeIconSizes=[i[`icon-size`].possiblyEvaluate(new yl(t),e.canonical),i[`icon-size`].possiblyEvaluate(new yl(n),e.canonical)]}let o=r.get(`text-line-height`)*24,s=r.get(`text-rotation-alignment`)!==`viewport`&&r.get(`symbol-placement`)!==`point`,c=r.get(`text-keep-upright`),l=r.get(`text-size`);for(let t of e.bucket.features){let i=r.get(`text-font`).evaluate(t,{},e.canonical).join(`,`),u=l.evaluate(t,{},e.canonical),d=a.layoutTextSize.evaluate(t,{},e.canonical),f=a.layoutIconSize.evaluate(t,{},e.canonical),p={horizontal:{},vertical:void 0},m=t.text,h=[0,0];if(m){let a=m.toString(),l=r.get(`text-letter-spacing`).evaluate(t,{},e.canonical)*24,f=Hg(a)?l:0,g=r.get(`text-anchor`).evaluate(t,{},e.canonical),_=Kv(n,t,e.canonical);if(!_){let n=r.get(`text-radial-offset`).evaluate(t,{},e.canonical);h=n?Gv(g,[n*24,Wv]):r.get(`text-offset`).evaluate(t,{},e.canonical).map(e=>e*24)}let v=s?`center`:r.get(`text-justify`).evaluate(t,{},e.canonical),y=r.get(`symbol-placement`)===`point`?r.get(`text-max-width`).evaluate(t,{},e.canonical)*24:1/0,b=()=>{e.bucket.allowVerticalPlacement&&Vg(a)&&(p.vertical=G_(m,e.glyphMap,e.glyphPositions,e.imagePositions,i,y,o,g,`left`,f,h,2,!0,d,u))};if(!s&&_){let t=new Set;if(v===`auto`)for(let e=0;e<_.values.length;e+=2)t.add(Jv(_.values[e]));else t.add(v);let n=!1;for(let r of t)if(!p.horizontal[r]){if(n)p.horizontal[r]=p.horizontal[0];else{let t=G_(m,e.glyphMap,e.glyphPositions,e.imagePositions,i,y,o,`center`,r,f,h,1,!1,d,u);t&&(p.horizontal[r]=t,n=t.positionedLines.length===1)}}b()}else{v===`auto`&&(v=Jv(g));let t=G_(m,e.glyphMap,e.glyphPositions,e.imagePositions,i,y,o,g,v,f,h,1,!1,d,u);t&&(p.horizontal[v]=t),b(),Vg(a)&&s&&c&&(p.vertical=G_(m,e.glyphMap,e.glyphPositions,e.imagePositions,i,y,o,g,v,f,h,2,!1,d,u))}}let g,_=!1;if(t.icon?.name){let n=e.imageMap[t.icon.name];n&&(g=uv(e.imagePositions[t.icon.name],r.get(`icon-offset`).evaluate(t,{},e.canonical),r.get(`icon-anchor`).evaluate(t,{},e.canonical)),_=!!n.sdf,e.bucket.sdfIcons===void 0?e.bucket.sdfIcons=_:e.bucket.sdfIcons!==_&&I(`Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer`),n.pixelRatio===e.bucket.pixelRatio?r.get(`icon-rotate`).constantOr(1)!==0&&(e.bucket.iconsNeedLinear=!0):e.bucket.iconsNeedLinear=!0)}let v=Qv(p.horizontal)||p.vertical;e.bucket.iconsInText||=v?v.iconsInText:!1,(v||g)&&Yv(e.bucket,t,p,g,e.imageMap,a,d,f,h,_,e.canonical,e.subdivisionGranularity,e.hasPromoteId)}e.showCollisionBoxes&&e.bucket.generateCollisionDebugBuffers()}function Jv(e){switch(e){case`right`:case`top-right`:case`bottom-right`:return`right`;case`left`:case`top-left`:case`bottom-left`:return`left`}return`center`}function Yv(e,t,n,r,i,a,o,s,c,l,u,d,f){let p=a.textMaxSize.evaluate(t,{});p===void 0&&(p=o);let m=e.layers[0].layout,h=m.get(`icon-offset`).evaluate(t,{},u),g=Qv(n.horizontal),_=o/24,v=e.tilePixelRatio*_,y=e.tilePixelRatio*p/24,b=e.tilePixelRatio*s,x=e.tilePixelRatio*m.get(`symbol-spacing`),S=m.get(`text-padding`)*e.tilePixelRatio,C=by(m,t,u,e.tilePixelRatio),w=m.get(`text-max-angle`)/180*Math.PI,T=m.get(`text-rotation-alignment`)!==`viewport`&&m.get(`symbol-placement`)!==`point`,E=m.get(`icon-rotation-alignment`).constantOr(`viewport`)===`map`&&m.get(`symbol-placement`)!==`point`,D=m.get(`symbol-placement`),O=x/2,k=m.get(`icon-text-fit`),A;r&&k!==`none`&&(e.allowVerticalPlacement&&n.vertical&&(A=fv(r,n.vertical,k,m.get(`icon-text-fit-padding`),h,_)),g&&(r=fv(r,g,k,m.get(`icon-text-fit-padding`),h,_)));let j=u?d.line.getGranularityForZoomLevel(u.z):1,ee=(s,d)=>{Rd(d)||$v(e,d,s,n,r,i,A,e.layers[0],e.collisionBoxArray,t.index,t.sourceLayerIndex,e.index,v,[S,S,S,S],T,c,b,C,E,h,t,a,l,u,o,f)};if(D===`line`)for(let i of kv(t.geometry,0,0,N,N)){let t=em(i,j),a=Dv(t,x,w,n.vertical||g,r,24,y,e.overscaling,N);for(let n of a){let r=g;r&&ey(e,r.text,O,n)||ee(t,n)}}else if(D===`line-center`){for(let e of t.geometry)if(e.length>1){let t=em(e,j),i=Ev(t,w,n.vertical||g,r,24,y);i&&ee(t,i)}}else if(t.type===`Polygon`)for(let e of Zi(t.geometry,0)){let t=Rv(e,16);ee(em(e[0],j,!0),new xv(t.x,t.y,0))}else if(t.type===`LineString`)for(let e of t.geometry){let t=em(e,j);ee(t,new xv(t[0].x,t[0].y,0))}else if(t.type===`Point`)for(let e of t.geometry)for(let t of e)ee([t],new xv(t.x,t.y,0))}function Xv(e,t){let n=e.length,r=t?.values;if(r?.length>0)for(let t=0;t<r.length;t+=2){let n=Uv[r[t]],i=r[t+1];e.emplaceBack(n,i[0],i[1])}return[n,e.length]}function Zv(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h){let g=Fv(t,n,s,i,a,o,r,e.allowVerticalPlacement),_=e.textSizeData,v=null;_.kind===`source`?(v=[128*i.layout.get(`text-size`).evaluate(o,{})],v[0]>32640&&I(`${e.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)):_.kind===`composite`&&(v=[128*m.compositeTextSizes[0].evaluate(o,{},h),128*m.compositeTextSizes[1].evaluate(o,{},h)],(v[0]>32640||v[1]>32640)&&I(`${e.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)),e.addSymbols(e.text,g,v,s,a,o,u,t,l.lineStartIndex,l.lineLength,p,h,c);for(let t of d)f[t]=e.text.placedSymbolArray.length-1;return g.length*4}function Qv(e){for(let t in e)return e[t];return null}function $v(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x,S,C,w,T){let E=e.addToLineVertexArray(t,n),D=s.layout.get(`symbol-height-offset`).evaluate(b,{},C);D>e.maxHeightOffset&&(e.maxHeightOffset=D);let O,k,A,j,ee=0,te=0,ne=0,re=0,ie=-1,ae=-1,oe={},se=(0,id.default)(``);if(e.allowVerticalPlacement&&r.vertical){let e=s.layout.get(`text-rotate`).evaluate(b,{},C)+90,n=r.vertical;A=new Iv(c,t,l,u,d,n,f,p,m,e),o&&(j=new Iv(c,t,l,u,d,o,g,_,m,e))}if(i){let n=s.layout.get(`icon-rotate`).evaluate(b,{}),r=s.layout.get(`icon-text-fit`)!==`none`,a=Av(i,n,S,r),f=o?Av(o,n,S,r):void 0;k=new Iv(c,t,l,u,d,i,g,_,!1,n),ee=a.length*4;let p=e.iconSizeData,m=null;p.kind===`source`?(m=[128*s.layout.get(`icon-size`).evaluate(b,{})],m[0]>32640&&I(`${e.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)):p.kind===`composite`&&(m=[128*x.compositeIconSizes[0].evaluate(b,{},C),128*x.compositeIconSizes[1].evaluate(b,{},C)],(m[0]>32640||m[1]>32640)&&I(`${e.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)),e.addSymbols(e.icon,a,m,y,v,b,0,t,E.lineStartIndex,E.lineLength,-1,C,D),ie=e.icon.placedSymbolArray.length-1,f&&(te=f.length*4,e.addSymbols(e.icon,f,m,y,v,b,2,t,E.lineStartIndex,E.lineLength,-1,C,D),ae=e.icon.placedSymbolArray.length-1)}let ce=Object.keys(r.horizontal);for(let n of ce){let i=r.horizontal[n];O||=(se=(0,id.default)(i.text),new Iv(c,t,l,u,d,i,f,p,m,s.layout.get(`text-rotate`).evaluate(b,{},C)));let o=i.positionedLines.length===1;if(ne+=Zv(e,t,i,a,s,m,b,h,D,E,r.vertical?1:3,o?ce:[n],oe,ie,x,C),o)break}r.vertical&&(re+=Zv(e,t,r.vertical,a,s,m,b,h,D,E,2,[`vertical`],oe,ae,x,C));let le=O?O.boxStartIndex:e.collisionBoxArray.length,ue=O?O.boxEndIndex:e.collisionBoxArray.length,de=A?A.boxStartIndex:e.collisionBoxArray.length,fe=A?A.boxEndIndex:e.collisionBoxArray.length,pe=k?k.boxStartIndex:e.collisionBoxArray.length,me=k?k.boxEndIndex:e.collisionBoxArray.length,he=j?j.boxStartIndex:e.collisionBoxArray.length,ge=j?j.boxEndIndex:e.collisionBoxArray.length,_e=-1,ve=(e,t)=>e?.circleDiameter?Math.max(e.circleDiameter,t):t;_e=ve(O,_e),_e=ve(A,_e),_e=ve(k,_e),_e=ve(j,_e);let ye=+(_e>-1);ye&&(_e*=w/24),e.glyphOffsetArray.length>=e.maxGlyphs&&I(`Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907`),b.sortKey!==void 0&&e.addToSortKeyRanges(e.symbolInstances.length,b.sortKey);let be=Kv(s,b,C),[xe,Se]=Xv(e.textAnchorOffsets,be);T&&(se=ty(se,b)),e.symbolInstances.emplaceBack(t.x,t.y,oe.right>=0?oe.right:-1,oe.center>=0?oe.center:-1,oe.left>=0?oe.left:-1,oe.vertical||-1,ie,ae,se,le,ue,de,fe,pe,me,he,ge,l,ne,re,ee,te,ye,0,f,_e,xe,Se,D)}function ey(e,t,n,r){let i=e.compareText;if(!(t in i))i[t]=[];else{let e=i[t];for(let t=e.length-1;t>=0;t--)if(r.dist(e[t])<n)return!0}return i[t].push(r),!1}function ty(e,t){return t.id==null||t.properties?.cluster?e:(0,id.default)(String(t.id),e)}function ny(e,t,n){let r=`never`,i=e.get(t);return i?r=i:e.get(n)&&(r=`always`),r}var ry=[{name:`a_fade_opacity`,components:1,type:`Uint8`,offset:0}];function iy(e,t,n,r,i,a,o,s,c,l,u,d,f,p){let m=s?Math.min(pv,Math.round(s[0])):0,h=s?Math.min(pv,Math.round(s[1])):0;e.emplaceBack(t,n,Math.round(r*32),Math.round(i*32),a,o,(m<<1)+ +!!c,h,l*16,u*16,d*256,f*256,p)}function ay(e,t,n){e.emplaceBack(t.x,t.y,n),e.emplaceBack(t.x,t.y,n),e.emplaceBack(t.x,t.y,n),e.emplaceBack(t.x,t.y,n)}function oy(e){for(let t of e.sections)if(qg(t.text))return!0;return!1}var sy=class{constructor(e){this.layoutVertexArray=new Bu,this.indexArray=new qu,this.programConfigurations=e,this.segments=new Qu,this.dynamicLayoutVertexArray=new Vu,this.opacityVertexArray=new Hu,this.hasVisibleVertices=!1,this.placedSymbolArray=new xu}isEmpty(){return this.layoutVertexArray.length===0&&this.indexArray.length===0&&this.dynamicLayoutVertexArray.length===0&&this.opacityVertexArray.length===0}upload(e,t,n,r){this.isEmpty()||(n&&(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Kh.members),this.indexBuffer=e.createIndexBuffer(this.indexArray,t),this.dynamicLayoutVertexBuffer=e.createVertexBuffer(this.dynamicLayoutVertexArray,qh.members,!0),this.opacityVertexBuffer=e.createVertexBuffer(this.opacityVertexArray,ry,!0),this.opacityVertexBuffer.itemSize=1),(n||r)&&this.programConfigurations.upload(e))}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.dynamicLayoutVertexBuffer.destroy(),this.opacityVertexBuffer.destroy())}};K(`SymbolBuffers`,sy);var cy=class{constructor(e,t,n){this.layoutVertexArray=new e,this.layoutAttributes=t,this.indexArray=new n,this.segments=new Qu,this.collisionVertexArray=new Gu}upload(e){this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=e.createVertexBuffer(this.collisionVertexArray,Jh.members,!0)}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy())}};K(`CollisionBuffers`,cy);var ly=class{constructor(e){this.collisionBoxArray=e.collisionBoxArray,this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map(e=>e.id),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasDependencies=!0,this.hasRTLText=!1,this.maxHeightOffset=0,this.sortKeyRanges=[],this.collisionCircleArray=[],this.maxGlyphs=65535;let t=this.layers[0]._unevaluatedLayout._values;this.textSizeData=mv(this.zoom,t[`text-size`]),this.iconSizeData=mv(this.zoom,t[`icon-size`]);let n=this.layers[0].layout,r=n.get(`symbol-sort-key`),i=n.get(`symbol-z-order`);this.canOverlap=ny(n,`text-overlap`,`text-allow-overlap`)!==`never`||ny(n,`icon-overlap`,`icon-allow-overlap`)!==`never`||n.get(`text-ignore-placement`)||n.get(`icon-ignore-placement`),this.sortFeaturesByKey=i!==`viewport-y`&&!r.isConstant();let a=i===`viewport-y`||i===`auto`&&!this.sortFeaturesByKey;this.sortFeaturesByY=a&&this.canOverlap,n.get(`symbol-placement`)===`point`&&(this.writingModes=n.get(`text-writing-mode`).map(e=>F_[e])),this.stateDependentLayerIds=this.layers.filter(e=>e.isStateDependent()).map(e=>e.id),this.sourceID=e.sourceID}createArrays(){this.text=new sy(new Ed(this.layers,this.zoom,e=>e.startsWith(`text`))),this.icon=new sy(new Ed(this.layers,this.zoom,e=>e.startsWith(`icon`))),this.glyphOffsetArray=new wu,this.lineVertexArray=new Tu,this.symbolInstances=new Cu,this.textAnchorOffsets=new Du}calculateGlyphDependencies(e,t,n,r){let i=i_.fromFeature(e,n,!1),a=i.graphemes();for(let e=0;e<a.length;e++){let n=i.getSection(e);if(`imageName`in n)continue;t[n.fontStack]||={default:{},vertical:{}};let o=t[n.fontStack],s=a[e],c=r&&tv(s.codePointAt(0),this.allowVerticalPlacement);Rg(s)&&(o.default[s]=!0),c&&(o.vertical[s]=!0);for(let e of s){if(o.default[e]=!0,!r)continue;c&&Rg(s)&&(o.vertical[e]=!0);let t=Jg[e];t&&(o.default[t]=!0)}}}populate(e,t,n){let r=this.layers[0],i=r.layout,a=i.get(`text-font`),o=i.get(`text-field`),s=i.get(`icon-image`),c=(o.value.kind!==`constant`||o.value.value instanceof wi&&!o.value.value.isEmpty()||o.value.value.toString().length>0)&&(a.value.kind!==`constant`||a.value.value.length>0),l=s.value.kind!==`constant`||!!s.value.value||Object.keys(s.parameters).length>0,u=i.get(`symbol-sort-key`),d=i.get(`symbol-placement`)===`point`;if(this.features=[],!c&&!l)return;let f=t.iconDependencies,p=t.glyphDependencies,m=t.availableImages,h=new yl(this.zoom),g=i.get(`text-keep-upright`);for(let{feature:t,id:o,index:s,sourceLayerIndex:_}of e){let e=r._featureFilter.needGeometry,v=Nd(t,e);if(!r._featureFilter.filter(h,v,n)||(e||(v.geometry=Md(t)),d&&t.type===1&&uy(v.geometry)))continue;let y;if(c){let e=r.getValueAndResolveTokens(`text-field`,v,n,m),t=wi.factory(e);this.hasRTLText||=oy(t),y=Dg(t,r,v)}let b;if(l){let e=r.getValueAndResolveTokens(`icon-image`,v,n,m);b=e instanceof ji?e:ji.fromString(e)}if(!y&&!b)continue;let x=this.sortFeaturesByKey?u.evaluate(v,{},n):void 0,S={id:o,text:y,icon:b,index:s,sourceLayerIndex:_,geometry:v.geometry,properties:t.properties,type:xm.types[t.type],sortKey:x};if(this.features.push(S),b&&(f[b.name]=!0),y){let e=a.evaluate(v,{},n).join(`,`),t=i.get(`text-rotation-alignment`)!==`viewport`&&i.get(`symbol-placement`)!==`point`;this.allowVerticalPlacement=this.writingModes?.includes(2);let r=(t&&g||this.allowVerticalPlacement)&&Vg(y.toString());this.calculateGlyphDependencies(y,p,e,r);for(let e of y.sections)e.image&&(f[e.image.name]=!0)}}i.get(`symbol-placement`)===`line`&&(this.features=Mg(this.features)),this.sortFeaturesByKey&&this.features.sort((e,t)=>e.sortKey-t.sortKey)}update(e,t,n){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(e,t,this.layers,{imagePositions:n}),this.icon.programConfigurations.updatePaintArrays(e,t,this.layers,{imagePositions:n}))}addFeatures({options:e,canonical:t,glyphMap:n,glyphPositions:r,iconMap:i,iconPositions:a,showCollisionBoxes:o}){qv({bucket:this,glyphMap:n,glyphPositions:r,imageMap:i,imagePositions:a,showCollisionBoxes:o,canonical:t,subdivisionGranularity:e.subdivisionGranularity,hasPromoteId:e.featureIndex.promoteId!=null})}isEmpty(){return this.symbolInstances.length===0}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(e){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(e),this.iconCollisionBox.upload(e)),this.text.upload(e,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(e,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(e,t){let n=this.lineVertexArray.length;if(e.segment!==void 0){let n=e.dist(t[e.segment+1]),r=e.dist(t[e.segment]),i={};for(let r=e.segment+1;r<t.length;r++)i[r]={x:t[r].x,y:t[r].y,tileUnitDistanceFromAnchor:n},r<t.length-1&&(n+=t[r+1].dist(t[r]));for(let n=e.segment||0;n>=0;n--)i[n]={x:t[n].x,y:t[n].y,tileUnitDistanceFromAnchor:r},n>0&&(r+=t[n-1].dist(t[n]));for(let e=0;e<t.length;e++){let t=i[e];this.lineVertexArray.emplaceBack(t.x,t.y,t.tileUnitDistanceFromAnchor)}}return{lineStartIndex:n,lineLength:this.lineVertexArray.length-n}}addSymbols(e,t,n,r,i,a,o,s,c,l,u,d,f){let p=e.indexArray,m=e.layoutVertexArray,h=e.segments.prepareSegment(4*t.length,m,p,this.canOverlap?a.sortKey:void 0),g=this.glyphOffsetArray.length,_=h.vertexLength,v=this.allowVerticalPlacement&&o===2?Math.PI/2:0,y=a.text&&a.text.sections;for(let r=0;r<t.length;r++){let{tl:i,tr:o,bl:c,br:l,tex:u,pixelOffsetTL:g,pixelOffsetBR:_,minFontScaleX:b,minFontScaleY:x,glyphOffset:S,isSDF:C,sectionIndex:w}=t[r],T=h.vertexLength,E=S[1];iy(m,s.x,s.y,i.x,E+i.y,u.x,u.y,n,C,g.x,g.y,b,x,f),iy(m,s.x,s.y,o.x,E+o.y,u.x+u.w,u.y,n,C,_.x,g.y,b,x,f),iy(m,s.x,s.y,c.x,E+c.y,u.x,u.y+u.h,n,C,g.x,_.y,b,x,f),iy(m,s.x,s.y,l.x,E+l.y,u.x+u.w,u.y+u.h,n,C,_.x,_.y,b,x,f),ay(e.dynamicLayoutVertexArray,s,v),p.emplaceBack(T,T+2,T+1),p.emplaceBack(T+1,T+2,T+3),h.vertexLength+=4,h.primitiveLength+=2,this.glyphOffsetArray.emplaceBack(S[0]),(r===t.length-1||w!==t[r+1].sectionIndex)&&e.programConfigurations.populatePaintArrays(m.length,a,a.index,{imagePositions:{},canonical:d,formattedSection:y?.[w]})}e.placedSymbolArray.emplaceBack(s.x,s.y,g,this.glyphOffsetArray.length-g,_,c,l,s.segment,n?n[0]:0,n?n[1]:0,r[0],r[1],o,0,!1,0,u,f)}_addCollisionDebugVertex(e,t,n,r,i,a){return t.emplaceBack(0,0),e.emplaceBack(n.x,n.y,r,i,Math.round(a.x),Math.round(a.y))}addCollisionDebugVertices(e,t,n,r,i,a,o){let s=i.segments.prepareSegment(4,i.layoutVertexArray,i.indexArray),c=s.vertexLength,l=i.layoutVertexArray,u=i.collisionVertexArray,d=o.anchorX,p=o.anchorY;this._addCollisionDebugVertex(l,u,a,d,p,new f(e,t)),this._addCollisionDebugVertex(l,u,a,d,p,new f(n,t)),this._addCollisionDebugVertex(l,u,a,d,p,new f(n,r)),this._addCollisionDebugVertex(l,u,a,d,p,new f(e,r)),s.vertexLength+=4;let m=i.indexArray;m.emplaceBack(c,c+1),m.emplaceBack(c+1,c+2),m.emplaceBack(c+2,c+3),m.emplaceBack(c+3,c),s.primitiveLength+=4}addDebugCollisionBoxes(e,t,n,r){for(let i=e;i<t;i++){let e=this.collisionBoxArray.get(i),t=e.x1,a=e.y1,o=e.x2,s=e.y2;this.addCollisionDebugVertices(t,a,o,s,r?this.textCollisionBox:this.iconCollisionBox,e.anchorPoint,n)}}generateCollisionDebugBuffers(){this.hasDebugData()&&this.destroyDebugData(),this.textCollisionBox=new cy(Uu,Yh.members,Ju),this.iconCollisionBox=new cy(Uu,Yh.members,Ju);for(let e=0;e<this.symbolInstances.length;e++){let t=this.symbolInstances.get(e);this.addDebugCollisionBoxes(t.textBoxStartIndex,t.textBoxEndIndex,t,!0),this.addDebugCollisionBoxes(t.verticalTextBoxStartIndex,t.verticalTextBoxEndIndex,t,!0),this.addDebugCollisionBoxes(t.iconBoxStartIndex,t.iconBoxEndIndex,t,!1),this.addDebugCollisionBoxes(t.verticalIconBoxStartIndex,t.verticalIconBoxEndIndex,t,!1)}}_deserializeCollisionBoxesForSymbol(e,t,n,r,i,a,o,s,c){let l={};for(let r=t;r<n;r++){let t=e.get(r);l.textBox={x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2,anchorPointX:t.anchorPointX,anchorPointY:t.anchorPointY},l.textFeatureIndex=t.featureIndex;break}for(let t=r;t<i;t++){let n=e.get(t);l.verticalTextBox={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2,anchorPointX:n.anchorPointX,anchorPointY:n.anchorPointY},l.verticalTextFeatureIndex=n.featureIndex;break}for(let t=a;t<o;t++){let n=e.get(t);l.iconBox={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2,anchorPointX:n.anchorPointX,anchorPointY:n.anchorPointY},l.iconFeatureIndex=n.featureIndex;break}for(let t=s;t<c;t++){let n=e.get(t);l.verticalIconBox={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2,anchorPointX:n.anchorPointX,anchorPointY:n.anchorPointY},l.verticalIconFeatureIndex=n.featureIndex;break}return l}deserializeCollisionBoxes(e){this.collisionArrays=[];for(let t=0;t<this.symbolInstances.length;t++){let n=this.symbolInstances.get(t);this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(e,n.textBoxStartIndex,n.textBoxEndIndex,n.verticalTextBoxStartIndex,n.verticalTextBoxEndIndex,n.iconBoxStartIndex,n.iconBoxEndIndex,n.verticalIconBoxStartIndex,n.verticalIconBoxEndIndex))}}hasTextData(){return this.text.segments.get().length>0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(e,t){let n=e.placedSymbolArray.get(t),r=n.vertexStartIndex+n.numGlyphs*4;for(let t=n.vertexStartIndex;t<r;t+=4)e.indexArray.emplaceBack(t,t+2,t+1),e.indexArray.emplaceBack(t+1,t+2,t+3)}getSortedSymbolIndexes(e){if(this.sortedAngle===e&&this.symbolInstanceIndexes!==void 0)return this.symbolInstanceIndexes;let t=Math.sin(e),n=Math.cos(e),r=[],i=[],a=[];for(let e=0;e<this.symbolInstances.length;++e){a.push(e);let o=this.symbolInstances.get(e);r.push(Math.round(t*o.anchorX+n*o.anchorY)|0),i.push(o.featureIndex)}return a.sort((e,t)=>r[e]-r[t]||i[t]-i[e]),a}addToSortKeyRanges(e,t){let n=this.sortKeyRanges[this.sortKeyRanges.length-1];n?.sortKey===t?n.symbolInstanceEnd=e+1:this.sortKeyRanges.push({sortKey:t,symbolInstanceStart:e,symbolInstanceEnd:e+1})}sortFeatures(e){if(this.sortFeaturesByY&&this.sortedAngle!==e&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(e),this.sortedAngle=e,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(let e of this.symbolInstanceIndexes){let t=this.symbolInstances.get(e);this.featureSortOrder.push(t.featureIndex);let n=[t.rightJustifiedTextSymbolIndex,t.centerJustifiedTextSymbolIndex,t.leftJustifiedTextSymbolIndex];for(let e=0;e<n.length;e++){let t=n[e];t>=0&&n.indexOf(t)===e&&this.addIndicesForPlacedSymbol(this.text,t)}t.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,t.verticalPlacedTextSymbolIndex),t.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,t.placedIconSymbolIndex),t.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,t.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}};function uy(e){return e.every(e=>e.every(Rd))}K(`SymbolBucket`,ly,{omit:[`layers`,`collisionBoxArray`,`features`,`compareText`]});function dy(e,t){return t.replace(/{([^{}]+)}/g,(t,n)=>e&&n in e?String(e[n]):``)}var fy,py=()=>fy||=new Nl({"symbol-placement":new q(B.layout_symbol[`symbol-placement`],`symbol-placement`),"symbol-spacing":new q(B.layout_symbol[`symbol-spacing`],`symbol-spacing`),"symbol-avoid-edges":new q(B.layout_symbol[`symbol-avoid-edges`],`symbol-avoid-edges`),"symbol-sort-key":new J(B.layout_symbol[`symbol-sort-key`],`symbol-sort-key`),"symbol-z-order":new q(B.layout_symbol[`symbol-z-order`],`symbol-z-order`),"icon-allow-overlap":new q(B.layout_symbol[`icon-allow-overlap`],`icon-allow-overlap`),"icon-overlap":new q(B.layout_symbol[`icon-overlap`],`icon-overlap`),"icon-ignore-placement":new q(B.layout_symbol[`icon-ignore-placement`],`icon-ignore-placement`),"icon-optional":new q(B.layout_symbol[`icon-optional`],`icon-optional`),"icon-rotation-alignment":new J(B.layout_symbol[`icon-rotation-alignment`],`icon-rotation-alignment`),"icon-size":new J(B.layout_symbol[`icon-size`],`icon-size`),"icon-text-fit":new q(B.layout_symbol[`icon-text-fit`],`icon-text-fit`),"icon-text-fit-padding":new q(B.layout_symbol[`icon-text-fit-padding`],`icon-text-fit-padding`),"icon-image":new J(B.layout_symbol[`icon-image`],`icon-image`),"icon-rotate":new J(B.layout_symbol[`icon-rotate`],`icon-rotate`),"icon-padding":new J(B.layout_symbol[`icon-padding`],`icon-padding`),"icon-keep-upright":new q(B.layout_symbol[`icon-keep-upright`],`icon-keep-upright`),"icon-offset":new J(B.layout_symbol[`icon-offset`],`icon-offset`),"icon-anchor":new J(B.layout_symbol[`icon-anchor`],`icon-anchor`),"icon-pitch-alignment":new q(B.layout_symbol[`icon-pitch-alignment`],`icon-pitch-alignment`),"text-pitch-alignment":new q(B.layout_symbol[`text-pitch-alignment`],`text-pitch-alignment`),"text-rotation-alignment":new q(B.layout_symbol[`text-rotation-alignment`],`text-rotation-alignment`),"text-field":new J(B.layout_symbol[`text-field`],`text-field`),"text-font":new J(B.layout_symbol[`text-font`],`text-font`),"text-size":new J(B.layout_symbol[`text-size`],`text-size`),"text-max-width":new J(B.layout_symbol[`text-max-width`],`text-max-width`),"text-line-height":new q(B.layout_symbol[`text-line-height`],`text-line-height`),"text-letter-spacing":new J(B.layout_symbol[`text-letter-spacing`],`text-letter-spacing`),"text-justify":new J(B.layout_symbol[`text-justify`],`text-justify`),"text-radial-offset":new J(B.layout_symbol[`text-radial-offset`],`text-radial-offset`),"text-variable-anchor":new q(B.layout_symbol[`text-variable-anchor`],`text-variable-anchor`),"text-variable-anchor-offset":new J(B.layout_symbol[`text-variable-anchor-offset`],`text-variable-anchor-offset`),"text-anchor":new J(B.layout_symbol[`text-anchor`],`text-anchor`),"text-max-angle":new q(B.layout_symbol[`text-max-angle`],`text-max-angle`),"text-writing-mode":new q(B.layout_symbol[`text-writing-mode`],`text-writing-mode`),"text-rotate":new J(B.layout_symbol[`text-rotate`],`text-rotate`),"text-padding":new q(B.layout_symbol[`text-padding`],`text-padding`),"text-keep-upright":new q(B.layout_symbol[`text-keep-upright`],`text-keep-upright`),"text-transform":new J(B.layout_symbol[`text-transform`],`text-transform`),"text-offset":new J(B.layout_symbol[`text-offset`],`text-offset`),"text-allow-overlap":new q(B.layout_symbol[`text-allow-overlap`],`text-allow-overlap`),"text-overlap":new q(B.layout_symbol[`text-overlap`],`text-overlap`),"text-ignore-placement":new q(B.layout_symbol[`text-ignore-placement`],`text-ignore-placement`),"text-optional":new q(B.layout_symbol[`text-optional`],`text-optional`),"symbol-height-offset":new J(B.layout_symbol[`symbol-height-offset`],`symbol-height-offset`),"symbol-height-anchor":new q(B.layout_symbol[`symbol-height-anchor`],`symbol-height-anchor`)}),my,hy=()=>my||=new Nl({"icon-opacity":new J(B.paint_symbol[`icon-opacity`],`icon-opacity`),"icon-color":new J(B.paint_symbol[`icon-color`],`icon-color`),"icon-halo-color":new J(B.paint_symbol[`icon-halo-color`],`icon-halo-color`),"icon-halo-width":new J(B.paint_symbol[`icon-halo-width`],`icon-halo-width`),"icon-halo-blur":new J(B.paint_symbol[`icon-halo-blur`],`icon-halo-blur`),"icon-translate":new q(B.paint_symbol[`icon-translate`],`icon-translate`),"icon-translate-anchor":new q(B.paint_symbol[`icon-translate-anchor`],`icon-translate-anchor`),"text-opacity":new J(B.paint_symbol[`text-opacity`],`text-opacity`),"text-color":new J(B.paint_symbol[`text-color`],`text-color`,{runtimeType:Ar,getOverride:e=>e.textColor,hasOverride:e=>!!e.textColor}),"text-halo-color":new J(B.paint_symbol[`text-halo-color`],`text-halo-color`),"text-halo-width":new J(B.paint_symbol[`text-halo-width`],`text-halo-width`),"text-halo-blur":new J(B.paint_symbol[`text-halo-blur`],`text-halo-blur`),"text-translate":new q(B.paint_symbol[`text-translate`],`text-translate`),"text-translate-anchor":new q(B.paint_symbol[`text-translate-anchor`],`text-translate-anchor`)}),gy={get paint(){return hy()},get layout(){return py()}},_y=class{constructor(e){if(e.property.overrides===void 0)throw Error(`overrides must be provided to instantiate FormatSectionOverride class`);this.type=e.property.overrides?e.property.overrides.runtimeType:Or,this.defaultValue=e}evaluate(e){if(e.formattedSection){let t=this.defaultValue.property.overrides;if(t?.hasOverride(e.formattedSection))return t.getOverride(e.formattedSection)}return e.feature&&e.featureState?this.defaultValue.evaluate(e.feature,e.featureState):this.defaultValue.property.specification.default}eachChild(e){if(!this.defaultValue.isConstant()){let t=this.defaultValue.value;e(t._styleExpression.expression)}}outputDefined(){return!1}serialize(){return null}};K(`FormatSectionOverride`,_y,{omit:[`defaultValue`]});var vy=e=>e.type===`symbol`,yy=class e extends Il{constructor(e,t){super(e,gy,t)}recalculate(e,t){super.recalculate(e,t);let n=this.layout.get(`icon-rotation-alignment`);if((n.value.kind!==`constant`||n.value.value===`auto`)&&(this.layout._values[`icon-rotation-alignment`]=new El(n.property,{kind:`constant`,value:this.layout.get(`symbol-placement`)===`point`?`viewport`:`map`},n.parameters)),this.layout.get(`text-rotation-alignment`)===`auto`&&(this.layout.get(`symbol-placement`)===`point`?this.layout._values[`text-rotation-alignment`]=`viewport`:this.layout._values[`text-rotation-alignment`]=`map`),this.layout.get(`text-pitch-alignment`)===`auto`&&(this.layout._values[`text-pitch-alignment`]=this.layout.get(`text-rotation-alignment`)===`map`?`map`:`viewport`),this.layout.get(`icon-pitch-alignment`)===`auto`&&(this.layout._values[`icon-pitch-alignment`]=this.layout.get(`icon-rotation-alignment`).constantOr(`viewport`)),this.layout.get(`symbol-placement`)===`point`){let e=this.layout.get(`text-writing-mode`);if(e){let t=[];for(let n of e)t.includes(n)||t.push(n);this.layout._values[`text-writing-mode`]=t}else this.layout._values[`text-writing-mode`]=[`horizontal`]}this._setPaintOverrides()}getValueAndResolveTokens(e,t,n,r){let i=this.layout.get(e).evaluate(t,{},n,r),a=this._unevaluatedLayout._values[e];return!a.isDataDriven()&&!Ts(a.value)&&i?dy(t.properties,i):i}createBucket(e){return new ly(e)}queryRadius(){return 0}queryIntersectsFeature(){throw Error(`Should take a different path in FeatureIndex`)}_setPaintOverrides(){for(let t of gy.paint.overridableProperties){if(!e.hasPaintOverride(this.layout,t))continue;let n=this.paint.get(t),r=new Ss(new _y(n),`layers[${this.id}].paint.${n.property.name}`,n.property.specification),i=null;i=n.value.kind===`constant`||n.value.kind===`source`?new Ds(`source`,r):new Os(`composite`,r,n.value.zoomStops),this.paint._values[t]=new El(n.property,i,n.parameters)}}_handleOverridablePaintPropertyUpdate(t,n,r){return!this.layout||n.isDataDriven()||r.isDataDriven()?!1:e.hasPaintOverride(this.layout,t)}static hasPaintOverride(e,t){let n=e.get(`text-field`),r=gy.paint.properties[t],i=!1,a=e=>{for(let t of e)if(r.overrides?.hasOverride(t)){i=!0;return}};if(n.value.kind===`constant`&&n.value.value instanceof wi)a(n.value.value.sections);else if(n.value.kind===`source`||n.value.kind===`composite`){let e=t=>{if(!i){if(t instanceof Ri&&Ii(t.value)===Fr){let e=t.value;a(e.sections)}else t instanceof qi?a(t.sections):t.eachChild(e)}},t=n.value;t._styleExpression&&e(t._styleExpression.expression)}return i}};function by(e,t,n,r=1){let i=e.get(`icon-padding`).evaluate(t,{},n)?.values;return[i[0]*r,i[1]*r,i[2]*r,i[3]*r]}var xy,Sy=()=>xy||=new Nl({"background-color":new q(B.paint_background[`background-color`],`background-color`),"background-pattern":new jl(B.paint_background[`background-pattern`],`background-pattern`),"background-opacity":new q(B.paint_background[`background-opacity`],`background-opacity`)}),Cy={get paint(){return Sy()}},wy=e=>e.type===`background`,Ty=class extends Il{constructor(e,t){super(e,Cy,t)}};function Ey(e){let t=[],n=e.id;return n===void 0&&t.push(new V(`layers.${n}`,null,`missing required property "id"`)),e.render===void 0&&t.push(new V(`layers.${n}`,null,`missing required method "render"`)),e.renderingMode&&e.renderingMode!==`2d`&&e.renderingMode!==`3d`&&t.push(new V(`layers.${n}`,null,`property "renderingMode" must be either "2d" or "3d"`)),t}var Dy=e=>e.type===`custom`,Oy=class extends Il{constructor(e,t){super(e,{},t),this.onAdd=e=>{this.implementation.onAdd&&this.implementation.onAdd(e,e.painter.context.gl)},this.onRemove=e=>{this.implementation.onRemove&&this.implementation.onRemove(e,e.painter.context.gl)},this.implementation=e}is3D(){return this.implementation.renderingMode===`3d`}hasOffscreenPass(){return this.implementation.prerender!==void 0}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){throw Error(`Custom layers cannot be serialized`)}};function ky(e,t){if(e.type===`custom`)return new Oy(e,t);switch(e.type){case`background`:return new Ty(e,t);case`circle`:return new bf(e,t);case`color-relief`:return new Jf(e,t);case`fill`:return new _m(e,t);case`fill-extrusion`:return new bh(e,t);case`heatmap`:return new Pf(e,t);case`hillshade`:return new zf(e,t);case`line`:return new Wh(e,t);case`raster`:return new Vl(e,t);case`symbol`:return new yy(e,t)}}function Ay(e){let t=[];if(typeof e==`string`)t.push({id:`default`,url:e});else if(e&&e.length>0){let n=[];for(let{id:r,url:i}of e){let e=`${r}${i}`;n.includes(e)||(n.push(e),t.push({id:r,url:i}))}}return t}function jy(e,t,n){try{let r=new URL(e);return r.pathname+=`${t}${n}`,r.toString()}catch{throw Error(`Invalid sprite URL "${e}", must be absolute. Modify style specification directly or use TransformStyleFunction to correct the issue dynamically`)}}async function My(e,t,n,r){let i=Ay(e),a=n>1?`@2x`:``,o={},s={};for(let{id:e,url:n}of i){o[e]=Un(await t.transformRequest(jy(n,a,`.json`),`SpriteJSON`),r);let i=await t.transformRequest(jy(n,a,`.png`),`SpriteImage`);s[e]=qn.getImage(i,r)}return await Promise.all([...Object.values(o),...Object.values(s)]),Ny(o,s)}async function Ny(e,t){let n={};for(let r in e){n[r]={};let i=(await t[r]).data;if(!i)throw Error(`Could not load sprite image for ${r}: the response is empty`);let a=bn.getImageCanvasContext(i),o=(await e[r]).data;for(let e in o){let{width:t,height:i,x:s,y:c,sdf:l,pixelRatio:u,stretchX:d,stretchY:f,content:p,textFitWidth:m,textFitHeight:h}=o[e],g={width:t,height:i,x:s,y:c,context:a};n[r][e]={data:null,pixelRatio:u,sdf:l,stretchX:d,stretchY:f,content:p,textFitWidth:m,textFitHeight:h,spriteData:g}}}return n}var Py=class extends Qn{constructor(){super(),this.images={},this.updateVersion=0,this.loaded=!1,this.requestors=[],this.missingImageResolver=null,this._spriteImagesIds={},this._imagesIds=null,this._renderCallbacksDispatchedThisFrame={}}destroy(){for(let e of Object.keys(this.images))this.removeImage(e);this._spriteImagesIds={}}isLoaded(){return this.loaded}setLoaded(e){if(this.loaded!==e&&(this.loaded=e,e)){for(let{ids:e,promiseResolve:t}of this.requestors)t(this._getImagesForIds(e));this.requestors=[]}}getImage(e){let t=this.images[e];if(t&&!t.data&&t.spriteData){let e=t.spriteData;t.data=new kf({width:e.width,height:e.height},e.context.getImageData(e.x,e.y,e.width,e.height).data),t.spriteData=null}return t}addImage(e,t){if(this.images[e])throw Error(`Image id ${e} already exist, use updateImage instead`);this._validate(e,t)&&(this.images[e]=t,this._imagesIds=null,t.isWebGLImage&&this.updateImage(e,t,!1))}_validate(e,t){let n=!0,r=t.data||t.spriteData;return this._validateStretch(t.stretchX,r?.width)||(this.fire(new R(Error(`Image "${e}" has invalid "stretchX" value`))),n=!1),this._validateStretch(t.stretchY,r?.height)||(this.fire(new R(Error(`Image "${e}" has invalid "stretchY" value`))),n=!1),this._validateContent(t.content,t)||(this.fire(new R(Error(`Image "${e}" has invalid "content" value`))),n=!1),n}_validateStretch(e,t){if(!e)return!0;let n=0;for(let r of e){if(r[0]<n||r[1]<r[0]||t<r[1])return!1;n=r[1]}return!0}_validateContent(e,t){if(!e)return!0;if(e.length!==4)return!1;let n=t.spriteData,r=n?.width||t.data.width,i=n?.height||t.data.height;return e[0]<0||r<e[0]||e[1]<0||i<e[1]||e[2]<0||r<e[2]||e[3]<0||i<e[3]||e[2]<e[0]?!1:e[3]>=e[1]}updateImage(e,t,n=!0){let r=this.images[e];if(n){let e=r.data||r.spriteData;if(e.width!==t.data.width||e.height!==t.data.height)throw Error(`size mismatch between old image (${e.width}x${e.height}) and new image (${t.data.width}x${t.data.height}).`)}t.version=(r.version??0)+1,this.images[e]=t,this.updateVersion++}removeImage(e){let t=this.images[e];t&&(delete this.images[e],this._imagesIds=null,t.userImage?.onRemove&&t.userImage.onRemove())}listImages(){return this._imagesIds??=Object.keys(this.images),this._imagesIds}_getSpriteImageId(e,t){return e==="default"?t:`${e}:${t}`}setSpriteImages(e,t){let n=this._spriteImagesIds[e]??[],r=[];for(let n in t){let i=this._getSpriteImageId(e,n);r.push(i),i in this.images?this.updateImage(i,t[n],!1):this.addImage(i,t[n])}let i=new Set(r),a=n.filter(e=>!i.has(e));for(let e of a)this.removeImage(e);return this._spriteImagesIds[e]=r,{loaded:r,removed:a}}removeSpriteImages(e){let t=this._spriteImagesIds[e]??[];for(let e of t)this.removeImage(e);return delete this._spriteImagesIds[e],t}removeAllSpriteImages(){let e=Object.values(this._spriteImagesIds).flat();for(let t of e)this.removeImage(t);return this._spriteImagesIds={},e}setMissingImageResolver(e){this.missingImageResolver=e}getImages(e){return new Promise((t,n)=>{let r=!0;if(!this.isLoaded())for(let t of e)this.images[t]||(r=!1);this.isLoaded()||r?t(this._getImagesForIds(e)):this.requestors.push({ids:e,promiseResolve:t})})}async _getImagesForIds(e){let t=new Set(e.filter(e=>!this.getImage(e))),n=this.missingImageResolver;n&&await Promise.allSettled(Array.from(t,e=>n(e)));let r={};for(let n of e){let e=this.getImage(n);e&&(t.delete(n),r[n]={data:e.data.clone(),pixelRatio:e.pixelRatio,sdf:e.sdf,version:e.version,stretchX:e.stretchX,stretchY:e.stretchY,content:e.content,textFitWidth:e.textFitWidth,textFitHeight:e.textFitHeight,hasRenderCallback:!!e.userImage?.render,isWebGLImage:e.isWebGLImage})}for(let e of t)this.fire(new ur({id:e})),I(`Image "${e}" could not be loaded. Please make sure you have added the image before it is needed with map.addImage(), resolved it with map.setMissingStyleImageResolver(), or included it in a "sprite" property in your style.`);return r}beginFrame(){this._renderCallbacksDispatchedThisFrame={}}dispatchRenderCallbacks(e){for(let t of e){if(this._renderCallbacksDispatchedThisFrame[t])continue;this._renderCallbacksDispatchedThisFrame[t]=!0;let e=this.getImage(t);e||I(`Image with ID: "${t}" was not found`),j_(e)&&this.updateImage(t,e)}}cloneImages(){let e={};for(let t in this.images){let n=this.images[t];e[t]={...n,data:n.data?n.data.clone():null}}return e}},Fy=class{constructor(e){this._imageManager=e,this._entries={},this._image=new kf({width:1,height:1}),this._dirty=!0}destroy(){this._texture&&=(this._texture.destroy(),null),this._entries={},this._image=new kf({width:1,height:1}),this._dirty=!0}getPixelSize(){let{width:e,height:t}=this._image;return{width:e,height:t}}getPattern(e){let t=this._imageManager.getImage(e);if(!t)return null;let n=this._entries[e];if(n?.image!==t){let n={w:t.data.width+2,h:t.data.height+2,x:0,y:0};this._entries[e]={bin:n,position:new N_(n,t),image:t}}else if(n.position.version!==t.version)n.position.version=t.version;else return n.position;return this._update(),this._entries[e].position}isPatternMissing(e){if(!e)return!1;if(!e.from||!e.to)return!0;let t=this.getPattern(e.from.toString()),n=this.getPattern(e.to.toString());return!t||!n}bind(e){let t=e.gl;this._texture?this._dirty&&=(this._texture.update(this._image),!1):(this._texture=new Wf(e,this._image,t.RGBA),this._dirty=!1),this._texture.bind(t.LINEAR,t.CLAMP_TO_EDGE)}_update(){for(let e in this._entries)this._imageManager.getImage(e)||delete this._entries[e];let e=[];for(let t in this._entries)e.push(this._entries[t].bin);let{w:t,h:n}=M_(e),r=this._image;r.resize({width:t||1,height:n||1});for(let e in this._entries){let{bin:t}=this._entries[e],n=t.x+1,i=t.y+1,a=this._entries[e].image.data,o=a.width,s=a.height;kf.copy(a,r,{x:0,y:0},{x:n,y:i},{width:o,height:s}),kf.copy(a,r,{x:0,y:s-1},{x:n,y:i-1},{width:o,height:1}),kf.copy(a,r,{x:0,y:0},{x:n,y:i+s},{width:o,height:1}),kf.copy(a,r,{x:o-1,y:0},{x:n-1,y:i},{width:1,height:s}),kf.copy(a,r,{x:0,y:0},{x:n+o,y:i},{width:1,height:s})}this._dirty=!0}},Iy=1114111,Ly={start:0,end:Iy},Ry=0;function zy(e){let t=/^u\+([0-9a-f]*)(\?+)$/i.exec(e);if(t){let[,e,n]=t;return e.length+n.length>6?null:By(parseInt(`${e}${`0`.repeat(n.length)}`,16),parseInt(`${e}${`f`.repeat(n.length)}`,16))}let n=/^u\+([0-9a-f]{1,6})(?:-([0-9a-f]{1,6}))?$/i.exec(e);if(!n)return null;let r=parseInt(n[1],16);return By(r,n[2]===void 0?r:parseInt(n[2],16))}function By(e,t){return e>t||e>Iy?null:{start:e,end:Math.min(t,Iy)}}function Vy(e,t){return e.ranges.some(({start:e,end:n})=>t>=e&&t<=n)}var Hy=class{constructor(e){this.requestManager=e,this._faces={},this._registered=new Set}setFontFaces(e){this._unregisterAll(),this._faces={};for(let[t,n]of Object.entries(e??{})){let e=Array.isArray(n)?n:[n];this._faces[t]=e.map(e=>this._declareFontFace(t,e)).filter(e=>e!==null)}}hasFontFaces(){return Object.keys(this._faces).length>0}async getFontFamily(e,t,n){for(let r of e.split(`,`))for(let e of this._faces[r.trim()]??[]){if(!Vy(e,t))continue;e.loads.normal??=this._loadFontFace(e,`normal`);let r=e.data,i=await e.loads.normal;if(i)return n===`normal`?i:(e.loads[n]??=this._loadFontFace(e,n,r),e.loads[n])}return null}_declareFontFace(e,t){let n=typeof t==`string`?{url:t}:t;if(typeof n?.url!=`string`)return I(`Ignoring the font face declared for "${e}": it has no URL.`),null;let r=`maplibre-gl-font-face-${Ry++}`,i=n[`unicode-range`];if(!i?.length)return{url:n.url,ranges:[Ly],family:r,loads:{}};let a=[];for(let e of i){let t=zy(e);t?a.push(t):I(`Ignoring the unicode range "${e}" of the font face at ${n.url}: it is not a valid range.`)}return a.length?{url:n.url,ranges:a,family:r,loads:{}}:null}async _loadFontFace(e,t,n){let r=t===`normal`?`font face`:`font face with "${t}" enabled`;if(typeof FontFace>`u`||typeof document>`u`||!document.fonts)return I(`Ignoring the ${r} at ${e.url}: this environment has no CSS Font Loading API.`),null;let i;try{n||=(e.data??=this._downloadFontFile(e.url),e.data);let r=t===`normal`?e.family:`${e.family}-${t}`;return i=new FontFace(r,await n,{featureSettings:t===`normal`?`normal`:`"${t}" 1`}),!Object.values(this._faces).some(t=>t.includes(e))||t!==`normal`&&(!i.featureSettings||i.featureSettings===`normal`)?null:(document.fonts.add(i),this._registered.add(i),await i.load(),this._registered.has(i)?r:null)}catch(t){return i&&this._unregister(i),I(`Ignoring the ${r} at ${e.url}: ${ot(t).message}`),null}finally{e.data===n&&delete e.data}}async _downloadFontFile(e){let t=await Wn(await this.requestManager.transformRequest(e,`Glyphs`),new AbortController);if(!t?.data)throw Error(`the response was empty for the font file at ${e}`);return t.data}_unregister(e){document.fonts?.delete(e),this._registered.delete(e)}_unregisterAll(){for(let e of Object.values(this._faces))for(let t of e)delete t.data;for(let e of this._registered)document.fonts?.delete(e);this._registered.clear()}destroy(){this._unregisterAll(),this._faces={}}},Uy=0x56bc75e2d63100000,Wy=new Float64Array(256);for(let e=0;e<256;e++){let t=.5-(e/255)**(1/2.2);Wy[e]=t*Math.abs(t)}Wy[255]=-0x56bc75e2d63100000;var Gy=class{constructor({fontSize:e=24,buffer:t=3,radius:n=8,cutoff:r=.25,fontFamily:i=`sans-serif`,fontWeight:a=`normal`,fontStyle:o=`normal`,lang:s=null}={}){t=this.buffer=Math.round(t),this.radius=n,this.cutoff=r,this.lang=s;let c=this.size=Math.ceil(e)+t*4,l=this._createCanvas(c),u=this.ctx=l.getContext(`2d`,{willReadFrequently:!0});u.font=`${o} ${a} ${e}px ${i}`,u.textBaseline=`alphabetic`,u.textAlign=`left`,u.fillStyle=`black`,s&&(u.lang=s);let d=(this.maxGlyphDim=c-t)+2*t;this.gridOuter=new Float64Array(d*d),this.gridInner=new Float64Array(d*d),this.f=new Float64Array(d),this.z=new Float64Array(d+1),this.v=new Uint16Array(d)}_createCanvas(e){if(typeof OffscreenCanvas<`u`)return new OffscreenCanvas(e,e);let t=document.createElement(`canvas`);return t.width=t.height=e,t}draw(e){let{width:t,actualBoundingBoxAscent:n,actualBoundingBoxDescent:r,actualBoundingBoxLeft:i,actualBoundingBoxRight:a}=this.ctx.measureText(e),o=Math.ceil(n),s=Math.floor(-i),c=Math.max(0,Math.min(this.maxGlyphDim,Math.ceil(a)-s)),l=Math.max(0,Math.min(this.maxGlyphDim,o+Math.ceil(r))),u=c+2*this.buffer,d=l+2*this.buffer,f=u*d,p=new Uint8ClampedArray(f),m={data:p,width:u,height:d,glyphWidth:c,glyphHeight:l,glyphTop:o,glyphLeft:s,glyphAdvance:t};if(c===0||l===0)return m;let{ctx:h,buffer:g,gridInner:_,gridOuter:v}=this;h.clearRect(g,g,c,l),h.fillText(e,g-s,g+o);let y=h.getImageData(g,g,c,l);v.fill(Uy,0,f),_.fill(0,0,f);let b=3;for(let e=0;e<l;e++){let t=(e+g)*u+g;for(let e=0;e<c;e++,b+=4,t++){let e=y.data[b];if(e===0)continue;let n=Wy[e];v[t]=Math.max(0,n),_[t]=Math.max(0,-n)}}Ky(v,0,0,u,d,u,this.f,this.v,this.z,g);let x=Math.min(g,1);Ky(_,g-x,g-x,c+2*x,l+2*x,u,this.f,this.v,this.z);let S=255/this.radius,C=255*(1-this.cutoff);for(let e=0;e<f;e++){let t=Math.sqrt(v[e])-Math.sqrt(_[e]);p[e]=C-S*t}return m}};function Ky(e,t,n,r,i,a,o,s,c,l=0){for(let u=t+l;u<t+r-l;u++)qy(e,n*a+u,a,i,o,s,c);for(let l=n;l<n+i;l++)qy(e,l*a+t,1,r,o,s,c)}function qy(e,t,n,r,i,a,o){a[0]=0,o[0]=-0x56bc75e2d63100000,o[1]=Uy,i[0]=e[t];for(let s=1,c=0;s<r;s++){let r=i[s]=e[t+s*n],l=s*s,u;do{let e=a[c];u=(r-i[e]+l-e*e)/(s-e)/2}while(u<=o[c]&&--c>-1);c++,a[c]=s,o[c]=u,o[c+1]=Uy}for(let s=0,c=0;s<r;s++){for(;o[c+1]<s;)c++;let r=a[c],l=s-r;e[t+s*n]=i[r]+l*l}}var Jy=B.layout_symbol[`text-font`].default.join(`,`),Yy=(e,t)=>{let n=new Gy(e);return n.buffer=t,n},Xy={vertical:`vert`};function Zy(e,t){return e.bitmap.width===t.bitmap.width&&e.bitmap.height===t.bitmap.height&&e.metrics.width===t.metrics.width&&e.metrics.height===t.metrics.height&&e.metrics.left===t.metrics.left&&e.metrics.top===t.metrics.top&&e.metrics.advance===t.metrics.advance&&e.bitmap.data.every((e,n)=>e===t.bitmap.data[n])}var Qy=class{constructor(e,t,n,r=Yy){this.rasterizedGlyphs=new WeakMap,this.requestManager=e,this.localIdeographFontFamily=t,this.entries={},this.lang=n,this.fontFaceManager=new Hy(e),this.createRasterizer=r}setURL(e){this.url=e}setFontFaces(e){this.fontFaceManager.setFontFaces(e),this.entries={}}async getGlyphs(e){let t=[],n=this.fontFaceManager.hasFontFaces();for(let r in e)for(let i in e[r])if(!Xy[i]||n)for(let n of e[r][i])t.push(this._getAndCacheGlyphsPromise(r,n,i));let r=await Promise.all(t),i={};for(let{stack:e,id:t,variant:n,glyph:a}of r)i[e]||={},i[e][n]||={},i[e][n][t]=a&&{id:a.id,bitmap:a.bitmap.clone(),metrics:a.metrics};return i}async _getAndCacheGlyphsPromise(e,t,n){this.entries[e]??={glyphs:{default:{}},requests:{},ranges:{}};let r=this.entries[e],i=r.glyphs[n]||={},a=i[t];if(a!==void 0)return{stack:e,id:t,variant:n,glyph:a};if(n!=="default"){let o=Xy[n];return a=o?await this._drawAlternateGlyph(r,e,t,o):null,i[t]=a,{stack:e,id:t,variant:n,glyph:a}}let o=t.codePointAt(0),s=this.fontFaceManager.hasFontFaces()?await this.fontFaceManager.getFontFamily(e,o,`normal`):null;return s?(a=await this._drawGlyph(r,e,t,s),i[t]=a,{stack:e,id:t,variant:n,glyph:a}):!this.url||Rg(t)||this._charUsesLocalIdeographFontFamily(o)||tg(o)?(a=await this._drawGlyph(r,e,t),i[t]=a,{stack:e,id:t,variant:n,glyph:a}):{...await this._downloadAndCacheRangePromise(e,t),variant:n}}async _drawAlternateGlyph(e,t,n,r){let i=await this._getFontFaceTinySDF(e,t,n,r);if(!i||this.entries[t]!==e)return null;let a=i.draw(n);if(!a.glyphWidth||!a.glyphHeight)return null;let o=await this._getFontFaceTinySDF(e,t,n,`normal`);if(!o||this.entries[t]!==e)return null;let s=this._createGlyph(n,a);return Zy(this._getRasterizedGlyph(o,n),s)?null:s}async _downloadAndCacheRangePromise(e,t){let n=t.codePointAt(0),r=this.entries[e],i=Math.floor(n/256);if(r.ranges[i])return{stack:e,id:t,glyph:null};r.requests[i]||=this._loadGlyphRange(e,i);try{let a=await r.requests[i];for(let e in a)r.glyphs.default[String.fromCodePoint(+e)]=a[+e];return r.ranges[i]=!0,{stack:e,id:t,glyph:a[n]||null}}catch(a){let o=await this._drawGlyph(r,e,t);return r.glyphs.default[t]=o,this._warnOnMissingGlyphRange(o,i,n,ot(a)),{stack:e,id:t,glyph:o}}}async _loadGlyphRange(e,t){let n=t*256,r=n+255,i=await Wn(await this.requestManager.transformRequest(this.url.replace(`{fontstack}`,e).replace(`{range}`,`${n}-${r}`),`Glyphs`),new AbortController);if(!i?.data)throw Error(`Could not load glyph range. range: ${t}, ${n}-${r}`);let a={};for(let e of k_(i.data))a[e.id]=e;return a}_warnOnMissingGlyphRange(e,t,n,r){let i=t*256;I(`Unable to load glyph range ${t}, ${i}-${i+255}. Rendering codepoint U+${n.toString(16).padStart(4,`0`).toUpperCase()} locally instead. ${r}`)}_charUsesLocalIdeographFontFamily(e){return!!this.localIdeographFontFamily&&ng(e)}async _drawGlyph(e,t,n,r){let i=await this._getTinySDF(e,t,n,r);return this._getRasterizedGlyph(i,n)}_getRasterizedGlyph(e,t){let n=this.rasterizedGlyphs.get(e);return n||(n={},this.rasterizedGlyphs.set(e,n)),n[t]??=this._createGlyph(t,e.draw(t)),n[t]}_createGlyph(e,t){let n=/^\p{gc=Cf}+$/u.test(e);return{id:e.codePointAt(0),bitmap:new Of({width:t.width||60,height:t.height||60},t.data),metrics:{width:n?0:t.glyphWidth/2||24,height:t.glyphHeight/2||24,left:t.glyphLeft/2+.5||0,top:t.glyphTop/2-27.5||-8,advance:n?0:t.glyphAdvance/2||24,isDoubleResolution:!0}}}async _getFontFaceTinySDF(e,t,n,r){if(this.entries[t]!==e)return null;let i=await this.fontFaceManager.getFontFamily(t,n.codePointAt(0),r);return!i||this.entries[t]!==e?null:this._getTinySDF(e,t,n,i)}_getTinySDF(e,t,n,r){let i=Rg(n);if(r){let t=i?`clusterTinySDFs`:`fontFaceTinySDFs`;return e[t]??={},e[t][r]||=this._createTinySDF(r,!1,i?3:1),e[t][r]}let a=t===Jy&&this.localIdeographFontFamily!==``&&this._charUsesLocalIdeographFontFamily(n.codePointAt(0)),o=a?this.localIdeographFontFamily:t;if(i)return e.clusterTinySDFs??={},e.clusterTinySDFs[o]||=this._createTinySDF(o,!0,3),e.clusterTinySDFs[o];let s=a?`ideographTinySDF`:`tinySDF`;return e[s]||=this._createTinySDF(o),e[s]}async _createTinySDF(e,t=!0,n=1){let r=e?e.split(`,`):[];r.push(`sans-serif`);let i=r.map(e=>/[-\w]+/.test(e)?e:`'${CSS.escape(e)}'`).join(`,`),a=t?this._fontWeight(r[0]):void 0,o=t?this._fontStyle(r[0]):`normal`;if(typeof document<`u`&&document.fonts?.load)try{await document.fonts.load(`${o} ${a||`normal`} 48px ${i}`)}catch(e){I(`Failed to load font "${i}": ${ot(e).message}`)}return this.createRasterizer({fontSize:48,buffer:Math.max(6,Math.ceil(48*(n-1)/4)),radius:16,cutoff:.25,fontFamily:i,fontWeight:a,fontStyle:o,lang:this.lang},6)}_fontStyle(e){return/italic/i.test(e)?`italic`:/oblique/i.test(e)?`oblique`:`normal`}_fontWeight(e){let t={thin:100,hairline:100,"extra light":200,"ultra light":200,light:300,normal:400,regular:400,medium:500,semibold:600,demibold:600,bold:700,"extra bold":800,"ultra bold":800,black:900,heavy:900,"extra black":950,"ultra black":950},n;for(let[r,i]of Object.entries(t))RegExp(`\\b${r}\\b`,`i`).test(e)&&(n=`${i}`);return n}destroy(){for(let e in this.entries){let t=this.entries[e];t.tinySDF=null,t.ideographTinySDF=null,t.fontFaceTinySDFs={},t.glyphs={default:{}},t.requests={},t.ranges={}}this.entries={},this.fontFaceManager.destroy()}},$y,eb=()=>$y||=new Nl({anchor:new q(B.light.anchor,`anchor`),position:new q(B.light.position,`position`),color:new q(B.light.color,`color`),intensity:new q(B.light.intensity,`intensity`)}),tb=class extends Qn{constructor(e,t){super(),this._transitionable=new Sl(eb(),`light`,t),this.setLight(e),this._transitioning=this._transitionable.untransitioned(),this.recalculate(new yl(0))}getLight(){return this._transitionable.serialize()}getEvaluated(){return{anchor:this.properties.get(`anchor`),position:this.properties.get(`position`),color:this.properties.get(`color`),intensity:this.properties.get(`intensity`)}}setLight(e,t={}){this._validate(il.light,e,t)||this._transitionable.setValues(e)}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}applyGlobalStateChange(e,t,n){this._transitioning=this._transitionable.applyGlobalStateChange(e,t,this._transitioning,n)}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e)}_validate(e,t,n){return ll(this,e,{value:t},n)}},nb,rb=()=>nb||=new Nl({"sky-color":new q(B.sky[`sky-color`],`sky-color`),"horizon-color":new q(B.sky[`horizon-color`],`horizon-color`),"fog-color":new q(B.sky[`fog-color`],`fog-color`),"fog-ground-blend":new q(B.sky[`fog-ground-blend`],`fog-ground-blend`),"horizon-fog-blend":new q(B.sky[`horizon-fog-blend`],`horizon-fog-blend`),"sky-horizon-blend":new q(B.sky[`sky-horizon-blend`],`sky-horizon-blend`),"atmosphere-blend":new q(B.sky[`atmosphere-blend`],`atmosphere-blend`)}),ib=class extends Qn{constructor(e,t){super(),this._transitionable=new Sl(rb(),`sky`,t),this.setSky(e),this._transitioning=this._transitionable.untransitioned(),this.recalculate(new yl(0))}setSky(e,t={}){return!this._validate(il.sky,e,t)&&(e||={"sky-color":`transparent`,"horizon-color":`transparent`,"fog-color":`transparent`,"fog-ground-blend":1,"atmosphere-blend":0},this._transitionable.setValues(e),!0)}getSky(){return this._transitionable.serialize()}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}applyGlobalStateChange(e,t,n){this._transitioning=this._transitionable.applyGlobalStateChange(e,t,this._transitioning,n)}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e)}_validate(e,t,n={}){return ll(this,e,{value:t},n)}getEvaluated(){return{"sky-color":this.properties.get(`sky-color`),"horizon-color":this.properties.get(`horizon-color`),"fog-color":this.properties.get(`fog-color`),"fog-ground-blend":this.properties.get(`fog-ground-blend`),"horizon-fog-blend":this.properties.get(`horizon-fog-blend`),"sky-horizon-blend":this.properties.get(`sky-horizon-blend`),"atmosphere-blend":this.properties.get(`atmosphere-blend`)}}};function ab(e){return e<60?0:e<70?(e-60)/10:1}var ob=class{constructor(e,t){this.width=e,this.height=t,this.nextRow=0,this.data=new Uint8Array(this.width*this.height),this.dashEntry={}}getDash(e,t){let n=e.join(`,`)+String(t);return this.dashEntry[n]||=this.addDash(e,t),this.dashEntry[n]}getDashRanges(e,t,n){let r=e.length%2==1,i=[],a=r?-e[e.length-1]*n:0,o=e[0]*n,s=!0;i.push({left:a,right:o,isDash:s,zeroLength:e[0]===0});let c=e[0];for(let t=1;t<e.length;t++){s=!s;let r=e[t];a=c*n,c+=r,o=c*n,i.push({left:a,right:o,isDash:s,zeroLength:r===0})}return i}addRoundDash(e,t,n){let r=t/2;for(let t=-n;t<=n;t++){let i=this.nextRow+n+t,a=this.width*i,o=0,s=e[o];for(let i=0;i<this.width;i++){i/s.right>1&&(s=e[++o]);let c=Math.abs(i-s.left),l=Math.abs(i-s.right),u=Math.min(c,l),d,f=t/n*(r+1);if(s.isDash){let e=r-Math.abs(f);d=Math.sqrt(u*u+e*e)}else d=r-Math.sqrt(u*u+f*f);this.data[a+i]=Math.max(0,Math.min(255,d+128))}}}addRegularDash(e){for(let t=e.length-1;t>=0;--t){let n=e[t],r=e[t+1];n.zeroLength?e.splice(t,1):r?.isDash===n.isDash&&(r.left=n.left,e.splice(t,1))}let t=e[0],n=e[e.length-1];t.isDash===n.isDash&&(t.left=n.left-this.width,n.right=t.right+this.width);let r=this.width*this.nextRow,i=0,a=e[i];for(let t=0;t<this.width;t++){t/a.right>1&&(a=e[++i]);let n=Math.abs(t-a.left),o=Math.abs(t-a.right),s=Math.min(n,o),c=a.isDash?s:-s;this.data[r+t]=Math.max(0,Math.min(255,c+128))}}addDash(e,t){let n=t?7:0,r=2*n+1;if(this.nextRow+r>this.height)return I(`LineAtlas out of space`),null;let i=0;for(let t of e)i+=t;if(i!==0){let r=this.width/i,a=this.getDashRanges(e,this.width,r);t?this.addRoundDash(a,r,n):this.addRegularDash(a)}let a={y:this.nextRow+n,height:2*n,width:i};return this.nextRow+=r,this.dirty=!0,a}bind(e){let t=e.gl;this.texture?(t.bindTexture(t.TEXTURE_2D,this.texture),this.dirty&&(this.dirty=!1,t.texSubImage2D(t.TEXTURE_2D,0,0,0,this.width,this.height,t.ALPHA,t.UNSIGNED_BYTE,this.data))):(this.texture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.texture),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texImage2D(t.TEXTURE_2D,0,t.ALPHA,this.width,this.height,0,t.ALPHA,t.UNSIGNED_BYTE,this.data))}},sb=class{constructor(e){this._methodToThrottle=e,this._triggered=!1,this._channel=new MessageChannel,this._channel.port2.onmessage=()=>this._invoke()}trigger(){this._triggered||(this._triggered=!0,this._channel?.port1.postMessage(!0),setTimeout(()=>this._invoke(),0))}_invoke(){this._triggered&&(this._triggered=!1,this._methodToThrottle())}remove(){delete this._channel,this._methodToThrottle=()=>{}}},cb={once:!0},lb=class{constructor(e,t){this.target=e,this.mapId=t,this.resolveRejects={},this.tasks={},this.taskQueue=[],this.abortControllers={},this.messageHandlers={},this.invoker=new sb(()=>this.process()),this.subscription=$t(this.target,`message`,e=>this.receive(e),!1),this.globalScope=Wt(self)?e:window}registerMessageHandler(e,t){this.messageHandlers[e]=t}unregisterMessageHandler(e){delete this.messageHandlers[e]}sendAsync(e,t){return new Promise((n,r)=>{let i=Math.round(Math.random()*0xde0b6b3a7640000).toString(36).substring(0,10),a=t?$t(t.signal,`abort`,()=>{a?.unsubscribe(),delete this.resolveRejects[i];let n={id:i,type:`<cancel>`,origin:location.origin,targetMapId:e.targetMapId,sourceMapId:this.mapId};this.target.postMessage(n),r(new mn(t.signal.reason))},cb):null;this.resolveRejects[i]={resolve:e=>{a?.unsubscribe(),n(e)},reject:e=>{a?.unsubscribe(),r(e)}};let o=[],s={...e,id:i,sourceMapId:this.mapId,origin:location.origin,data:gl(e.data,o)};this.target.postMessage(s,{transfer:o})})}receive(e){let t=e.data,n=t.id,r=[`file://`,`resource://android`,`null`],i=[t.origin,location.origin],a=t.origin===location.origin,o=i.some(e=>r.includes(e));if((a||o)&&!(t.targetMapId&&this.mapId!==t.targetMapId)){if(t.type===`<cancel>`){delete this.tasks[n];let e=this.abortControllers[n];delete this.abortControllers[n],e&&e.abort()}else Wt(self)||t.mustQueue?(this.tasks[n]=t,this.taskQueue.push(n),this.invoker.trigger()):this.processTask(n,t)}}process(){if(this.taskQueue.length===0)return;let e=this.taskQueue.shift(),t=this.tasks[e];delete this.tasks[e],this.taskQueue.length>0&&this.invoker.trigger(),t&&this.processTask(e,t)}async processTask(e,t){if(t.type===`<response>`){let n=this.resolveRejects[e];if(delete this.resolveRejects[e],!n)return;t.error?n.reject(ot(_l(t.error))):n.resolve(_l(t.data));return}if(!this.messageHandlers[t.type]){this.completeTask(e,null,null);return}let n=_l(t.data),r=new AbortController;this.abortControllers[e]=r;try{let i=await this.messageHandlers[t.type](t.sourceMapId,n,r);this.completeTask(e,null,i)}catch(t){this.completeTask(e,ot(t))}}completeTask(e,t,n){let r=[];delete this.abortControllers[e];let i={id:e,type:`<response>`,sourceMapId:this.mapId,origin:location.origin,error:t?gl(t):null,data:gl(n,r)};this.target.postMessage(i,{transfer:r})}remove(){this.invoker.remove(),this.subscription.unsubscribe()}};function ub(e){if(!e)return!1;let t=globalThis.location;if(!t)return!1;try{return new URL(e,t.href).origin!==t.origin}catch{return!1}}function db(){let e=import.meta.url;if(!/^https?:/.test(e))return``;let t=e.endsWith(`-dev.mjs`)?`maplibre-gl-worker-dev.mjs`:`maplibre-gl-worker.mjs`,n=new URL(`./${t}`,e);return n.searchParams.set(`v`,d),n.href}function fb(e){return e.endsWith(`.cjs`)||e.split(/[?#]/)[0].endsWith(`.cjs`)}function pb(e,t){if(t)try{return new Worker(e,{type:`module`})}catch(e){console.warn(`Module worker not supported, falling back to classic worker`,e)}return new Worker(e)}async function mb(e){let t=await fetch(e);if(!t.ok)throw Error(`Failed to fetch worker script (${t.status}): ${e}`);let n=await t.text(),r=new Blob([n],{type:`text/javascript`});return URL.createObjectURL(r)}function hb(e){let t=new Blob([`import ${JSON.stringify(new URL(e,import.meta.url).href)}`],{type:`text/javascript`});return URL.createObjectURL(t)}async function gb(){let e=Mn.WORKER_URL||db(),t=!fb(e);if(!ub(e))return pb(e,t);if(t){let n=hb(e);try{return pb(n,t)}finally{URL.revokeObjectURL(n)}}let n=await mb(e);try{return pb(n,t)}finally{URL.revokeObjectURL(n)}}var _b=`maplibre_preloaded_worker_pool`,vb=class e{constructor(){this.active={},this.workersPromise=null}async acquire(t){if(this.active[t]=!0,!this.workersPromise){let t=[];for(;t.length<e.workerCount;)t.push(gb());this.workersPromise=Promise.all(t)}return(await this.workersPromise).slice()}release(e){if(delete this.active[e],this.numActive()===0&&this.workersPromise){let e=this.workersPromise;this.workersPromise=null,e.then(e=>{for(let t of e)t.terminate()})}}isPreloaded(){return!!this.active[_b]}numActive(){return Object.keys(this.active).length}},yb=Math.floor(bn.hardwareConcurrency/2);vb.workerCount=qt(globalThis)?Math.max(Math.min(yb,3),1):1;var bb;function xb(){return bb||=new vb,bb}function Sb(){xb().acquire(_b)}function Cb(){let e=bb;e&&(e.isPreloaded()&&e.numActive()===1?(e.release(_b),bb=null):console.warn(`Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()`))}var wb=class extends Qn{constructor(e,t){super(),this.workerPool=e,this.actors=[],this.currentActor=0,this.id=t,this.removed=!1,this.workerErrorSubscriptions=[],this.actorsPromise=this.initActors(t)}async initActors(e){let t=await this.workerPool.acquire(e);if(this.removed)return[];if(this.actors=t.map((t,n)=>{this.workerErrorSubscriptions.push($t(t,`error`,()=>{this.fire(new R(Error(`Worker failed to load. Check that the worker URL is correct.`)))},!1));let r=new lb(t,e);return r.name=`Worker ${n}`,r}),!this.actors.length)throw Error(`No actors found`);return this.actors}async broadcast(e,t){let n=await this.actorsPromise;return Promise.all(n.map(n=>n.sendAsync({type:e,data:t})))}async getActor(){let e=await this.actorsPromise;return this.currentActor=(this.currentActor+1)%e.length,e[this.currentActor]}async waitForInitComplete(){this.actors.length===0&&await this.actorsPromise}getReadyActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(e=!0){this.removed=!0;for(let e of this.actors)e.remove();for(let e of this.workerErrorSubscriptions)e.unsubscribe();this.actors=[],this.workerErrorSubscriptions=[],this.setEventedParent(null),e&&this.workerPool.release(this.id)}async registerMessageHandler(e,t){let n=await this.actorsPromise;for(let r of n)r.registerMessageHandler(e,t)}async unregisterMessageHandler(e){let t=await this.actorsPromise;for(let n of t)n.unregisterMessageHandler(e)}},Tb;function Eb(){return Tb||(Tb=new wb(xb(),In),Tb.registerMessageHandler(`GR`,(e,t,n)=>Hn(t,n))),Tb}function Db(e,t){let n=D();te(n,n,[1,1,0]),ne(n,n,[e.width*.5,e.height*.5,1]);let r=e.getFastPathSimpleProjectionMatrix(t);return r?ee(n,n,r):n}function Ob(e,t,n){if(e)for(let r of e){let e=t[r];if(e?.source===n&&e.type===`fill-extrusion`)return!0}else for(let e in t){let r=t[e];if(r.source===n&&r.type===`fill-extrusion`)return!0}return!1}function kb(e,t,n,r,i,a,o){let s=Ob(i?.layers??null,t,e.id),c=a.maxPitchScaleFactor(),l=e.tilesIn(r,c,s);l.sort(Mb);let u=[];for(let r of l)u.push({wrappedTileID:r.tileID.wrapped().key,queryResults:r.tile.queryRenderedFeatures(t,n,e.getState(),r.queryGeometry,r.cameraQueryGeometry,r.scale,i,a,c,Db(a,r.tileID),o?(e,t)=>o(r.tileID,e,t):void 0)});return Pb(Nb(u),e)}function Ab(e,t,n,r,i,a,o){let s={},c=a.queryRenderedSymbols(r),l=[];for(let e of Object.keys(c).map(Number))l.push(o[e]);l.sort(Mb);for(let n of l){let r=n.featureIndex.lookupSymbolFeatures(c[n.bucketInstanceId],t,n.bucketIndex,n.sourceLayerIndex,{filterSpec:i.filter,globalState:i.globalState,worldCoordinateHelper:a.transform.worldCoordinateHelper},i.layers,i.availableImages,e);for(let e in r){s[e]||=[];let t=r[e];t.sort((e,t)=>{let r=n.featureSortOrder;if(r){let n=r.indexOf(e.featureIndex);return r.indexOf(t.featureIndex)-n}return t.featureIndex-e.featureIndex});for(let n of t)s[e].push(n)}}return Fb(s,e,n)}function jb(e,t){let n=e.getRenderableIds().map(t=>e.getTileByID(t)),r=[],i={};for(let e of n){let n=e.tileID.canonical.key;i[n]||(i[n]=!0,e.querySourceFeatures(r,t))}return r}function Mb(e,t){let n=e.tileID,r=t.tileID;return n.overscaledZ-r.overscaledZ||n.canonical.y-r.canonical.y||n.wrap-r.wrap||n.canonical.x-r.canonical.x}function Nb(e){let t={},n={};for(let{queryResults:r,wrappedTileID:i}of e){n[i]||={};let e=n[i];for(let n in r){let i=r[n];e[n]||={};let a=e[n];t[n]||=[];for(let e of i)a[e.featureIndex]||(a[e.featureIndex]=!0,t[n].push(e))}}return t}function Pb(e,t){for(let n in e)for(let r of e[n])Ib(r,t);return e}function Fb(e,t,n){for(let r in e)for(let i of e[r]){let e=n[t[r].source];Ib(i,e)}return e}function Ib(e,t){let n=e.feature,r=t.getFeatureState(n.layer[`source-layer`],n.id);n.source=n.layer.source,n.layer[`source-layer`]&&(n.sourceLayer=n.layer[`source-layer`]),n.state=r}async function Lb(e,t,n,r){let i=e;if(e.url?i=(await Un(await t.transformRequest(e.url,`Source`),n)).data:await bn.frameAsync(n,r),!i)return null;let a=Ot(F(i,e),[`tiles`,`minzoom`,`maxzoom`,`attribution`,`bounds`,`scheme`,`tileSize`,`encoding`]);return`vector_layers`in i&&i.vector_layers&&(a.vectorLayerIds=i.vector_layers.map(e=>e.id)),a}var Rb=class e{constructor(e,t){e&&(t?this.setSouthWest(e).setNorthEast(t):Array.isArray(e)&&(e.length===4?this.setSouthWest([e[0],e[1]]).setNorthEast([e[2],e[3]]):this.setSouthWest(e[0]).setNorthEast(e[1])))}setNorthEast(e){return this._ne=e instanceof Q?new Q(e.lng,e.lat):Q.convert(e),this}setSouthWest(e){return this._sw=e instanceof Q?new Q(e.lng,e.lat):Q.convert(e),this}extend(t){let n=this._sw,r=this._ne,i,a;if(t instanceof Q)i=t,a=t;else if(t instanceof e){if(i=t._sw,a=t._ne,!i||!a)return this}else{if(Array.isArray(t)){if(t.length===4||t.every(Array.isArray)){let n=t;return this.extend(e.convert(n))}{let e=t;return this.extend(Q.convert(e))}}return t&&(`lng`in t||`lon`in t)&&`lat`in t?this.extend(Q.convert(t)):this}return!n&&!r?(this._sw=new Q(i.lng,i.lat),this._ne=new Q(a.lng,a.lat)):(n.lng=Math.min(i.lng,n.lng),n.lat=Math.min(i.lat,n.lat),r.lng=Math.max(a.lng,r.lng),r.lat=Math.max(a.lat,r.lat)),this}getCenter(){return new Q((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new Q(this.getWest(),this.getNorth())}getSouthEast(){return new Q(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(e){let{lng:t,lat:n}=Q.convert(e),r=this._sw.lat<=n&&n<=this._ne.lat,i=this._sw.lng<=t&&t<=this._ne.lng;return this._sw.lng>this._ne.lng&&(i=this._sw.lng>=t&&t>=this._ne.lng),r&&i}intersects(t){if(t=e.convert(t),!(t.getNorth()>=this.getSouth()&&t.getSouth()<=this.getNorth()))return!1;let n=Math.abs(this.getEast()-this.getWest()),r=Math.abs(t.getEast()-t.getWest());if(n>=360||r>=360)return!0;let i=Dt(this.getWest(),-180,180),a=Dt(this.getEast(),-180,180),o=Dt(t.getWest(),-180,180),s=Dt(t.getEast(),-180,180),c=i>a,l=o>s;return c&&l?!0:c?s>=i||o<=a:l?a>=o||i<=s:o<=a&&s>=i}static convert(t){return t instanceof e||!t?t:new e(t)}static fromLngLat(t,n=0){let r=360*n/40075017,i=r/Math.cos(Math.PI/180*t.lat);return new e(new Q(t.lng-i,t.lat-r),new Q(t.lng+i,t.lat+r))}adjustAntiMeridian(){let t=new Q(this._sw.lng,this._sw.lat),n=new Q(this._ne.lng,this._ne.lat);return t.lng>n.lng?new e(t,new Q(n.lng+360,n.lat)):new e(t,n)}},zb=class{constructor(e,t,n,r){this.bounds=Rb.convert(this.validateBounds(e)),this.minzoom=t||0,this.maxzoom=n||24,this._worldBox=Qm(r,this.bounds.getWest(),this.bounds.getSouth(),this.bounds.getEast(),this.bounds.getNorth())}validateBounds(e){return!Array.isArray(e)||e.length!==4?[-180,-90,180,90]:[Math.max(-180,e[0]),Math.max(-90,e[1]),Math.min(180,e[2]),Math.min(90,e[3])]}contains(e){let t=2**e.z,n={minX:Math.floor(this._worldBox.minX*t),minY:Math.floor(this._worldBox.minY*t),maxX:Math.ceil(this._worldBox.maxX*t),maxY:Math.ceil(this._worldBox.maxY*t)};return e.x>=n.minX&&e.x<n.maxX&&e.y>=n.minY&&e.y<n.maxY}},Bb=class extends Qn{constructor(e,t,n,r){if(super(),this.id=e,this.dispatcher=n,this.type=`vector`,this.minzoom=0,this.maxzoom=22,this.scheme=`xyz`,this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,F(this,Ot(t,[`url`,`scheme`,`tileSize`,`promoteId`,`encoding`])),this._options=F({type:`vector`},t),this._collectResourceTiming=t.collectResourceTiming,this.tileSize!==512)throw Error(`vector tile sources must have a tileSize of 512`);this.setEventedParent(r)}async load(e=!1){this._loaded=!1,this.fire(new nr(`dataloading`)),this._tileJSONRequest=new AbortController;try{let t=await Lb(this._options,this.map._requestManager,this._tileJSONRequest,this.map._ownerWindow);this._tileJSONRequest=null,this._loaded=!0,t&&(F(this,t),t.bounds&&(this.tileBounds=new zb(t.bounds,this.minzoom,this.maxzoom,this.map.style.projection.worldCoordinateHelper)),this.fire(new nr(`data`,{sourceDataType:`metadata`})),this.fire(new nr(`data`,{sourceDataType:`content`,sourceDataChanged:e})))}catch(e){this._tileJSONRequest=null,this._loaded=!0,hn(e)||this.fire(new R(ot(e)))}}loaded(){return this._loaded}hasTile(e){return!this.tileBounds||this.tileBounds.contains(e.canonical)}onAdd(e){this.map=e,this.load()}setSourceProperty(e){this._tileJSONRequest&&this._tileJSONRequest.abort(),e(),this.load(!0)}setTiles(e){return this.setSourceProperty(()=>{this.tiles=e,this._options.tiles=e}),this}setUrl(e){return this.setSourceProperty(()=>{this.url=e,this._options.url=e}),this}onRemove(){this._tileJSONRequest&&=(this._tileJSONRequest.abort(),null)}serialize(){return F({},this._options)}async loadTile(e){let t=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme,this.map.style.projection.worldCoordinateHelper.tileMatrixSet),n={request:await this.map._requestManager.transformRequest(t,`Tile`),uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,tileSize:this.tileSize*e.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,subdivisionGranularity:this.map.style.projection.subdivisionGranularity,encoding:this.encoding,overzoomParameters:await this._getOverzoomParameters(e),etag:e.etag};if(n.request.collectResourceTiming=this._collectResourceTiming,await this.dispatcher.waitForInitComplete(),e.aborted)return;let r=`RT`;if(!e.actor||e.state===`expired`)e.actor=this.dispatcher.getReadyActor(),r=`LT`;else if(e.state===`loading`)return new Promise((t,n)=>{e.reloadPromise={resolve:t,reject:n}});e.abortController=new AbortController;try{let t=await e.actor.sendAsync({type:r,data:n},e.abortController);if(delete e.abortController,e.aborted)return;this._afterTileLoadWorkerResponse(e,t);let i={};return t?.etagUnmodified&&(i.unmodified=!0),i}catch(t){if(delete e.abortController,e.aborted||hn(t))return;if(t&&t.status!==404)throw t;this._afterTileLoadWorkerResponse(e,null)}}async _getOverzoomParameters(e){if(e.tileID.canonical.z<=this.maxzoom||this.map._zoomLevelsToOverscale===void 0)return;let t=e.tileID.scaledTo(this.maxzoom).canonical,n=t.url(this.tiles,this.map.getPixelRatio(),this.scheme,this.map.style.projection.worldCoordinateHelper.tileMatrixSet);return{maxZoomTileID:t,overzoomRequest:await this.map._requestManager.transformRequest(n,`Tile`)}}_afterTileLoadWorkerResponse(e,t){if(t?.resourceTiming&&(e.resourceTiming=t.resourceTiming),t&&this.map._refreshExpiredTiles&&e.setExpiryData(t),e.etag=t?.etag,e.loadVectorData(t,this.map.style),e.reloadPromise){let t=e.reloadPromise;e.reloadPromise=null,this.loadTile(e).then(t.resolve).catch(t.reject)}}async abortTile(e){e.abortController&&(e.abortController.abort(),delete e.abortController),e.actor&&await e.actor.sendAsync({type:`AT`,data:{uid:e.uid,type:this.type,source:this.id}})}async unloadTile(e){e.unloadVectorData(),e.actor&&await e.actor.sendAsync({type:`RMT`,data:{uid:e.uid,type:this.type,source:this.id}})}hasTransition(){return!1}},Vb=class extends Qn{constructor(e,t,n,r){super(),this.id=e,this.dispatcher=n,this.setEventedParent(r),this.type=`raster`,this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme=`xyz`,this.tileSize=512,this._loaded=!1,this._premultiplyAlpha=!0,this._options=F({type:`raster`},t),F(this,Ot(t,[`url`,`scheme`,`tileSize`]))}async load(e=!1){this._loaded=!1,this.fire(new nr(`dataloading`)),this._tileJSONRequest=new AbortController;try{let t=await Lb(this._options,this.map._requestManager,this._tileJSONRequest,this.map._ownerWindow);this._tileJSONRequest=null,this._loaded=!0,t&&(F(this,t),t.bounds&&(this.tileBounds=new zb(t.bounds,this.minzoom,this.maxzoom,this.map.style.projection.worldCoordinateHelper)),this.fire(new nr(`data`,{sourceDataType:`metadata`})),this.fire(new nr(`data`,{sourceDataType:`content`,sourceDataChanged:e})))}catch(e){this._tileJSONRequest=null,this._loaded=!0,hn(e)||this.fire(new R(ot(e)))}}loaded(){return this._loaded}onAdd(e){this.map=e,this.load()}onRemove(){this._tileJSONRequest&&=(this._tileJSONRequest.abort(),null)}setSourceProperty(e){this._tileJSONRequest&&=(this._tileJSONRequest.abort(),null),e(),this.load(!0)}setTiles(e){return this.setSourceProperty(()=>{this.tiles=e,this._options.tiles=e}),this}setUrl(e){return this.setSourceProperty(()=>{this.url=e,this._options.url=e}),this}serialize(){return F({},this._options)}setPremultiplyAlpha(e){return this._premultiplyAlpha===e||this.setSourceProperty(()=>{this._premultiplyAlpha=e}),this}hasTile(e){return!this.tileBounds||this.tileBounds.contains(e.canonical)}async loadTile(e){let t=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme,this.map.style.projection.worldCoordinateHelper.tileMatrixSet),n=this._premultiplyAlpha,r=n?void 0:{premultiplyAlpha:`none`};e.abortController=new AbortController;try{let i=await qn.transformAndGetImage(this.map._requestManager,t,`Tile`,e.abortController,this.map._refreshExpiredTiles,r);if(delete e.abortController,e.aborted){e.state=`unloaded`;return}if(i){this.map._refreshExpiredTiles&&(i.cacheControl||i.expires)&&e.setExpiryData({cacheControl:i.cacheControl,expires:i.expires});let t=this.map.painter.context,r=t.gl,a=i.data??new kf({width:1,height:1},new Uint8Array(4));e.texture=this.map.painter.getTileTexture(a.width),e.texture?e.texture.update(a,{useMipmap:!0,premultiply:n}):(e.texture=new Wf(t,a,r.RGBA,{useMipmap:!0,premultiply:n}),e.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE,r.LINEAR_MIPMAP_NEAREST)),e.state=`loaded`}}catch(t){if(delete e.abortController,e.aborted)e.state=`unloaded`;else if(t)throw e.state=`errored`,t}}async abortTile(e){e.abortController&&(e.abortController.abort(),delete e.abortController)}async unloadTile(e){e.texture&&this.map.painter.saveTileTexture(e.texture)}hasTransition(){return!1}};function Hb(e,t,n){return!(e<0||e>25||n<0||n>=2**e||t<0||t>=2**e)}function Ub(e,t,n){let{x:r,y:i}=n.worldFromLngLat(t.lng,t.lat);return!(e<0||e>25||i<0||i>=1||r<0||r>=1)}var Wb=class{constructor(e,t,n){if(!Hb(e,t,n))throw Error(`x=${t}, y=${n}, z=${e} outside of bounds. 0<=x<${2**e}, 0<=y<${2**e} 0<=z<=25 `);this.z=e,this.x=t,this.y=n,this.key=qb(0,e,e,t,n)}equals(e){return this.z===e.z&&this.x===e.x&&this.y===e.y}url(e,t,n,r=km){let i=Yb(this.z,this.x,this.y);return e[(this.x+this.y)%e.length].replace(/{prefix}/g,(this.x%16).toString(16)+(this.y%16).toString(16)).replace(/{z}/g,String(this.z)).replace(/{x}/g,String(this.x)).replace(/{y}/g,String(n===`tms`?2**this.z-this.y-1:this.y)).replace(/{ratio}/g,t>1?`@2x`:``).replace(/{quadkey}/g,i).replace(/{bbox-epsg-3857}/g,()=>Jb(this.x,this.y,this.z,km)).replace(/{bbox}/g,()=>Jb(this.x,this.y,this.z,r))}isChildOf(e){let t=this.z-e.z;return t>0&&e.x===this.x>>t&&e.y===this.y>>t}getTilePoint(e){let t=2**this.z;return new f((e.x*t-this.x)*N,(e.y*t-this.y)*N)}toString(){return`${this.z}/${this.x}/${this.y}`}},Gb=class{constructor(e,t){this.wrap=e,this.canonical=t,this.key=qb(e,t.z,t.z,t.x,t.y)}},Kb=class e{constructor(e,t,n,r,i){if(this.terrainRttPosMatrix32f=null,e<n)throw Error(`overscaledZ should be >= z; overscaledZ = ${e}; z = ${n}`);this.overscaledZ=e,this.wrap=t,this.canonical=new Wb(n,+r,+i),this.key=qb(t,e,n,r,i)}clone(){return new e(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(e){return this.overscaledZ===e.overscaledZ&&this.wrap===e.wrap&&this.canonical.equals(e.canonical)}scaledTo(t){if(t>this.overscaledZ)throw Error(`targetZ > this.overscaledZ; targetZ = ${t}; overscaledZ = ${this.overscaledZ}`);let n=this.canonical.z-t;return t>this.canonical.z?new e(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new e(t,this.wrap,t,this.canonical.x>>n,this.canonical.y>>n)}isOverscaled(){return this.overscaledZ>this.canonical.z}calculateScaledKey(e,t){if(e>this.overscaledZ)throw Error(`targetZ > this.overscaledZ; targetZ = ${e}; overscaledZ = ${this.overscaledZ}`);let n=this.canonical.z-e;return e>this.canonical.z?qb(this.wrap*+t,e,this.canonical.z,this.canonical.x,this.canonical.y):qb(this.wrap*+t,e,e,this.canonical.x>>n,this.canonical.y>>n)}isChildOf(e){if(e.wrap!==this.wrap||this.overscaledZ-e.overscaledZ<=0)return!1;if(e.overscaledZ===0)return this.overscaledZ>0;let t=this.canonical.z-e.canonical.z;return t<0?!1:e.canonical.x===this.canonical.x>>t&&e.canonical.y===this.canonical.y>>t}children(t){if(this.overscaledZ>=t)return[new e(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];let n=this.canonical.z+1,r=this.canonical.x*2,i=this.canonical.y*2;return[new e(n,this.wrap,n,r,i),new e(n,this.wrap,n,r+1,i),new e(n,this.wrap,n,r,i+1),new e(n,this.wrap,n,r+1,i+1)]}isLessThan(e){return this.wrap<e.wrap?!0:this.wrap>e.wrap?!1:this.overscaledZ<e.overscaledZ?!0:this.overscaledZ>e.overscaledZ?!1:this.canonical.x<e.canonical.x?!0:this.canonical.x>e.canonical.x?!1:this.canonical.y<e.canonical.y}wrapped(){return new e(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)}unwrapTo(t){return new e(this.overscaledZ,t,this.canonical.z,this.canonical.x,this.canonical.y)}overscaleFactor(){return 2**(this.overscaledZ-this.canonical.z)}toUnwrapped(){return new Gb(this.wrap,this.canonical)}toString(){return`${this.overscaledZ}/${this.canonical.x}/${this.canonical.y}`}getTilePoint(e){return this.canonical.getTilePoint(new zm(e.x-this.wrap,e.y))}normalizeCoordinates(t,n,r=N){if(t>=0&&t<r&&n>=0&&n<r)return{tileID:this,x:t,y:n};let i=Math.floor(t/r),a=Math.floor(n/r),o=t-i*r,s=n-a*r,c=this.canonical.z,l=1<<c,u=this.canonical.y+a;if(u<0||u>=l)return null;let d=this.canonical.x+i,f=this.wrap;return d<0?(f-=Math.ceil(-d/l),d=(d%l+l)%l):d>=l&&(f+=Math.floor(d/l),d%=l),{tileID:new e(this.overscaledZ,f,c,d,u),x:o,y:s}}};function qb(e,t,n,r,i){e*=2,e<0&&(e=e*-1-1);let a=1<<n;return(a*a*e+a*i+r).toString(36)+n.toString(36)+t.toString(36)}function Jb(e,t,n,r){let i=2**n,a=r.extentAtZoom0/i,[o,s]=r.origin,c=s-r.extentAtZoom0,l=i-t-1;return`${o+e*a},${c+l*a},${o+(e+1)*a},${c+(l+1)*a}`}function Yb(e,t,n){let r=``;for(let i=e;i>0;i--){let e=1<<i-1;r+=(t&e?1:0)+(n&e?2:0)}return r}function Xb(e,t){let n=Math.abs(e.wrap*2)-+(e.wrap<0),r=Math.abs(t.wrap*2)-+(t.wrap<0);return e.overscaledZ-t.overscaledZ||r-n||t.canonical.y-e.canonical.y||t.canonical.x-e.canonical.x}K(`CanonicalTileID`,Wb),K(`OverscaledTileID`,Kb,{omit:[`terrainRttPosMatrix32f`]});var Zb=class extends Vb{constructor(e,t,n,r){super(e,t,n,r),this.type=`raster-dem`,this.maxzoom=22,this._options=F({type:`raster-dem`},t),this.encoding=t.encoding||`mapbox`,this.redFactor=t.redFactor,this.greenFactor=t.greenFactor,this.blueFactor=t.blueFactor,this.baseShift=t.baseShift}async loadTile(e){let t=e.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme,this.map.style.projection.worldCoordinateHelper.tileMatrixSet);e.neighboringTiles=this._getNeighboringTiles(e.tileID),e.abortController=new AbortController;try{let n=await qn.transformAndGetImage(this.map._requestManager,t,`Tile`,e.abortController,this.map._refreshExpiredTiles,{colorSpaceConversion:`none`});if(delete e.abortController,e.aborted){e.state=`unloaded`;return}if(n){if(this.map._refreshExpiredTiles&&(n.cacheControl||n.expires)&&e.setExpiryData({cacheControl:n.cacheControl,expires:n.expires}),!n.data){e.state=`loaded`;return}let t=n.data,r=Jt(t)&&h()?t:await this.readImageNow(t),i={type:this.type,uid:e.uid,source:this.id,rawImageData:r,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};if(e.actor&&e.state!==`expired`&&e.state!==`reloading`)return;await this.dispatcher.waitForInitComplete(),e.actor&&e.state!==`expired`||(e.actor=this.dispatcher.getReadyActor()),e.dem=await e.actor.sendAsync({type:`LDT`,data:i}),e.needsHillshadePrepare=!0,e.needsTerrainPrepare=!0,e.needsColorReliefPrepare=!0,e.state=`loaded`}}catch(t){if(delete e.abortController,e.aborted)e.state=`unloaded`;else if(t)throw e.state=`errored`,t}}async readImageNow(e){if(typeof VideoFrame<`u`&&_()){let t=e.width+4,n=e.height+4;try{return new kf({width:t,height:n},await Qt(e,-2,-2,t,n))}catch{}}return bn.getImageData(e,2)}_getNeighboringTiles(e){let t=e.canonical,n=2**t.z,r=(t.x-1+n)%n,i=t.x===0?e.wrap-1:e.wrap,a=(t.x+1+n)%n,o=t.x+1===n?e.wrap+1:e.wrap,s={};return s[new Kb(e.overscaledZ,i,t.z,r,t.y).key]={backfilled:!1},s[new Kb(e.overscaledZ,o,t.z,a,t.y).key]={backfilled:!1},t.y>0&&(s[new Kb(e.overscaledZ,i,t.z,r,t.y-1).key]={backfilled:!1},s[new Kb(e.overscaledZ,e.wrap,t.z,t.x,t.y-1).key]={backfilled:!1},s[new Kb(e.overscaledZ,o,t.z,a,t.y-1).key]={backfilled:!1}),t.y+1<n&&(s[new Kb(e.overscaledZ,i,t.z,r,t.y+1).key]={backfilled:!1},s[new Kb(e.overscaledZ,e.wrap,t.z,t.x,t.y+1).key]={backfilled:!1},s[new Kb(e.overscaledZ,o,t.z,a,t.y+1).key]={backfilled:!1}),s}async unloadTile(e){e.demTexture&&this.map.painter.saveTileTexture(e.demTexture),e.fbo&&(e.fbo.destroy(),delete e.fbo),e.dem&&delete e.dem,delete e.neighboringTiles,e.state=`unloaded`,e.actor&&await e.actor.sendAsync({type:`RDT`,data:{type:this.type,uid:e.uid,source:this.id}})}};function Qb(e,t){return t?e.properties[t]:e.id}function $b(e,t){let n=new Map;if(e==null||e.type==null)return n;if(e.type===`Feature`){let r=Qb(e,t);return r==null?void 0:(n.set(r,e),n)}if(e.type===`FeatureCollection`){let r=new Set;for(let i of e.features){let e=Qb(i,t);if(e==null||r.has(e))return;r.add(e),n.set(e,i)}return n}}function ex(e,t,n){let r=[];if(t.removeAll)e.clear();else if(t.remove)for(let n of t.remove){let t=e.get(n);t&&(r.push(t.geometry),e.delete(n))}if(t.add)for(let i of t.add){let t=Qb(i,n);if(t==null)continue;let a=e.get(t);a&&r.push(a.geometry),r.push(i.geometry),e.set(t,i)}if(t.update)for(let n of t.update){let t=e.get(n.id);if(!t)continue;let i=!!n.newGeometry,a=n.removeAllProperties||n.removeProperties?.length>0||n.addOrUpdateProperties?.length>0;if(!i&&!a)continue;r.push(t.geometry);let o={...t};if(e.set(n.id,o),i&&(r.push(n.newGeometry),o.geometry=n.newGeometry),a){if(o.properties=n.removeAllProperties?{}:{...o.properties||{}},n.removeProperties)for(let e of n.removeProperties)delete o.properties[e];if(n.addOrUpdateProperties)for(let{key:e,value:t}of n.addOrUpdateProperties)o.properties[e]=t}}return r}function tx(e,t,n){if(!e)return t||{};if(!t)return e||{};let r=ix(e,n),i=ix(t,n);nx(r,i);let a={};if((r.removeAll||i.removeAll)&&(a.removeAll=!0),a.remove=new Set([...r.remove,...i.remove]),a.add=new Map([...r.add,...i.add]),a.update=new Map([...r.update,...i.update]),a.remove.size&&a.add.size)for(let e of a.add.keys())a.remove.delete(e);return ax(a)}function nx(e,t){t.removeAll&&(e.add.clear(),e.update.clear(),e.remove.clear(),t.remove.clear());for(let n of t.remove)e.add.delete(n),e.update.delete(n);for(let[n,r]of t.update){let i=e.update.get(n);i&&(t.update.set(n,rx(i,r)),e.update.delete(n))}}function rx(e,t){let n={id:e.id};if(t.removeAllProperties&&(delete e.removeProperties,delete e.addOrUpdateProperties,delete t.removeProperties),t.removeProperties&&e.addOrUpdateProperties){let n=new Set(t.removeProperties);e.addOrUpdateProperties=e.addOrUpdateProperties.filter(e=>!n.has(e.key))}return(e.removeAllProperties||t.removeAllProperties)&&(n.removeAllProperties=!0),(e.removeProperties||t.removeProperties)&&(n.removeProperties=[...e.removeProperties||[],...t.removeProperties||[]]),(e.addOrUpdateProperties||t.addOrUpdateProperties)&&(n.addOrUpdateProperties=[...e.addOrUpdateProperties||[],...t.addOrUpdateProperties||[]]),(e.newGeometry||t.newGeometry)&&(n.newGeometry=t.newGeometry||e.newGeometry),n}function ix(e,t){if(!e)return{};let n={};return n.removeAll=e.removeAll,n.remove=new Set(e.remove||[]),n.add=new Map(e.add?.map(e=>[Qb(e,t),e])),n.update=new Map(e.update?.map(e=>[e.id,e])),n}function ax(e){let t={};return e.removeAll&&(t.removeAll=e.removeAll),e.remove&&(t.remove=Array.from(e.remove)),e.add&&(t.add=Array.from(e.add.values())),e.update&&(t.update=Array.from(e.update.values())),t}function ox(e){return!e||e.length===0?[]:typeof e[0]==`number`?[e]:e.flatMap(e=>ox(e))}function sx(e){return e.type===`GeometryCollection`?e.geometries.flatMap(e=>sx(e)):ox(e.coordinates)}function cx(e){let t=new Rb,n;switch(e.type){case`FeatureCollection`:n=e.features.flatMap(e=>sx(e.geometry));break;case`Feature`:n=sx(e.geometry);break;default:n=sx(e)}if(n.length===0)return t;for(let e of n){let[n,r]=e;t.extend([n,r])}return t}function lx({x:e,y:t,z:n},r,i){let a=2**n,{west:o,south:s,east:c,north:l}=$m(i,(e-r)/a,(t-r)/a,(e+1+r)/a,(t+1+r)/a);return new Rb([o,s],[c,l])}var ux=class{constructor(e){this._waiting=[],this._sending=!1,this._replacedWhileSending=!1,this._handlers=e}isIdle(){return!this._sending&&this._waiting.length===0}top(){return this._waiting.length?this._waiting[this._waiting.length-1]:void 0}some(e){return this._waiting.some(e)}enqueue(e){this._waiting.push(e)}replace(e){this._waiting=[e],this._replacedWhileSending=this._sending}clear(){this._waiting=[]}flush(){if(this.isIdle())return Promise.resolve();if(!this._flushing){let e,t=new Promise(t=>{e=t});this._flushing={promise:t,resolve:e}}let{promise:e}=this._flushing;return this._next(),e}_next(){if(this._sending)return;let e=this._waiting.shift();e===void 0?(this._flushing?.resolve(),this._flushing=void 0):(this._sending=!0,this._replacedWhileSending=!1,this._send(e).finally(()=>this._next()))}async _send(e){let t;try{t=await this._handlers.send(e)}catch(t){this._sending=!1,this._handlers.onError(e,t);return}this._sending=!1;try{this._handlers.onResult(e,t,this._replacedWhileSending)}catch(t){this._handlers.onError(e,t)}}},dx=class{constructor(e){this.wraps=!1,this._crs=e,this._originX=e.tileMatrixSet.origin[0],this._originY=e.tileMatrixSet.origin[1],this._extent=e.tileMatrixSet.extentAtZoom0}get name(){return this._crs.name}get tileMatrixSet(){return this._crs.tileMatrixSet}worldFromLngLat(e,t,n){let[r,i]=this._crs.projection.forward([e,t]);return new zm((r-this._originX)/this._extent,(this._originY-i)/this._extent,n===void 0?0:n/this._extent)}lngLatFromWorld(e,t){let n=P(e,0,1),r=P(t,0,1),i=this._inverse(e,t)??this._inverse(n,r)??this._inverseTowardCenter(n,r)??this._finiteInverse(n,r);if(!i)throw Error(`The inverse of the projection "${this._crs.name}" has no answer inside its tile matrix set.`);return new Q(i[0],P(i[1],-90,90))}hasLngLat(e,t){return this._inverse(e,t)!==null}_inverse(e,t){let n=this._finiteInverse(e,t);if(!n)return null;let r=this._originX+e*this._extent,i=this._originY-t*this._extent,[a,o]=this._crs.projection.forward(n);return Math.hypot(a-r,o-i)<=.001*this._extent?n:null}_finiteInverse(e,t){let n;try{n=this._crs.projection.inverse([this._originX+e*this._extent,this._originY-t*this._extent])}catch{return null}return n&&Number.isFinite(n[0])&&Number.isFinite(n[1])?n:null}_inverseTowardCenter(e,t){let n=0,r=1;for(let i=0;i<30;i++){let i=(n+r)/2;this._inverse(.5+(e-.5)*i,.5+(t-.5)*i)?n=i:r=i}return this._inverse(.5+(e-.5)*n,.5+(t-.5)*n)}metersPerWorldUnit(e,t){return this._extent}worldZFromAltitude(e,t){return e/this._extent}get latitudeRange(){return this._latitudeRange??=[this._findLatitudeLimit(-90),this._findLatitudeLimit(90)],this._latitudeRange}_findLatitudeLimit(e){let t=this.lngLatFromWorld(.5,.5),n=10*this._meridianStretch(t.lng,t.lat);if(!(n>0))return e;let r=Math.sign(e-t.lat);for(let i=t.lat;Math.abs(e-i)>1;i+=r)if(!(this._meridianStretch(t.lng,i+r)<=n))return i;return e}_meridianStretch(e,t){let[n,r]=this._crs.projection.forward([e,t]),[i,a]=this._crs.projection.forward([e,t>=0?t-.01:t+.01]);return Math.hypot(i-n,a-r)}},fx=class{forward(e){return[e[0],e[1]]}inverse(e){return[e[0],e[1]]}},px=new class{constructor(){this.name=`identity`,this.projection=new fx,this.tileMatrixSet={origin:[-90,90],extentAtZoom0:180}}},mx=new Map([[px.name,px]]);function hx(e){return typeof e==`string`?mx.get(e):void 0}function gx(e){if(!e.name.includes(`:`))throw Error(`The projection name "${e.name}" needs a colon, like "EPSG:2193" or "custom:equal-earth": names without one are reserved for built-in projections.`);if(mx.has(e.name))throw Error(`A projection called "${e.name}" already exists.`);if(!(e.tileMatrixSet.extentAtZoom0>0))throw Error(`The projection "${e.name}" needs a tileMatrixSet.extentAtZoom0 greater than zero.`);mx.set(e.name,e)}function _x(e){if(!e.includes(`:`))throw Error(`The projection name "${e}" has no colon, so it is reserved for built-in projections, which cannot be removed.`);mx.delete(e)}var vx=class extends Qn{constructor(e,t,n,r){super(),this.id=e,this.type=`geojson`,this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._removed=!1,this._workerUpdates=new ux({send:e=>this._sendWorkerUpdate(e),onResult:(e,t,n)=>this._onWorkerUpdateResult(e,t,n),onError:(e,t)=>this._onWorkerUpdateError(t)}),t.data!==void 0&&this._workerUpdates.enqueue({data:t.data}),this.actorPromise=n.getActor(),this.setEventedParent(r),this._data=typeof t.data==`string`?{url:t.data}:{geojson:t.data},this._options=F({},t),this._collectResourceTiming=t.collectResourceTiming,t.maxzoom!==void 0&&(this.maxzoom=t.maxzoom),t.type&&(this.type=t.type),t.attribution&&(this.attribution=t.attribution),this.promoteId=t.promoteId,t.clusterMaxZoom!==void 0&&this.maxzoom<=t.clusterMaxZoom&&I(`The maxzoom value "${this.maxzoom}" is expected to be greater than the clusterMaxZoom value "${t.clusterMaxZoom}".`),this.workerOptions=F({source:this.id,geojsonVtOptions:{buffer:this._pixelsToTileUnits(t.buffer===void 0?128:t.buffer),tolerance:this._pixelsToTileUnits(t.tolerance===void 0?.375:t.tolerance),extent:N,maxZoom:this.maxzoom,lineMetrics:t.lineMetrics||!1,generateId:t.generateId||!1,promoteId:this._promoteIdKey,cluster:t.cluster||!1,clusterOptions:{maxZoom:this._getClusterMaxZoom(t.clusterMaxZoom),minPoints:Math.max(2,t.clusterMinPoints||2),extent:N,radius:this._pixelsToTileUnits(t.clusterRadius||50),log:!1,generateId:t.generateId||!1}},clusterProperties:t.clusterProperties,filter:t.filter},t.workerOptions)}get _promoteIdKey(){return typeof this.promoteId==`string`?this.promoteId:void 0}_pixelsToTileUnits(e){return e*(N/this.tileSize)}_tileUnitsToPixels(e){return e/(N/this.tileSize)}_getClusterMaxZoom(e){let t=e?Math.round(e):this.maxzoom-1;return Number.isInteger(e)||e===void 0||I(`Integer expected for option 'clusterMaxZoom': provided value "${e}" rounded to "${t}"`),t}async load(){this._workerUpdates.isIdle()?I(`No pending worker updates for GeoJSONSource ${this.id}.`):await this._workerUpdates.flush()}onAdd(e){this.map=e,this.load()}setData(e){return this._data=typeof e==`string`?{url:e}:{geojson:e},this._workerUpdates.replace({data:e}),this._workerUpdates.flush()}updateData(e){let t=this._getWaitingWorkerChange();return t?t.diff=tx(t.diff,e,this._promoteIdKey):this._workerUpdates.enqueue({diff:e}),this._workerUpdates.flush()}async getData(){for(;this._data.url;)await this.once(`data`);return this._data.geojson?this._data.geojson:{type:`FeatureCollection`,features:Array.from(this._data.updateable.values())}}async getBounds(){return cx(await this.getData())}setClusterOptions(e){if(this.workerOptions.geojsonVtOptions.cluster=e.cluster,e.clusterRadius!==void 0&&(this.workerOptions.geojsonVtOptions.clusterOptions.radius=this._pixelsToTileUnits(e.clusterRadius)),e.clusterMaxZoom!==void 0&&(this.workerOptions.geojsonVtOptions.clusterOptions.maxZoom=this._getClusterMaxZoom(e.clusterMaxZoom)),!this._workerUpdates.some(e=>`data`in e)){let e=this._getWaitingWorkerChange();e?e.updateCluster=!0:this._workerUpdates.enqueue({updateCluster:!0})}return this._workerUpdates.flush()}_getWaitingWorkerChange(){let e=this._workerUpdates.top();return e&&!(`data`in e)?e:void 0}getClusterOptions(){let{cluster:e,clusterOptions:t}=this.workerOptions.geojsonVtOptions;return{cluster:e,clusterMaxZoom:t.maxZoom,clusterRadius:this._tileUnitsToPixels(t.radius)}}async getClusterExpansionZoom(e){return(await this.actorPromise).sendAsync({type:`GCEZ`,data:{type:this.type,clusterId:e,source:this.id}})}async getClusterChildren(e){return(await this.actorPromise).sendAsync({type:`GCC`,data:{type:this.type,clusterId:e,source:this.id}})}async getClusterLeaves(e,t,n){return(await this.actorPromise).sendAsync({type:`GCL`,data:{type:this.type,source:this.id,clusterId:e,limit:t,offset:n}})}async _getLoadGeoJSONParameters(e){let t=F({type:this.type,source:this.id},this.workerOptions),n=this._getCRSParameters();return n&&(t.crs=n),`data`in e?typeof e.data==`string`?(t.request=await this.map._requestManager.transformRequest(bn.resolveURL(e.data),`Source`),t.request.collectResourceTiming=this._collectResourceTiming,t):(t.data=e.data,t):(e.diff&&(t.dataDiff=e.diff),e.updateCluster&&(t.updateCluster=!0),t)}_getCRSParameters(){let e=hx(this.map?.style?.projection?.name);if(e){if(!e.definition&&e!==px)I(`GeoJSON source "${this.id}" is drawn in the wrong place: the projection "${e.name}" has no \`definition\` to project its data with.`);else return{name:e.name,definition:e.definition,tileMatrixSet:e.tileMatrixSet}}}async _sendWorkerUpdate(e){this.fire(new nr(`dataloading`));let t=await this._getLoadGeoJSONParameters(e);return(await this.actorPromise).sendAsync({type:`LD`,data:t})}_onWorkerUpdateResult(e,t,n){if(this._removed||t.abandoned){this.fire(new nr(`dataabort`));return}t.data&&!n&&(this._data={geojson:t.data});let r=`data`in e||n?void 0:e.diff,i=this._applyDiffToSource(r),a=!(`data`in e)&&e.updateCluster||this.map?.style?.projection?.worldCoordinateHelper.wraps===!1?void 0:this._getShouldReloadTileOptions(i),o={};this._applyResourceTiming(o,t),this.fire(new nr(`data`,{...o,sourceDataType:`metadata`})),this.fire(new nr(`data`,{...o,sourceDataType:`content`,shouldReloadTileOptions:a}))}_onWorkerUpdateError(e){this._removed?this.fire(new nr(`dataabort`)):this.fire(new R(ot(e)))}_applyResourceTiming(e,t){if(!this._collectResourceTiming)return;let n=t.resourceTiming?.[this.id];if(!n)return;let r=n.slice(0);r?.length&&F(e,{resourceTiming:r})}_applyDiffToSource(e){if(!e)return;let t=this._promoteIdKey;if(!this._data.url&&!this._data.updateable){let e=$b(this._data.geojson,t);if(!e)throw Error(`GeoJSONSource "${this.id}": GeoJSON data is not compatible with updateData`);this._data={updateable:e}}if(!this._data.updateable)return;let n=ex(this._data.updateable,e,t);if(!(e.removeAll||this.workerOptions.geojsonVtOptions.cluster))return n}_getShouldReloadTileOptions(e){if(e)return{affectedBounds:e.filter(Boolean).map(e=>cx(e))}}shouldReloadTile(e,{affectedBounds:t}){if(e.state===`loading`)return!0;if(e.state===`unloaded`)return!1;let{buffer:n,extent:r}=this.workerOptions.geojsonVtOptions,i=lx(e.tileID.canonical,n/r,this.map.style.projection.worldCoordinateHelper);for(let e of t)if(i.intersects(e))return!0;return!1}loaded(){return this._workerUpdates.isIdle()}async loadTile(e){let t=e.actor?`RT`:`LT`;e.actor=await this.actorPromise;let n={type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId,subdivisionGranularity:this.map.style.projection.subdivisionGranularity};e.abortController=new AbortController;try{let r=await(await this.actorPromise).sendAsync({type:t,data:n},e.abortController);delete e.abortController,e.unloadVectorData(),e.aborted||e.loadVectorData(r,this.map.style,t===`RT`)}catch(t){if(delete e.abortController,e.aborted||hn(t))return;throw t}}async abortTile(e){e.abortController&&(e.abortController.abort(),delete e.abortController),e.aborted=!0}async unloadTile(e){e.unloadVectorData(),await(await this.actorPromise).sendAsync({type:`RMT`,data:{uid:e.uid,type:this.type,source:this.id}})}onRemove(){this._removed=!0,this._workerUpdates.clear(),this.actorPromise.then(e=>e.sendAsync({type:`RS`,data:{type:this.type,source:this.id}}))}serialize(){return F({},this._options,{type:this.type,data:this._data.updateable?{type:`FeatureCollection`,features:Array.from(this._data.updateable.values())}:this._data.url||this._data.geojson})}hasTransition(){return!1}},yx=[0,0,1],bx=(e,t)=>({u_tl_parent:new Z(e,t.u_tl_parent),u_scale_parent:new X(e,t.u_scale_parent),u_buffer_scale:new X(e,t.u_buffer_scale),u_image_warp:new ud(e,t.u_image_warp),u_fade_t:new X(e,t.u_fade_t),u_opacity:new X(e,t.u_opacity),u_image0:new Y(e,t.u_image0),u_image1:new Y(e,t.u_image1),u_brightness_low:new X(e,t.u_brightness_low),u_brightness_high:new X(e,t.u_brightness_high),u_saturation_factor:new X(e,t.u_saturation_factor),u_contrast_factor:new X(e,t.u_contrast_factor),u_spin_weights:new ud(e,t.u_spin_weights),u_coords_top:new dd(e,t.u_coords_top),u_coords_bottom:new dd(e,t.u_coords_bottom)}),xx=(e,t,n,r,i,a)=>({u_tl_parent:e,u_scale_parent:t,u_buffer_scale:1,u_image_warp:a,u_fade_t:n.mix,u_opacity:n.opacity*r.paint.get(`raster-opacity`),u_image0:0,u_image1:1,u_brightness_low:r.paint.get(`raster-brightness-min`),u_brightness_high:r.paint.get(`raster-brightness-max`),u_saturation_factor:wx(r.paint.get(`raster-saturation`)),u_contrast_factor:Cx(r.paint.get(`raster-contrast`)),u_spin_weights:Sx(r.paint.get(`raster-hue-rotate`)),u_coords_top:[i[0].x,i[0].y,i[1].x,i[1].y],u_coords_bottom:[i[3].x,i[3].y,i[2].x,i[2].y]});function Sx(e){e*=Math.PI/180;let t=Math.sin(e),n=Math.cos(e);return[(2*n+1)/3,(-Math.sqrt(3)*t-n+1)/3,(Math.sqrt(3)*t-n+1)/3]}function Cx(e){return e>0?1/(1-e):1+e}function wx(e){return e>0?1-1/(1.001-e):-e}var Tx=class{constructor(e,t,n){this.vertexBuffer=e,this.indexBuffer=t,this.segments=n}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.vertexBuffer=null,this.indexBuffer=null,this.segments=null}},Ex=Gl([{name:`a_pos`,type:`Int16`,components:2}]);function Dx(e,t){let n=Ox(t,`16bit`),r=Au.deserialize({arrayBuffer:n.vertices,length:n.vertices.byteLength/2/2}),i=qu.deserialize({arrayBuffer:n.indices,length:n.indices.byteLength/2/3});return new Tx(e.createVertexBuffer(r,Ex.members),e.createIndexBuffer(i),Qu.simpleSegment(0,0,r.length,i.length))}function Ox(e,t){let n=e.granularity===void 0?1:Math.max(e.granularity,1),r=n+(e.generateBorders?2:0),i=n+(e.extendToNorthPole||e.generateBorders?1:0)+(e.extendToSouthPole||e.generateBorders?1:0),a=r+1,o=i+1,s=e.generateBorders?-1:0,c=e.generateBorders||e.extendToNorthPole?-1:0,l=n+ +!!e.generateBorders,u=n+(e.generateBorders||e.extendToSouthPole?1:0),d=a*o,f=r*i*6,p=a*o>65536;if(p&&t===`16bit`)throw Error(`Granularity is too large and meshes would not fit inside 16 bit vertex indices.`);let m=p||t===`32bit`,h=new Int16Array(d*2),g=0;for(let t=c;t<=u;t++)for(let r=s;r<=l;r++){let i=r/n*N;r===-1&&(i=-64),r===n+1&&(i=8256);let a=t/n*N;t===-1&&(a=e.extendToNorthPole?Xp:-64),t===n+1&&(a=e.extendToSouthPole?Zp:8256),h[g++]=i,h[g++]=a}let _=m?new Uint32Array(f):new Uint16Array(f),v=0;for(let e=0;e<i;e++)for(let t=0;t<r;t++){let n=t+e*a,r=t+1+e*a,i=t+(e+1)*a,o=t+1+(e+1)*a;_[v++]=n,_[v++]=i,_[v++]=r,_[v++]=r,_[v++]=i,_[v++]=o}return{vertices:h.buffer.slice(0),indices:_.buffer.slice(0),uses32bitIndices:m}}var kx=class extends Qn{constructor(e,t,n,r){super(),this.imageWarp=yx,this.flippedWindingOrder=!1,this._warp=`auto`,this._imageDirty=!1,this._subdividedQuad=!1,this._subdividedMesh=null,this.id=e,this.dispatcher=n,this.coordinates=t.coordinates,this.type=`image`,this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(r),this.options=t}async load(e){if(this.options.url===void 0)this._loaded=!0,this._finishLoading();else{this._loaded=!1,this.fire(new nr(`dataloading`)),this.url=this.options.url,this._abortController=new AbortController;try{let t=await qn.transformAndGetImage(this.map._requestManager,this.url,`Image`,this._abortController);this._abortController=null,this._loaded=!0,t?.data?(this._setImage(t.data),e&&(this.coordinates=e),this._finishLoading()):this.fire(new R(Error(`Could not load image ${this.url}: the response is empty`)))}catch(e){if(hn(e))return;this._abortController=null,this._loaded=!0,this.fire(new R(ot(e)))}}}loaded(){return this._loaded}updateImage(e){return this._abortController&&=(this._abortController.abort(),null),`image`in e?(this._loaded=!0,this._setImage(e.image),e.coordinates&&(this.coordinates=e.coordinates),this._finishLoading(),this):(e.url&&(this.options.url=e.url,this.load(e.coordinates)),this)}_setImage(e){this.image=e,this._imageDirty=!0}getMesh(e,t){return!this._subdividedQuad||t?null:(this._subdividedMesh??=Dx(e,{granularity:16}),this._subdividedMesh)}_disposeTexture(){this.texture?.destroy(),this.texture=null}_finishLoading(){if(this.map)try{this.setCoordinates(this.coordinates),this.fire(new nr(`data`,{sourceDataType:`metadata`}))}catch(e){this.fire(new R(ot(e)))}}onAdd(e){this.map=e,this.load()}onRemove(){this._abortController&&=(this._abortController.abort(),null),this._disposeTexture(),this._subdividedMesh?.destroy(),this._subdividedMesh=null,this.image=null,this.tiles={}}setWarp(e){return this._warp===e||(this._warp=e,this.tileCoords&&this.setCoordinates(this.coordinates)),this}getWarp(){return this._warp}setCoordinates(e){this.coordinates=e;let t=this.map.style.projection.worldCoordinateHelper,n=e.map(e=>{let n=Q.convert(e);return t.worldFromLngLat(n.lng,n.lat)});return this.tileID=Ax(n),this.terrainTileRanges=this._getOverlappingTileRanges(n),this.minzoom=this.maxzoom=this.tileID.z,this.tileCoords=n.map(e=>this.tileID.getTilePoint(e)._round()),this.imageWarp=Mx(this.tileCoords,this._warp),this._subdividedQuad=this.imageWarp[2]>0&&!Px(this.tileCoords),this.flippedWindingOrder=jx(this.tileCoords),this.fire(new nr(`data`,{sourceDataType:`content`})),this}prepare(){if(Object.keys(this.tiles).length===0||!this.image)return;let e=this.map.painter.context,t=e.gl;this.texture?this._imageDirty&&(this.texture.update(this.image),this.texture.bind(t.LINEAR,t.CLAMP_TO_EDGE)):(this.texture=new Wf(e,this.image,t.RGBA),this.texture.bind(t.LINEAR,t.CLAMP_TO_EDGE)),this._imageDirty=!1;let n=!1;for(let e in this.tiles){let t=this.tiles[e];t.state!==`loaded`&&(t.state=`loaded`,t.texture=this.texture,n=!0)}n&&this.fire(new nr(`data`,{sourceDataType:`idle`,sourceId:this.id}))}async loadTile(e){this.tileID?.equals(e.tileID.canonical)?(this.tiles[String(e.tileID.wrap)]=e,e.buckets={}):e.state=`errored`}serialize(){let e={type:`image`,coordinates:this.coordinates};return this.options.url!==void 0&&(e.url=this.options.url),e}hasTransition(){return!1}_getOverlappingTileRanges(e){let{minX:t,minY:n,maxX:r,maxY:i}=Pd.fromPoints(e),a={};for(let e=0;e<=25;e++){let o=2**e,s=Math.floor(t*o),c=Math.floor(n*o),l=Math.floor(r*o),u=Math.floor(i*o),d=(s%o+o)%o,f=l%o,p=Math.floor(s/o),m=Math.floor(l/o);a[e]={minWrap:p,maxWrap:m,minTileXWrapped:d,maxTileXWrapped:f,minTileY:c,maxTileY:u}}return a}};function Ax(e){let t=Pd.fromPoints(e),n=t.width(),r=t.height(),i=Math.max(0,Math.floor(-Math.log(Math.max(n,r))/Math.LN2)),a=2**i;return new Wb(i,Math.floor((t.minX+t.maxX)/2*a),Math.floor((t.minY+t.maxY)/2*a))}function jx(e){let t=e[1].x-e[0].x,n=e[1].y-e[0].y,r=e[2].x-e[0].x;return t*(e[2].y-e[0].y)-n*r<0}function Mx(e,t){if(t===`flat`||Px(e))return yx;let[n,r,i,a]=e,o=n.x-r.x+i.x-a.x,s=n.y-r.y+i.y-a.y,c=[r.x-i.x,r.y-i.y,a.x-i.x,a.y-i.y],[l,u,d,f]=c,p=x(c),m=(o*f-d*s)/p,h=(l*s-o*u)/p,g=[1,1+m,1+m+h,1+h],_=Math.max(...g)/Math.min(...g),v=t===`perspective`?0:Nx(_);return!(_>=1&&_<=512)||v>=1?yx:[m,h,v]}function Nx(e){let t=(1-4/e)/(1-4/512);return Math.max(0,t)}function Px(e){let[t,n,r,i]=e;return t.x+r.x===n.x+i.x&&t.y+r.y===n.y+i.y}var Fx=class extends kx{constructor(e,t,n,r){super(e,t,n,r),this._onPlayingHandler=()=>{this.map?.triggerRepaint()},this.roundZoom=!0,this.type=`video`,this.options=t}async load(){this._loaded=!1;let e=this.options;this.urls=[];for(let t of e.urls)this.urls.push((await this.map._requestManager.transformRequest(t,`Source`)).url);try{let e=await Kn(this.urls);if(this._loaded=!0,!e)return;this.video=e,this.video.loop=!0,this.video.addEventListener(`playing`,this._onPlayingHandler),this.map&&this.video.play(),this._finishLoading()}catch(e){this.fire(new R(ot(e)))}}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(e){if(this.video){let t=this.video.seekable;e<t.start(0)||e>t.end(0)?this.fire(new R(new V(`sources.${this.id}`,null,`Playback for this video can be set only between the ${t.start(0)} and ${t.end(0)}-second mark.`))):this.video.currentTime=e}}getVideo(){return this.video}onAdd(e){this.map||(this.map=e,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}onRemove(){super.onRemove(),this.video&&(this.video.removeEventListener(`playing`,this._onPlayingHandler),this.video.pause())}prepare(){if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;let e=this.map.painter.context,t=e.gl;this.texture?this.video.paused||(this.texture.bind(t.LINEAR,t.CLAMP_TO_EDGE),t.texSubImage2D(t.TEXTURE_2D,0,0,0,t.RGBA,t.UNSIGNED_BYTE,this.video)):(this.texture=new Wf(e,this.video,t.RGBA),this.texture.bind(t.LINEAR,t.CLAMP_TO_EDGE));let n=!1;for(let e in this.tiles){let t=this.tiles[e];t.state!==`loaded`&&(t.state=`loaded`,t.texture=this.texture,n=!0)}n&&this.fire(new nr(`data`,{sourceDataType:`idle`,sourceId:this.id}))}serialize(){return{type:`video`,urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}},Ix=class extends kx{constructor(e,t,n,r){super(e,t,n,r),t.coordinates?(!Array.isArray(t.coordinates)||t.coordinates.length!==4||t.coordinates.some(e=>!Array.isArray(e)||e.length!==2||e.some(e=>typeof e!=`number`)))&&this.fire(new R(new V(`sources.${e}`,null,`"coordinates" property must be an array of 4 longitude/latitude array pairs`))):this.fire(new R(new V(`sources.${e}`,null,`missing required property "coordinates"`))),t.animate&&typeof t.animate!=`boolean`&&this.fire(new R(new V(`sources.${e}`,null,`optional "animate" property must be a boolean value`))),t.canvas?typeof t.canvas!=`string`&&!(t.canvas instanceof HTMLCanvasElement)&&this.fire(new R(new V(`sources.${e}`,null,`"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance`))):this.fire(new R(new V(`sources.${e}`,null,`missing required property "canvas"`))),this.options=t,this.animate=t.animate===void 0||t.animate}async load(){this._loaded=!0,this.canvas||=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new R(Error(`Canvas dimensions cannot be less than or equal to zero.`))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&=(this.prepare(),!1)},this._finishLoading())}getCanvas(){return this.canvas}onAdd(e){this.map=e,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this._playing=!1,super.onRemove()}prepare(){let e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;let t=this.map.painter.context,n=t.gl;this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):(this.texture=new Wf(t,this.canvas,n.RGBA,{premultiply:!0}),this.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE));let r=!1;for(let e in this.tiles){let t=this.tiles[e];t.state!==`loaded`&&(t.state=`loaded`,t.texture=this.texture,r=!0)}r&&this.fire(new nr(`data`,{sourceDataType:`idle`,sourceId:this.id}))}serialize(){return{type:`canvas`,animate:this.animate,canvas:this.options.canvas,coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(let e of[this.canvas.width,this.canvas.height])if(isNaN(e)||e<=0)return!0;return!1}},Lx={},Rx=(e,t,n,r)=>{let i=new(zx(t.type))(e,t,n,r);if(i.id!==e)throw Error(`Expected Source id to be ${e} instead of ${i.id}`);return i},zx=e=>{switch(e){case`geojson`:return vx;case`image`:return kx;case`raster`:return Vb;case`raster-dem`:return Zb;case`vector`:return Bb;case`video`:return Fx;case`canvas`:return Ix}return Lx[e]},Bx=(e,t)=>{Lx[e]=t},Vx=async(e,t)=>{if(zx(e))throw Error(`A source type called "${e}" already exists.`);Bx(e,t)};function Hx(e,t){let n={};if(!t)return n;for(let r of e){let e=r.layerIds.map(e=>t.getLayer(e)).filter(Boolean);if(e.length!==0){r.layers=e,r.stateDependentLayerIds&&(r.stateDependentLayers=r.stateDependentLayerIds.map(t=>e.filter(e=>e.id===t)[0]));for(let t of e)n[t.id]=r}}return n}var Ux=`_geojsonTileLayer`,Wx=class{constructor(e){this._stringToNumber={},this._numberToString=[];for(let t=0;t<e.length;t++){let n=e[t];this._stringToNumber[n]=t,this._numberToString[t]=n}}encode(e){return this._stringToNumber[e]}decode(e){if(e>=this._numberToString.length)throw Error(`Out of bounds. Index requested n=${e} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[e]}},Gx=class e{static{this.worldCoordinateHelpers=new WeakMap}constructor(t,n,r,i,a,o){this.type=`Feature`,this._vectorTileFeature=t,this._x=r,this._y=i,this._z=n,o!==Bm&&e.worldCoordinateHelpers.set(this,o);for(let e in t.properties)typeof t.properties[e]==`string`&&t.properties[e].startsWith(`__$json__:`)&&(t.properties[e]=JSON.parse(t.properties[e].slice(10)));this.properties=t.properties,this.id=a}projectPoint(e,t,n,r,i){if(i){let a=i.lngLatFromWorld((e.x+t)/r,(e.y+n)/r);return[a.lng,a.lat]}return[(e.x+t)*360/r-180,360/Math.PI*Math.atan(Math.exp((1-(e.y+n)*2/r)*Math.PI))-90]}projectLine(e,t,n,r,i){return e.map(e=>this.projectPoint(e,t,n,r,i))}get geometry(){if(this._geometry)return this._geometry;let t=this._vectorTileFeature,n=e.worldCoordinateHelpers.get(this),r=t.extent*2**this._z,i=t.extent*this._x,a=t.extent*this._y,o=t.loadGeometry();switch(t.type){case 1:{let e=[];for(let t of o)e.push(t[0]);let t=this.projectLine(e,i,a,r,n);this._geometry=e.length===1?{type:`Point`,coordinates:t[0]}:{type:`MultiPoint`,coordinates:t};break}case 2:{let e=o.map(e=>this.projectLine(e,i,a,r,n));this._geometry=e.length===1?{type:`LineString`,coordinates:e[0]}:{type:`MultiLineString`,coordinates:e};break}case 3:{let e=Sm(o),t=[];for(let o of e)t.push(o.map(e=>this.projectLine(e,i,a,r,n)));this._geometry=t.length===1?{type:`Polygon`,coordinates:t[0]}:{type:`MultiPolygon`,coordinates:t};break}default:throw Error(`unknown feature type: ${t.type}`)}return this._geometry}set geometry(e){this._geometry=e}toJSON(){let e={geometry:this.geometry};for(let t in this)t!==`_geometry`&&t!==`_vectorTileFeature`&&t!==`_x`&&t!==`_y`&&t!==`_z`&&(e[t]=this[t]);return e}},Kx=class{constructor(e,t,n){this._name=e,this.dataBuffer=t,typeof n==`number`?this._size=n:(this.nullabilityBuffer=n,this._size=n.size())}getValue(e){return this.nullabilityBuffer&&!this.nullabilityBuffer.get(e)?null:this.getValueFromBuffer(e)}has(e){return this.nullabilityBuffer?.get(e)||!this.nullabilityBuffer}get name(){return this._name}get size(){return this._size}},qx=class extends Kx{},Jx=class extends qx{getValueFromBuffer(e){return this.dataBuffer[e]}},Yx=class extends qx{getValueFromBuffer(e){return this.dataBuffer[e]}},Xx=class extends Kx{constructor(e,t,n,r){super(e,t,r),this.delta=n}},Zx=class extends Xx{constructor(e,t,n,r,i){super(e,i?Int32Array.of(t):Uint32Array.of(t),n,r)}getValueFromBuffer(e){return this.dataBuffer[0]+e*this.delta}},Qx=class extends Kx{constructor(e,t,n,r){super(e,r?Int32Array.of(t):Uint32Array.of(t),n)}getValueFromBuffer(e){return this.dataBuffer[0]}},$x=class{constructor(e,t,n,r,i=4096){if(this._name=e,this._geometryVector=t,this._idVector=n,this._propertyVectors=r,this._extent=i,e.length===0)throw Error(`Missing layer name`)}get name(){return this._name}get idVector(){return this._idVector}get geometryVector(){return this._geometryVector}get propertyVectors(){return this._propertyVectors??[]}getPropertyVector(e){return this.propertyVectorsMap||=new Map(this.propertyVectors.map(e=>[e.name,e])),this.propertyVectorsMap.get(e)}get numFeatures(){return this.geometryVector.numGeometries}get extent(){return this._extent}getFeatures(){let e=[],t=this.geometryVector.getGeometries();for(let n=0;n<this.numFeatures;n++){let r;if(this.idVector){let e=this.idVector.getValue(n);e!==null&&(r=this.containsMaxSafeIntegerValues(this.idVector)?Number(e):e)}let i={coordinates:t[n],type:this.geometryVector.geometryType(n)},a={};for(let e of this.propertyVectors){if(!e)continue;let t=e.name,r=e.getValue(n);r!==null&&(a[t]=r)}e.push({id:r,geometry:i,properties:a})}return e}containsMaxSafeIntegerValues(e){return e instanceof Jx||e instanceof Qx||e instanceof Zx||e instanceof Yx}},eS={FEATURE:0,VERTEX:1},tS={BOOLEAN:0,INT_8:1,UINT_8:2,INT_32:3,UINT_32:4,INT_64:5,UINT_64:6,FLOAT:7,DOUBLE:8,STRING:9},nS={GEOMETRY:0,STRUCT:1,MAP:2},rS={ID:0},iS=class{constructor(e){this.value=e}get(){return this.value}set(e){this.value=e}increment(){return this.value++}add(e){this.value+=e}},$;(function(e){e.NONE=`NONE`,e.DELTA=`DELTA`,e.COMPONENTWISE_DELTA=`COMPONENTWISE_DELTA`,e.RLE=`RLE`,e.MORTON=`MORTON`})($||={});var aS;(function(e){e.NONE=`NONE`,e.FAST_PFOR=`FAST_PFOR`,e.VARINT=`VARINT`})(aS||={});var oS=new Uint32Array(33);oS[0]=0;for(let e=1;e<=32;e++)oS[e]=e===32?4294967295:4294967295>>>32-e;var sS=oS,cS=65536;function lS(e,t){return e-e%t}function uS(e){return lS(e+31,32)}function dS(e){if(!Number.isFinite(e)||e<=0)return cS;let t=lS(Math.floor(e),256);return t===0?256:t}function fS(e){let t=e>>>0;return((t&255)<<24|(t&65280)<<8|t>>>8&65280|t>>>24&255)>>>0}function pS(e,t,n,r){let i=r,a=e[t]>>>0,o=e[t+1]>>>0;n[i++]=a>>>0&3,n[i++]=a>>>2&3,n[i++]=a>>>4&3,n[i++]=a>>>6&3,n[i++]=a>>>8&3,n[i++]=a>>>10&3,n[i++]=a>>>12&3,n[i++]=a>>>14&3,n[i++]=a>>>16&3,n[i++]=a>>>18&3,n[i++]=a>>>20&3,n[i++]=a>>>22&3,n[i++]=a>>>24&3,n[i++]=a>>>26&3,n[i++]=a>>>28&3,n[i++]=a>>>30&3,n[i++]=o>>>0&3,n[i++]=o>>>2&3,n[i++]=o>>>4&3,n[i++]=o>>>6&3,n[i++]=o>>>8&3,n[i++]=o>>>10&3,n[i++]=o>>>12&3,n[i++]=o>>>14&3,n[i++]=o>>>16&3,n[i++]=o>>>18&3,n[i++]=o>>>20&3,n[i++]=o>>>22&3,n[i++]=o>>>24&3,n[i++]=o>>>26&3,n[i++]=o>>>28&3,n[i]=o>>>30&3}function mS(e,t,n,r){let i=r,a=e[t]>>>0,o=e[t+1]>>>0,s=e[t+2]>>>0;n[i++]=a>>>0&7,n[i++]=a>>>3&7,n[i++]=a>>>6&7,n[i++]=a>>>9&7,n[i++]=a>>>12&7,n[i++]=a>>>15&7,n[i++]=a>>>18&7,n[i++]=a>>>21&7,n[i++]=a>>>24&7,n[i++]=a>>>27&7,n[i++]=(a>>>30|(o&1)<<2)&7,n[i++]=o>>>1&7,n[i++]=o>>>4&7,n[i++]=o>>>7&7,n[i++]=o>>>10&7,n[i++]=o>>>13&7,n[i++]=o>>>16&7,n[i++]=o>>>19&7,n[i++]=o>>>22&7,n[i++]=o>>>25&7,n[i++]=o>>>28&7,n[i++]=(o>>>31|(s&3)<<1)&7,n[i++]=s>>>2&7,n[i++]=s>>>5&7,n[i++]=s>>>8&7,n[i++]=s>>>11&7,n[i++]=s>>>14&7,n[i++]=s>>>17&7,n[i++]=s>>>20&7,n[i++]=s>>>23&7,n[i++]=s>>>26&7,n[i]=s>>>29&7}function hS(e,t,n,r){let i=r,a=e[t]>>>0,o=e[t+1]>>>0,s=e[t+2]>>>0,c=e[t+3]>>>0;n[i++]=a>>>0&15,n[i++]=a>>>4&15,n[i++]=a>>>8&15,n[i++]=a>>>12&15,n[i++]=a>>>16&15,n[i++]=a>>>20&15,n[i++]=a>>>24&15,n[i++]=a>>>28&15,n[i++]=o>>>0&15,n[i++]=o>>>4&15,n[i++]=o>>>8&15,n[i++]=o>>>12&15,n[i++]=o>>>16&15,n[i++]=o>>>20&15,n[i++]=o>>>24&15,n[i++]=o>>>28&15,n[i++]=s>>>0&15,n[i++]=s>>>4&15,n[i++]=s>>>8&15,n[i++]=s>>>12&15,n[i++]=s>>>16&15,n[i++]=s>>>20&15,n[i++]=s>>>24&15,n[i++]=s>>>28&15,n[i++]=c>>>0&15,n[i++]=c>>>4&15,n[i++]=c>>>8&15,n[i++]=c>>>12&15,n[i++]=c>>>16&15,n[i++]=c>>>20&15,n[i++]=c>>>24&15,n[i]=c>>>28&15}function gS(e,t,n,r){let i=r,a=e[t]>>>0,o=e[t+1]>>>0,s=e[t+2]>>>0,c=e[t+3]>>>0,l=e[t+4]>>>0;n[i++]=a>>>0&31,n[i++]=a>>>5&31,n[i++]=a>>>10&31,n[i++]=a>>>15&31,n[i++]=a>>>20&31,n[i++]=a>>>25&31,n[i++]=(a>>>30|(o&7)<<2)&31,n[i++]=o>>>3&31,n[i++]=o>>>8&31,n[i++]=o>>>13&31,n[i++]=o>>>18&31,n[i++]=o>>>23&31,n[i++]=(o>>>28|(s&1)<<4)&31,n[i++]=s>>>1&31,n[i++]=s>>>6&31,n[i++]=s>>>11&31,n[i++]=s>>>16&31,n[i++]=s>>>21&31,n[i++]=s>>>26&31,n[i++]=(s>>>31|(c&15)<<1)&31,n[i++]=c>>>4&31,n[i++]=c>>>9&31,n[i++]=c>>>14&31,n[i++]=c>>>19&31,n[i++]=c>>>24&31,n[i++]=(c>>>29|(l&3)<<3)&31,n[i++]=l>>>2&31,n[i++]=l>>>7&31,n[i++]=l>>>12&31,n[i++]=l>>>17&31,n[i++]=l>>>22&31,n[i]=l>>>27&31}function _S(e,t,n,r){let i=r,a=e[t]>>>0,o=e[t+1]>>>0,s=e[t+2]>>>0,c=e[t+3]>>>0,l=e[t+4]>>>0,u=e[t+5]>>>0;n[i++]=a>>>0&63,n[i++]=a>>>6&63,n[i++]=a>>>12&63,n[i++]=a>>>18&63,n[i++]=a>>>24&63,n[i++]=(a>>>30|(o&15)<<2)&63,n[i++]=o>>>4&63,n[i++]=o>>>10&63,n[i++]=o>>>16&63,n[i++]=o>>>22&63,n[i++]=(o>>>28|(s&3)<<4)&63,n[i++]=s>>>2&63,n[i++]=s>>>8&63,n[i++]=s>>>14&63,n[i++]=s>>>20&63,n[i++]=s>>>26&63,n[i++]=c>>>0&63,n[i++]=c>>>6&63,n[i++]=c>>>12&63,n[i++]=c>>>18&63,n[i++]=c>>>24&63,n[i++]=(c>>>30|(l&15)<<2)&63,n[i++]=l>>>4&63,n[i++]=l>>>10&63,n[i++]=l>>>16&63,n[i++]=l>>>22&63,n[i++]=(l>>>28|(u&3)<<4)&63,n[i++]=u>>>2&63,n[i++]=u>>>8&63,n[i++]=u>>>14&63,n[i++]=u>>>20&63,n[i]=u>>>26&63}function vS(e,t,n,r){let i=r,a=e[t]>>>0,o=e[t+1]>>>0,s=e[t+2]>>>0,c=e[t+3]>>>0,l=e[t+4]>>>0,u=e[t+5]>>>0,d=e[t+6]>>>0;n[i++]=a>>>0&127,n[i++]=a>>>7&127,n[i++]=a>>>14&127,n[i++]=a>>>21&127,n[i++]=(a>>>28|(o&7)<<4)&127,n[i++]=o>>>3&127,n[i++]=o>>>10&127,n[i++]=o>>>17&127,n[i++]=o>>>24&127,n[i++]=(o>>>31|(s&63)<<1)&127,n[i++]=s>>>6&127,n[i++]=s>>>13&127,n[i++]=s>>>20&127,n[i++]=(s>>>27|(c&3)<<5)&127,n[i++]=c>>>2&127,n[i++]=c>>>9&127,n[i++]=c>>>16&127,n[i++]=c>>>23&127,n[i++]=(c>>>30|(l&31)<<2)&127,n[i++]=l>>>5&127,n[i++]=l>>>12&127,n[i++]=l>>>19&127,n[i++]=(l>>>26|(u&1)<<6)&127,n[i++]=u>>>1&127,n[i++]=u>>>8&127,n[i++]=u>>>15&127,n[i++]=u>>>22&127,n[i++]=(u>>>29|(d&15)<<3)&127,n[i++]=d>>>4&127,n[i++]=d>>>11&127,n[i++]=d>>>18&127,n[i]=d>>>25&127}function yS(e,t,n,r){let i=r,a=e[t]>>>0,o=e[t+1]>>>0,s=e[t+2]>>>0,c=e[t+3]>>>0,l=e[t+4]>>>0,u=e[t+5]>>>0,d=e[t+6]>>>0,f=e[t+7]>>>0;n[i++]=a>>>0&255,n[i++]=a>>>8&255,n[i++]=a>>>16&255,n[i++]=a>>>24&255,n[i++]=o>>>0&255,n[i++]=o>>>8&255,n[i++]=o>>>16&255,n[i++]=o>>>24&255,n[i++]=s>>>0&255,n[i++]=s>>>8&255,n[i++]=s>>>16&255,n[i++]=s>>>24&255,n[i++]=c>>>0&255,n[i++]=c>>>8&255,n[i++]=c>>>16&255,n[i++]=c>>>24&255,n[i++]=l>>>0&255,n[i++]=l>>>8&255,n[i++]=l>>>16&255,n[i++]=l>>>24&255,n[i++]=u>>>0&255,n[i++]=u>>>8&255,n[i++]=u>>>16&255,n[i++]=u>>>24&255,n[i++]=d>>>0&255,n[i++]=d>>>8&255,n[i++]=d>>>16&255,n[i++]=d>>>24&255,n[i++]=f>>>0&255,n[i++]=f>>>8&255,n[i++]=f>>>16&255,n[i]=f>>>24&255}function bS(e,t,n,r){let i=r,a=e[t]>>>0,o=e[t+1]>>>0,s=e[t+2]>>>0,c=e[t+3]>>>0,l=e[t+4]>>>0,u=e[t+5]>>>0,d=e[t+6]>>>0,f=e[t+7]>>>0,p=e[t+8]>>>0;n[i++]=a>>>0&511,n[i++]=a>>>9&511,n[i++]=a>>>18&511,n[i++]=(a>>>27|(o&15)<<5)&511,n[i++]=o>>>4&511,n[i++]=o>>>13&511,n[i++]=o>>>22&511,n[i++]=(o>>>31|(s&255)<<1)&511,n[i++]=s>>>8&511,n[i++]=s>>>17&511,n[i++]=(s>>>26|(c&7)<<6)&511,n[i++]=c>>>3&511,n[i++]=c>>>12&511,n[i++]=c>>>21&511,n[i++]=(c>>>30|(l&127)<<2)&511,n[i++]=l>>>7&511,n[i++]=l>>>16&511,n[i++]=(l>>>25|(u&3)<<7)&511,n[i++]=u>>>2&511,n[i++]=u>>>11&511,n[i++]=u>>>20&511,n[i++]=(u>>>29|(d&63)<<3)&511,n[i++]=d>>>6&511,n[i++]=d>>>15&511,n[i++]=(d>>>24|(f&1)<<8)&511,n[i++]=f>>>1&511,n[i++]=f>>>10&511,n[i++]=f>>>19&511,n[i++]=(f>>>28|(p&31)<<4)&511,n[i++]=p>>>5&511,n[i++]=p>>>14&511,n[i]=p>>>23&511}function xS(e,t,n,r){let i=r,a=e[t]>>>0,o=e[t+1]>>>0,s=e[t+2]>>>0,c=e[t+3]>>>0,l=e[t+4]>>>0,u=e[t+5]>>>0,d=e[t+6]>>>0,f=e[t+7]>>>0,p=e[t+8]>>>0,m=e[t+9]>>>0;n[i++]=a>>>0&1023,n[i++]=a>>>10&1023,n[i++]=a>>>20&1023,n[i++]=(a>>>30|(o&255)<<2)&1023,n[i++]=o>>>8&1023,n[i++]=o>>>18&1023,n[i++]=(o>>>28|(s&63)<<4)&1023,n[i++]=s>>>6&1023,n[i++]=s>>>16&1023,n[i++]=(s>>>26|(c&15)<<6)&1023,n[i++]=c>>>4&1023,n[i++]=c>>>14&1023,n[i++]=(c>>>24|(l&3)<<8)&1023,n[i++]=l>>>2&1023,n[i++]=l>>>12&1023,n[i++]=l>>>22&1023,n[i++]=u>>>0&1023,n[i++]=u>>>10&1023,n[i++]=u>>>20&1023,n[i++]=(u>>>30|(d&255)<<2)&1023,n[i++]=d>>>8&1023,n[i++]=d>>>18&1023,n[i++]=(d>>>28|(f&63)<<4)&1023,n[i++]=f>>>6&1023,n[i++]=f>>>16&1023,n[i++]=(f>>>26|(p&15)<<6)&1023,n[i++]=p>>>4&1023,n[i++]=p>>>14&1023,n[i++]=(p>>>24|(m&3)<<8)&1023,n[i++]=m>>>2&1023,n[i++]=m>>>12&1023,n[i]=m>>>22&1023}function SS(e,t,n,r){let i=r,a=e[t]>>>0,o=e[t+1]>>>0,s=e[t+2]>>>0,c=e[t+3]>>>0,l=e[t+4]>>>0,u=e[t+5]>>>0,d=e[t+6]>>>0,f=e[t+7]>>>0,p=e[t+8]>>>0,m=e[t+9]>>>0,h=e[t+10]>>>0;n[i++]=a>>>0&2047,n[i++]=a>>>11&2047,n[i++]=(a>>>22|(o&1)<<10)&2047,n[i++]=o>>>1&2047,n[i++]=o>>>12&2047,n[i++]=(o>>>23|(s&3)<<9)&2047,n[i++]=s>>>2&2047,n[i++]=s>>>13&2047,n[i++]=(s>>>24|(c&7)<<8)&2047,n[i++]=c>>>3&2047,n[i++]=c>>>14&2047,n[i++]=(c>>>25|(l&15)<<7)&2047,n[i++]=l>>>4&2047,n[i++]=l>>>15&2047,n[i++]=(l>>>26|(u&31)<<6)&2047,n[i++]=u>>>5&2047,n[i++]=u>>>16&2047,n[i++]=(u>>>27|(d&63)<<5)&2047,n[i++]=d>>>6&2047,n[i++]=d>>>17&2047,n[i++]=(d>>>28|(f&127)<<4)&2047,n[i++]=f>>>7&2047,n[i++]=f>>>18&2047,n[i++]=(f>>>29|(p&255)<<3)&2047,n[i++]=p>>>8&2047,n[i++]=p>>>19&2047,n[i++]=(p>>>30|(m&511)<<2)&2047,n[i++]=m>>>9&2047,n[i++]=m>>>20&2047,n[i++]=(m>>>31|(h&1023)<<1)&2047,n[i++]=h>>>10&2047,n[i]=h>>>21&2047}function CS(e,t,n,r){let i=r,a=e[t]>>>0,o=e[t+1]>>>0,s=e[t+2]>>>0,c=e[t+3]>>>0,l=e[t+4]>>>0,u=e[t+5]>>>0,d=e[t+6]>>>0,f=e[t+7]>>>0,p=e[t+8]>>>0,m=e[t+9]>>>0,h=e[t+10]>>>0,g=e[t+11]>>>0;n[i++]=a>>>0&4095,n[i++]=a>>>12&4095,n[i++]=(a>>>24|(o&15)<<8)&4095,n[i++]=o>>>4&4095,n[i++]=o>>>16&4095,n[i++]=(o>>>28|(s&255)<<4)&4095,n[i++]=s>>>8&4095,n[i++]=s>>>20&4095,n[i++]=c>>>0&4095,n[i++]=c>>>12&4095,n[i++]=(c>>>24|(l&15)<<8)&4095,n[i++]=l>>>4&4095,n[i++]=l>>>16&4095,n[i++]=(l>>>28|(u&255)<<4)&4095,n[i++]=u>>>8&4095,n[i++]=u>>>20&4095,n[i++]=d>>>0&4095,n[i++]=d>>>12&4095,n[i++]=(d>>>24|(f&15)<<8)&4095,n[i++]=f>>>4&4095,n[i++]=f>>>16&4095,n[i++]=(f>>>28|(p&255)<<4)&4095,n[i++]=p>>>8&4095,n[i++]=p>>>20&4095,n[i++]=m>>>0&4095,n[i++]=m>>>12&4095,n[i++]=(m>>>24|(h&15)<<8)&4095,n[i++]=h>>>4&4095,n[i++]=h>>>16&4095,n[i++]=(h>>>28|(g&255)<<4)&4095,n[i++]=g>>>8&4095,n[i]=g>>>20&4095}function wS(e,t,n,r){let i=r,a=e[t]>>>0,o=e[t+1]>>>0,s=e[t+2]>>>0,c=e[t+3]>>>0,l=e[t+4]>>>0,u=e[t+5]>>>0,d=e[t+6]>>>0,f=e[t+7]>>>0,p=e[t+8]>>>0,m=e[t+9]>>>0,h=e[t+10]>>>0,g=e[t+11]>>>0,_=e[t+12]>>>0,v=e[t+13]>>>0,y=e[t+14]>>>0,b=e[t+15]>>>0;n[i++]=a>>>0&65535,n[i++]=a>>>16&65535,n[i++]=o>>>0&65535,n[i++]=o>>>16&65535,n[i++]=s>>>0&65535,n[i++]=s>>>16&65535,n[i++]=c>>>0&65535,n[i++]=c>>>16&65535,n[i++]=l>>>0&65535,n[i++]=l>>>16&65535,n[i++]=u>>>0&65535,n[i++]=u>>>16&65535,n[i++]=d>>>0&65535,n[i++]=d>>>16&65535,n[i++]=f>>>0&65535,n[i++]=f>>>16&65535,n[i++]=p>>>0&65535,n[i++]=p>>>16&65535,n[i++]=m>>>0&65535,n[i++]=m>>>16&65535,n[i++]=h>>>0&65535,n[i++]=h>>>16&65535,n[i++]=g>>>0&65535,n[i++]=g>>>16&65535,n[i++]=_>>>0&65535,n[i++]=_>>>16&65535,n[i++]=v>>>0&65535,n[i++]=v>>>16&65535,n[i++]=y>>>0&65535,n[i++]=y>>>16&65535,n[i++]=b>>>0&65535,n[i]=b>>>16&65535}function TS(e,t,n,r){let i=r,a=t;for(let t=0;t<8;t++){let t=e[a++]>>>0;n[i++]=t>>>0&1,n[i++]=t>>>1&1,n[i++]=t>>>2&1,n[i++]=t>>>3&1,n[i++]=t>>>4&1,n[i++]=t>>>5&1,n[i++]=t>>>6&1,n[i++]=t>>>7&1,n[i++]=t>>>8&1,n[i++]=t>>>9&1,n[i++]=t>>>10&1,n[i++]=t>>>11&1,n[i++]=t>>>12&1,n[i++]=t>>>13&1,n[i++]=t>>>14&1,n[i++]=t>>>15&1,n[i++]=t>>>16&1,n[i++]=t>>>17&1,n[i++]=t>>>18&1,n[i++]=t>>>19&1,n[i++]=t>>>20&1,n[i++]=t>>>21&1,n[i++]=t>>>22&1,n[i++]=t>>>23&1,n[i++]=t>>>24&1,n[i++]=t>>>25&1,n[i++]=t>>>26&1,n[i++]=t>>>27&1,n[i++]=t>>>28&1,n[i++]=t>>>29&1,n[i++]=t>>>30&1,n[i++]=t>>>31&1}}function ES(e,t,n,r){let i=r,a=t;for(let t=0;t<8;t++){let t=e[a++]>>>0,r=e[a++]>>>0;n[i++]=t>>>0&3,n[i++]=t>>>2&3,n[i++]=t>>>4&3,n[i++]=t>>>6&3,n[i++]=t>>>8&3,n[i++]=t>>>10&3,n[i++]=t>>>12&3,n[i++]=t>>>14&3,n[i++]=t>>>16&3,n[i++]=t>>>18&3,n[i++]=t>>>20&3,n[i++]=t>>>22&3,n[i++]=t>>>24&3,n[i++]=t>>>26&3,n[i++]=t>>>28&3,n[i++]=t>>>30&3,n[i++]=r>>>0&3,n[i++]=r>>>2&3,n[i++]=r>>>4&3,n[i++]=r>>>6&3,n[i++]=r>>>8&3,n[i++]=r>>>10&3,n[i++]=r>>>12&3,n[i++]=r>>>14&3,n[i++]=r>>>16&3,n[i++]=r>>>18&3,n[i++]=r>>>20&3,n[i++]=r>>>22&3,n[i++]=r>>>24&3,n[i++]=r>>>26&3,n[i++]=r>>>28&3,n[i++]=r>>>30&3}}function DS(e,t,n,r){let i=r,a=t;for(let t=0;t<8;t++){let t=e[a++]>>>0,r=e[a++]>>>0,o=e[a++]>>>0;n[i++]=t>>>0&7,n[i++]=t>>>3&7,n[i++]=t>>>6&7,n[i++]=t>>>9&7,n[i++]=t>>>12&7,n[i++]=t>>>15&7,n[i++]=t>>>18&7,n[i++]=t>>>21&7,n[i++]=t>>>24&7,n[i++]=t>>>27&7,n[i++]=(t>>>30|(r&1)<<2)&7,n[i++]=r>>>1&7,n[i++]=r>>>4&7,n[i++]=r>>>7&7,n[i++]=r>>>10&7,n[i++]=r>>>13&7,n[i++]=r>>>16&7,n[i++]=r>>>19&7,n[i++]=r>>>22&7,n[i++]=r>>>25&7,n[i++]=r>>>28&7,n[i++]=(r>>>31|(o&3)<<1)&7,n[i++]=o>>>2&7,n[i++]=o>>>5&7,n[i++]=o>>>8&7,n[i++]=o>>>11&7,n[i++]=o>>>14&7,n[i++]=o>>>17&7,n[i++]=o>>>20&7,n[i++]=o>>>23&7,n[i++]=o>>>26&7,n[i++]=o>>>29&7}}function OS(e,t,n,r){let i=r,a=t;for(let t=0;t<8;t++){let t=e[a++]>>>0,r=e[a++]>>>0,o=e[a++]>>>0,s=e[a++]>>>0;n[i++]=t>>>0&15,n[i++]=t>>>4&15,n[i++]=t>>>8&15,n[i++]=t>>>12&15,n[i++]=t>>>16&15,n[i++]=t>>>20&15,n[i++]=t>>>24&15,n[i++]=t>>>28&15,n[i++]=r>>>0&15,n[i++]=r>>>4&15,n[i++]=r>>>8&15,n[i++]=r>>>12&15,n[i++]=r>>>16&15,n[i++]=r>>>20&15,n[i++]=r>>>24&15,n[i++]=r>>>28&15,n[i++]=o>>>0&15,n[i++]=o>>>4&15,n[i++]=o>>>8&15,n[i++]=o>>>12&15,n[i++]=o>>>16&15,n[i++]=o>>>20&15,n[i++]=o>>>24&15,n[i++]=o>>>28&15,n[i++]=s>>>0&15,n[i++]=s>>>4&15,n[i++]=s>>>8&15,n[i++]=s>>>12&15,n[i++]=s>>>16&15,n[i++]=s>>>20&15,n[i++]=s>>>24&15,n[i++]=s>>>28&15}}function kS(e,t,n,r){let i=r,a=t;for(let t=0;t<8;t++){let t=e[a++]>>>0,r=e[a++]>>>0,o=e[a++]>>>0,s=e[a++]>>>0,c=e[a++]>>>0;n[i++]=t>>>0&31,n[i++]=t>>>5&31,n[i++]=t>>>10&31,n[i++]=t>>>15&31,n[i++]=t>>>20&31,n[i++]=t>>>25&31,n[i++]=(t>>>30|(r&7)<<2)&31,n[i++]=r>>>3&31,n[i++]=r>>>8&31,n[i++]=r>>>13&31,n[i++]=r>>>18&31,n[i++]=r>>>23&31,n[i++]=(r>>>28|(o&1)<<4)&31,n[i++]=o>>>1&31,n[i++]=o>>>6&31,n[i++]=o>>>11&31,n[i++]=o>>>16&31,n[i++]=o>>>21&31,n[i++]=o>>>26&31,n[i++]=(o>>>31|(s&15)<<1)&31,n[i++]=s>>>4&31,n[i++]=s>>>9&31,n[i++]=s>>>14&31,n[i++]=s>>>19&31,n[i++]=s>>>24&31,n[i++]=(s>>>29|(c&3)<<3)&31,n[i++]=c>>>2&31,n[i++]=c>>>7&31,n[i++]=c>>>12&31,n[i++]=c>>>17&31,n[i++]=c>>>22&31,n[i++]=c>>>27&31}}function AS(e,t,n,r){let i=r,a=t;for(let t=0;t<8;t++){let t=e[a++]>>>0,r=e[a++]>>>0,o=e[a++]>>>0,s=e[a++]>>>0,c=e[a++]>>>0,l=e[a++]>>>0;n[i++]=t>>>0&63,n[i++]=t>>>6&63,n[i++]=t>>>12&63,n[i++]=t>>>18&63,n[i++]=t>>>24&63,n[i++]=(t>>>30|(r&15)<<2)&63,n[i++]=r>>>4&63,n[i++]=r>>>10&63,n[i++]=r>>>16&63,n[i++]=r>>>22&63,n[i++]=(r>>>28|(o&3)<<4)&63,n[i++]=o>>>2&63,n[i++]=o>>>8&63,n[i++]=o>>>14&63,n[i++]=o>>>20&63,n[i++]=o>>>26&63,n[i++]=s>>>0&63,n[i++]=s>>>6&63,n[i++]=s>>>12&63,n[i++]=s>>>18&63,n[i++]=s>>>24&63,n[i++]=(s>>>30|(c&15)<<2)&63,n[i++]=c>>>4&63,n[i++]=c>>>10&63,n[i++]=c>>>16&63,n[i++]=c>>>22&63,n[i++]=(c>>>28|(l&3)<<4)&63,n[i++]=l>>>2&63,n[i++]=l>>>8&63,n[i++]=l>>>14&63,n[i++]=l>>>20&63,n[i++]=l>>>26&63}}function jS(e,t,n,r){let i=r,a=t;for(let t=0;t<8;t++){let t=e[a++]>>>0,r=e[a++]>>>0,o=e[a++]>>>0,s=e[a++]>>>0,c=e[a++]>>>0,l=e[a++]>>>0,u=e[a++]>>>0;n[i++]=t>>>0&127,n[i++]=t>>>7&127,n[i++]=t>>>14&127,n[i++]=t>>>21&127,n[i++]=(t>>>28|(r&7)<<4)&127,n[i++]=r>>>3&127,n[i++]=r>>>10&127,n[i++]=r>>>17&127,n[i++]=r>>>24&127,n[i++]=(r>>>31|(o&63)<<1)&127,n[i++]=o>>>6&127,n[i++]=o>>>13&127,n[i++]=o>>>20&127,n[i++]=(o>>>27|(s&3)<<5)&127,n[i++]=s>>>2&127,n[i++]=s>>>9&127,n[i++]=s>>>16&127,n[i++]=s>>>23&127,n[i++]=(s>>>30|(c&31)<<2)&127,n[i++]=c>>>5&127,n[i++]=c>>>12&127,n[i++]=c>>>19&127,n[i++]=(c>>>26|(l&1)<<6)&127,n[i++]=l>>>1&127,n[i++]=l>>>8&127,n[i++]=l>>>15&127,n[i++]=l>>>22&127,n[i++]=(l>>>29|(u&15)<<3)&127,n[i++]=u>>>4&127,n[i++]=u>>>11&127,n[i++]=u>>>18&127,n[i++]=u>>>25&127}}function MS(e,t,n,r){let i=r,a=t;for(let t=0;t<8;t++){let t=e[a++]>>>0,r=e[a++]>>>0,o=e[a++]>>>0,s=e[a++]>>>0,c=e[a++]>>>0,l=e[a++]>>>0,u=e[a++]>>>0,d=e[a++]>>>0;n[i++]=t>>>0&255,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=r>>>0&255,n[i++]=r>>>8&255,n[i++]=r>>>16&255,n[i++]=r>>>24&255,n[i++]=o>>>0&255,n[i++]=o>>>8&255,n[i++]=o>>>16&255,n[i++]=o>>>24&255,n[i++]=s>>>0&255,n[i++]=s>>>8&255,n[i++]=s>>>16&255,n[i++]=s>>>24&255,n[i++]=c>>>0&255,n[i++]=c>>>8&255,n[i++]=c>>>16&255,n[i++]=c>>>24&255,n[i++]=l>>>0&255,n[i++]=l>>>8&255,n[i++]=l>>>16&255,n[i++]=l>>>24&255,n[i++]=u>>>0&255,n[i++]=u>>>8&255,n[i++]=u>>>16&255,n[i++]=u>>>24&255,n[i++]=d>>>0&255,n[i++]=d>>>8&255,n[i++]=d>>>16&255,n[i++]=d>>>24&255}}function NS(e,t,n,r){let i=r,a=t;for(let t=0;t<128;t++){let t=e[a++]>>>0;n[i++]=t&65535,n[i++]=t>>>16&65535}}function PS(e,t,n,r,i){let a=sS[i]>>>0,o=t,s=0,c=e[o]>>>0,l=r;for(let t=0;t<8;t++){for(let t=0;t<32;t++)if(s+i<=32){let r=c>>>s&a;n[l+t]=r|0,s+=i,s===32&&(s=0,o++,t!==31&&(c=e[o]>>>0))}else{let r=32-s,u=c>>>s;o++,c=e[o]>>>0;let d=i-r,f=-1>>>32-d>>>0,p=(u|(c&f)<<r)&a;n[l+t]=p|0,s=d}l+=32,s=0,t<7&&(c=e[o]>>>0)}}var FS=dS(cS),IS=3*FS/256+FS|0;function LS(){let e=new Uint8Array(IS);return{dataToBePacked:Array(33),dataPointers:new Int32Array(33),byteContainer:e,byteContainerI32:new Int32Array(e.buffer,e.byteOffset,e.byteLength>>>2),exceptionSizes:new Int32Array(33)}}function RS(e=16){if(e<0)throw RangeError(`initialEncodedWordCapacity must be >= 0, got ${e}`);let t=Math.max(16,e|0);return{encodedWords:new Uint32Array(t),decoderWorkspace:LS()}}function zS(e,t){if(t<=e.encodedWords.length)return e.encodedWords;let n=new Uint32Array(Math.max(16,t*2));return e.encodedWords=n,n}function BS(e,t,n,r){r.byteContainer.length<n&&(r.byteContainer=new Uint8Array(n*2),r.byteContainerI32=void 0);let i=r.byteContainer,a=n>>>2;if(i.byteOffset&3)for(let n=0;n<a;n=n+1|0){let r=e[t+n|0]|0,a=n<<2;i[a]=r&255,i[a+1|0]=r>>>8&255,i[a+2|0]=r>>>16&255,i[a+3|0]=r>>>24&255}else{let n=r.byteContainerI32;(!n||n.buffer!==i.buffer||n.byteOffset!==i.byteOffset||n.length<a)&&(n=r.byteContainerI32=new Int32Array(i.buffer,i.byteOffset,i.byteLength>>>2)),n.set(e.subarray(t,t+a))}let o=n&3;if(o>0){let n=e[t+a|0]|0,r=a<<2;for(let e=0;e<o;e=e+1|0)i[r+e|0]=n>>>(e<<3)&255}return i}function VS(e,t,n){let r=e[t++]|0,i=n.dataToBePacked;for(let a=2;a<=32;a=a+1|0){if(!(r>>>a-1&1))continue;if(t>=e.length)throw Error(`FastPFOR decode: truncated exception stream header (bitWidth=${a}, streamWordIndex=${t}, needWords=1, availableWords=${e.length-t}, encodedWords=${e.length})`);let o=e[t++]>>>0,s=uS(o),c=o*a+31>>>5;if(t+c>e.length)throw Error(`FastPFOR decode: truncated exception stream (bitWidth=${a}, size=${o}, streamWordIndex=${t}, needWords=${c}, availableWords=${e.length-t}, encodedWords=${e.length})`);let l=i[a];(!l||l.length<s)&&(l=i[a]=new Uint32Array(s));let u=0;for(;u<o;u=u+32|0)ZS(e,t,l,u,a),t=t+a|0;let d=u-o|0;t=t-(d*a>>>5)|0,n.exceptionSizes[a]=o}return t}function HS(e,t,n,r,i){switch(i){case 1:TS(e,t,n,r);break;case 2:ES(e,t,n,r);break;case 3:DS(e,t,n,r);break;case 4:OS(e,t,n,r);break;case 5:kS(e,t,n,r);break;case 6:AS(e,t,n,r);break;case 7:jS(e,t,n,r);break;case 8:MS(e,t,n,r);break;case 16:NS(e,t,n,r);break;default:PS(e,t,n,r,i)}return t+(i<<3)|0}function US(e,t,n,r){if(n+2>t)throw Error(`FastPFOR decode: byteContainer underflow at block=${r} (need 2 bytes for [bitWidth, exceptionCount], bytePos=${n}, byteSize=${t})`);let i=e[n++],a=e[n++];if(i>32)throw Error(`FastPFOR decode: invalid bitWidth=${i} at block=${r} (expected 0..32). This likely indicates corrupted or truncated input.`);return{bitWidth:i,exceptionCount:a,bytePosIn:n}}function WS(e,t,n,r,i,a){if(n+1>t)throw Error(`FastPFOR decode: exception header underflow at block=${a} (need 1 byte for maxBits, bytePos=${n}, byteSize=${t})`);let o=e[n++];if(o<r||o>32)throw Error(`FastPFOR decode: invalid maxBits=${o} at block=${a} (bitWidth=${r}, expected ${r}..32)`);let s=o-r|0;if(s<1||s>32)throw Error(`FastPFOR decode: invalid exceptionBitWidth=${s} at block=${a} (bitWidth=${r}, maxBits=${o})`);if(n+i>t)throw Error(`FastPFOR decode: exception positions underflow at block=${a} (need=${i}, have=${t-n})`);return{maxBits:o,exceptionBitWidth:s,bytePosIn:n}}function GS(e,t,n,r,i,a,o,s,c){let{maxBits:l,exceptionBitWidth:u,bytePosIn:d}=WS(i,a,o,n,r,c);if(o=d,u===1){let a=1<<n;for(let n=0;n<r;n=n+1|0){let n=i[o++];e[n+t|0]|=a}return o}let f=s.dataToBePacked[u];if(!f)throw Error(`FastPFOR decode: missing exception stream for exceptionBitWidth=${u} (bitWidth=${n}, maxBits=${l}) at block ${c}`);let p=s.dataPointers,m=p[u]|0,h=s.exceptionSizes[u]|0;if(m+r>h)throw Error(`FastPFOR decode: exception stream overflow for exceptionBitWidth=${u} (ptr=${m}, need ${r}, size=${h}) at block ${c}`);for(let a=0;a<r;a=a+1|0){let r=i[o++],a=f[m++]|0;e[r+t|0]|=a<<n}return p[u]=m,o}function KS(e,t,n,r,i,a,o,s,c,l){let u=n|0,d=0;for(let t=0;t<o;t=t+1|0){let n=US(s,c,d,t);d=n.bytePosIn;let r=n.bitWidth,o=n.exceptionCount,f=a+t*256|0;switch(r){case 0:i.fill(0,f,f+256);break;case 32:for(let t=0;t<256;t=t+1|0)i[f+t|0]=e[u+t|0]|0;u=u+256|0;break;default:u=HS(e,u,i,f,r)}o>0&&(d=GS(i,f,r,o,s,c,d,l,t))}if(u!==r)throw Error(`FastPFOR decode: packed region mismatch (pageStart=${t}, packedStart=${n}, consumedPackedEnd=${u}, expectedPackedEnd=${r}, packedWords=${r-n}, encoded.length=${e.length})`)}function qS(e,t,n,r,i,a){let o=n|0,s=e[o]|0;if(s<=0||o+s>e.length-1)throw Error(`FastPFOR decode: invalid whereMeta=${s} at pageStart=${o} (expected > 0 and pageStart+whereMeta < encoded.length=${e.length})`);let c=o+1|0,l=o+s|0,u=e[l]>>>0,d=u+3>>>2,f=l+1,p=f+d;if(p>=e.length)throw Error(`FastPFOR decode: invalid byteSize=${u} (metaInts=${d}, pageStart=${o}, packedEnd=${l}, byteContainerStart=${f}) causes bitmapPos=${p} out of bounds (encoded.length=${e.length})`);let m=BS(e,f,u,a),h=u,g=VS(e,p,a);return a.dataPointers.fill(0),KS(e,o,c,l,t,r|0,i/256|0,m,h,a),g}function JS(e,t,n,r,i,a){let o=r+lS(i,256),s=r,c=n;for(;s!==o;){let n=Math.min(FS,o-s);c=qS(e,t,c,s,n,a),s=s+n|0}return c}function YS(e,t,n,r,i,a){if(a===0)return t;let o=0,s=t,c=t+n,l=i,u=i,d=i+a,f=0,p=0;for(;s<c&&u<d;){let t=e[s]>>>o&255;if(o+=8,s+=o>>>5,o&=31,f|=(t&127)<<p,t&128)r[u++]=f|0,f=0,p=0;else if(p+=7,p>28)throw Error(`FastPFOR VByte: unterminated value (expected MSB=1 terminator within 5 bytes; shift=${p}, partial=${f}, decoded=${u-l}/${a}, inPos=${s}, inEnd=${c})`)}if(u!==d)throw Error(`FastPFOR VByte: truncated stream (decoded=${u-l}, expected=${a}, consumedWords=${s-t}/${n}, vbyteStart=${t}, vbyteEnd=${c})`);return s}function XS(e,t,n){let r=0,i=0,a=new Uint32Array(t),o=n??LS();if(e.length>0){let t=e[r]|0;if(r=r+1|0,t&255)throw Error(`FastPFOR decode: invalid alignedLength=${t} (expected multiple of 256)`);if(i+t>a.length)throw Error(`FastPFOR decode: output buffer too small (outPos=${i}, alignedLength=${t}, out.length=${a.length})`);r=JS(e,a,r,i,t,o),i=i+t|0}let s=e.length-r|0,c=t-i|0;return YS(e,r,s,a,i,c),a}function ZS(e,t,n,r,i){switch(i){case 2:pS(e,t,n,r);return;case 3:mS(e,t,n,r);return;case 4:hS(e,t,n,r);return;case 5:gS(e,t,n,r);return;case 6:_S(e,t,n,r);return;case 7:vS(e,t,n,r);return;case 8:yS(e,t,n,r);return;case 9:bS(e,t,n,r);return;case 10:xS(e,t,n,r);return;case 11:SS(e,t,n,r);return;case 12:CS(e,t,n,r);return;case 16:wS(e,t,n,r);return;case 32:for(let i=0;i<32;i=i+1|0)n[r+i|0]=e[t+i|0]|0;return}let a=sS[i]>>>0,o=t,s=0,c=e[o]>>>0;for(let t=0;t<32;t++)if(s+i<=32){let l=c>>>s&a;n[r+t]=l|0,s+=i,s===32&&(s=0,o++,t!==31&&(c=e[o]>>>0))}else{let l=32-s,u=c>>>s;o++,c=e[o]>>>0;let d=sS[i-l]>>>0,f=(u|(c&d)<<l)&a;n[r+t]=f|0,s=i-l}}function QS(e,t,n,r){if(t<0||n<0||t+n>e.length)throw RangeError(`decodeBigEndianInt32sInto: out of bounds (offset=${t}, byteLength=${n}, bytes.length=${e.length})`);let i=Math.floor(n/4),a=n%4!=0,o=a?i+1:i;if(r.length<o)throw RangeError(`decodeBigEndianInt32sInto: out.length=${r.length} < ${o}`);if(i>0){let n=e.byteOffset+t;if(n&3)for(let n=0;n<i;n++){let i=t+n*4;r[n]=e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3]}else{let t=new Uint32Array(e.buffer,n,i);for(let e=0;e<i;e++)r[e]=fS(t[e])|0}}if(a){let a=t+i*4,o=n-i*4,s=0;for(let t=0;t<o;t++)s|=e[a+t]<<24-t*8;r[i]=s|0}return o}function $S(e,t,n){let r=new Uint32Array(n),i=0,a=t.get();for(let t=0;t<r.length;t++){let t=e[a++],n=t&127;t<128||(t=e[a++],n|=(t&127)<<7,t<128||(t=e[a++],n|=(t&127)<<14,t<128||(t=e[a++],n|=(t&127)<<21,t<128||(t=e[a++],n|=(t&15)<<28)))),r[i++]=n}return t.set(a),r}function eC(e,t,n){let r=new BigUint64Array(n);for(let n=0;n<r.length;n++)r[n]=tC(e,t);return r}function tC(e,t){let n=0n,r=0,i=t.get();for(;i<e.length;){let t=e[i++];if(n|=BigInt(t&127)<<BigInt(r),!(t&128))break;if(r+=7,r>=64)throw Error(`Varint too long`)}return t.set(i),n}function nC(e,t,n){let r=new Float64Array(n);for(let i=0;i<n;i++)r[i]=rC(e,t);return r}function rC(e,t){let n,r;return r=e[t.get()],t.increment(),n=r&127,r<128||(r=e[t.get()],t.increment(),n|=(r&127)<<7,r<128)||(r=e[t.get()],t.increment(),n|=(r&127)<<14,r<128)||(r=e[t.get()],t.increment(),n|=(r&127)<<21,r<128)?n:(r=e[t.get()],n|=(r&15)<<28,iC(n,e,t))}function iC(e,t,n){let r,i;if(i=t[n.get()],n.increment(),r=(i&112)>>4,i<128||(i=t[n.get()],n.increment(),r|=(i&127)<<3,i<128)||(i=t[n.get()],n.increment(),r|=(i&127)<<10,i<128)||(i=t[n.get()],n.increment(),r|=(i&127)<<17,i<128)||(i=t[n.get()],n.increment(),r|=(i&127)<<24,i<128)||(i=t[n.get()],n.increment(),r|=(i&1)<<31,i<128))return r*4294967296+(e>>>0);throw Error(`Expected varint not more than 10 bytes`)}function aC(e,t,n,r){return oC(e,t,n,r,RS(n>>>2))}function oC(e,t,n,r,i){let a=r.get();if(n&3)throw Error(`FastPFOR: invalid encodedByteLength=${n} at offset=${a} (encodedBytes.length=${e.length}; expected a multiple of 4 bytes for an int32 big-endian word stream)`);let o=n>>>2,s=zS(i,o);QS(e,a,n,s);let c=XS(s.subarray(0,o),t,i.decoderWorkspace);return r.add(n),c}function sC(e){return e>>>1^-(e&1)}function cC(e){return e>>1n^-(e&1n)}function lC(e){return e%2==1?(e+1)/-2:e/2}function uC(e){let t=new Int32Array(e.length);for(let n=0;n<e.length;n++)t[n]=sC(e[n]);return t}function dC(e){let t=new BigInt64Array(e.length);for(let n=0;n<e.length;n++)t[n]=cC(e[n]);return t}function fC(e){for(let t=0;t<e.length;t++)e[t]=lC(e[t])}function pC(e,t,n){if(n===void 0){n=0;for(let r=0;r<t;r++)n+=e[r]}let r=new Uint32Array(n),i=0;for(let n=0;n<t;n++){let a=e[n],o=e[n+t];r.fill(o,i,i+a),i+=a}return r}function mC(e,t,n){if(n===void 0){n=0;for(let r=0;r<t;r++)n+=Number(e[r])}let r=new BigUint64Array(n),i=0;for(let n=0;n<t;n++){let a=Number(e[n]),o=e[n+t];r.fill(o,i,i+a),i+=a}return r}function hC(e,t,n){let r=new Float64Array(n),i=0;for(let n=0;n<t;n++){let a=e[n],o=e[n+t];r.fill(o,i,i+a),i+=a}return r}function gC(e){let t=new Int32Array(e.length);t[0]=sC(e[0]);let n=e.length/4*4,r=1;if(n>=4)for(;r<n-4;r+=4){let n=e[r],i=e[r+1],a=e[r+2],o=e[r+3];t[r]=sC(n)+t[r-1],t[r+1]=sC(i)+t[r],t[r+2]=sC(a)+t[r+1],t[r+3]=sC(o)+t[r+2]}for(;r!==e.length;++r)t[r]=sC(e[r])+t[r-1];return t}function _C(e){let t=new BigInt64Array(e.length);t[0]=cC(e[0]);let n=e.length/4*4,r=1;if(n>=4)for(;r<n-4;r+=4){let n=e[r],i=e[r+1],a=e[r+2],o=e[r+3];t[r]=cC(n)+t[r-1],t[r+1]=cC(i)+t[r],t[r+2]=cC(a)+t[r+1],t[r+3]=cC(o)+t[r+2]}for(;r!==t.length;++r)t[r]=cC(e[r])+t[r-1];return t}function vC(e){e[0]=lC(e[0]);let t=e.length/4*4,n=1;if(t>=4)for(;n<t-4;n+=4){let t=e[n],r=e[n+1],i=e[n+2],a=e[n+3];e[n]=lC(t)+e[n-1],e[n+1]=lC(r)+e[n],e[n+2]=lC(i)+e[n+1],e[n+3]=lC(a)+e[n+2]}for(;n!==e.length;++n)e[n]=lC(e[n])+e[n-1]}function yC(e,t,n){if(n===void 0){n=0;for(let r=0;r<t;r++)n+=e[r]}let r=new Int32Array(n),i=0;for(let n=0;n<t;n++){let a=e[n],o=e[n+t];o=sC(o),r.fill(o,i,i+a),i+=a}return r}function bC(e,t,n){if(n===void 0){n=0;for(let r=0;r<t;r++)n+=Number(e[r])}let r=new BigInt64Array(n),i=0;for(let n=0;n<t;n++){let a=Number(e[n]),o=e[n+t];o=cC(o),r.fill(o,i,i+a),i+=a}return r}function xC(e,t,n){let r=new Float64Array(n),i=0;for(let n=0;n<t;n++){let a=e[n],o=e[n+t];o=lC(o),r.fill(o,i,i+a),i+=a}return r}function SC(e){let t=e.length/4*4,n=1;if(t>=4)for(let r=e[0];n<t-4;n+=4)r=e[n]+=r,r=e[n+1]+=r,r=e[n+2]+=r,r=e[n+3]+=r;for(;n!==e.length;)e[n]+=e[n-1],++n}function CC(e){let t=0;for(let n=0;n<e.length;n++)e[n]+=t,t=e[n]}function wC(e){if(e.length<2)return new Int32Array(e);let t=new Int32Array(e.length);t[0]=sC(e[0]),t[1]=sC(e[1]);let n=e.length/4*4,r=2;if(n>=4)for(;r<n-4;r+=4){let n=e[r],i=e[r+1],a=e[r+2],o=e[r+3];t[r]=sC(n)+t[r-2],t[r+1]=sC(i)+t[r-1],t[r+2]=sC(a)+t[r],t[r+3]=sC(o)+t[r+1]}for(;r!==e.length;r+=2)t[r]=sC(e[r])+t[r-2],t[r+1]=sC(e[r+1])+t[r-1];return t}function TC(e,t,n,r){if(e.length<2)return new Int32Array(e);let i=new Int32Array(e.length),a=sC(e[0]),o=sC(e[1]);i[0]=EC(Math.round(a*t),n,r),i[1]=EC(Math.round(o*t),n,r);let s=e.length/16,c=2;if(s>=4)for(;c<s-4;c+=4){let s=e[c],l=e[c+1],u=sC(s)+a,d=sC(l)+o;i[c]=EC(Math.round(u*t),n,r),i[c+1]=EC(Math.round(d*t),n,r);let f=e[c+2],p=e[c+3];a=sC(f)+u,o=sC(p)+d,i[c+2]=EC(Math.round(a*t),n,r),i[c+3]=EC(Math.round(o*t),n,r)}for(;c!==e.length;c+=2)a+=sC(e[c]),o+=sC(e[c+1]),i[c]=EC(Math.round(a*t),n,r),i[c+1]=EC(Math.round(o*t),n,r);return i}function EC(e,t,n){return Math.min(n,Math.max(t,e))}function DC(e){let t=new Int32Array(e.length+1);t[0]=0,t[1]=sC(e[0]);let n=t[1];for(let r=2;r!==t.length;++r){let i=e[r-1],a=sC(i);n+=a,t[r]=t[r-1]+n}return new Uint32Array(t)}function OC(e,t,n){let r=new Int32Array(n+1);r[0]=0;let i=1,a=r[0];for(let n=0;n<t;n++){let o=e[n],s=e[n+t];s=sC(s);for(let e=i;e<i+o;e++)r[e]=s+a,a=r[e];i+=o}return r}function kC(e,t,n){let r=new Uint32Array(n+1);r[0]=0;let i=1,a=r[0];for(let n=0;n<t;n++){let o=e[n],s=e[n+t];for(let e=i;e<i+o;e++)r[e]=s+a,a=r[e];i+=o}return r}function AC(e,t,n){let r=new Int32Array(n),i=0,a=0;for(let n=0;n<t;n++){let o=e[n],s=e[n+t],c=sC(s);for(let e=0;e<o;e++)a+=c,r[i++]=a}return r}function jC(e,t,n){let r=new BigInt64Array(n),i=0,a=0n;for(let n=0;n<t;n++){let o=Number(e[n]),s=e[n+t],c=cC(s);for(let e=0;e<o;e++)a+=c,r[i++]=a}return r}function MC(e){let t=new Uint32Array(e.length);t[0]=sC(e[0])>>>0;for(let n=1;n<e.length;n++)t[n]=t[n-1]+sC(e[n])>>>0;return t}function NC(e){let t=new BigUint64Array(e.length);t[0]=BigInt.asUintN(64,cC(e[0]));for(let n=1;n<e.length;n++)t[n]=BigInt.asUintN(64,t[n-1]+cC(e[n]));return t}function PC(e){if(e.length<2)return new Uint32Array(e);let t=new Uint32Array(e.length);t[0]=sC(e[0])>>>0,t[1]=sC(e[1])>>>0;for(let n=2;n<e.length;n+=2)t[n]=t[n-2]+sC(e[n])>>>0,t[n+1]=t[n-1]+sC(e[n+1])>>>0;return t}function FC(e,t,n,r){let i=TC(e,t,n,r);return new Uint32Array(i)}function IC(e){return e[1]}function LC(e){return sC(e[1])}function RC(e){if(e.length===2){let t=sC(e[1]);return[t,t]}return[sC(e[2]),sC(e[3])]}function zC(e){return e[1]}function BC(e){return cC(e[1])}function VC(e){if(e.length===2){let t=cC(e[1]);return[t,t]}return[cC(e[2]),cC(e[3])]}var HC;(function(e){e.PRESENT=`PRESENT`,e.DATA=`DATA`,e.OFFSET=`OFFSET`,e.LENGTH=`LENGTH`})(HC||={});var UC;(function(e){e.NONE=`NONE`,e.SINGLE=`SINGLE`,e.SHARED=`SHARED`,e.VERTEX=`VERTEX`,e.MORTON=`MORTON`,e.FSST=`FSST`})(UC||={});var WC;(function(e){e.VERTEX=`VERTEX`,e.INDEX=`INDEX`,e.STRING=`STRING`,e.KEY=`KEY`})(WC||={});var GC;(function(e){e.VAR_BINARY=`VAR_BINARY`,e.GEOMETRIES=`GEOMETRIES`,e.PARTS=`PARTS`,e.RINGS=`RINGS`,e.TRIANGLES=`TRIANGLES`,e.SYMBOL=`SYMBOL`,e.DICTIONARY=`DICTIONARY`})(GC||={});var KC=[HC.PRESENT,HC.DATA,HC.OFFSET,HC.LENGTH],qC=[$.NONE,$.DELTA,$.COMPONENTWISE_DELTA,$.RLE,$.MORTON],JC=[aS.NONE,aS.FAST_PFOR,aS.VARINT],YC=[UC.NONE,UC.SINGLE,UC.SHARED,UC.VERTEX,UC.MORTON,UC.FSST],XC=[WC.VERTEX,WC.INDEX,WC.STRING,WC.KEY],ZC=[GC.VAR_BINARY,GC.GEOMETRIES,GC.PARTS,GC.RINGS,GC.TRIANGLES,GC.SYMBOL,GC.DICTIONARY];function QC(e,t){let n=tw(e,t);return n.logicalLevelTechnique1===$.MORTON?$C(n,e,t):($.RLE===n.logicalLevelTechnique1||$.RLE===n.logicalLevelTechnique2)&&aS.NONE!==n.physicalLevelTechnique?ew(n,e,t):n}function $C(e,t,n){let r=$S(t,n,2);return{physicalStreamType:e.physicalStreamType,logicalStreamType:e.logicalStreamType,logicalLevelTechnique1:e.logicalLevelTechnique1,logicalLevelTechnique2:e.logicalLevelTechnique2,physicalLevelTechnique:e.physicalLevelTechnique,numValues:e.numValues,byteLength:e.byteLength,decompressedCount:e.decompressedCount,numBits:r[0],coordinateShift:r[1]}}function ew(e,t,n){let r=$S(t,n,2);return{physicalStreamType:e.physicalStreamType,logicalStreamType:e.logicalStreamType,logicalLevelTechnique1:e.logicalLevelTechnique1,logicalLevelTechnique2:e.logicalLevelTechnique2,physicalLevelTechnique:e.physicalLevelTechnique,numValues:e.numValues,byteLength:e.byteLength,decompressedCount:r[1],runs:r[0],numRleValues:r[1]}}function tw(e,t){let n=e[t.get()],r=KC[n>>4],i={};switch(r){case HC.DATA:i={dictionaryType:YC[n&15]};break;case HC.OFFSET:i={offsetType:XC[n&15]};break;case HC.LENGTH:i={lengthType:ZC[n&15]}}t.increment();let a=e[t.get()],o=qC[a>>5],s=qC[a>>2&7],c=JC[a&3];t.increment();let l=$S(e,t,2),u=l[0],d=l[1];return{physicalStreamType:r,logicalStreamType:i,logicalLevelTechnique1:o,logicalLevelTechnique2:s,physicalLevelTechnique:c,numValues:u,byteLength:d,decompressedCount:u}}var nw;(function(e){e[e.FLAT=0]=`FLAT`,e[e.CONST=1]=`CONST`,e[e.SEQUENCE=2]=`SEQUENCE`,e[e.DICTIONARY=3]=`DICTIONARY`,e[e.FSST_DICTIONARY=4]=`FSST_DICTIONARY`})(nw||={});var rw=class{constructor(e,t){this.values=e,this._size=t}get(e){let t=Math.floor(e/8),n=e%8;return(this.values[t]>>n&1)==1}set(e,t){let n=Math.floor(e/8),r=e%8;this.values[n]=this.values[n]|+!!t<<r}getInt(e){let t=Math.floor(e/8),n=e%8;return this.values[t]>>n&1}size(){return this._size}getBuffer(){return this.values}};function iw(e,t,n){if(!t)return e;let r=t.size(),i=e.constructor,a=new i(r),o=0;for(let i=0;i<r;i++)a[i]=t.get(i)?e[o++]:n;return a}function aw(e,t,n){if(!n)return e;let r=n.size(),i=new rw(e,t),a=new rw(new Uint8Array(Math.ceil(r/8)),r),o=0;for(let e=0;e<r;e++){let t=n.get(e)?i.get(o++):!1;a.set(e,t)}return a.getBuffer()}function ow(e,t,n){for(let r=0;r<e;r++){let e=QC(t,n);n.add(e.byteLength)}}function sw(e,t,n,r,i){let a=cw(e,Math.ceil(t/8),n,r);return i?aw(a,t,i):a}function cw(e,t,n,r){let i=new Uint8Array(t),a=0,o=r.get()+n;for(;a<t&&!(r.get()>=o);){let n=e[r.increment()];if(n<=127){let o=n+3,s=e[r.increment()],c=Math.min(a+o,t);i.fill(s,a,c),a=c}else{let o=256-n;for(let n=0;n<o&&a<t;n++)i[a++]=e[r.increment()]}}return r.set(o),i}function lw(e,t,n,r){let i=t.get(),a=i+n*Float32Array.BYTES_PER_ELEMENT,o=new Uint8Array(e.subarray(i,a)).buffer,s=new Float32Array(o);return t.set(a),r?iw(s,r,0):s}function uw(e,t,n,r){let i=t.get(),a=i+n*Float64Array.BYTES_PER_ELEMENT,o=new Uint8Array(e.subarray(i,a)).buffer,s=new Float64Array(o);return t.set(a),r?iw(s,r,0):s}function dw(e,t,n){let r=t.get(),i=n*Uint32Array.BYTES_PER_ELEMENT,a=new DataView(e.buffer,e.byteOffset,e.byteLength),o=new Uint32Array(n);for(let e=0;e<n;e++)o[e]=a.getUint32(r+e*Uint32Array.BYTES_PER_ELEMENT,!0);return t.add(i),o}function fw(e,t,n){let r=t.get(),i=n*BigUint64Array.BYTES_PER_ELEMENT,a=new DataView(e.buffer,e.byteOffset,e.byteLength),o=new BigUint64Array(n);for(let e=0;e<n;e++)o[e]=a.getBigUint64(r+e*BigUint64Array.BYTES_PER_ELEMENT,!0);return t.add(i),o}var pw=new TextDecoder;function mw(e,t,n){return n-t>=12?pw.decode(e.subarray(t,n)):hw(e,t,n)}function hw(e,t,n){let r=``,i=t;for(;i<n;){let t=e[i],a=null,o=t>239?4:t>223?3:t>191?2:1;if(i+o>n)break;let s,c,l;o===1?t<128&&(a=t):o===2?(s=e[i+1],(s&192)==128&&(a=(t&31)<<6|s&63,a<=127&&(a=null))):o===3?(s=e[i+1],c=e[i+2],(s&192)==128&&(c&192)==128&&(a=(t&15)<<12|(s&63)<<6|c&63,(a<=2047||a>=55296&&a<=57343)&&(a=null))):o===4&&(s=e[i+1],c=e[i+2],l=e[i+3],(s&192)==128&&(c&192)==128&&(l&192)==128&&(a=(t&15)<<18|(s&63)<<12|(c&63)<<6|l&63,(a<=65535||a>=1114112)&&(a=null))),a===null?(a=65533,o=1):a>65535&&(a-=65536,r+=String.fromCharCode(a>>>10&1023|55296),a=56320|a&1023),r+=String.fromCharCode(a),i+=o}return r}function gw(e,t,n,r,i){return jw(yw(e,t,n),n,r,i)}function _w(e,t,n,r,i){return Mw(yw(e,t,n),n,r,i)}function vw(e,t,n){return Iw(yw(e,t,n),n)}function yw(e,t,n){let r=n.physicalLevelTechnique;switch(r){case aS.FAST_PFOR:return aC(e,n.numValues,n.byteLength,t);case aS.VARINT:return $S(e,t,n.numValues);case aS.NONE:return dw(e,t,n.numValues);default:throw Error(`Specified physicalLevelTechnique ${r} is not supported (yet).`)}}function bw(e,t,n){let r=n.physicalLevelTechnique;switch(r){case aS.VARINT:return eC(e,t,n.numValues);case aS.NONE:return fw(e,t,n.numValues);default:throw Error(`Specified physicalLevelTechnique ${r} is not supported (yet).`)}}function xw(e,t,n){let r=yw(e,t,n);return r.length===1?sC(r[0]):LC(r)}function Sw(e,t,n){let r=yw(e,t,n);return r.length===1?n.logicalLevelTechnique1===$.DELTA?sC(r[0]):r[0]:IC(r)}function Cw(e,t,n){return RC(yw(e,t,n))}function ww(e,t,n){return VC(eC(e,t,n.numValues))}function Tw(e,t,n,r){return Nw(bw(e,t,n),n,r)}function Ew(e,t,n,r){return Pw(bw(e,t,n),n,r)}function Dw(e,t,n,r){let i=Ow(e,t,n,!1);return r?iw(i,r,0):i}function Ow(e,t,n,r){if(n.physicalLevelTechnique===aS.VARINT)return Fw(nC(e,t,n.numValues),n,r);let i=bw(e,t,n),a=r?Nw(i,n):Pw(i,n);return Float64Array.from(a,Number)}function kw(e,t,n){let r=bw(e,t,n);return r.length===1?cC(r[0]):BC(r)}function Aw(e,t,n){let r=bw(e,t,n);return r.length===1?n.logicalLevelTechnique1===$.DELTA?cC(r[0]):r[0]:zC(r)}function jw(e,t,n,r){let i;switch(t.logicalLevelTechnique1){case $.DELTA:if(t.logicalLevelTechnique2===$.RLE){let n=t;if(!r)return AC(e,n.runs,n.numRleValues);e=pC(e,n.runs,n.numRleValues),i=gC(e)}else i=gC(e);break;case $.RLE:i=yC(e,t.runs,t.numRleValues);break;case $.MORTON:SC(e),i=new Int32Array(e);break;case $.COMPONENTWISE_DELTA:if(n&&!r)return TC(e,n.scale,n.min,n.max);i=wC(e);break;case $.NONE:i=uC(e);break;default:throw Error(`The specified Logical level technique is not supported: ${t.logicalLevelTechnique1}`)}return r?iw(i,r,0):i}function Mw(e,t,n,r){let i;switch(t.logicalLevelTechnique1){case $.DELTA:if(t.logicalLevelTechnique2===$.RLE){let n=t;i=MC(pC(e,n.runs,n.numRleValues))}else i=MC(e);break;case $.RLE:i=pC(e,t.runs,t.numRleValues);break;case $.MORTON:SC(e),i=e;break;case $.COMPONENTWISE_DELTA:i=n&&!r?FC(e,n.scale,n.min,n.max):PC(e);break;case $.NONE:i=e;break;default:throw Error(`The specified Logical level technique is not supported: ${t.logicalLevelTechnique1}`)}return r?iw(i,r,0):i}function Nw(e,t,n){let r;switch(t.logicalLevelTechnique1){case $.DELTA:if(t.logicalLevelTechnique2===$.RLE){let i=t;if(!n)return jC(e,i.runs,i.numRleValues);e=mC(e,i.runs,i.numRleValues),r=_C(e)}else r=_C(e);break;case $.RLE:r=bC(e,t.runs,t.numRleValues);break;case $.NONE:r=dC(e);break;default:throw Error(`The specified Logical level technique is not supported: ${t.logicalLevelTechnique1}`)}return n?iw(r,n,0n):r}function Pw(e,t,n){let r;switch(t.logicalLevelTechnique1){case $.DELTA:if(t.logicalLevelTechnique2===$.RLE){let n=t;r=NC(mC(e,n.runs,n.numRleValues))}else r=NC(e);break;case $.RLE:r=mC(e,t.runs,t.numRleValues);break;case $.NONE:r=e;break;default:throw Error(`The specified Logical level technique is not supported: ${t.logicalLevelTechnique1}`)}return n?iw(r,n,0n):r}function Fw(e,t,n){switch(t.logicalLevelTechnique1){case $.DELTA:if(t.logicalLevelTechnique2===$.RLE){let n=t;e=hC(e,n.runs,n.numRleValues)}return vC(e),e;case $.RLE:return zw(e,t,n);case $.NONE:return n&&fC(e),e;default:throw Error(`The specified Logical level technique is not supported: ${t.logicalLevelTechnique1}`)}}function Iw(e,t){if(t.logicalLevelTechnique1===$.DELTA&&t.logicalLevelTechnique2===$.NONE)return DC(e);if(t.logicalLevelTechnique1===$.RLE&&t.logicalLevelTechnique2===$.NONE){let n=t;return kC(e,n.runs,n.numRleValues)}if(t.logicalLevelTechnique1===$.NONE&&t.logicalLevelTechnique2===$.NONE){CC(e);let n=new Uint32Array(t.numValues+1);return n[0]=0,n.set(e,1),n}if(t.logicalLevelTechnique1===$.DELTA&&t.logicalLevelTechnique2===$.RLE){let n=t,r=OC(e,n.runs,n.numRleValues);return SC(r),new Uint32Array(r)}throw Error(`Only delta encoding is supported for transforming length to offset streams yet.`)}function Lw(e,t,n,r,i=`int32`){let a=e.logicalLevelTechnique1;if(a===$.RLE)return e.runs===1?nw.CONST:nw.FLAT;if(a!==$.DELTA||e.logicalLevelTechnique2!==$.RLE)return e.numValues===1?nw.CONST:nw.FLAT;let o=t instanceof rw?t.size():t,s=e;if(s.numRleValues!==o)return nw.FLAT;if(s.runs===1)return nw.SEQUENCE;if(s.runs!==2)return e.numValues===1?nw.CONST:nw.FLAT;let c=r.get();if(e.physicalLevelTechnique===aS.VARINT)return Rw(n,r,i)?nw.SEQUENCE:e.numValues===1?nw.CONST:nw.FLAT;let l=r.get(),u=new Int32Array(n.buffer,n.byteOffset+l,4);return r.set(c),u[2]===2&&u[3]===2?nw.SEQUENCE:e.numValues===1?nw.CONST:nw.FLAT}function Rw(e,t,n){let r=new iS(t.get());if(n===`int64`){let t=eC(e,r,4);return t[2]===2n&&t[3]===2n}let i=$S(e,r,4);return i[2]===2&&i[3]===2}function zw(e,t,n){return n?xC(e,t.runs,t.numRleValues):hC(e,t.runs,t.numRleValues)}var Bw=class extends qx{getValueFromBuffer(e){return this.dataBuffer[e]}},Vw=class extends Xx{constructor(e,t,n,r,i){super(e,i?BigInt64Array.of(t):BigUint64Array.of(t),n,r)}getValueFromBuffer(e){return this.dataBuffer[0]+BigInt(e)*this.delta}};function Hw(e,t,n){return{x:Uw(e,t)-n,y:Uw(e>>1,t)-n}}function Uw(e,t){let n=0;for(let r=0;r<t;r++)n|=(e&1<<2*r)>>r;return n}var Ww;(function(e){e[e.POINT=0]=`POINT`,e[e.LINESTRING=1]=`LINESTRING`,e[e.POLYGON=2]=`POLYGON`,e[e.MULTIPOINT=3]=`MULTIPOINT`,e[e.MULTILINESTRING=4]=`MULTILINESTRING`,e[e.MULTIPOLYGON=5]=`MULTIPOLYGON`})(Ww||={});var Gw;(function(e){e[e.POINT=0]=`POINT`,e[e.LINESTRING=1]=`LINESTRING`,e[e.POLYGON=2]=`POLYGON`})(Gw||={});var Kw;(function(e){e[e.MORTON=0]=`MORTON`,e[e.VEC_2=1]=`VEC_2`,e[e.VEC_3=2]=`VEC_3`})(Kw||={});function qw(e){let t=Array(e.numGeometries),n=1,r=1,i=1,a=0,o=0,s=0,c=e.mortonSettings,l=e.topologyVector,u=l.geometryOffsets,d=l.partOffsets,p=l.ringOffsets,m=e.vertexOffsets,h=!m||m.length===0,g=e.containsPolygonGeometry(),_=e.vertexBuffer;for(let l=0;l<e.numGeometries;l++){let v=e.geometryType(l);switch(v){case Ww.POINT:{let l,g;if(h)l=_[o++],g=_[o++];else if(e.vertexBufferType===Kw.MORTON){let e=_[m[s++]],t=Hw(e,c.numBits,c.coordinateShift);l=t.x,g=t.y}else{let e=m[s++]*2;l=_[e],g=_[e+1]}t[a++]=[[new f(l,g)]],u&&i++,d&&n++,p&&r++}break;case Ww.MULTIPOINT:{let l=u[i]-u[i-1];i++;let d;if(h){d=Array(l);for(let e=0;e<l;e++){let t=_[o++],n=_[o++];d[e]=new f(t,n)}}else d=Jw(e.vertexBufferType,_,m,s,l,!1,c),s+=l;t[a++]=d.map(e=>[e]),n+=l,r+=l}break;case Ww.LINESTRING:{let l;g?(l=p[r]-p[r-1],r++):l=d[n]-d[n-1],n++;let f;h?(f=Yw(_,o,l,!1),o+=l*2):(f=Jw(e.vertexBufferType,_,m,s,l,!1,c),s+=l),t[a++]=[f],u&&i++}break;case Ww.POLYGON:{let l=d[n]-d[n-1];n++;let f=Array(l-1),g,v=p[r]-p[r-1];if(r++,h){g=Yw(_,o,v,!0),o+=v*2;for(let e=0;e<f.length;e++)v=p[r]-p[r-1],r++,f[e]=Yw(_,o,v,!0),o+=v*2}else{g=Jw(e.vertexBufferType,_,m,s,v,!0,c),s+=v;for(let t=0;t<f.length;t++)v=p[r]-p[r-1],r++,f[t]=Jw(e.vertexBufferType,_,m,s,v,!0,c),s+=v}t[a++]=[g].concat(f),u&&i++}break;case Ww.MULTILINESTRING:{let l=u[i]-u[i-1];i++;let f=Array(l);for(let t=0;t<l;t++){let i;if(g?(i=p[r]-p[r-1],r++):i=d[n]-d[n-1],n++,h)f[t]=Yw(_,o,i,!1),o+=i*2;else{let n=Jw(e.vertexBufferType,_,m,s,i,!1,c);f[t]=n,s+=i}}t[a++]=f}break;case Ww.MULTIPOLYGON:{let l=u[i]-u[i-1];i++;let f=Array(l);for(let t=0;t<l;t++){let i=d[n]-d[n-1];n++;let a,l=Array(i-1),u=p[r]-p[r-1];r++,h?(a=Yw(_,o,u,!0),o+=u*2):(a=Jw(e.vertexBufferType,_,m,s,u,!0,c),s+=u);for(let t=0;t<l.length;t++){let n=p[r]-p[r-1];r++,h?(l[t]=Yw(_,o,n,!0),o+=n*2):(l[t]=Jw(e.vertexBufferType,_,m,s,n,!0,c),s+=n)}f[t]=[a].concat(l)}t[a++]=f.flat()}break;default:throw Error(`The specified geometry type (${v}) is currently not supported.`)}}return t}function Jw(e,t,n,r,i,a,o){return e===Kw.MORTON?Zw(t,n,r,i,a,o):Xw(t,n,r,i,a)}function Yw(e,t,n,r){let i=Array(r?n+1:n);for(let r=0;r<n*2;r+=2){let n=e[t+r],a=e[t+r+1];i[r/2]=new f(n,a)}return r&&(i[i.length-1]=i[0]),i}function Xw(e,t,n,r,i){let a=Array(i?r+1:r);for(let i=0;i<r*2;i+=2){let r=t[n+i/2]*2,o=e[r],s=e[r+1];a[i/2]=new f(o,s)}return i&&(a[a.length-1]=a[0]),a}function Zw(e,t,n,r,i,a){let o=Array(i?r+1:r);for(let i=0;i<r;i++){let r=e[t[n+i]],s=Hw(r,a.numBits,a.coordinateShift);o[i]=new f(s.x,s.y)}return i&&(o[o.length-1]=o[0]),o}var Qw=class{constructor(e,t,n,r,i){this._vertexBufferType=e,this._topologyVector=t,this._vertexOffsets=n,this._vertexBuffer=r,this._mortonSettings=i}get vertexBufferType(){return this._vertexBufferType}get topologyVector(){return this._topologyVector}get vertexOffsets(){return this._vertexOffsets}get vertexBuffer(){return this._vertexBuffer}getSimpleEncodedVertex(e){let t=this.vertexOffsets?this.vertexOffsets[e]*2:e*2;return[this.vertexBuffer[t],this.vertexBuffer[t+1]]}getVertex(e){if(this.vertexOffsets&&this.mortonSettings){let t=this.vertexOffsets[e],n=this.vertexBuffer[t],r=Hw(n,this.mortonSettings.numBits,this.mortonSettings.coordinateShift);return[r.x,r.y]}let t=this.vertexOffsets?this.vertexOffsets[e]*2:e*2;return[this.vertexBuffer[t],this.vertexBuffer[t+1]]}getGeometries(){return qw(this)}get mortonSettings(){return this._mortonSettings}};function $w(e,t,n,r,i){return new tT(e,t,Kw.VEC_2,n,r,i)}function eT(e,t,n,r,i,a){return new tT(e,t,Kw.MORTON,n,r,i,a)}var tT=class extends Qw{constructor(e,t,n,r,i,a,o){super(n,r,i,a,o),this._numGeometries=e,this._geometryType=t}geometryType(e){return this._geometryType}get numGeometries(){return this._numGeometries}containsPolygonGeometry(){return this._geometryType===Ww.POLYGON||this._geometryType===Ww.MULTIPOLYGON}containsSingleGeometryType(){return!0}};function nT(e,t,n,r){return new iT(Kw.VEC_2,e,t,n,r)}function rT(e,t,n,r,i){return new iT(Kw.MORTON,e,t,n,r,i)}var iT=class extends Qw{constructor(e,t,n,r,i,a){super(e,n,r,i,a),this._geometryTypes=t}geometryType(e){return this._geometryTypes[e]}get numGeometries(){return this._geometryTypes.length}containsPolygonGeometry(){for(let e=0;e<this.numGeometries;e++)if(this.geometryType(e)===Ww.POLYGON||this.geometryType(e)===Ww.MULTIPOLYGON)return!0;return!1}containsSingleGeometryType(){return!1}},aT=class{constructor(e,t,n,r){this._triangleOffsets=e,this._indexBuffer=t,this._vertexBuffer=n,this._topologyVector=r}get triangleOffsets(){return this._triangleOffsets}get indexBuffer(){return this._indexBuffer}get vertexBuffer(){return this._vertexBuffer}get topologyVector(){return this._topologyVector}getGeometries(){if(!this._topologyVector)throw Error(`Cannot convert GpuVector to coordinates without topology information`);let e=new Uint32Array(this.numGeometries);for(let t=0;t<this.numGeometries;t++)e[t]=this.geometryType(t);return nT(e,this._topologyVector,void 0,this._vertexBuffer).getGeometries()}[Symbol.iterator](){return null}};function oT(e,t,n,r,i,a){return new sT(e,t,n,r,i,a)}var sT=class extends aT{constructor(e,t,n,r,i,a){super(n,r,i,a),this._numGeometries=e,this._geometryType=t}geometryType(e){return this._geometryType}get numGeometries(){return this._numGeometries}containsSingleGeometryType(){return!0}};function cT(e,t,n,r,i){return new lT(e,t,n,r,i)}var lT=class extends aT{constructor(e,t,n,r,i){super(t,n,r,i),this._geometryTypes=e}geometryType(e){return this._geometryTypes[e]}get numGeometries(){return this._geometryTypes.length}containsSingleGeometryType(){return!1}};function uT(e,t,n,r,i){let a=QC(e,n),o=Lw(a,r,e,n),s,c,l,u;if(o===nw.CONST){let o=Sw(e,n,a),d,f,p,m;for(let r=0;r<t-1;r++){let t=QC(e,n);switch(t.physicalStreamType){case HC.LENGTH:switch(t.logicalStreamType.lengthType){case GC.GEOMETRIES:d=vw(e,n,t);break;case GC.PARTS:f=vw(e,n,t);break;case GC.RINGS:p=vw(e,n,t);break;case GC.TRIANGLES:m=vw(e,n,t)}break;case HC.OFFSET:switch(t.logicalStreamType.offsetType){case WC.VERTEX:s=_w(e,n,t);break;case WC.INDEX:u=_w(e,n,t)}break;case HC.DATA:if(UC.VERTEX===t.logicalStreamType.dictionaryType)c=gw(e,n,t,i);else{let r=t;l={numBits:r.numBits,coordinateShift:r.coordinateShift},c=_w(e,n,t,i)}}}return u?d!==void 0||f!==void 0?oT(r,o,m,u,c,{geometryOffsets:d,partOffsets:f,ringOffsets:p}):oT(r,o,m,u,c):l===void 0?$w(r,o,{geometryOffsets:d,partOffsets:f,ringOffsets:p},s,c):eT(r,o,{geometryOffsets:d,partOffsets:f,ringOffsets:p},s,c,l)}let d=_w(e,n,a),f,p,m,h;for(let r=0;r<t-1;r++){let t=QC(e,n);switch(t.physicalStreamType){case HC.LENGTH:switch(t.logicalStreamType.lengthType){case GC.GEOMETRIES:f=_w(e,n,t);break;case GC.PARTS:p=_w(e,n,t);break;case GC.RINGS:m=_w(e,n,t);break;case GC.TRIANGLES:h=vw(e,n,t)}break;case HC.OFFSET:switch(t.logicalStreamType.offsetType){case WC.VERTEX:s=_w(e,n,t);break;case WC.INDEX:u=_w(e,n,t)}break;case HC.DATA:if(UC.VERTEX===t.logicalStreamType.dictionaryType)c=gw(e,n,t,i);else{let r=t;l={numBits:r.numBits,coordinateShift:r.coordinateShift},c=_w(e,n,t,i)}}}let g,_,v;return f?(g=dT(d,f,2),p&&m?(_=fT(d,g,p,!1),v=mT(d,g,_,m)):p&&(_=pT(d,g,p))):p&&m?(_=dT(d,p,1),v=fT(d,_,m,!0)):p&&(_=dT(d,p,0)),u&&!_?cT(d,h,u,c):u?cT(d,h,u,c,{geometryOffsets:g,partOffsets:_,ringOffsets:v}):l===void 0?nT(d,{geometryOffsets:g,partOffsets:_,ringOffsets:v},s,c):rT(d,{geometryOffsets:g,partOffsets:_,ringOffsets:v},s,c,l)}function dT(e,t,n){let r=new Uint32Array(e.length+1),i=0;r[0]=i;let a=0;for(let o=0;o<e.length;o++)i=r[o+1]=i+(e[o]>n?t[a++]:1);return r}function fT(e,t,n,r){let i=new Uint32Array(t[t.length-1]+1),a=0;i[0]=a;let o=1,s=0;for(let c=0;c<e.length;c++){let l=e[c],u=t[c+1]-t[c];if(l===5||l===2||r&&(l===4||l===1))for(let e=0;e<u;e++)a=i[o++]=a+n[s++];else for(let e=0;e<u;e++)i[o++]=++a}return i}function pT(e,t,n){let r=new Uint32Array(t[t.length-1]+1),i=0;r[0]=i;let a=1,o=0;for(let s=0;s<e.length;s++){let c=e[s],l=t[s+1]-t[s];if(c===4||c===1)for(let e=0;e<l;e++)i=r[a++]=i+n[o++];else for(let e=0;e<l;e++)r[a++]=++i}return r}function mT(e,t,n,r){let i=new Uint32Array(n[n.length-1]+1),a=0;i[0]=a;let o=1,s=1,c=0;for(let l=0;l<e.length;l++){let u=e[l],d=t[l+1]-t[l];if(u!==0&&u!==3)for(let e=0;e<d;e++){let e=n[o]-n[o-1];o++;for(let t=0;t<e;t++)a=i[s++]=a+r[c++]}else for(let e=0;e<d;e++)i[s++]=++a,o++}return i}var hT=class extends Kx{constructor(e,t,n){super(e,t.getBuffer(),n),this.dataVector=t}getValueFromBuffer(e){return this.dataVector.get(e)}},gT=class extends qx{getValueFromBuffer(e){return this.dataBuffer[e]}},_T=class extends Kx{constructor(e,t,n,r){super(e,r?BigInt64Array.of(t):BigUint64Array.of(t),n)}getValueFromBuffer(e){return this.dataBuffer[0]}},vT=class extends Kx{constructor(e,t,n,r){super(e,n,r),this.offsetBuffer=t}},yT=class extends vT{constructor(e,t,n,r){super(e,t,n,r??t.length-1)}getValueFromBuffer(e){let t=this.offsetBuffer[e],n=this.offsetBuffer[e+1];return mw(this.dataBuffer,t,n)}},bT=class extends vT{constructor(e,t,n,r,i){super(e,n,r,i??t.length),this.indexBuffer=t,this.indexBuffer=t}getValueFromBuffer(e){let t=this.indexBuffer[e],n=this.offsetBuffer[t],r=this.offsetBuffer[t+1];return mw(this.dataBuffer,n,r)}};function xT(e,t){let n=0;for(let r=0;r<t.length;r++){let i=t[r];i===255?(n++,r++):n+=e[i]}return n}function ST(e,t,n){let r=new Uint32Array(t.length);for(let e=1;e<t.length;e++)r[e]=r[e-1]+t[e-1];let i=new Uint8Array(xT(t,n)),a=0;for(let o=0;o<n.length;o++){let s=n[o];if(s===255)o++,i[a++]=n[o];else{let n=t[s],o=r[s];for(;n-->0;)i[a++]=e[o++]}}return i}var CT=class extends vT{constructor(e,t,n,r,i,a,o,s){super(e,n,r,o??t.length),this.indexBuffer=t,this.symbolOffsetBuffer=i,this.symbolTableBuffer=a,this.sharedDictionaryCache=s}getValueFromBuffer(e){this.decodedDictionary??(this.decodedDictionary=this.sharedDictionaryCache?.decodedDictionary,this.decodedDictionary??(this.decodedDictionary=this.decodeDictionary(),this.sharedDictionaryCache&&(this.sharedDictionaryCache.decodedDictionary=this.decodedDictionary)));let t=this.indexBuffer[e],n=this.offsetBuffer[t],r=this.offsetBuffer[t+1];return mw(this.decodedDictionary,n,r)}decodeDictionary(){return this.symbolLengthBuffer??=this.offsetToLengthBuffer(this.symbolOffsetBuffer),ST(this.symbolTableBuffer,this.symbolLengthBuffer,this.dataBuffer)}offsetToLengthBuffer(e){let t=new Uint32Array(e.length-1),n=e[0];for(let r=1;r<e.length;r++){let i=e[r];t[r-1]=i-n,n=i}return t}};function wT(e,t,n,r,i){let a,o,s,c,l,u=i,d,f;for(let e=0;e<r;e++){let e=QC(t,n);switch(e.physicalStreamType){case HC.PRESENT:{let r=new rw(sw(t,e.numValues,e.byteLength,n),e.numValues);u=i??r;break}case HC.OFFSET:o=_w(t,n,e,void 0,u);break;case HC.LENGTH:{let r=vw(t,n,e);GC.DICTIONARY===e.logicalStreamType.lengthType?a=r:GC.SYMBOL===e.logicalStreamType.lengthType?c=r:d=r;break}case HC.DATA:{let r=t.subarray(n.get(),n.get()+e.byteLength);n.add(e.byteLength);let i=e.logicalStreamType.dictionaryType;UC.FSST===i?l=r:UC.SINGLE===i||UC.SHARED===i?s=r:UC.NONE===i&&(f=r);break}}}return TT(e,l,o,a,s,c,u)??ET(e,s,o,a,u)??DT(e,d,f,o,u)}function TT(e,t,n,r,i,a,o){if(t){if(!n||!r||!i||!a)throw Error(`Incomplete FSST dictionary string column "${e}"`);return new CT(e,n,r,i,a,t,o)}}function ET(e,t,n,r,i){if(t){if(!n||!r)throw Error(`Incomplete dictionary string column "${e}"`);return i?new bT(e,n,r,t,i):new bT(e,n,r,t)}}function DT(e,t,n,r,i){if(t&&n){if(r)return i?new bT(e,r,t,n,i):new bT(e,r,t,n);if(i&&i.size()!==t.length-1){let r=new Uint32Array(i.size()),a=0;for(let e=0;e<i.size();e++)i.get(e)?r[e]=a++:r[e]=0;return new bT(e,r,t,n,i)}return i?new yT(e,t,n,i):new yT(e,t,n)}}function OT(e,t,n,r){let i,a,o,s,c=!1;for(;!c;){let n=QC(e,t);switch(n.physicalStreamType){case HC.LENGTH:GC.DICTIONARY===n.logicalStreamType.lengthType?i=vw(e,t,n):o=vw(e,t,n);break;case HC.DATA:UC.SINGLE===n.logicalStreamType.dictionaryType||UC.SHARED===n.logicalStreamType.dictionaryType?(a=e.subarray(t.get(),t.get()+n.byteLength),c=!0):s=e.subarray(t.get(),t.get()+n.byteLength),t.add(n.byteLength)}}if(n.type!==`complexType`)throw Error(`Shared dictionary column ${n.name} must be a complex (struct) column.`);if(!i||!a)throw Error(`Incomplete shared dictionary for column "${n.name}"`);let l=n.complexType.children,u=[],d=s?{}:void 0,f=0;for(let c of l){let l=$S(e,t,1)[0];if(l===0)continue;let p=c.name?`${n.name}${c.name}`:n.name;if(r&&!r.has(p)){ow(l,e,t);continue}if(c.type!==`scalarField`||c.scalarField.physicalType!==tS.STRING)throw Error(`Currently only scalar string fields are implemented for a struct.`);if(l>1&&!c.nullable||l===1&&c.nullable)throw Error(`The number of streams for the child field ${c.name} does not match its nullability. nullibilty: ${c.nullable}, numStreams: ${l}`);let m;if(c.nullable){let n=QC(e,t);m=new rw(sw(e,n.numValues,n.byteLength,t),n.numValues)}let h=_w(e,t,QC(e,t),void 0,m);if(s){if(!o)throw Error(`Incomplete shared FSST dictionary for column "${p}"`);u[f++]=new CT(p,h,i,a,o,s,m,d)}else u[f++]=new bT(p,h,i,a,m)}return u}var kT=class extends Kx{constructor(e,t,n){super(e,new Uint8Array,n??t.length),this.values=t}getValueFromBuffer(e){return this.values[e]}},AT;(function(e){e[e.STRING=1]=`STRING`,e[e.INT32=2]=`INT32`,e[e.UINT32=4]=`UINT32`,e[e.INT64=8]=`INT64`,e[e.UINT64=16]=`UINT64`,e[e.FLOAT=32]=`FLOAT`,e[e.DOUBLE=64]=`DOUBLE`,e[e.PRESENCE=128]=`PRESENCE`})(AT||={});var jT;(function(e){e[e.FALSE=0]=`FALSE`,e[e.TRUE=1]=`TRUE`,e[e.START_MAP=2]=`START_MAP`,e[e.START_LIST=3]=`START_LIST`,e[e.COUNT=4]=`COUNT`})(jT||={});function MT(e,t,n,r){let i=NT(n);if(r===0)return i.map(e=>new kT(e,[]));let a=PT(e,t,r),o=(a.presentStream?a.presentCount:a.lengthStream.length)/i.length,s=[],c=0,l=0;for(let e=0;e<i.length;e++){let t=zT(a,e,o,c,l);s.push(new kT(i[e],t.value,t.nullabilityBuffer)),c=t.countsEnd,l=t.valuesEnd}return s}function NT(e){let t=e.type===`complexType`?e.complexType.children:void 0;return!t||t.length===0?[e.name]:t.map(t=>e.name+(t.name??``))}function PT(e,t,n){let r=e[t.get()];t.add(1);let i=_w(e,t,QC(e,t)),a=n-1,o=[];r&AT.STRING&&(a-=FT(e,t,o)),a-=IT(e,t,r,o),a-=LT(e,t,r,o);let s,c=0;if(r&AT.PRESENCE){let n=RT(e,t);s=n.value,c=n.count,a--}let l=new Uint32Array;if(a>0&&(l=_w(e,t,QC(e,t)),a--),a!==0)throw Error(`Unexpected number of remaining streams while decoding map column: ${a}`);return{lengthStream:i,dictionary:o,presentStream:s,presentCount:c,flattenedValues:l}}function FT(e,t,n){let r=e[t.get()];t.add(1);let i=wT(``,e,t,r);if(i)for(let e=0;e<i.size;e++)n.push(i.getValue(e));return r}function IT(e,t,n,r){let i=0;return n&AT.INT32?(GT(r,gw(e,t,QC(e,t))),i++):n&AT.INT64&&(GT(r,Tw(e,t,QC(e,t))),i++),n&AT.UINT32?(GT(r,_w(e,t,QC(e,t))),i++):n&AT.UINT64&&(GT(r,Ew(e,t,QC(e,t))),i++),i}function LT(e,t,n,r){let i=0;return n&AT.FLOAT&&(GT(r,lw(e,t,QC(e,t).numValues)),i++),n&AT.DOUBLE&&(GT(r,uw(e,t,QC(e,t).numValues)),i++),i}function RT(e,t){let n=QC(e,t);if(n.physicalStreamType!==HC.PRESENT)throw Error(`Expected PRESENT stream for map column but found: ${n.physicalStreamType}`);let r=n.numValues,i=t.get(),a=new rw(sw(e,r,n.byteLength,t),r);return t.set(i+n.byteLength),{value:a,count:r}}function zT(e,t,n,r,i){let{lengthStream:a,flattenedValues:o,presentStream:s,dictionary:c}=e,l=t*n,u=n,d;if(s){d=new rw(new Uint8Array(Math.ceil(n/8)),n),u=0;for(let e=0;e<n;e++)s.get(l+e)&&(d.set(e,!0),u++)}let f=r+u;if(f>a.length)throw Error(`Merged map counts underflow while decoding child streams`);let p=Array(n),m=r,h=i;for(let e=0;e<n;e++){if(s&&!s.get(l+e)){p[e]=null;continue}let t=h+a[m++];if(t>o.length)throw Error(`Map value stream underflow while decoding feature payload`);let n=BT(o,h,t,c);p[e]=n.value,h=n.nextIndex}let g=0;for(let e=r;e<f;e++)g+=a[e];let _=i+g;if(h!==_)throw Error(`Unused flattened map values remain after decode`);return{value:p,nullabilityBuffer:d,countsEnd:f,valuesEnd:_}}function BT(e,t,n,r){return n-t===1||e[t]===jT.START_LIST?HT(e,t,n,r):VT(e,t,n,r)}function VT(e,t,n,r){let i=Object.create(null),a=t;for(;a<n;){let t=WT(e[a++],r);if(typeof t!=`string`)throw Error(`Map key dictionary index does not resolve to a string: ${t}`);let o=HT(e,a,n,r);i[t]=o.value,a=o.nextIndex}return{value:i,nextIndex:a}}function HT(e,t,n,r){if(t>=n)throw Error(`Unexpected end of map value stream`);let i=e[t];if(i===jT.FALSE)return{value:!1,nextIndex:t+1};if(i===jT.TRUE)return{value:!0,nextIndex:t+1};if(i===jT.START_MAP){let i=UT(e,t,n);return{value:VT(e,t+2,i,r).value,nextIndex:i}}if(i===jT.START_LIST){let i=UT(e,t,n),a=[],o=t+2;for(;o<i;){let t=HT(e,o,i,r);a.push(t.value),o=t.nextIndex}return{value:a,nextIndex:i}}return{value:WT(i,r),nextIndex:t+1}}function UT(e,t,n){if(t+1>=n)throw Error(`Missing length for nested map/list payload`);let r=e[t+1];if(r<2)throw Error(`Invalid nested payload length: ${r}`);let i=t+r;if(i>n)throw Error(`Nested payload exceeds containing payload bounds`);return i}function WT(e,t){let n=e-jT.COUNT;if(n<0||n>=t.length)throw Error(`Scalar dictionary index out of range: ${e}`);return t[n]}function GT(e,t){for(let n of t)e.push(n)}function KT(e,t,n,r,i,a){return n.type===`scalarType`?a&&!a.has(n.name)?(ow(r,e,t),null):qT(r,e,t,i,n.scalarType,n):n.complexType?.physicalType===nS.MAP?MT(e,t,n,r):r===0?null:OT(e,t,n,a)}function qT(e,t,n,r,i,a){let o;if(e===0)return null;if(a.nullable){let e=QC(t,n),r=e.numValues,i=n.get(),a=sw(t,r,e.byteLength,n);n.set(i+e.byteLength),o=new rw(a,e.numValues)}let s=o??r;switch(i.physicalType){case tS.UINT_32:case tS.INT_32:return QT(t,n,a,i,s);case tS.STRING:{let r=a.nullable?e-1:e;return wT(a.name,t,n,r,o)??null}case tS.BOOLEAN:return JT(t,n,a,r,s);case tS.UINT_64:case tS.INT_64:return ZT(t,n,a,s,i);case tS.FLOAT:return YT(t,n,a,s);case tS.DOUBLE:return XT(t,n,a,s);default:throw Error(`The specified data type for the field is currently not supported: ${i}`)}}function JT(e,t,n,r,i){let a=QC(e,t),o=a.numValues,s=t.get(),c=$T(i)?i:void 0,l=sw(e,o,a.byteLength,t,c);t.set(s+a.byteLength);let u=new rw(l,o);return new hT(n.name,u,i)}function YT(e,t,n,r){let i=QC(e,t),a=$T(r)?r:void 0,o=lw(e,t,i.numValues,a);return new gT(n.name,o,r)}function XT(e,t,n,r){let i=QC(e,t),a=$T(r)?r:void 0,o=uw(e,t,i.numValues,a);return new Yx(n.name,o,r)}function ZT(e,t,n,r,i){let a=QC(e,t),o=Lw(a,r,e,t,`int64`),s=i.physicalType===tS.INT_64;if(o===nw.FLAT){let i=$T(r)?r:void 0,o=s?Tw(e,t,a,i):Ew(e,t,a,i);return new Bw(n.name,o,r)}if(o===nw.SEQUENCE){let r=ww(e,t,a);return new Vw(n.name,r[0],r[1],a.numRleValues,s)}let c=s?kw(e,t,a):Aw(e,t,a);return new _T(n.name,c,r,s)}function QT(e,t,n,r,i){let a=QC(e,t),o=Lw(a,i,e,t),s=r.physicalType===tS.INT_32;if(o===nw.FLAT){let r=$T(i)?i:void 0,o=s?gw(e,t,a,void 0,r):_w(e,t,a,void 0,r);return new Jx(n.name,o,i)}if(o===nw.SEQUENCE){let r=Cw(e,t,a);return new Zx(n.name,r[0],r[1],a.numRleValues,s)}let c=s?xw(e,t,a):Sw(e,t,a);return new Qx(n.name,c,i,s)}function $T(e){return e instanceof rw}var eE={ID:0,ID_NULLABLE:1,ID_LONG:2,GEOMETRY:4,SCALAR_BASE:10,STRUCT:30,MAP:31};function tE(e){switch(e){case eE.ID:case eE.ID|eE.ID_NULLABLE:case eE.ID|eE.ID_LONG:case eE.ID|eE.ID_LONG|eE.ID_NULLABLE:return{nullable:(e&eE.ID_NULLABLE)!==0,columnScope:eS.FEATURE,type:`scalarType`,scalarType:{longID:(e&eE.ID_LONG)!==0,type:`logicalType`,logicalType:rS.ID}};case eE.GEOMETRY:return{nullable:!1,columnScope:eS.FEATURE,type:`complexType`,complexType:{type:`physicalType`,physicalType:nS.GEOMETRY,children:[]}};case eE.STRUCT:return{nullable:!1,columnScope:eS.FEATURE,type:`complexType`,complexType:{type:`physicalType`,physicalType:nS.STRUCT,children:[]}};case eE.MAP:return{nullable:!0,columnScope:eS.FEATURE,type:`complexType`,complexType:{type:`physicalType`,physicalType:nS.MAP,children:[]}};default:return sE(e)}}function nE(e){return e>=eE.SCALAR_BASE}function rE(e){return e===eE.STRUCT||e===eE.MAP}function iE(e){if(e.type===`scalarType`){let t=e.scalarType;if(t.type===`physicalType`)switch(t.physicalType){case tS.BOOLEAN:case tS.INT_8:case tS.UINT_8:case tS.INT_32:case tS.UINT_32:case tS.INT_64:case tS.UINT_64:case tS.FLOAT:case tS.DOUBLE:return!1;case tS.STRING:return!0;default:return!1}if(t.type===`logicalType`)return!1}else if(e.type===`complexType`){let t=e.complexType;if(t.type===`physicalType`)switch(t.physicalType){case nS.GEOMETRY:case nS.STRUCT:case nS.MAP:return!0;default:return!1}}return console.warn(`Unexpected column type in hasStreamCount`,e),!1}function aE(e){return e.type===`scalarType`&&e.scalarType?.type===`logicalType`&&e.scalarType.logicalType===rS.ID}function oE(e){return e.type===`complexType`&&e.complexType?.type===`physicalType`&&e.complexType.physicalType===nS.GEOMETRY}function sE(e){let t;switch(e){case 10:case 11:t=tS.BOOLEAN;break;case 12:case 13:t=tS.INT_8;break;case 14:case 15:t=tS.UINT_8;break;case 16:case 17:t=tS.INT_32;break;case 18:case 19:t=tS.UINT_32;break;case 20:case 21:t=tS.INT_64;break;case 22:case 23:t=tS.UINT_64;break;case 24:case 25:t=tS.FLOAT;break;case 26:case 27:t=tS.DOUBLE;break;case 28:case 29:t=tS.STRING;break;default:return null}return{nullable:!!(e&1),columnScope:eS.FEATURE,type:`scalarType`,scalarType:{longID:!1,type:`physicalType`,physicalType:t}}}var cE=new TextDecoder,lE=`0-3(ID), 4(GEOMETRY), 10-29(scalars), 30(STRUCT), 31(MAP)`;function uE(e,t){let n=$S(e,t,1)[0];if(n===0)return``;let r=t.get(),i=r+n,a=e.subarray(r,i);return t.add(n),cE.decode(a)}function dE(e){let t=e.name,n=e.nullable;return e.type===`scalarType`?{type:`scalarField`,scalarField:e.scalarType,name:t,nullable:n}:{type:`complexField`,complexField:e.complexType,name:t,nullable:n}}function fE(e,t){let n=$S(e,t,1)[0]>>>0,r=n>=eE.SCALAR_BASE?tE(n):null;if(!r)throw Error(`Unsupported field type code ${n}. Supported: 10-29(scalars), 30(STRUCT), 31(MAP)`);let i={...r,name:uE(e,t)};if(i.type===`complexType`&&rE(n)){let n=i.complexType,r=$S(e,t,1)[0]>>>0;n.children=Array(r);for(let i=0;i<r;i++)n.children[i]=fE(e,t)}return dE(i)}function pE(e,t){let n=$S(e,t,1)[0]>>>0,r=tE(n);if(!r)throw Error(`Unsupported column type code ${n}. Supported: ${lE}`);let i;if(nE(n))i=uE(e,t);else if(n<eE.GEOMETRY)i=`id`;else if(n===eE.GEOMETRY)i=`geometry`;else throw Error(`Unsupported column type code ${n}. Supported: ${lE}`);let a={...r,name:i};if(a.type===`complexType`&&rE(n)){let n=$S(e,t,1)[0]>>>0,r=a.complexType;r.children=Array(n);for(let i=0;i<n;i++)r.children[i]=fE(e,t)}return a}function mE(e,t){let n={};n.featureTables=[];let r={};if(r.name=uE(e,t),r.name.length===0)throw Error(`Missing layer name`);let i=$S(e,t,1)[0]>>>0,a=$S(e,t,1)[0]>>>0;r.columns=Array(a);for(let n=0;n<a;n++)r.columns[n]=pE(e,t);return n.featureTables.push(r),[n,i]}function hE(e,t,n=!0){let r=new iS(0),i=[];for(;r.get()<e.length;){let a=$S(e,r,1)[0]>>>0,o=r.get()+a;if(o>e.length)throw Error(`Block overruns tile: ${o} > ${e.length}`);let s=$S(e,r,1)[0]>>>0;if(s!==1&&s!==2){r.set(o);continue}let[c,l]=mE(e,r),u=c.featureTables[0],d=null,f=null,p=[],m=0;for(let i of u.columns){let a=i.name;if(aE(i)){let t=null;if(i.nullable){let n=QC(e,r),i=r.get(),a=sw(e,n.numValues,n.byteLength,r);r.set(i+n.byteLength),t=new rw(a,n.numValues)}let o=QC(e,r);m=t?t.size():o.decompressedCount,d=gE(e,i,r,a,o,t??m,n)}else if(oE(i)){let n=$S(e,r,1)[0];if(m===0){let t=r.get();m=QC(e,r).decompressedCount,r.set(t)}t&&(t.scale=t.extent/l),f=uT(e,n,r,m,t)}else{let t=iE(i)?$S(e,r,1)[0]:1;if(t===0)continue;let n=KT(e,r,i,t,m,void 0);if(n){if(Array.isArray(n))for(let e of n)p.push(e);else p.push(n)}}}let h=new $x(u.name,f,d,p,l);i.push(h),r.set(o)}return i}function gE(e,t,n,r,i,a,o=!1){let s=t.scalarType?.longID?tS.UINT_64:tS.UINT_32,c=typeof a==`number`?void 0:a,l=Lw(i,a,e,n,s===tS.UINT_64?`int64`:`int32`);if(s===tS.UINT_32)switch(l){case nw.FLAT:return new Jx(r,_w(e,n,i,void 0,c),a);case nw.SEQUENCE:{let t=Cw(e,n,i);return new Zx(r,t[0],t[1],i.numRleValues,!1)}case nw.CONST:return new Qx(r,Sw(e,n,i),a,!1)}switch(l){case nw.FLAT:return o?new Yx(r,Dw(e,n,i,c),a):new Bw(r,Ew(e,n,i,c),a);case nw.SEQUENCE:{let t=ww(e,n,i);return new Vw(r,t[0],t[1],i.numRleValues,!1)}case nw.CONST:return new _T(r,Aw(e,n,i),a,!1)}throw Error(`Vector type not supported for id column.`)}var _E=dS(cS);_E/32*4,3*_E/256+_E|0;var vE=class{constructor(e,t){switch(this._featureData=e,this.properties=this._featureData.properties||{},this._featureData.geometry?.type){case Ww.POINT:case Ww.MULTIPOINT:this.type=1;break;case Ww.LINESTRING:case Ww.MULTILINESTRING:this.type=2;break;case Ww.POLYGON:case Ww.MULTIPOLYGON:this.type=3;break;default:this.type=0}this.extent=t,this.id=Number(this._featureData.id)}loadGeometry(){let e=[];for(let t of this._featureData.geometry.coordinates){let n=[];for(let e of t)n.push(new f(e.x,e.y));e.push(n)}return e}},yE=class{constructor(e){this.features=[],this.featureTable=e,this.name=e.name,this.extent=e.extent,this.version=2,this.features=e.getFeatures(),this.length=this.features.length}feature(e){return new vE(this.features[e],this.extent)}},bE=class{constructor(e){this.layers={};let t=hE(new Uint8Array(e));this.layers=t.reduce((e,t)=>({...e,[t.name]:new yE(t)}),{})}};K(`FeatureIndex`,class{constructor(e,t){this.tileID=e,this.x=e.canonical.x,this.y=e.canonical.y,this.z=e.canonical.z,this.grid=new ul(N,16,0),this.grid3D=new ul(N,16,0),this.featureIndexArray=new ku,this.promoteId=t}insert(e,t,n,r,i,a){let o=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(n,r,i);let s=a?this.grid3D:this.grid;for(let e of t){let t=[1/0,1/0,-1/0,-1/0];for(let n of e)t[0]=Math.min(t[0],n.x),t[1]=Math.min(t[1],n.y),t[2]=Math.max(t[2],n.x),t[3]=Math.max(t[3],n.y);t[0]<8192&&t[1]<8192&&t[2]>=0&&t[3]>=0&&s.insert(o,t[0],t[1],t[2],t[3])}}loadVTLayers(){if(!this.vtLayers){switch(this.encoding){case`mlt`:this.vtLayers=new bE(this.rawTileData).layers;break;default:this.vtLayers=new Em(new S_(this.rawTileData)).layers}this.sourceLayerCoder=new Wx(this.vtLayers?Object.keys(this.vtLayers).sort():[Ux])}return this.vtLayers}query(e,t,n,r){this.loadVTLayers();let i=e.params,a=N/e.tileSize/e.scale,o=Js(i.filter,`queryRenderedFeatures filter`,i.globalState),s=e.queryGeometry,c=e.queryPadding*a,l=Pd.fromPoints(s),u=this.grid.query(l.minX-c,l.minY-c,l.maxX+c,l.maxY+c),d=Pd.fromPoints(e.cameraQueryGeometry).expandBy(c),f=this.grid3D.query(d.minX,d.minY,d.maxX,d.maxY,(t,n,r,i)=>$d(e.cameraQueryGeometry,t-c,n-c,r+c,i+c));for(let e of f)u.push(e);u.sort(CE);let p={},m;for(let c of u){if(c===m)continue;m=c;let l=this.featureIndexArray.get(c),u=null;this.loadMatchingFeature(p,l.bucketIndex,l.sourceLayerIndex,l.featureIndex,o,i.layers,i.availableImages,t,n,e.transform.worldCoordinateHelper,r,(t,n,r)=>(u||=Md(t),n.queryIntersectsFeature({queryGeometry:s,feature:t,featureState:r,geometry:u,zoom:this.z,transform:e.transform,pixelsToTileUnits:a,pixelPosMatrix:e.pixelPosMatrix,unwrappedTileID:this.tileID.toUnwrapped(),getElevation:e.getElevation})))}return p}loadMatchingFeature(e,t,n,r,i,a,o,s,c,l,u,d){let f=this.bucketLayerIDs[t];if(a&&!f.some(e=>a.has(e)))return;let p=this.sourceLayerCoder.decode(n),m=this.vtLayers[p].feature(r);if(i.needGeometry){let e=Nd(m,!0);if(!i.filter(new yl(this.tileID.overscaledZ),e,this.tileID.canonical))return}else if(!i.filter(new yl(this.tileID.overscaledZ),m))return;let h=this.getId(m,p);for(let t of f){if(a&&!a.has(t))continue;let n=s[t];if(!n)continue;let i={};h&&u&&(i=u.getState(n.sourceLayer||`_geojsonTileLayer`,h));let f=F({},c[t]);f.paint=SE(f.paint,n.paint,m,i,o),f.layout=SE(f.layout,n.layout,m,i,o);let p=!d||d(m,n,i);if(!p)continue;let g=new Gx(m,this.z,this.x,this.y,h,l);g.layer=f;let _=e[t];_===void 0&&(_=e[t]=[]),_.push({featureIndex:r,feature:g,intersectionZ:p})}}lookupSymbolFeatures(e,t,n,r,i,a,o,s){let c={};this.loadVTLayers();let l=Js(i.filterSpec,`queryRenderedFeatures symbol filter`,i.globalState);for(let u of e)this.loadMatchingFeature(c,n,r,u,l,a,o,s,t,i.worldCoordinateHelper);return c}hasLayer(e){for(let t of this.bucketLayerIDs)for(let n of t)if(e===n)return!0;return!1}getId(e,t){let n=e.id;if(this.promoteId){let r=typeof this.promoteId==`string`?this.promoteId:this.promoteId[t];n=e.properties[r],typeof n==`boolean`&&(n=Number(n)),n===void 0&&e.properties?.cluster&&this.promoteId&&(n=Number(e.properties.cluster_id))}return n}},{omit:[`rawTileData`,`sourceLayerCoder`]});function xE(e){return typeof e==`object`&&!!e&&`evaluate`in e}function SE(e,t,n,r,i){return It(e,(e,a)=>{let o=t instanceof Dl?t.get(a):null;return xE(o)?o.evaluate(n,r,void 0,i):o})}function CE(e,t){return t-e}var wE=`RTLPluginLoaded`,TE=class extends Qn{constructor(...e){super(...e),this.status=`unavailable`,this.url=null,this.dispatcher=Eb()}_syncState(e){return this.status=e,this.dispatcher.broadcast(`SRPS`,{pluginStatus:e,pluginURL:this.url}).catch(e=>{throw this.status=`error`,e})}getRTLTextPluginStatus(){return this.status}clearRTLTextPlugin(){this.status=`unavailable`,this.url=null}async setRTLTextPlugin(e,t=!1){if(this.url)throw Error(`setRTLTextPlugin cannot be called multiple times.`);if(this.url=bn.resolveURL(e),!this.url)throw Error(`requested url ${e} is invalid`);if(this.status===`unavailable`){if(t)this.status=`deferred`,this._syncState(this.status);else return this._requestImport()}else if(this.status===`requested`)return this._requestImport()}async _requestImport(){await this._syncState(`loading`),this.status=`loaded`,this.fire(new Zn(wE))}lazyLoad(){this.status===`unavailable`?this.status=`requested`:this.status===`deferred`&&this._requestImport()}},EE=null;function DE(){return EE||=new TE,EE}var OE=class{constructor(e,t){this.timeAdded=0,this.fadeEndTime=0,this.fadeOpacity=1,this.tileID=e,this.uid=At(),this.uses=0,this.tileSize=t,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rttObjects=[],this.rttFingerprint={},this.expiredRequestCount=0,this.state=`loading`,this.featureStateRevision=-1}isRenderable(e){return this.hasData()&&(!this.fadeEndTime||this.fadingDirection!==0||this.fadeOpacity>0)&&(e||!this.holdingForSymbolFade())}setCrossFadeLogic({fadingRole:e,fadingDirection:t,fadingParentID:n,fadeEndTime:r}){this.resetFadeLogic(),this.fadingRole=e,this.fadingDirection=t,this.fadingParentID=n,this.fadeEndTime=r}setSelfFadeLogic(e){this.resetFadeLogic(),this.selfFading=!0,this.fadeEndTime=e}resetFadeLogic(){this.fadingRole=null,this.fadingDirection=null,this.fadingParentID=null,this.selfFading=!1,this.timeAdded=Sn(),this.fadeEndTime=0,this.fadeOpacity=1}wasRequested(){return this.state===`errored`||this.state===`loaded`||this.state===`reloading`}clearTextures(e){this.demTexture&&e.saveTileTexture(this.demTexture),this.demTexture=null}getRTT(e){return this.rttObjects[e]}acquireRTT(e,t,n){return this.rttObjects[t]=e.acquireRTT(n)}releaseRTT(e){if(this.rttObjects.length!==0){for(let t of this.rttObjects)t&&e.releaseRTT(t);this.rttObjects.length=0}}releaseRTTStack(e,t){let n=this.rttObjects[t];n&&(e.releaseRTT(n),this.rttObjects[t]=void 0)}loadVectorData(e,t,n){if(e?.etagUnmodified===!0)this.state=`loaded`;else if(this.hasData()&&this.unloadVectorData(),this.state=`loaded`,!e)this.collisionBoxArray=new yu;else{e.featureIndex&&(this.latestFeatureIndex=e.featureIndex,e.rawTileData?(this.latestRawTileData=e.rawTileData,this.latestEncoding=e.encoding,this.latestFeatureIndex.rawTileData=e.rawTileData,this.latestFeatureIndex.encoding=e.encoding):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData,this.latestFeatureIndex.encoding=this.latestEncoding)),this.collisionBoxArray=e.collisionBoxArray,this.buckets=Hx(e.buckets,t),this.hasSymbolBuckets=!1;for(let e in this.buckets){let t=this.buckets[e];if(t instanceof ly){if(this.hasSymbolBuckets=!0,n)t.justReloaded=!0;else break}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(let e in this.buckets){let t=this.buckets[e];if(t instanceof ly&&t.hasRTLText){this.hasRTLText=!0,DE().lazyLoad();break}}this.queryPadding=0;for(let e in this.buckets){let n=this.buckets[e];this.queryPadding=Math.max(this.queryPadding,t.getLayer(e).queryRadius(n))}e.imageAtlas&&(this.imageAtlas=e.imageAtlas),e.glyphAtlasImage&&(this.glyphAtlasImage=e.glyphAtlasImage),this.dashPositions=e.dashPositions}}unloadVectorData(){for(let e in this.buckets)this.buckets[e].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.imageAtlas=null,this.dashPositions=null,this.latestFeatureIndex=null,this.state=`unloaded`}getBucket(e){return this.buckets[e.id]}upload(e){for(let t in this.buckets){let n=this.buckets[t];n.uploadPending()&&n.upload(e)}let t=e.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new Wf(e,this.imageAtlas.image,t.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&=(this.glyphAtlasTexture=new Wf(e,this.glyphAtlasImage,t.ALPHA),null)}prepare(e){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(e,this.imageAtlasTexture)}queryRenderedFeatures(e,t,n,r,i,a,o,s,c,l,u){return this.latestFeatureIndex?.rawTileData?this.latestFeatureIndex.query({queryGeometry:r,cameraQueryGeometry:i,scale:a,tileSize:this.tileSize,pixelPosMatrix:l,transform:s,params:o,queryPadding:this.queryPadding*c,getElevation:u},e,t,n):{}}querySourceFeatures(e,t){let n=this.latestFeatureIndex;if(!n?.rawTileData)return;let r=n.loadVTLayers(),i=t.sourceLayer?t.sourceLayer:``,a=r._geojsonTileLayer||r[i];if(!a)return;let o=Js(t.filter,`querySourceFeatures[${i}].filter`,t.globalState),{z:s,x:c,y:l}=this.tileID.canonical,u={z:s,x:c,y:l};for(let r=0;r<a.length;r++){let d=a.feature(r);if(o.needGeometry){let e=Nd(d,!0);if(!o.filter(new yl(this.tileID.overscaledZ),e,this.tileID.canonical))continue}else if(!o.filter(new yl(this.tileID.overscaledZ),d))continue;let f=new Gx(d,s,c,l,n.getId(d,i),t.worldCoordinateHelper);f.tile=u,e.push(f)}}hasData(){return this.state===`loaded`||this.state===`reloading`||this.state===`expired`}patternsLoaded(){return this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length}setExpiryData(e){let t=this.expirationTime;if(e.cacheControl){let t=Gt(e.cacheControl);t[`max-age`]&&(this.expirationTime=Date.now()+t[`max-age`]*1e3)}else e.expires&&(this.expirationTime=new Date(e.expires).getTime());if(this.expirationTime){let e=Date.now(),n=!1;if(this.expirationTime>e)n=!1;else if(!t)n=!0;else if(this.expirationTime<t)n=!0;else{let r=this.expirationTime-t;r?this.expirationTime=e+Math.max(r,3e4):n=!0}n?(this.expiredRequestCount++,this.state=`expired`):this.expiredRequestCount=0}}getExpiryTimeout(){if(this.expirationTime)return this.expiredRequestCount?1e3*(1<<Math.min(this.expiredRequestCount-1,31)):Math.min(this.expirationTime-new Date().getTime(),2**31-1)}setFeatureState(e,t,n){if(!this.latestFeatureIndex?.rawTileData||Object.keys(e).length===0||this.featureStateRevision===n)return;this.featureStateRevision=n;let r=this.latestFeatureIndex.loadVTLayers();for(let n in this.buckets){if(!t.hasLayer(n))continue;let i=this.buckets[n],a=i.layers[0].sourceLayer||`_geojsonTileLayer`,o=r[a],s=e[a];if(!o||!s||s.length===0)continue;i.update(s,o,this.imageAtlas?.patternPositions||{},this.dashPositions||{});let c=t.getLayer(n);c&&(this.queryPadding=Math.max(this.queryPadding,c.queryRadius(i)))}}holdingForSymbolFade(){return this.symbolFadeHoldUntil!==void 0}symbolFadeFinished(){return!this.symbolFadeHoldUntil||this.symbolFadeHoldUntil<Sn()}clearSymbolFadeHold(){this.symbolFadeHoldUntil=void 0}setSymbolHoldDuration(e){this.symbolFadeHoldUntil=Sn()+e}setDependencies(e,t){let n={};for(let e of t)n[e]=!0;this.dependencies[e]=n}hasDependency(e,t){for(let n of e){let e=this.dependencies[n];if(e){for(let n of t)if(e[n])return!0}}return!1}},kE=class{constructor(e,t){this.max=e,this.onRemove=t,this.reset()}reset(){for(let e in this.data)for(let t of this.data[e])t.timeout&&clearTimeout(t.timeout),this.onRemove(t.value);return this.data={},this.order=[],this}add(e,t,n){let r=e.wrapped().key;this.data[r]===void 0&&(this.data[r]=[]);let i={value:t,timeout:void 0};if(n!==void 0&&(i.timeout=setTimeout(()=>{this.remove(e,i)},n)),this.data[r].push(i),this.order.push(r),this.order.length>this.max){let e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this}has(e){return e.wrapped().key in this.data}getAndRemove(e){return this.has(e)?this._getAndRemoveByKey(e.wrapped().key):null}_getAndRemoveByKey(e){let t=this.data[e].shift();return t.timeout&&clearTimeout(t.timeout),this.data[e].length===0&&delete this.data[e],this.order.splice(this.order.indexOf(e),1),t.value}getByKey(e){let t=this.data[e];return t?t[0].value:null}get(e){return this.has(e)?this.data[e.wrapped().key][0].value:null}remove(e,t){if(!this.has(e))return this;let n=e.wrapped().key,r=t===void 0?0:this.data[n].indexOf(t),i=this.data[n][r];return this.data[n].splice(r,1),i.timeout&&clearTimeout(i.timeout),this.data[n].length===0&&delete this.data[n],this.onRemove(i.value),this.order.splice(this.order.indexOf(n),1),this}setMaxSize(e){for(this.max=e;this.order.length>this.max;){let e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this}filter(e){let t=[];for(let n in this.data)for(let r of this.data[n])e(r.value)||t.push(r);for(let e of t)this.remove(e.value.tileID,e)}};function AE(e){let t=[];for(let n in e)t.push({id:n,state:e[n]});return t}var jE=class{constructor(){this.state={},this.stateChanges={},this.deletedStates={},this.revision=0}updateState(e,t,n){let r=String(t);if(this.stateChanges[e]||={},this.stateChanges[e][r]||={},F(this.stateChanges[e][r],n),this.deletedStates[e]===null){this.deletedStates[e]={};for(let t in this.state[e])if(t===r){this.deletedStates[e][r]={};for(let i in this.state[e][t])n[i]===void 0&&(this.deletedStates[e][r][i]=null)}else this.deletedStates[e][t]=null}else if(this.deletedStates[e]?.[r]===null){this.deletedStates[e][r]={};for(let t in this.state[e][r])n[t]===void 0&&(this.deletedStates[e][r][t]=null)}else for(let t in n)this.deletedStates[e]?.[r]?.[t]===null&&delete this.deletedStates[e][r][t]}removeFeatureState(e,t,n){if(this.deletedStates[e]===null)return;let r=String(t);if(this.deletedStates[e]||={},n&&t!==void 0)this.deletedStates[e][r]!==null&&(this.deletedStates[e][r]||={},this.deletedStates[e][r][n]=null);else if(t!==void 0){if(this.stateChanges[e]?.[r])for(n in this.deletedStates[e][r]={},this.stateChanges[e][r])this.deletedStates[e][r][n]=null;else this.deletedStates[e][r]=null}else this.deletedStates[e]=null}getState(e,t){let n=String(t),r=this.state[e]||{},i=this.stateChanges[e]||{},a=F({},r[n],i[n]);if(this.deletedStates[e]===null)return{};if(this.deletedStates[e]){let n=this.deletedStates[e][t];if(n===null)return{};for(let e in n)delete a[e]}return a}initializeTileState(e,t){let n={};for(let e in this.state)n[e]=AE(this.state[e]);e.setFeatureState(n,t,this.revision)}coalesceChanges(e,t){let n={};for(let e in this.stateChanges){this.state[e]||={},n[e]||={};for(let t in this.stateChanges[e])this.state[e][t]||={},F(this.state[e][t],this.stateChanges[e][t]),n[e][t]=this.state[e][t]}for(let e in this.deletedStates)if(this.state[e]||={},n[e]||={},this.deletedStates[e]===null)for(let t in this.state[e])this.state[e][t]={},n[e][t]={};else for(let t in this.deletedStates[e]){if(this.deletedStates[e][t]===null)this.state[e][t]={};else if(this.state[e][t])for(let n of Object.keys(this.deletedStates[e][t]))delete this.state[e][t][n];else continue;n[e][t]=this.state[e][t]}if(this.stateChanges={},this.deletedStates={},Object.keys(n).length===0)return;this.revision++;let r={};for(let e in n)r[e]=AE(n[e]);e.setFeatureState(r,t,this.revision)}},ME=class e{constructor(e,t){this.min=e,this.max=t,this.center=ye([],_e([],this.min,this.max),.5)}quadrant(t){let n=[t%2==0,t<2],r=me(this.min),i=me(this.max);for(let e=0;e<n.length;e++)r[e]=n[e]?this.min[e]:this.center[e],i[e]=n[e]?this.center[e]:this.max[e];return i[2]=this.max[2],new e(r,i)}distanceX(e){return Math.max(Math.min(this.max[0],e[0]),this.min[0])-e[0]}distanceY(e){return Math.max(Math.min(this.max[1],e[1]),this.min[1])-e[1]}intersectsFrustum(e){let t=!0;for(let n of e.planes){let e=this.intersectsPlane(n);if(e===0)return 0;e===1&&(t=!1)}return t?2:e.aabb.min[0]>this.max[0]||e.aabb.min[1]>this.max[1]||e.aabb.min[2]>this.max[2]||e.aabb.max[0]<this.min[0]||e.aabb.max[1]<this.min[1]||e.aabb.max[2]<this.min[2]?0:1}intersectsPlane(e){let t=e[3],n=e[3];for(let r=0;r<3;r++)e[r]>0?(t+=e[r]*this.min[r],n+=e[r]*this.max[r]):(n+=e[r]*this.min[r],t+=e[r]*this.max[r]);return t>=0?2:n<0?0:1}},NE=class e{constructor(e,t,n){this.points=e,this.planes=t,this.aabb=n}static fromInvProjectionMatrix(t,n=1,r=0,i,a){let o=[[-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]],s=a?[[6,5,4],[0,1,2],[0,3,7],[2,1,5],[3,2,6],[0,4,5]]:[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]],c=2**r,l=o.map(e=>PE(e,t,n,c));i&&FE(l,s[0],i,a);let u=s.map(e=>{let t=Ce([],Te([],Pe([],l[e[0]],l[e[1]]),Pe([],l[e[2]],l[e[1]]))),n=-we(t,l[e[1]]);return t.concat(n)}),d=[1/0,1/0,1/0],f=[-1/0,-1/0,-1/0];for(let e of l)for(let t=0;t<3;t++)d[t]=Math.min(d[t],e[t]),f[t]=Math.max(f[t],e[t]);return new e(l,u,new ME(d,f))}};function PE(e,t,n,r){let i=Ve([],e,t),a=1/i[3]/n*r;return He(i,i,[a,a,1/i[3],a])}function FE(e,t,n,r){let i=r?4:0,a=r?0:4,o=0,s=[],c=[];for(let t=0;t<4;t++){let n=Pe([],e[t+a],e[t+i]),r=he(n);ye(n,n,1/r),s.push(r),c.push(n)}for(let t=0;t<4;t++){let r=ht(e[t+i],c[t],n);o=r!==null&&r>=0?Math.max(o,r):Math.max(o,s[t])}let l=IE(e,t),u=LE(n,l);if(u!==null){let e=u/we(c[0],l);o=Math.min(o,e)}for(let t=0;t<4;t++){let n=Math.min(o,s[t]);e[t+a]=[e[t+i][0]+c[t][0]*n,e[t+i][1]+c[t][1]*n,e[t+i][2]+c[t][2]*n,1]}}function IE(e,t){let n=Pe([],e[t[0]],e[t[1]]),r=Pe([],e[t[2]],e[t[1]]),i=[0,0,0,0];return Ce(i,Te([],n,r)),i[3]=-we(i,e[t[0]]),i}function LE(e,t){let n=ze([],e,1/Fe(e)),r=Pe([],t,ye([],n,we(t,n))),i=Fe(r);if(i>0){let e=Math.sqrt(1-n[3]*n[3]);return pt(t,_e([],ye([],n,-n[3]),ye([],r,e/i)))}return null}function RE(e,t,n){let r=t.intersectsFrustum(e);if(!n||r===0)return r;let i=t.intersectsPlane(n);return i===0?0:r===2&&i===2?2:1}function zE(e,t,n){let r=0,i=(n-t)/10;for(let a=0;a<10;a++){let o=t+(a+.5)/10*(n-t);r+=i*Math.cos(o)**+e}return r}function BE(e,t){return function(n,r,i,a,o){let s=2*((e-1)/Pt(Math.cos(en(Vm-o))/Math.cos(en(Vm)))-1),c=Math.acos(i/a),l=2*zE(s-1,0,en(o/2)),u=Math.min(en(Vm),c+en(o/2)),d=Math.min(u,c-en(o/2)),f=zE(s-1,d,u),p=Math.atan(r/i),m=Math.hypot(r,i),h=n;return h+=Pt(a/m/Math.max(.5,Math.cos(en(o/2)))),h+=s*Pt(Math.cos(p))/2,h-=Pt(Math.max(1,f/l/t))/2,h}}var VE=BE(9.314,3);function HE(e,t){let n=(t.roundZoom?Math.round:Math.floor)(e.zoom+Pt(e.tileSize/t.tileSize));return Math.max(0,n)}function UE(e,t){let n=P((15-(Vm-e.pitch-e.fov/2))/15,0,1),r=Math.max(500,t??0);return e.elevation+n*r}function WE(e,t,n){let r=e.planes[1],i=e.points.map(e=>{let i=r[0]*e[0]+r[1]*e[1]+r[2]*e[2]+r[3];if(Math.abs(i)>1e-6)return e;let a=[e[0]-n[0],e[1]-n[1],e[2]-n[2]],o=r[0]*a[0]+r[1]*a[1]+r[2]*a[2];if(o>=-1e-9)return e;let s=t/-o;return[e[0]+a[0]*s,e[1]+a[1]*s,e[2]+a[2]*s,e[3]]}),a=e.planes.map((e,n)=>n===1?[e[0],e[1],e[2],e[3]+t]:e),o=[1/0,1/0,1/0],s=[-1/0,-1/0,-1/0];for(let e of i)for(let t=0;t<3;t++)o[t]=Math.min(o[t],e[t]),s[t]=Math.max(s[t],e[t]);return new NE(i,a,new ME(o,s))}function GE(e,t,n,r){let i=Math.hypot(t[0],t[1],t[2]);if(i===0)return{frustum:e,plane:t};let a=1+r/Dm,o=P(-t[3]/i,-1,1),s=Math.cos(Math.acos(o)+Math.acos(1/a));return{frustum:WE(e,Math.sqrt(a*a-1),n),plane:[t[0],t[1],t[2],-s*i]}}function KE(e,t){let n=e.getCameraFrustum(),r=e.getClippingPlane();r&&t.maxContentElevation>0&&({frustum:n,plane:r}=GE(n,r,e.cameraPosition,t.maxContentElevation));let i=e.getCoveringTilesDetailsProvider(),a=i.getCenter(e),o=Ym(e,a),s=e.worldCoordinateHelper.worldFromLngLat(a.lng,a.lat,e.elevation),c=UE(e,t.maxContentElevation),l=i.allowVariableZoom(e,t),u=HE(e,t),d=t.minzoom||0,f=t.maxzoom===void 0?e.maxZoom:t.maxzoom,p=Math.min(Math.max(0,u),f),m=2**p,h=[m*o.x,m*o.y,0],g=[m*s.x,m*s.y,0],_=Math.hypot(s.x-o.x,s.y-o.y),v=Math.abs(s.z-o.z),y=Math.hypot(_,v),b=e=>({zoom:0,x:0,y:0,wrap:e,fullyVisible:!1}),x=[],S=[];if(e.renderWorldCopies&&e.worldCoordinateHelper.wraps&&i.allowWorldCopies())for(let e=1;e<=3;e++)x.push(b(-e)),x.push(b(e));for(x.push(b(0));x.length>0;){let a=x.pop(),m=a.x,_=a.y,b=a.fullyVisible,C={x:m,y:_,z:a.zoom},w=i.getTileBoundingVolume(C,a.wrap,c,t);if(!b){let e=RE(n,w,r);if(e===0)continue;b=e===2}let T=i.distanceToTile2d(o.x,o.y,C,w),E=u;l&&(E=(t.calculateTileZoom||VE)(e.zoom+Pt(e.tileSize/t.tileSize),T,v,y,e.fov)),E=(t.roundZoom?Math.round:Math.floor)(E),E=Math.max(0,E);let D=Math.min(E,f);if(a.wrap=i.getWrap(s,C,a.wrap),a.zoom>=D){if(a.zoom<d)continue;let e=p-a.zoom,n=h[0]-.5-(m<<e),r=h[1]-.5-(_<<e),i=t.reparseOverscaled?Math.max(a.zoom,E):a.zoom;S.push({tileID:new Kb(a.zoom===f?i:a.zoom,a.wrap,a.zoom,m,_),distanceSq:it([g[0]-.5-m,g[1]-.5-_]),tileDistanceToCamera:Math.sqrt(n*n+r*r)})}else for(let e=0;e<4;e++){let t=(m<<1)+e%2,n=(_<<1)+(e>>1),r=a.zoom+1;x.push({zoom:r,x:t,y:n,wrap:a.wrap,fullyVisible:b})}}return S.sort((e,t)=>e.distanceSq-t.distanceSq).map(e=>e.tileID)}function qE(e){return e===`raster`||e===`image`||e===`video`}function JE(e,t,n,r,i,a,o){let s=Sn(),c=Ct(t);for(let l of t){let t=e.getTileById(l.key);(t.fadingDirection===0||t.fadeOpacity===0)&&t.resetFadeLogic(),YE(e,t,n,s,r,i,o)||XE(e,t,n,s,a,o)||QE(t,c,s,o)||t.resetFadeLogic()}}function YE(e,t,n,r,i,a,o){if(!t.hasData())return!1;let{tileID:s,fadingRole:c,fadingDirection:l,fadingParentID:u}=t;if(c===0&&l===1&&u)return n[u.key]=u,!0;let d=Math.max(s.overscaledZ-i,a);for(let i=s.overscaledZ-1;i>=d;i--){let a=s.scaledTo(i),c=e.getLoadedTile(a);if(c)return t.setCrossFadeLogic({fadingRole:0,fadingDirection:1,fadingParentID:c.tileID,fadeEndTime:r+o}),c.setCrossFadeLogic({fadingRole:1,fadingDirection:0,fadeEndTime:r+o}),n[a.key]=a,!0}return!1}function XE(e,t,n,r,i,a){if(!t.hasData())return!1;let o=t.tileID.children(i),s=ZE(e,t,o,n,r,i,a);if(s)return!0;for(let c of o)ZE(e,t,c.children(i),n,r,i,a)&&(s=!0);return s}function ZE(e,t,n,r,i,a,o){if(n[0].overscaledZ>a)return!1;let s=!1;for(let a of n){let n=e.getLoadedTile(a);if(!n)continue;let{fadingRole:c,fadingDirection:l,fadingParentID:u}=n;c===0&&l===0&&u||(n.setCrossFadeLogic({fadingRole:0,fadingDirection:0,fadingParentID:t.tileID,fadeEndTime:i+o}),t.setCrossFadeLogic({fadingRole:1,fadingDirection:1,fadeEndTime:i+o})),r[a.key]=a,s=!0}return s}function QE(e,t,n,r){let i=e.tileID;if(e.selfFading)return!0;if(e.hasData())return!1;if(t.has(i)){let t=n+r;return e.setSelfFadeLogic(t),!0}return!1}function $E(e,t){if(t<=0)return!1;let n=Sn();for(let t of e.getAllTiles())if(t.fadeEndTime>=n)return!0;return!1}function eD(e,t){let n=t.getRenderableIds();for(let r of n){if(!e.neighboringTiles?.[r])continue;let n=t.getTileById(r);e.neighboringTiles[r].backfilled||tD(e,n),!n.neighboringTiles?.[e.tileID.key]?.backfilled&&tD(n,e)}}function tD(e,t){e.needsHillshadePrepare=!0,e.needsTerrainPrepare=!0,e.needsColorReliefPrepare=!0;let n=t.tileID.canonical.x-e.tileID.canonical.x,r=t.tileID.canonical.y-e.tileID.canonical.y,i=2**e.tileID.canonical.z,a=t.tileID.key;n===0&&r===0||Math.abs(r)>1||(Math.abs(n)>1&&(Math.abs(n+i)===1?n+=i:Math.abs(n-i)===1&&(n-=i)),t.dem&&e.dem&&(e.dem.backfillBorder(t.dem,n,r),e.neighboringTiles?.[a]&&(e.neighboringTiles[a].backfilled=!0)))}var nD=class{constructor(){this._tiles={}}handleWrapJump(e){let t={};for(let n in this._tiles){let r=this._tiles[n];r.tileID=r.tileID.unwrapTo(r.tileID.wrap+e),t[r.tileID.key]=r}this._tiles=t}setFeatureState(e,t,n){for(let r in this._tiles)this._tiles[r].setFeatureState(e,t,n)}getAllTiles(){return Object.values(this._tiles)}getAllIds(e=!1){return e?Object.values(this._tiles).map(e=>e.tileID).sort(Xb).map(e=>e.key):Object.keys(this._tiles)}getTileById(e){return this._tiles[e]}setTile(e,t){this._tiles[e]=t}deleteTileById(e){delete this._tiles[e]}getLoadedTile(e){let t=this.getTileById(e.key);return t?.hasData()?t:null}isIdRenderable(e,t=!1){return this.getTileById(e)?.isRenderable(t)}getRenderableIds(e=0,t){let n=[];for(let e of this.getAllIds())this.isIdRenderable(e,t)&&n.push(this.getTileById(e));return t?n.sort((t,n)=>{let r=t.tileID,i=n.tileID,a=new f(r.canonical.x,r.canonical.y)._rotate(-e),o=new f(i.canonical.x,i.canonical.y)._rotate(-e);return r.overscaledZ-i.overscaledZ||o.y-a.y||o.x-a.x}).map(e=>e.tileID.key):n.map(e=>e.tileID).sort(Xb).map(e=>e.key)}},rD=class e extends Qn{static{this.maxUnderzooming=10}static{this.maxOverzooming=3}constructor(e,t,n){super(),this._maxContentElevationSeen=0,this.id=e,this.dispatcher=n,this.on(`data`,e=>{this._dataHandler(e)}),this.on(`dataloading`,()=>{this._sourceErrored=!1}),this.on(`error`,e=>{e.tile||(this._sourceErrored=this._source.loaded())}),this._source=Rx(e,t,n,this),this._inViewTiles=new nD,this._outOfViewCache=new kE(0,e=>this._unloadTile(e)),this._timers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._rasterFadeDuration=0,this._maxFadingAncestorLevels=5,this._state=new jE,this._didEmitContent=!1,this._updated=!1}onAdd(e){this.map=e,this._maxTileCacheSize=e?e._maxTileCacheSize:null,this._maxTileCacheZoomLevels=e?e._maxTileCacheZoomLevels:null,this._source?.onAdd&&this._source.onAdd(e)}onRemove(e){for(let e of this._inViewTiles.getAllTiles())e.unloadVectorData();this.clearTiles(),this._source?.onRemove&&this._source.onRemove(e),this._inViewTiles=new nD}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;if((this.used!==void 0||this.usedForTerrain!==void 0)&&!this.used&&!this.usedForTerrain)return!0;if(!this._updated)return!1;for(let e of this._inViewTiles.getAllTiles())if(e.state!==`loaded`&&e.state!==`errored`)return!1;return!0}getSource(){return this._source}getState(){return this._state}pause(){this._paused=!0}resume(){if(!this._paused)return;let e=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,e&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}async _loadTile(e,t,n,r){try{let i=await this._source.loadTile(e);this._tileLoaded(e,t,n,r,i)}catch(t){e.state=`errored`,t.status===404?this.update(this.transform,this.terrain):this._source.fire(new R(ot(t),{tile:e}))}}_unloadTile(e){this._source.unloadTile&&this._source.unloadTile(e)}_abortTile(e){this._source.abortTile&&this._source.abortTile(e),this._source.fire(new nr(`dataabort`,{tile:e,coord:e.tileID}))}serialize(){return this._source.serialize()}prepare(e){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._inViewTiles,this.style);for(let t of this._inViewTiles.getAllTiles())t.upload(e),t.prepare(this.map.style.imageManager)}getIds(){return this._inViewTiles.getAllIds(!0)}getRenderableIds(e){return this._inViewTiles.getRenderableIds(this.transform?.bearingInRadians,e)}hasRenderableParent(e){let t=e.overscaledZ-1;if(t>=this._source.minzoom){let n=this.getLoadedTile(e.scaledTo(t));if(n)return this._inViewTiles.isIdRenderable(n.tileID.key)}return!1}reload(e,t=void 0){if(this._paused)this._shouldReloadOnResume=!0;else{this._outOfViewCache.reset();for(let n of this._inViewTiles.getAllIds()){let r=this._inViewTiles.getTileById(n);(!t||this._source.shouldReloadTile(r,t))&&(e?this._reloadTile(n,r.state===`errored`?`loading`:`expired`):r.state!==`errored`&&this._reloadTile(n,`reloading`))}}}async _reloadTile(e,t){let n=this._inViewTiles.getTileById(e);if(!n)return;let r=n.hasData();n.state!==`loading`&&(n.state=t),await this._loadTile(n,e,t,r)}_tileLoaded(e,t,n,r,i){r||(e.timeAdded=Sn(),e.selfFading&&(e.fadeEndTime=e.timeAdded+this._rasterFadeDuration)),n===`expired`&&(e.refreshedUponExpiration=!0),this._setTileReloadTimer(t,e),!i?.unmodified&&(this.getSource().type===`raster-dem`&&e.dem&&eD(e,this._inViewTiles),e.featureStateRevision=-1,this._state.initializeTileState(e,this.style),e.aborted||this._source.fire(new nr(`data`,{tile:e,coord:e.tileID})))}getTile(e){return this.getTileByID(e.key)}getTileByID(e){return this._inViewTiles.getTileById(e)}_retainLoadedChildren(t,n){let r=this._getLoadedDescendents(n),i=new Set;for(let a of n){let n=r[a.key];if(!n?.length){i.add(a);continue}let o=a.overscaledZ+e.maxOverzooming,s=n.filter(e=>e.tileID.overscaledZ<=o);if(!s.length){i.add(a);continue}let c=Math.min(...s.map(e=>e.tileID.overscaledZ)),l=s.filter(e=>e.tileID.overscaledZ===c).map(e=>e.tileID);for(let e of l)t[e.key]=e;this._areDescendentsComplete(l,c,a.overscaledZ)||i.add(a)}return i}_getLoadedDescendents(e){let t={};for(let n of this._inViewTiles.getAllTiles().filter(e=>e.hasData()))for(let r of e)n.tileID.isChildOf(r)&&(t[r.key]||=[],t[r.key].push(n));return t}_areDescendentsComplete(e,t,n){return e.length===1&&e[0].isOverscaled()?e[0].overscaledZ===t:4**(t-n)===e.length}getLoadedTile(e){return this._inViewTiles.getLoadedTile(e)}updateCacheSize(e){let t=(Math.ceil(e.width/this._source.tileSize)+1)*(Math.ceil(e.height/this._source.tileSize)+1),n=this._maxTileCacheZoomLevels===null?Mn.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels,r=Math.floor(t*n),i=typeof this._maxTileCacheSize==`number`?Math.min(this._maxTileCacheSize,r):r;this._outOfViewCache.setMaxSize(i)}handleWrapJump(e){let t=(e-(this._prevLng===void 0?e:this._prevLng))/360,n=Math.round(t);this._prevLng=e,n&&(this._inViewTiles.handleWrapJump(n),this._resetTileReloadTimers())}_updateMaxContentElevation(){let e=this._maxContentElevationSeen,t=this.map?.style?._layers;if(!t)return e;let n=this._inViewTiles.getAllTiles();for(let r in t){let i=t[r];if(i.type!==`symbol`||i.source!==this.id||i.isHidden(this.transform.zoom))continue;let a=i;if(!a.layout)continue;let o=a.layout.get(`symbol-height-offset`);if(e=Math.max(e,o.constantOr(0)),!o.isConstant())for(let t of n){let n=t.getBucket(i);n&&n.maxHeightOffset>e&&(e=n.maxHeightOffset)}}return this._maxContentElevationSeen=e,e}update(e,t){if(!this._sourceLoaded||this._paused)return;this.transform=e,this.terrain=t,this.updateCacheSize(e),this.transform.worldCoordinateHelper.wraps&&this.handleWrapJump(this.transform.center.lng);let n;!this.used&&!this.usedForTerrain?n=[]:this._source.tileID?n=e.getVisibleUnwrappedCoordinates(this._source.tileID).map(e=>new Kb(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y)):(n=KE(e,{tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.type===`vector`&&this.map._zoomLevelsToOverscale!==void 0?Math.max(this._source.maxzoom,e.maxZoom-this.map._zoomLevelsToOverscale):this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:t,calculateTileZoom:this._source.calculateTileZoom,maxContentElevation:this._updateMaxContentElevation()}),this._source.hasTile&&(n=n.filter(e=>this._source.hasTile(e)))),this.usedForTerrain&&(n=this._addTerrainIdealTiles(n));let r=n.length===0&&!this._updated&&this._didEmitContent;this._updated=!0,r&&this.fire(new nr(`data`,{sourceDataType:`idle`,sourceId:this.id}));let i=HE(e,this._source),a=this._updateRetainedTiles(n,i),o=qE(this._source.type);o&&this._rasterFadeDuration>0&&!t&&JE(this._inViewTiles,n,a,this._maxFadingAncestorLevels,this._source.minzoom,this._source.maxzoom,this._rasterFadeDuration),o?this._cleanUpRasterTiles(a):this._cleanUpVectorTiles(a)}_cleanUpRasterTiles(e){for(let t of this._inViewTiles.getAllIds())e[t]||this._removeTile(t)}_cleanUpVectorTiles(e){for(let t of this._inViewTiles.getAllIds()){let n=this._inViewTiles.getTileById(t);e[t]?n.clearSymbolFadeHold():n.hasSymbolBuckets?n.holdingForSymbolFade()?n.symbolFadeFinished()&&this._removeTile(t):n.setSymbolHoldDuration(this.map._fadeDuration):this._removeTile(t)}}_addTerrainIdealTiles(e){let t=[];for(let n of e)if(n.canonical.z>this._source.minzoom){let e=n.scaledTo(n.canonical.z-1);t.push(e);let r=n.scaledTo(Math.max(this._source.minzoom,Math.min(n.canonical.z,5)));t.push(r)}return e.concat(t)}releaseSymbolFadeTiles(){for(let e of this._inViewTiles.getAllIds())this._inViewTiles.getTileById(e).holdingForSymbolFade()&&this._removeTile(e)}_updateRetainedTiles(t,n){let r=new Set;for(let e of t)this._addTile(e).hasData()||r.add(e);let i=t.reduce((e,t)=>(e[t.key]=t,e),{}),a=this._retainLoadedChildren(i,r),o={},s=Math.max(n-e.maxUnderzooming,this._source.minzoom);for(let e of a){let t=this._inViewTiles.getTileById(e.key),n=t?.wasRequested();for(let r=e.overscaledZ-1;r>=s;--r){let a=e.scaledTo(r);if(o[a.key])break;if(o[a.key]=!0,t=this.getTile(a),!t&&n&&(t=this._addTile(a)),t){let e=t.hasData();if((e||!this.map?.cancelPendingTileRequestsWhileZooming||n)&&(i[a.key]=a),n=t.wasRequested(),e)break}}}return i}_addTile(e){let t=this._inViewTiles.getTileById(e.key);if(t)return t;t=this._outOfViewCache.getAndRemove(e),t&&(t.resetFadeLogic(),this._setTileReloadTimer(e.key,t),t.tileID=e,this._state.initializeTileState(t,this.style));let n=t;return t||(t=new OE(e,this._source.tileSize*e.overscaleFactor()),this._loadTile(t,e.key,t.state,!1)),t.uses++,this._inViewTiles.setTile(e.key,t),n||this._source.fire(new nr(`dataloading`,{tile:t,coord:t.tileID})),t}_setTileReloadTimer(e,t){this._clearTileReloadTimer(e);let n=t.getExpiryTimeout();if(n){let t=()=>{this._reloadTile(e,`expired`),delete this._timers[e]};this._timers[e]=setTimeout(t,n)}}_clearTileReloadTimer(e){let t=this._timers[e];t&&(clearTimeout(t),delete this._timers[e])}_resetTileReloadTimers(){for(let e in this._timers)clearTimeout(this._timers[e]),delete this._timers[e];for(let e of this._inViewTiles.getAllIds()){let t=this._inViewTiles.getTileById(e);this._setTileReloadTimer(e,t)}}refreshTiles(e){for(let t of this._inViewTiles.getAllIds()){let n=this._inViewTiles.getTileById(t);(this._inViewTiles.isIdRenderable(t)||n.state==`errored`)&&e.some(e=>e.equals(n.tileID.canonical))&&this._reloadTile(t,`expired`)}}_removeTile(e){let t=this._inViewTiles.getTileById(e);t&&(t.uses--,this._inViewTiles.deleteTileById(e),this._clearTileReloadTimer(e),!(t.uses>0)&&(t.hasData()&&t.state!==`reloading`?this._outOfViewCache.add(t.tileID,t,t.getExpiryTimeout()):(t.aborted=!0,this._abortTile(t),this._unloadTile(t))))}_dataHandler(e){e.dataType===`source`&&(e.sourceDataType===`metadata`?this._sourceLoaded=!0:e.sourceDataType===`content`&&this._sourceLoaded&&!this._paused&&(this.reload(e.sourceDataChanged,e.shouldReloadTileOptions),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0))}resetMaxContentElevation(){this._maxContentElevationSeen=0}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1,this.resetMaxContentElevation();for(let e of this._inViewTiles.getAllIds())this._removeTile(e);this._outOfViewCache.reset()}tilesIn(e,t,n){let r=[],i=this.transform;if(!i)return r;let a=i.getCoveringTilesDetailsProvider().allowWorldCopies(),o=n?i.getCameraQueryGeometry(e):e,s=e=>i.screenPointToMercatorCoordinate(e,this.terrain),c=this.transformBbox(e,s,!a),l=this.transformBbox(o,s,!a),u=this.getIds(),d=Pd.fromPoints(l);for(let e of u){let n=this._inViewTiles.getTileById(e);if(n.holdingForSymbolFade())continue;let o=a?[n.tileID]:[n.tileID.unwrapTo(-1),n.tileID.unwrapTo(0)],s=2**(i.zoom-n.tileID.overscaledZ),u=t*n.queryPadding*N/n.tileSize/s;for(let e of o){let t=d.map(t=>e.getTilePoint(new zm(t.x,t.y)));if(t.expandBy(u),t.intersects(Fd)){let t=c.map(t=>e.getTilePoint(t)),i=l.map(t=>e.getTilePoint(t));r.push({tile:n,tileID:a?e:e.unwrapTo(0),queryGeometry:t,cameraQueryGeometry:i,scale:s})}}}return r}transformBbox(e,t,n){let r=e.map(t);if(n){let n=Pd.fromPoints(e);n.shrinkBy(Math.min(n.width(),n.height())*.001);let i=n.map(t);Pd.fromPoints(r).covers(i)||(r=r.map(e=>e.x>.5?new zm(e.x-1,e.y,e.z):e))}return r}getVisibleCoordinates(e){let t=this.getRenderableIds(e).map(e=>this._inViewTiles.getTileById(e).tileID);return this.transform&&this.transform.populateCache(t),t}hasTransition(){return this._source.hasTransition()?!0:qE(this._source.type)&&$E(this._inViewTiles,this._rasterFadeDuration)}setRasterFadeDuration(e){this._rasterFadeDuration=e}setFeatureState(e,t,n){e||=Ux,this._state.updateState(e,t,n)}removeFeatureState(e,t,n){e||=Ux,this._state.removeFeatureState(e,t,n)}getFeatureState(e,t){return e||=Ux,this._state.getState(e,t)}setDependencies(e,t,n){let r=this._inViewTiles.getTileById(e);r&&r.setDependencies(t,n)}reloadTilesForDependencies(e,t){for(let n of this._inViewTiles.getAllIds())this._inViewTiles.getTileById(n).hasDependency(e,t)&&this._reloadTile(n,`reloading`);this._outOfViewCache.filter(n=>!n.hasDependency(e,t))}areTilesLoaded(){for(let e of this._inViewTiles.getAllTiles())if(e.state!==`loaded`&&e.state!==`errored`)return!1;return!0}},iD=class{constructor(e,t){this.reset(e,t)}reset(e,t){this.points=e||[],this._distances=[0];for(let e=1;e<this.points.length;e++)this._distances[e]=this._distances[e-1]+this.points[e].dist(this.points[e-1]);this.length=this._distances[this._distances.length-1],this.padding=Math.min(t||0,this.length*.5),this.paddedLength=this.length-this.padding*2}lerp(e){if(this.points.length===1)return this.points[0];e=P(e,0,1);let t=1,n=this._distances[t],r=e*this.paddedLength+this.padding;for(;n<r&&t<this._distances.length;)n=this._distances[++t];let i=t-1,a=this._distances[i],o=n-a,s=o>0?(r-a)/o:0;return this.points[i].mult(1-s).add(this.points[t].mult(s))}};function aD(e,t,n,r,i){return i?e?e(t,n)+r:r===0?void 0:r:r}function oD(e,t){let n=!0;return e===`always`||(e===`never`||t===`never`)&&(n=!1),n}var sD=class{constructor(e,t,n){let r=this.boxCells=[],i=this.circleCells=[];this.xCellCount=Math.ceil(e/n),this.yCellCount=Math.ceil(t/n);for(let e=0;e<this.xCellCount*this.yCellCount;e++)r.push([]),i.push([]);this.circleKeys=[],this.boxKeys=[],this.bboxes=[],this.circles=[],this.width=e,this.height=t,this.xScale=this.xCellCount/e,this.yScale=this.yCellCount/t,this.boxUid=0,this.circleUid=0}keysLength(){return this.boxKeys.length+this.circleKeys.length}insert(e,t,n,r,i){this._forEachCell(t,n,r,i,this._insertBoxCell,this.boxUid++),this.boxKeys.push(e),this.bboxes.push(t),this.bboxes.push(n),this.bboxes.push(r),this.bboxes.push(i)}insertCircle(e,t,n,r){this._forEachCell(t-r,n-r,t+r,n+r,this._insertCircleCell,this.circleUid++),this.circleKeys.push(e),this.circles.push(t),this.circles.push(n),this.circles.push(r)}_insertBoxCell(e,t,n,r,i,a){this.boxCells[i].push(a)}_insertCircleCell(e,t,n,r,i,a){this.circleCells[i].push(a)}_query(e,t,n,r,i,a,o){if(n<0||e>this.width||r<0||t>this.height)return[];let s=[];if(e<=0&&t<=0&&this.width<=n&&this.height<=r){if(i)return[{key:null,x1:e,y1:t,x2:n,y2:r}];for(let e=0;e<this.boxKeys.length;e++)s.push({key:this.boxKeys[e],x1:this.bboxes[e*4],y1:this.bboxes[e*4+1],x2:this.bboxes[e*4+2],y2:this.bboxes[e*4+3]});for(let e=0;e<this.circleKeys.length;e++){let t=this.circles[e*3],n=this.circles[e*3+1],r=this.circles[e*3+2];s.push({key:this.circleKeys[e],x1:t-r,y1:n-r,x2:t+r,y2:n+r})}}else{let c={hitTest:i,overlapMode:a,seenUids:{box:{},circle:{}}};this._forEachCell(e,t,n,r,this._queryCell,s,c,o)}return s}query(e,t,n,r){return this._query(e,t,n,r,!1,null)}hitTest(e,t,n,r,i,a){return this._query(e,t,n,r,!0,i,a).length>0}hitTestCircle(e,t,n,r,i){let a=e-n,o=e+n,s=t-n,c=t+n;if(o<0||a>this.width||c<0||s>this.height)return!1;let l=[],u={hitTest:!0,overlapMode:r,circle:{x:e,y:t,radius:n},seenUids:{box:{},circle:{}}};return this._forEachCell(a,s,o,c,this._queryCellCircle,l,u,i),l.length>0}_queryCell(e,t,n,r,i,a,o,s){let{seenUids:c,hitTest:l,overlapMode:u}=o,d=this.boxCells[i],f=1e-6;if(d!==null){let i=this.bboxes;for(let o of d)if(!c.box[o]){c.box[o]=!0;let d=o*4,p=this.boxKeys[o];if(e<=i[d+2]+f&&t<=i[d+3]+f&&n>=i[d+0]-f&&r>=i[d+1]-f&&(!s||s(p))&&(!l||!oD(u,p.overlapMode))&&(a.push({key:p,x1:i[d],y1:i[d+1],x2:i[d+2],y2:i[d+3]}),l))return!0}}let p=this.circleCells[i];if(p!==null){let i=this.circles;for(let o of p)if(!c.circle[o]){c.circle[o]=!0;let d=o*3,f=this.circleKeys[o];if(this._circleAndRectCollide(i[d],i[d+1],i[d+2],e,t,n,r)&&(!s||s(f))&&(!l||!oD(u,f.overlapMode))){let e=i[d],t=i[d+1],n=i[d+2];if(a.push({key:f,x1:e-n,y1:t-n,x2:e+n,y2:t+n}),l)return!0}}}return!1}_queryCellCircle(e,t,n,r,i,a,o,s){let{circle:c,seenUids:l,overlapMode:u}=o,d=this.boxCells[i];if(d!==null){let e=this.bboxes;for(let t of d)if(!l.box[t]){l.box[t]=!0;let n=t*4,r=this.boxKeys[t];if(this._circleAndRectCollide(c.x,c.y,c.radius,e[n+0],e[n+1],e[n+2],e[n+3])&&(!s||s(r))&&!oD(u,r.overlapMode))return a.push(!0),!0}}let f=this.circleCells[i];if(f!==null){let e=this.circles;for(let t of f)if(!l.circle[t]){l.circle[t]=!0;let n=t*3,r=this.circleKeys[t];if(this._circlesCollide(e[n],e[n+1],e[n+2],c.x,c.y,c.radius)&&(!s||s(r))&&!oD(u,r.overlapMode))return a.push(!0),!0}}}_forEachCell(e,t,n,r,i,a,o,s){let c=this._convertToXCellCoord(e),l=this._convertToYCellCoord(t),u=this._convertToXCellCoord(n),d=this._convertToYCellCoord(r);for(let f=c;f<=u;f++)for(let c=l;c<=d;c++){let l=this.xCellCount*c+f;if(i.call(this,e,t,n,r,l,a,o,s))return}}_convertToXCellCoord(e){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(e*this.xScale)))}_convertToYCellCoord(e){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(e*this.yScale)))}_circlesCollide(e,t,n,r,i,a){let o=r-e,s=i-t,c=n+a;return c*c>o*o+s*s}_circleAndRectCollide(e,t,n,r,i,a,o){let s=(a-r)/2,c=Math.abs(e-(r+s));if(c>s+n)return!1;let l=(o-i)/2,u=Math.abs(t-(i+l));if(u>l+n)return!1;if(c<=s||u<=l)return!0;let d=c-s,f=u-l;return d*d+f*f<=n*n}};function cD(e,t){let n=1/(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]),r=1/(t[8]*t[8]+t[9]*t[9]+t[10]*t[10]),i=t[0]*n,a=t[4]*n,o=t[8]*r,s=t[1]*n,c=t[5]*n,l=t[9]*r,u=t[2]*n,d=t[6]*n,f=t[10]*r;e[0]=i,e[1]=a,e[2]=o,e[4]=s,e[5]=c,e[6]=l,e[8]=u,e[9]=d,e[10]=f;let p=t[12],m=t[13],h=t[14];return e[12]=-i*p-s*m-u*h,e[13]=-a*p-c*m-d*h,e[14]=-o*p-l*m-f*h,e[3]=0,e[7]=0,e[11]=0,e[15]=1,e}function lD(e,t){return e[0]=1/t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1/t[5],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=0,e[11]=1/t[14],e[12]=0,e[13]=0,e[14]=-1,e[15]=t[10]/t[14],e}function uD(e,t){let n=1/(t[0]*t[5]-t[1]*t[4]);return e[0]=t[5]*n,e[1]=-t[1]*n,e[2]=0,e[3]=0,e[4]=-t[4]*n,e[5]=t[0]*n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1/t[10],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1/t[15],e}var dD=D();function fD(e,t,n){let r=D();if(!e){let{vecSouth:e,vecEast:n}=mD(t),i=y();i[0]=n[0],i[1]=n[1],i[2]=e[0],i[3]=e[1],b(i,i),r[0]=i[0],r[1]=i[1],r[4]=i[2],r[5]=i[3]}return ne(r,r,[1/n,1/n,1]),r}function pD(e,t,n,r){if(e){let e=D();if(!t){let{vecSouth:t,vecEast:r}=mD(n);e[0]=r[0],e[1]=r[1],e[4]=t[0],e[5]=t[1]}return ne(e,e,[r,r,1]),e}return n.pixelsToClipSpaceMatrix}function mD(e){let t=Math.cos(e.rollInRadians),n=Math.sin(e.rollInRadians),r=Math.cos(e.pitchInRadians),i=Math.cos(e.bearingInRadians),a=Math.sin(e.bearingInRadians),o=M();o[0]=-i*r*n-a*t,o[1]=-a*r*n+i*t;let s=et(o);s<1e-9?rt(o):$e(o,o,1/s);let c=M();c[0]=i*r*t-a*n,c[1]=a*r*t+i*n;let l=et(c);return l<1e-9?rt(c):$e(c,c,1/l),{vecEast:c,vecSouth:o}}function hD(e,t,n){return aD(e.getElevation,t,n,e.heightOffset??0,e.heightAnchorGround??!0)}function gD(e,t,n,r){let i;r==null?(i=[e,t,0,1],ND(i,i,n)):(i=[e,t,r,1],Ve(i,i,n));let a=i[3];return{point:new f(i[0]/a,i[1]/a),signedDistanceFromCamera:a,isOccluded:!1}}function _D(e,t){return .5+e/t*.5}function vD(e,t){return e.x>=-t[0]&&e.x<=t[0]&&e.y>=-t[1]&&e.y<=t[1]}function yD(e,t,n,r,i,a,o,s,c,l,u,d){let p=r?e.textSizeData:e.iconSizeData,m=vv(p,n.zoom),h=[256/t.width*2+1,256/t.height*2+1],g=r?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;g.clear();let _=e.lineVertexArray,v=r?e.text.placedSymbolArray:e.icon.placedSymbolArray,y=n.width/n.height,b=!1;for(let t=0;t<v.length;t++){let r=v.get(t);if(r.hidden||r.writingMode===2&&!b){MD(r.numGlyphs,g);continue}b=!1;let x={getElevation:d,pitchedLabelPlaneMatrix:i,lineVertexArray:_,pitchWithMap:o,projectionCache:{projections:{},offsets:{},cachedAnchorPoint:void 0,anyProjectionOccluded:!1},transform:n,tileAnchorPoint:new f(r.anchorX,r.anchorY),unwrappedTileID:l,width:n.width,height:n.height,translation:u},S=DD(r.anchorX,r.anchorY,x);if(!vD(S.point,h)){MD(r.numGlyphs,g);continue}let C=S.signedDistanceFromCamera,w=_D(n.cameraToCenterDistance,C),T=_v(p,m,r),E=o?T*n.getPitchedTextCorrection(r.anchorX,r.anchorY,l)/w:T*w,D=SD({projectionContext:x,pitchedLabelPlaneMatrixInverse:a,symbol:r,fontSize:E,flip:!1,keepUpright:s,glyphOffsetArray:e.glyphOffsetArray,dynamicLayoutVertexArray:g,aspectRatio:y,rotateToLine:c});b=D.useVertical,(D.notEnoughRoom||b||D.needsFlipping&&SD({projectionContext:x,pitchedLabelPlaneMatrixInverse:a,symbol:r,fontSize:E,flip:!0,keepUpright:s,glyphOffsetArray:e.glyphOffsetArray,dynamicLayoutVertexArray:g,aspectRatio:y,rotateToLine:c}).notEnoughRoom)&&MD(r.numGlyphs,g)}r?e.text.dynamicLayoutVertexBuffer.updateData(g):e.icon.dynamicLayoutVertexBuffer.updateData(g)}function bD(e,t,n,r,i,a,o,s){let c=a.glyphStartIndex+a.numGlyphs,l=a.lineStartIndex,u=a.lineStartIndex+a.lineLength,d=t.getoffsetX(a.glyphStartIndex),f=t.getoffsetX(c-1),p=AD(e*d,n,r,i,a.segment,l,u,s,o);if(!p)return null;let m=AD(e*f,n,r,i,a.segment,l,u,s,o);return!m||s.projectionCache.anyProjectionOccluded?null:{first:p,last:m}}function xD(e,t,n,r){return e===1&&Math.abs(n.y-t.y)>Math.abs(n.x-t.x)*r?{useVertical:!0}:(e===2?t.y<n.y:t.x>n.x)?{needsFlipping:!0}:null}function SD(e){let{projectionContext:t,pitchedLabelPlaneMatrixInverse:n,symbol:r,fontSize:i,flip:a,keepUpright:o,glyphOffsetArray:s,dynamicLayoutVertexArray:c,aspectRatio:l,rotateToLine:u}=e,d=i/24,p=r.lineOffsetX*d,m=r.lineOffsetY*d,h;if(r.numGlyphs>1){let e=r.glyphStartIndex+r.numGlyphs,i=r.lineStartIndex,c=r.lineStartIndex+r.lineLength,f=bD(d,s,p,m,a,r,u,t);if(!f)return{notEnoughRoom:!0};let g=ED(f.first.point.x,f.first.point.y,t,n),_=ED(f.last.point.x,f.last.point.y,t,n);if(o&&!a){let e=xD(r.writingMode,g,_,l);if(e)return e}h=[f.first];for(let n=r.glyphStartIndex+1;n<e-1;n++){let e=AD(d*s.getoffsetX(n),p,m,a,r.segment,i,c,t,u);if(!e)return{notEnoughRoom:!0};h.push(e)}h.push(f.last)}else{if(o&&!a){let e=TD(t.tileAnchorPoint.x,t.tileAnchorPoint.y,t).point,i=r.lineStartIndex+r.segment+1,a=new f(t.lineVertexArray.getx(i),t.lineVertexArray.gety(i)),o=TD(a.x,a.y,t),s=o.signedDistanceFromCamera>0?o.point:CD(t.tileAnchorPoint,a,e,1,t),c=ED(e.x,e.y,t,n),u=ED(s.x,s.y,t,n),d=xD(r.writingMode,c,u,l);if(d)return d}let e=AD(d*s.getoffsetX(r.glyphStartIndex),p,m,a,r.segment,r.lineStartIndex,r.lineStartIndex+r.lineLength,t,u);if(!e||t.projectionCache.anyProjectionOccluded)return{notEnoughRoom:!0};h=[e]}for(let e of h)ay(c,e.point,e.angle);return{}}function CD(e,t,n,r,i){let a=e.add(e.sub(t)._unit()),o=TD(a.x,a.y,i).point,s=n.sub(o);return n.add(s._mult(r/s.mag()))}function wD(e,t,n){let r=t.projectionCache;if(r.projections[e])return r.projections[e];let i=new f(t.lineVertexArray.getx(e),t.lineVertexArray.gety(e)),a=TD(i.x,i.y,t);if(a.signedDistanceFromCamera>0)return r.projections[e]=a.point,r.anyProjectionOccluded||=a.isOccluded,a.point;let o=e-n.direction,s=n.distanceFromAnchor===0?t.tileAnchorPoint:new f(t.lineVertexArray.getx(o),t.lineVertexArray.gety(o)),c=n.absOffsetX-n.distanceFromAnchor+1;return CD(s,i,n.previousVertex,c,t)}function TD(e,t,n){let r=e+n.translation[0],i=t+n.translation[1],a;return n.pitchWithMap?(a=gD(r,i,n.pitchedLabelPlaneMatrix,hD(n,r,i)),a.isOccluded=!1):(a=n.transform.projectTileCoordinates(r,i,n.unwrappedTileID,hD(n,r,i)),a.point.x=(a.point.x*.5+.5)*n.width,a.point.y=(-a.point.y*.5+.5)*n.height),a}function ED(e,t,n,r){if(n.pitchWithMap){let i=[e,t,0,1];Ve(i,i,r);let a=i[0]/i[3],o=i[1]/i[3];return n.transform.projectTileCoordinates(a,o,n.unwrappedTileID,hD(n,a,o)).point}return{x:e/n.width*2-1,y:1-t/n.height*2}}function DD(e,t,n){return n.transform.projectTileCoordinates(e,t,n.unwrappedTileID,hD(n,e,t))}function OD(e,t,n){return e._unit()._perp()._mult(t*n)}function kD(e,t,n,r,i,a,o,s,c){if(s.projectionCache.offsets[e])return s.projectionCache.offsets[e];let l=n.add(t);if(e+c.direction<r||e+c.direction>=i)return s.projectionCache.offsets[e]=l,l;let u=wD(e+c.direction,s,c),d=OD(u.sub(n),o,c.direction),f=n.add(d),p=u.add(d);return s.projectionCache.offsets[e]=Ht(a,l,f,p)||l,s.projectionCache.offsets[e]}function AD(e,t,n,r,i,a,o,s,c){let l=r?e-t:e+t,u=l>0?1:-1,d=0;r&&(u*=-1,d=Math.PI),u<0&&(d+=Math.PI);let f=u>0?a+i:a+i+1,p;s.projectionCache.cachedAnchorPoint?p=s.projectionCache.cachedAnchorPoint:(p=TD(s.tileAnchorPoint.x,s.tileAnchorPoint.y,s).point,s.projectionCache.cachedAnchorPoint=p);let m=p,h=p,g,_,v=0,y=0,b=Math.abs(l),x=[],S;for(;v+y<=b;){if(f+=u,f<a||f>=o)return null;v+=y,h=m,_=g;let e={absOffsetX:b,direction:u,distanceFromAnchor:v,previousVertex:h};if(m=wD(f,s,e),n===0)x.push(h),S=m.sub(h);else{let t,r=m.sub(h);t=r.mag()===0?OD(wD(f+u,s,e).sub(m),n,u):OD(r,n,u),_||=h.add(t),g=kD(f,t,m,a,o,_,n,s,e),x.push(_),S=g.sub(_)}y=S.mag()}let C=(b-v)/y,w=S._mult(C)._add(_||h),T=d+Math.atan2(m.y-h.y,m.x-h.x);return x.push(w),{point:w,angle:c?T:0,path:x}}var jD=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function MD(e,t){for(let n=0;n<e;n++){let e=t.length;t.resize(e+4),t.float32.set(jD,e*3)}}function ND(e,t,n){let r=t[0],i=t[1];return e[0]=n[0]*r+n[4]*i+n[12],e[1]=n[1]*r+n[5]*i+n[13],e[3]=n[3]*r+n[7]*i+n[15],e}function PD(e,t){let n=dD;return uD(n,t.pitchedLabelPlaneMatrix),e.map(e=>{let r=gD(e.x,e.y,n,hD(t,e.x,e.y)),i=t.transform.projectTileCoordinates(r.point.x,r.point.y,t.unwrappedTileID,hD(t,r.point.x,r.point.y));return i.point.x=(i.point.x*.5+.5)*t.width,i.point.y=(-i.point.y*.5+.5)*t.height,i})}function FD(e){let t=0,n=0,r=0,i=0;for(let a=0;a<e.length;a++)e[a].isOccluded?(r=a+1,i=0):(i++,i>n&&(n=i,t=r));return e.slice(t,t+n)}var ID=class{constructor(e,t=new sD(e.width+200,e.height+200,25),n=new sD(e.width+200,e.height+200,25)){this.transform=e,this.grid=t,this.ignoredGrid=n,this.pitchFactor=Math.cos(e.pitch*Math.PI/180)*e.cameraToCenterDistance,this.screenRightBoundary=e.width+100,this.screenBottomBoundary=e.height+100,this.gridRightBoundary=e.width+200,this.gridBottomBoundary=e.height+200,this.perspectiveRatioCutoff=.6}placeCollisionBox(e,t,n,r,i,a,o,s,c,l,u,d,f=0,p=!0){let m=e.anchorPointX+s[0],h=e.anchorPointY+s[1],g=this.projectAndGetPerspectiveRatio(m,h,i,aD(l,m,h,f,p),d),_=n*g.perspectiveRatio,v;if(!a&&!o){let t=g.x+(u?u.x*_:0),n=g.y+(u?u.y*_:0);v={allPointsOccluded:!1,box:[t+e.x1*_,n+e.y1*_,t+e.x2*_,n+e.y2*_]}}else v=this._projectCollisionBox(e,_,r,i,a,o,s,g,l,u,d,f,p);let[y,b,x,S]=v.box,C=a?v.allPointsOccluded:g.isOccluded,w=C;return w||=g.perspectiveRatio<this.perspectiveRatioCutoff,w||=!this.isInsideGrid(y,b,x,S),w||t!==`always`&&this.grid.hitTest(y,b,x,S,t,c)?{box:[y,b,x,S],placeable:!1,offscreen:!1,occluded:C}:{box:[y,b,x,S],placeable:!0,offscreen:this.isOffscreen(y,b,x,S),occluded:C}}placeCollisionCircles(e,t,n,r,i,a,o,s,c,l,u,d,p,m){let h=[],g=new f(t.anchorX,t.anchorY),_=this.getPerspectiveRatio(g.x,g.y,a,m?.(g.x,g.y)),v=(c?i*this.transform.getPitchedTextCorrection(t.anchorX,t.anchorY,a)/_:i*_)/24,y={projections:{},offsets:{},cachedAnchorPoint:void 0,anyProjectionOccluded:!1},b=t.lineOffsetX*v,x=t.lineOffsetY*v,S={getElevation:m,pitchedLabelPlaneMatrix:o,lineVertexArray:n,pitchWithMap:c,projectionCache:y,transform:this.transform,tileAnchorPoint:g,unwrappedTileID:a,width:this.transform.width,height:this.transform.height,translation:p},C=bD(v,r,b,x,!1,t,!1,S),w=!1,T=!1,E=!0;if(C){let t=u*.5*_+d,n=new f(-100,-100),r=new f(this.screenRightBoundary,this.screenBottomBoundary),i=new iD,a=C.first,o=C.last,p=[];for(let e=a.path.length-1;e>=1;e--)p.push(a.path[e]);for(let e=1;e<o.path.length;e++)p.push(o.path[e]);let m=t*2.5;if(c){let e=this.projectPathToScreenSpace(p,S);p=e.some(e=>e.signedDistanceFromCamera<=0)?[]:e.map(e=>e.point)}let g=[];if(p.length>0){let e=p[0].clone(),t=p[0].clone();for(let n=1;n<p.length;n++)e.x=Math.min(e.x,p[n].x),e.y=Math.min(e.y,p[n].y),t.x=Math.max(t.x,p[n].x),t.y=Math.max(t.y,p[n].y);g=e.x>=n.x&&t.x<=r.x&&e.y>=n.y&&t.y<=r.y?[p]:t.x<n.x||e.x>r.x||t.y<n.y||e.y>r.y?[]:kv([p],n.x,n.y,r.x,r.y)}for(let n of g){i.reset(n,t*.25);let r=0;r=i.length<=.5*t?1:Math.ceil(i.paddedLength/m)+1;for(let n=0;n<r;n++){let a=n/Math.max(r-1,1),o=i.lerp(a),c=o.x+100,u=o.y+100;h.push(c,u,t,0);let d=c-t,f=u-t,p=c+t,m=u+t;if(E&&=this.isOffscreen(d,f,p,m),T||=this.isInsideGrid(d,f,p,m),e!==`always`&&this.grid.hitTestCircle(c,u,t,e,l)&&(w=!0,!s))return{circles:[],offscreen:!1,collisionDetected:w}}}}return{circles:!s&&w||!T||_<this.perspectiveRatioCutoff?[]:h,offscreen:E,collisionDetected:w}}projectPathToScreenSpace(e,t){return FD(PD(e,t))}queryRenderedSymbols(e){if(e.length===0||this.grid.keysLength()===0&&this.ignoredGrid.keysLength()===0)return{};let t=[],n=new Pd;for(let r of e){let e=new f(r.x+100,r.y+100);n.extend(e),t.push(e)}let{minX:r,minY:i,maxX:a,maxY:o}=n,s=this.grid.query(r,i,a,o).concat(this.ignoredGrid.query(r,i,a,o)),c={},l={};for(let e of s){let n=e.key;c[n.bucketInstanceId]===void 0&&(c[n.bucketInstanceId]={}),!c[n.bucketInstanceId][n.featureIndex]&&Hd(t,[new f(e.x1,e.y1),new f(e.x2,e.y1),new f(e.x2,e.y2),new f(e.x1,e.y2)])&&(c[n.bucketInstanceId][n.featureIndex]=!0,l[n.bucketInstanceId]===void 0&&(l[n.bucketInstanceId]=[]),l[n.bucketInstanceId].push(n.featureIndex))}return l}insertCollisionBox(e,t,n,r,i,a){let o=n?this.ignoredGrid:this.grid,s={bucketInstanceId:r,featureIndex:i,collisionGroupID:a,overlapMode:t};o.insert(s,e[0],e[1],e[2],e[3])}insertCollisionCircles(e,t,n,r,i,a){let o=n?this.ignoredGrid:this.grid,s={bucketInstanceId:r,featureIndex:i,collisionGroupID:a,overlapMode:t};for(let t=0;t<e.length;t+=4)o.insertCircle(s,e[t],e[t+1],e[t+2])}projectAndGetPerspectiveRatio(e,t,n,r,i){if(i){let n;r==null?(n=[e,t,0,1],ND(n,n,i)):(n=[e,t,r,1],Ve(n,n,i));let a=n[3];return{x:(n[0]/a+1)/2*this.transform.width+100,y:(-n[1]/a+1)/2*this.transform.height+100,perspectiveRatio:.5+.5*(this.transform.cameraToCenterDistance/a),isOccluded:!1,signedDistanceFromCamera:a}}{let i=this.transform.projectTileCoordinates(e,t,n,r);return{x:(i.point.x+1)/2*this.transform.width+100,y:(-i.point.y+1)/2*this.transform.height+100,perspectiveRatio:.5+.5*(this.transform.cameraToCenterDistance/i.signedDistanceFromCamera),isOccluded:i.isOccluded,signedDistanceFromCamera:i.signedDistanceFromCamera}}}getPerspectiveRatio(e,t,n,r){let i=this.transform.projectTileCoordinates(e,t,n,r);return .5+.5*(this.transform.cameraToCenterDistance/i.signedDistanceFromCamera)}isOffscreen(e,t,n,r){return n<100||e>=this.screenRightBoundary||r<100||t>this.screenBottomBoundary}isInsideGrid(e,t,n,r){return n>=0&&e<this.gridRightBoundary&&r>=0&&t<this.gridBottomBoundary}getViewportMatrix(){let e=A([]);return te(e,e,[-100,-100,0]),e}_projectCollisionBox(e,t,n,r,i,a,o,s,c,l,u,d=0,p=!0){let m=1,h=0,g=0,_=1,v=e.anchorPointX+o[0],y=e.anchorPointY+o[1];if(a&&!i){let e=this.projectAndGetPerspectiveRatio(v+1,y,r,aD(c,v+1,y,d,p),u),t=e.x-s.x,n=e.y-s.y,i=Math.atan(n/t)+(t<0?Math.PI:0),a=Math.sin(i),o=Math.cos(i);m=o,h=a,g=-a,_=o}else if(!a&&i){let e=mD(this.transform);m=e.vecEast[0],h=e.vecEast[1],g=e.vecSouth[0],_=e.vecSouth[1]}let b=s.x,x=s.y,S=t;if(i&&(b=v,x=y,S=2**-(this.transform.zoom-n.overscaledZ),S*=this.transform.getPitchedTextCorrection(v,y,r),!l)){let e=P(.5+.5*(s.signedDistanceFromCamera/this.transform.cameraToCenterDistance),0,4);S*=e}l&&(b+=m*l.x*S+g*l.y*S,x+=h*l.x*S+_*l.y*S);let C=e.x1*S,w=e.x2*S,T=(C+w)/2,E=e.y1*S,D=e.y2*S,O=(E+D)/2,k=[{offsetX:C,offsetY:E},{offsetX:T,offsetY:E},{offsetX:w,offsetY:E},{offsetX:w,offsetY:O},{offsetX:w,offsetY:D},{offsetX:T,offsetY:D},{offsetX:C,offsetY:D},{offsetX:C,offsetY:O}],A=[];for(let{offsetX:e,offsetY:t}of k)A.push(new f(b+m*e+g*t,x+h*e+_*t));let j=!1;if(i){let e=A.map(e=>this.projectAndGetPerspectiveRatio(e.x,e.y,r,aD(c,e.x,e.y,d,p),u));j=e.some(e=>!e.isOccluded),A=e.map(e=>new f(e.x,e.y))}else j=!0;return{box:St(A),allPointsOccluded:!j}}},LD=class{constructor(e,t,n,r){this.opacity=e?Math.max(0,Math.min(1,e.opacity+(e.placed?t:-t))):r&&n?1:0,this.placed=n}isHidden(){return this.opacity===0&&!this.placed}},RD=class{constructor(e,t,n,r,i){this.text=new LD(e?e.text:null,t,n,i),this.icon=new LD(e?e.icon:null,t,r,i)}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}},zD=class{constructor(e,t,n){this.text=e,this.icon=t,this.skipFade=n}},BD=class{constructor(e,t,n,r,i){this.bucketInstanceId=e,this.featureIndex=t,this.sourceLayerIndex=n,this.bucketIndex=r,this.tileID=i}},VD=class{constructor(e){this.crossSourceCollisions=e,this.maxGroupID=0,this.collisionGroups={}}get(e){if(this.crossSourceCollisions)return{ID:0,predicate:null};if(!this.collisionGroups[e]){let t=++this.maxGroupID;this.collisionGroups[e]={ID:t,predicate:e=>e.collisionGroupID===t}}return this.collisionGroups[e]}};function HD(e,t,n,r,i){let{horizontalAlign:a,verticalAlign:o}=K_(e),s=-(a-.5)*t,c=-(o-.5)*n;return new f(s+r[0]*i,c+r[1]*i)}var UD=Zh.members.find(e=>e.name===`crossTileID`).offset/4,WD=class{constructor(e,t,n,r,i){this.transform=e.clone(),this.terrain=t,this.collisionIndex=new ID(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=n,this.retainedQueryData={},this.collisionGroups=new VD(r),this.collisionCircleArrays={},this.collisionBoxArrays=new Map,this.lastOpacityInputs=new WeakMap,this.prevPlacement=i,i&&(i.prevPlacement=void 0),this.placedOrientations={}}_getTerrainElevationFunc(e){let t=this.terrain;if(t)return(n,r)=>t.getElevation(e,n,r)}getBucketParts(e,t,n,r){let i=n.getBucket(t),a=n.latestFeatureIndex;if(!i||!a||t.id!==i.layerIds[0])return;let o=n.collisionBoxArray,s=i.layers[0].layout,c=i.layers[0].paint,l=2**(this.transform.zoom-n.tileID.overscaledZ),u=n.tileSize/N,d=n.tileID.toUnwrapped(),f=s.get(`text-rotation-alignment`)===`map`,p=at(n,1,this.transform.zoom),m=ft(this.collisionIndex.transform,n,c.get(`text-translate`),c.get(`text-translate-anchor`)),h=ft(this.collisionIndex.transform,n,c.get(`icon-translate`),c.get(`icon-translate-anchor`)),g=fD(f,this.transform,p);this.retainedQueryData[i.bucketInstanceId]=new BD(i.bucketInstanceId,a,i.sourceLayerIndex,i.index,n.tileID);let _={bucket:i,layout:s,translationText:m,translationIcon:h,unwrappedTileID:d,pitchedLabelPlaneMatrix:g,scale:l,textPixelRatio:u,holdingForFade:n.holdingForSymbolFade(),collisionBoxArray:o,partiallyEvaluatedTextSize:vv(i.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(i.sourceID)};if(r)for(let t of i.sortKeyRanges){let{sortKey:n,symbolInstanceStart:r,symbolInstanceEnd:i}=t;e.push({sortKey:n,symbolInstanceStart:r,symbolInstanceEnd:i,parameters:_})}else e.push({symbolInstanceStart:0,symbolInstanceEnd:i.symbolInstances.length,parameters:_})}attemptAnchorPlacement(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x){let S=Uv[e.textAnchor],C=[e.textOffset0,e.textOffset1],w=HD(S,n,r,C,i),T=this.collisionIndex.placeCollisionBox(t,d,s,c,l,o,a,h,u.predicate,v,w,y,b,x);if((!_||this.collisionIndex.placeCollisionBox(_,d,s,c,l,o,a,g,u.predicate,v,w,y,b,x).placeable)&&T.placeable){let e;if(this.prevPlacement?.variableOffsets[f.crossTileID]&&this.prevPlacement?.placements[f.crossTileID]?.text&&(e=this.prevPlacement.variableOffsets[f.crossTileID].anchor),f.crossTileID===0)throw Error(`symbolInstance.crossTileID can't be 0`);return this.variableOffsets[f.crossTileID]={textOffset:C,width:n,height:r,anchor:S,textBoxScale:i,prevAnchor:e},this.markUsedJustification(p,S,f,m),p.allowVerticalPlacement&&(this.markUsedOrientation(p,m,f),this.placedOrientations[f.crossTileID]=m),{shift:w,placedGlyphBoxes:T}}}placeLayerBucketPart(e,t,n){let{bucket:r,layout:i,translationText:a,translationIcon:o,unwrappedTileID:s,pitchedLabelPlaneMatrix:c,textPixelRatio:l,holdingForFade:u,collisionBoxArray:d,partiallyEvaluatedTextSize:f,collisionGroup:p}=e.parameters,m=i.get(`text-optional`),h=i.get(`icon-optional`),g=ny(i,`text-overlap`,`text-allow-overlap`),_=g===`always`,v=ny(i,`icon-overlap`,`icon-allow-overlap`),y=v===`always`,b=i.get(`text-rotation-alignment`)===`map`,x=i.get(`text-pitch-alignment`)===`map`,S=i.get(`icon-text-fit`)!==`none`,C=i.get(`symbol-z-order`)===`viewport-y`,w=i.get(`symbol-height-anchor`)===`ground`,T=_&&(y||!r.hasIconData()||h),E=y&&(_||!r.hasTextData()||m);!r.collisionArrays&&d&&r.deserializeCollisionBoxes(d);let D=this.retainedQueryData[r.bucketInstanceId].tileID,O=this._getTerrainElevationFunc(D),k=this.transform.getFastPathSimpleProjectionMatrix(D),A=(e,d,y)=>{if(t[e.crossTileID])return;if(u){this.placements[e.crossTileID]=new zD(!1,!1,!1);return}let C=e.heightOffset,A=!1,j=!1,ee=!0,te=null,ne={box:null,placeable:!1,offscreen:null,occluded:!1},re={box:null,placeable:!1,offscreen:null},ie=null,ae=null,oe=null,se=0,ce=0,le=0;d.textFeatureIndex?se=d.textFeatureIndex:e.useRuntimeCollisionCircles&&(se=e.featureIndex),d.verticalTextFeatureIndex&&(ce=d.verticalTextFeatureIndex);let ue=d.textBox;if(ue){let t=t=>{let n=1;if(r.allowVerticalPlacement&&!t&&this.prevPlacement){let t=this.prevPlacement.placedOrientations[e.crossTileID];t&&(this.placedOrientations[e.crossTileID]=t,n=t,this.markUsedOrientation(r,n,e))}return n},i=(t,n)=>{if(r.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&d.verticalTextBox){for(let e of r.writingModes)if(e===2?(ne=n(),re=ne):ne=t(),ne?.placeable)break}else ne=t()},c=e.textAnchorOffsetStartIndex,u=e.textAnchorOffsetEndIndex;if(u===c){let n=(t,n)=>{let i=this.collisionIndex.placeCollisionBox(t,g,l,D,s,x,b,a,p.predicate,O,void 0,k,C,w);return i?.placeable&&(this.markUsedOrientation(r,n,e),this.placedOrientations[e.crossTileID]=n),i};i(()=>n(ue,1),()=>{let t=d.verticalTextBox;return r.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&t?n(t,2):{box:null,offscreen:null}}),t(ne?.placeable)}else{let f=Uv[this.prevPlacement?.variableOffsets[e.crossTileID]?.anchor],m=(t,i,d)=>{let m=t.x2-t.x1,h=t.y2-t.y1,_=e.textBoxScale,y=S&&v===`never`?i:null,T=null,E=g===`never`?1:2,j=`never`;f&&E++;for(let n=0;n<E;n++){for(let n=c;n<u;n++){let i=r.textAnchorOffsets.get(n);if(f&&i.textAnchor!==f)continue;let c=this.attemptAnchorPlacement(i,t,m,h,_,b,x,l,D,s,p,j,e,r,d,a,o,y,O,k,C,w);if(c&&(T=c.placedGlyphBoxes,T?.placeable))return A=!0,te=c.shift,T}f?f=null:j=g}return n&&!T&&(T={box:this.collisionIndex.placeCollisionBox(ue,`always`,l,D,s,x,b,a,p.predicate,O,void 0,k,C,w).box,offscreen:!1,placeable:!1,occluded:!1}),T};i(()=>m(ue,d.iconBox,1),()=>{let t=d.verticalTextBox,n=ne?.placeable;return r.allowVerticalPlacement&&!n&&e.numVerticalGlyphVertices>0&&t?m(t,d.verticalIconBox,2):{box:null,occluded:!0,offscreen:null}}),ne&&(A=ne.placeable,ee=ne.offscreen);let h=t(ne?.placeable);if(!A&&this.prevPlacement){let t=this.prevPlacement.variableOffsets[e.crossTileID];t&&(this.variableOffsets[e.crossTileID]=t,this.markUsedJustification(r,t.anchor,e,h))}}}if(ie=ne,A=ie?.placeable,ee=ie?.offscreen,e.useRuntimeCollisionCircles&&e.centerJustifiedTextSymbolIndex>=0){let t=r.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),o=_v(r.textSizeData,f,t),l=i.get(`text-padding`),u=e.collisionCircleDiameter;ae=this.collisionIndex.placeCollisionCircles(g,t,r.lineVertexArray,r.glyphOffsetArray,o,s,c,n,x,p.predicate,u,l,a,O),ae.circles.length&&ae.collisionDetected&&!n&&I(`Collisions detected, but collision boxes are not shown`),A=_||ae.circles.length>0&&!ae.collisionDetected,ee&&=ae.offscreen}if(d.iconFeatureIndex&&(le=d.iconFeatureIndex),d.iconBox){let e=e=>this.collisionIndex.placeCollisionBox(e,v,l,D,s,x,b,o,p.predicate,O,S&&te?te:void 0,k,C,w);re&&re.placeable&&d.verticalIconBox?(oe=e(d.verticalIconBox),j=oe.placeable):(oe=e(d.iconBox),j=oe.placeable),ee&&=oe.offscreen}let de=m||e.numHorizontalGlyphVertices===0&&e.numVerticalGlyphVertices===0,fe=h||e.numIconVertices===0;!de&&!fe?j=A=j&&A:fe?de||(j&&=A):A=j&&A;let pe=A&&ie.placeable,me=j&&oe.placeable;if(pe&&(re&&re.placeable&&ce?this.collisionIndex.insertCollisionBox(ie.box,g,i.get(`text-ignore-placement`),r.bucketInstanceId,ce,p.ID):this.collisionIndex.insertCollisionBox(ie.box,g,i.get(`text-ignore-placement`),r.bucketInstanceId,se,p.ID)),me&&this.collisionIndex.insertCollisionBox(oe.box,v,i.get(`icon-ignore-placement`),r.bucketInstanceId,le,p.ID),ae&&A&&this.collisionIndex.insertCollisionCircles(ae.circles,g,i.get(`text-ignore-placement`),r.bucketInstanceId,se,p.ID),n&&this.storeCollisionData(r.bucketInstanceId,y,d,ie,oe,ae),e.crossTileID===0)throw Error(`symbolInstance.crossTileID can't be 0`);if(r.bucketInstanceId===0)throw Error(`bucket.bucketInstanceId can't be 0`);let he=(A||T)&&!ie?.occluded,ge=(j||E)&&!oe?.occluded;this.placements[e.crossTileID]=new zD(he,ge,ee||r.justReloaded),t[e.crossTileID]=!0};if(C){if(e.symbolInstanceStart!==0)throw Error(`bucket.bucketInstanceId should be 0`);let t=r.getSortedSymbolIndexes(-this.transform.bearingInRadians);for(let e=t.length-1;e>=0;--e){let n=t[e];A(r.symbolInstances.get(n),r.collisionArrays[n],n)}}else for(let t=e.symbolInstanceStart;t<e.symbolInstanceEnd;t++)A(r.symbolInstances.get(t),r.collisionArrays[t],t);r.justReloaded=!1}storeCollisionData(e,t,n,r,i,a){if(n.textBox||n.iconBox){let a;this.collisionBoxArrays.has(e)?a=this.collisionBoxArrays.get(e):(a=new Map,this.collisionBoxArrays.set(e,a));let o;a.has(t)?o=a.get(t):(o={text:null,icon:null},a.set(t,o)),n.textBox&&(o.text=r.box),n.iconBox&&(o.icon=i.box)}if(a){let t=this.collisionCircleArrays[e];t===void 0&&(t=this.collisionCircleArrays[e]=[]);for(let e=0;e<a.circles.length;e+=4)t.push(a.circles[e+0]-100),t.push(a.circles[e+1]-100),t.push(a.circles[e+2]),t.push(+!!a.collisionDetected)}}markUsedJustification(e,t,n,r){let i={left:n.leftJustifiedTextSymbolIndex,center:n.centerJustifiedTextSymbolIndex,right:n.rightJustifiedTextSymbolIndex},a;a=r===2?n.verticalPlacedTextSymbolIndex:i[Jv(t)];let o=[n.leftJustifiedTextSymbolIndex,n.centerJustifiedTextSymbolIndex,n.rightJustifiedTextSymbolIndex,n.verticalPlacedTextSymbolIndex];for(let t of o)t>=0&&(a>=0&&t!==a?e.text.placedSymbolArray.get(t).crossTileID=0:e.text.placedSymbolArray.get(t).crossTileID=n.crossTileID)}markUsedOrientation(e,t,n){let r=t===1||t===3?t:0,i=t===2?t:0,a=[n.leftJustifiedTextSymbolIndex,n.centerJustifiedTextSymbolIndex,n.rightJustifiedTextSymbolIndex];for(let t of a)e.text.placedSymbolArray.get(t).placedOrientation=r;n.verticalPlacedTextSymbolIndex&&(e.text.placedSymbolArray.get(n.verticalPlacedTextSymbolIndex).placedOrientation=i)}commit(e){this.commitTime=e,this.zoomAtLastRecencyCheck=this.transform.zoom;let t=this.prevPlacement,n=!1;this.prevZoomAdjustment=t?t.zoomAdjustment(this.transform.zoom):0;let r=t?t.symbolFadeChange(e):1,i=t?t.opacities:{},a=t?t.variableOffsets:{},o=t?t.placedOrientations:{};for(let e in this.placements){let t=this.placements[e],a=i[e];a?(this.opacities[e]=new RD(a,r,t.text,t.icon),n||=t.text!==a.text.placed,n||=t.icon!==a.icon.placed):(this.opacities[e]=new RD(null,r,t.text,t.icon,t.skipFade),n||=t.text||t.icon)}for(let e in i){let t=i[e];if(!this.opacities[e]){let i=new RD(t,r,!1,!1);i.isHidden()||(this.opacities[e]=i,n||=t.text.placed,n||=t.icon.placed)}}for(let e in a)!this.variableOffsets[e]&&this.opacities[e]&&!this.opacities[e].isHidden()&&(this.variableOffsets[e]=a[e]);for(let e in o)!this.placedOrientations[e]&&this.opacities[e]&&!this.opacities[e].isHidden()&&(this.placedOrientations[e]=o[e]);if(t&&t.lastPlacementChangeTime===void 0)throw Error(`Last placement time for previous placement is not defined`);n?this.lastPlacementChangeTime=e:typeof this.lastPlacementChangeTime!=`number`&&(this.lastPlacementChangeTime=t?t.lastPlacementChangeTime:e)}updateLayerOpacities(e,t){let n={};for(let r of t){let t=r.getBucket(e);if(!t||!r.latestFeatureIndex||e.id!==t.layerIds[0])continue;let{duplicates:i,changed:a}=this._markDuplicates(t,n),o=!!t.hasDebugData()||t.bucketInstanceId in this.collisionCircleArrays;(a||o)&&this.updateBucketOpacities(t,r.tileID,i,r.collisionBoxArray),t.sortFeatures(-this.transform.bearingInRadians),this.retainedQueryData[t.bucketInstanceId]&&(this.retainedQueryData[t.bucketInstanceId].featureSortOrder=t.featureSortOrder)}}_markDuplicates(e,t){let n=e.symbolInstances.length,r=this.lastOpacityInputs.get(e),i=!1;r||(r={crossTileIDs:Array(n).fill(0),duplicates:Array(n).fill(!1)},this.lastOpacityInputs.set(e,r),i=!0);let{crossTileIDs:a,duplicates:o}=r,s=e.symbolInstances.uint32,c=e.symbolInstances.bytesPerElement/4;for(let e=0;e<n;e++){let n=s[e*c+UD],r=!!t[n];t[n]=!0,(a[e]!==n||o[e]!==r)&&(a[e]=n,o[e]=r,i=!0)}return{duplicates:o,changed:i}}updateBucketOpacities(e,t,n,r){e.hasTextData()&&(e.text.opacityVertexArray.clear(),e.text.hasVisibleVertices=!1),e.hasIconData()&&(e.icon.opacityVertexArray.clear(),e.icon.hasVisibleVertices=!1),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexArray.clear(),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexArray.clear();let i=e.layers[0],a=i.layout,o=new RD(null,0,!1,!1,!0),s=a.get(`text-allow-overlap`),c=a.get(`icon-allow-overlap`),l=i._unevaluatedLayout.hasValue(`text-variable-anchor`)||i._unevaluatedLayout.hasValue(`text-variable-anchor-offset`),u=a.get(`text-rotation-alignment`)===`map`,d=a.get(`text-pitch-alignment`)===`map`,p=a.get(`icon-text-fit`)!==`none`,m=new RD(null,0,s&&(c||!e.hasIconData()||a.get(`icon-optional`)),c&&(s||!e.hasTextData()||a.get(`text-optional`)),!0);!e.collisionArrays&&r&&(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData())&&e.deserializeCollisionBoxes(r);let h=(e,t,n)=>{for(let r=0;r<t/4;r++)e.opacityVertexArray.emplaceBack(n);e.hasVisibleVertices||=n!==0},g=this.collisionBoxArrays.get(e.bucketInstanceId);for(let t=0;t<e.symbolInstances.length;t++){let r=e.symbolInstances.get(t),{numHorizontalGlyphVertices:i,numVerticalGlyphVertices:a,crossTileID:s}=r,c=n[t],_=this.opacities[s];c?_=o:_||(_=m,this.opacities[s]=_);let v=i>0||a>0,y=r.numIconVertices>0,b=this.placedOrientations[r.crossTileID],x=b===2,S=b===1||b===3;if(v){let t=XD(_.text),n=x?0:t;h(e.text,i,n);let o=S?0:t;h(e.text,a,o);let s=_.text.isHidden(),c=[r.rightJustifiedTextSymbolIndex,r.centerJustifiedTextSymbolIndex,r.leftJustifiedTextSymbolIndex];for(let t of c)t>=0&&(e.text.placedSymbolArray.get(t).hidden=s||x?1:0);r.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(r.verticalPlacedTextSymbolIndex).hidden=s||S?1:0);let l=this.variableOffsets[r.crossTileID];l&&this.markUsedJustification(e,l.anchor,r,b);let u=this.placedOrientations[r.crossTileID];u&&(this.markUsedJustification(e,`left`,r,u),this.markUsedOrientation(e,u,r))}if(y){let t=XD(_.icon),n=!(p&&r.verticalPlacedIconSymbolIndex&&x);if(r.placedIconSymbolIndex>=0){let i=n?t:0;h(e.icon,r.numIconVertices,i),e.icon.placedSymbolArray.get(r.placedIconSymbolIndex).hidden=_.icon.isHidden()}if(r.verticalPlacedIconSymbolIndex>=0){let i=n?0:t;h(e.icon,r.numVerticalIconVertices,i),e.icon.placedSymbolArray.get(r.verticalPlacedIconSymbolIndex).hidden=_.icon.isHidden()}}let C=g?.has(t)?g.get(t):{text:null,icon:null};if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){let n=e.collisionArrays[t];if(n){let t=new f(0,0);if(n.textBox||n.verticalTextBox){let r=!0;if(l){let e=this.variableOffsets[s];e?(t=HD(e.anchor,e.width,e.height,e.textOffset,e.textBoxScale),u&&t._rotate(d?-this.transform.bearingInRadians:this.transform.bearingInRadians)):r=!1}if(n.textBox||n.verticalTextBox){let i;n.textBox&&(i=x),n.verticalTextBox&&(i=S),GD(e.textCollisionBox.collisionVertexArray,_.text.placed,!r||i,C.text,t.x,t.y)}}if(n.iconBox||n.verticalIconBox){let r=!(S||!n.verticalIconBox),i;n.iconBox&&(i=r),n.verticalIconBox&&(i=!r),GD(e.iconCollisionBox.collisionVertexArray,_.icon.placed,i,C.icon,p?t.x:0,p?t.y:0)}}}}if(e.hasTextData()&&e.text.opacityVertexBuffer&&e.text.opacityVertexBuffer.updateData(e.text.opacityVertexArray),e.hasIconData()&&e.icon.opacityVertexBuffer&&e.icon.opacityVertexBuffer.updateData(e.icon.opacityVertexArray),e.hasIconCollisionBoxData()&&e.iconCollisionBox.collisionVertexBuffer&&e.iconCollisionBox.collisionVertexBuffer.updateData(e.iconCollisionBox.collisionVertexArray),e.hasTextCollisionBoxData()&&e.textCollisionBox.collisionVertexBuffer&&e.textCollisionBox.collisionVertexBuffer.updateData(e.textCollisionBox.collisionVertexArray),e.text.opacityVertexArray.length!==e.text.layoutVertexArray.length/4)throw Error(`bucket.text.opacityVertexArray.length (= ${e.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${e.text.layoutVertexArray.length}) / 4`);if(e.icon.opacityVertexArray.length!==e.icon.layoutVertexArray.length/4)throw Error(`bucket.icon.opacityVertexArray.length (= ${e.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${e.icon.layoutVertexArray.length}) / 4`);e.bucketInstanceId in this.collisionCircleArrays&&(e.collisionCircleArray=this.collisionCircleArrays[e.bucketInstanceId],delete this.collisionCircleArrays[e.bucketInstanceId])}symbolFadeChange(e){return this.fadeDuration===0?1:(e-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(e){return Math.max(0,(this.transform.zoom-e)/1.5)}hasTransitions(e){return this.stale||e-this.lastPlacementChangeTime<this.fadeDuration}stillRecent(e,t){let n=this.zoomAtLastRecencyCheck===t?1-this.zoomAdjustment(t):1;return this.zoomAtLastRecencyCheck=t,this.commitTime+this.fadeDuration*n>e}setStale(){this.stale=!0}};function GD(e,t,n,r,i,a){r&&r.length!==0||(r=[0,0,0,0]);let o=r[0]-100,s=r[1]-100,c=r[2]-100,l=r[3]-100;e.emplaceBack(+!!t,+!!n,i||0,a||0,o,s),e.emplaceBack(+!!t,+!!n,i||0,a||0,c,s),e.emplaceBack(+!!t,+!!n,i||0,a||0,c,l),e.emplaceBack(+!!t,+!!n,i||0,a||0,o,l)}var KD=2**25,qD=2**24,JD=2**17,YD=2**16;function XD(e){if(e.opacity===0&&!e.placed)return 0;if(e.opacity===1&&e.placed)return ZD;let t=+!!e.placed,n=Math.floor(e.opacity*127);return n*KD+t*qD+n*JD+t*YD+n*512+t*256+n*2+t}var ZD=4294967295,QD=class{constructor(e){this._sortAcrossTiles=e.layout.get(`symbol-z-order`)!==`viewport-y`&&!e.layout.get(`symbol-sort-key`).isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(e,t,n,r,i){let a=this._bucketParts;for(;this._currentTileIndex<e.length;){let n=e[this._currentTileIndex];if(t.getBucketParts(a,r,n,this._sortAcrossTiles),this._currentTileIndex++,i())return!0}for(this._sortAcrossTiles&&(this._sortAcrossTiles=!1,a.sort((e,t)=>e.sortKey-t.sortKey));this._currentPartIndex<a.length;){let e=a[this._currentPartIndex];if(t.placeLayerBucketPart(e,this._seenCrossTileIDs,n),this._currentPartIndex++,i())return!0}return!1}},$D=class{constructor(e,t,n,r,i,a,o,s){this.placement=new WD(e,t,a,o,s),this._currentPlacementIndex=n.length-1,this._forceFullPlacement=r,this._showCollisionBoxes=i,this._done=!1}isDone(){return this._done}continuePlacement(e,t,n){let r=Sn(),i=()=>!this._forceFullPlacement&&Sn()-r>2;for(;this._currentPlacementIndex>=0;){let r=t[e[this._currentPlacementIndex]],a=this.placement.collisionIndex.transform.zoom;if(vy(r)&&r.layout&&(!r.minzoom||r.minzoom<=a)&&(!r.maxzoom||r.maxzoom>a)){if(this._inProgressLayer||=new QD(r),this._inProgressLayer.continuePlacement(n[r.source],this.placement,this._showCollisionBoxes,r,i))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(e){return this.placement.commit(e),this.placement}},eO=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],tO=new Uint32Array(96),nO=class e{static from(t){if(!t||t.byteLength===void 0||t.buffer)throw Error(`Data must be an instance of ArrayBuffer or SharedArrayBuffer.`);let[n,r]=new Uint8Array(t,0,2);if(n!==219)throw Error(`Data does not appear to be in a KDBush format.`);let i=r>>4;if(i!==1)throw Error(`Got v${i} data when expected v1.`);let a=eO[r&15];if(!a)throw Error(`Unrecognized array type.`);let[o]=new Uint16Array(t,2,1),[s]=new Uint32Array(t,4,1);return new e(s,o,a,void 0,t)}constructor(e,t=64,n=Float64Array,r=ArrayBuffer,i){if(isNaN(e)||e<0)throw Error(`Unexpected numItems value: ${e}.`);this.numItems=+e,this.nodeSize=Math.min(Math.max(+t,2),65535),this.ArrayType=n,this.IndexArrayType=e<65536?Uint16Array:Uint32Array;let a=eO.indexOf(this.ArrayType),o=e*2*this.ArrayType.BYTES_PER_ELEMENT,s=e*this.IndexArrayType.BYTES_PER_ELEMENT,c=(8-s%8)%8;if(a<0)throw Error(`Unexpected typed array class: ${n}.`);if(i)this.data=i,this.ids=new this.IndexArrayType(i,8,e),this.coords=new n(i,8+s+c,e*2),this._pos=e*2,this._finished=!0;else{let i=this.data=new r(8+o+s+c);this.ids=new this.IndexArrayType(i,8,e),this.coords=new n(i,8+s+c,e*2),this._pos=0,this._finished=!1,new Uint8Array(i,0,2).set([219,16+a]),new Uint16Array(i,2,1)[0]=t,new Uint32Array(i,4,1)[0]=e}}add(e,t){let n=this._pos>>1;return this.ids[n]=n,this.coords[this._pos++]=e,this.coords[this._pos++]=t,n}finish(){let e=this._pos>>1;if(e!==this.numItems)throw Error(`Added ${e} items when expected ${this.numItems}.`);return rO(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(e,t,n,r){if(!this._finished)throw Error(`Data not yet indexed - call index.finish().`);let{ids:i,coords:a,nodeSize:o}=this;tO[0]=0,tO[1]=i.length-1,tO[2]=0;let s=3,c=[];for(;s>0;){let l=tO[--s],u=tO[--s],d=tO[--s];if(u-d<=o){for(let o=d;o<=u;o++){let s=a[2*o],l=a[2*o+1];s>=e&&s<=n&&l>=t&&l<=r&&c.push(i[o])}continue}let f=d+u>>1,p=a[2*f],m=a[2*f+1];p>=e&&p<=n&&m>=t&&m<=r&&c.push(i[f]),(l===0?e<=p:t<=m)&&(tO[s++]=d,tO[s++]=f-1,tO[s++]=1-l),(l===0?n>=p:r>=m)&&(tO[s++]=f+1,tO[s++]=u,tO[s++]=1-l)}return c}within(e,t,n){let r=[];return this.withinInto(e,t,n,r),r}withinInto(e,t,n,r){if(!this._finished)throw Error(`Data not yet indexed - call index.finish().`);let{ids:i,coords:a,nodeSize:o}=this;tO[0]=0,tO[1]=i.length-1,tO[2]=0;let s=3,c=0,l=n*n;for(;s>0;){let u=tO[--s],d=tO[--s],f=tO[--s];if(d-f<=o){for(let n=f;n<=d;n++)sO(a[2*n],a[2*n+1],e,t)<=l&&(r[c++]=i[n]);continue}let p=f+d>>1,m=a[2*p],h=a[2*p+1];sO(m,h,e,t)<=l&&(r[c++]=i[p]),(u===0?e-n<=m:t-n<=h)&&(tO[s++]=f,tO[s++]=p-1,tO[s++]=1-u),(u===0?e+n>=m:t+n>=h)&&(tO[s++]=p+1,tO[s++]=d,tO[s++]=1-u)}return c}};function rO(e,t,n,r,i,a){if(i-r<=n)return;let o=r+i>>1;iO(e,t,o,r,i,a),rO(e,t,n,r,o-1,1-a),rO(e,t,n,o+1,i,1-a)}function iO(e,t,n,r,i,a){for(;i>r;){if(i-r>600){let o=i-r+1,s=n-r+1,c=Math.log(o),l=.5*Math.exp(2*c/3),u=.5*Math.sqrt(c*l*(o-l)/o)*(s-o/2<0?-1:1);iO(e,t,n,Math.max(r,Math.floor(n-s*l/o+u)),Math.min(i,Math.floor(n+(o-s)*l/o+u)),a)}let o=t[2*n+a],s=r,c=i;for(aO(e,t,r,n),t[2*i+a]>o&&aO(e,t,r,i);s<c;){for(aO(e,t,s,c),s++,c--;t[2*s+a]<o;)s++;for(;t[2*c+a]>o;)c--}t[2*r+a]===o?aO(e,t,r,c):(c++,aO(e,t,c,i)),c<=n&&(r=c+1),n<=c&&(i=c-1)}}function aO(e,t,n,r){oO(e,n,r),oO(t,2*n,2*r),oO(t,2*n+1,2*r+1)}function oO(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function sO(e,t,n,r){let i=e-n,a=t-r;return i*i+a*a}var cO=512/N/2,lO=class{constructor(e,t,n){this.tileID=e,this.bucketInstanceId=n,this._symbolsByKey={};let r=new Map;for(let e=0;e<t.length;e++){let n=t.get(e),i=n.key,a=r.get(i);a?a.push(n):r.set(i,[n])}for(let[e,t]of r){let n={positions:t.map(e=>({x:Math.floor(e.anchorX*cO),y:Math.floor(e.anchorY*cO)})),crossTileIDs:t.map(e=>e.crossTileID)};if(n.positions.length>128){let e=new nO(n.positions.length,16,Uint16Array);for(let{x:t,y:r}of n.positions)e.add(t,r);e.finish(),delete n.positions,n.index=e}this._symbolsByKey[e]=n}}getScaledCoordinates(e,t){let{x:n,y:r,z:i}=this.tileID.canonical,{x:a,y:o,z:s}=t.canonical,c=cO/2**(s-i),l=(a*N+e.anchorX)*c,u=(o*N+e.anchorY)*c,d=n*N*cO,f=r*N*cO;return{x:Math.floor(l-d),y:Math.floor(u-f)}}findMatches(e,t,n){let r=this.tileID.canonical.z<t.canonical.z?1:2**(this.tileID.canonical.z-t.canonical.z);for(let i=0;i<e.length;i++){let a=e.get(i);if(a.crossTileID)continue;let o=this._symbolsByKey[a.key];if(!o)continue;let s=this.getScaledCoordinates(a,t);o.index?this.findMatchesForIndexedEntry(o,a,s,r,n):o.positions&&this.findMatchesForNonIndexedEntry(o,a,s,r,n)}}findMatchesForIndexedEntry(e,t,n,r,i){let a=e.index.range(n.x-r,n.y-r,n.x+r,n.y+r),o=1/0;for(let t of a)t<o&&!i[e.crossTileIDs[t]]&&(o=t);if(o!==1/0){let n=e.crossTileIDs[o];i[n]=!0,t.crossTileID=n}}findMatchesForNonIndexedEntry(e,t,n,r,i){for(let a=0;a<e.positions.length;a++){let o=e.positions[a],s=e.crossTileIDs[a];if(Math.abs(o.x-n.x)<=r&&Math.abs(o.y-n.y)<=r&&!i[s]){i[s]=!0,t.crossTileID=s;break}}}getCrossTileIDsLists(){return Object.values(this._symbolsByKey).map(({crossTileIDs:e})=>e)}},uO=class{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}},dO=class{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(e){let t=Math.round((e-this.lng)/360);if(t!==0)for(let e in this.indexes){let n=this.indexes[e],r={};for(let e in n){let i=n[e];i.tileID=i.tileID.unwrapTo(i.tileID.wrap+t),r[i.tileID.key]=i}this.indexes[e]=r}this.lng=e}addBucket(e,t,n){if(this.indexes[e.overscaledZ]?.[e.key]){if(this.indexes[e.overscaledZ][e.key].bucketInstanceId===t.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(e.overscaledZ,this.indexes[e.overscaledZ][e.key])}for(let e=0;e<t.symbolInstances.length;e++){let n=t.symbolInstances.get(e);n.crossTileID=0}this.usedCrossTileIDs[e.overscaledZ]||={};let r=this.usedCrossTileIDs[e.overscaledZ];for(let n in this.indexes){let i=this.indexes[n];if(Number(n)>e.overscaledZ)for(let n in i){let a=i[n];a.tileID.isChildOf(e)&&a.findMatches(t.symbolInstances,e,r)}else{let a=i[e.scaledTo(Number(n)).key];a&&a.findMatches(t.symbolInstances,e,r)}}for(let e=0;e<t.symbolInstances.length;e++){let i=t.symbolInstances.get(e);i.crossTileID||(i.crossTileID=n.generate(),r[i.crossTileID]=!0)}return this.indexes[e.overscaledZ]===void 0&&(this.indexes[e.overscaledZ]={}),this.indexes[e.overscaledZ][e.key]=new lO(e,t.symbolInstances,t.bucketInstanceId),!0}removeBucketCrossTileIDs(e,t){for(let n of t.getCrossTileIDsLists())for(let t of n)delete this.usedCrossTileIDs[e][t]}removeStaleBuckets(e){let t=!1;for(let n in this.indexes){let r=this.indexes[n];for(let i in r)e[r[i].bucketInstanceId]||(this.removeBucketCrossTileIDs(n,r[i]),delete r[i],t=!0)}return t}},fO=class{constructor(){this.layerIndexes={},this.crossTileIDs=new uO,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={}}addLayer(e,t,n){let r=this.layerIndexes[e.id];r===void 0&&(r=this.layerIndexes[e.id]=new dO);let i=!1,a={};r.handleWrapJump(n);for(let n of t){let t=n.getBucket(e);e.id===t?.layerIds[0]&&(t.bucketInstanceId||=(this.maxBucketInstanceId+=1,this.maxBucketInstanceId),r.addBucket(n.tileID,t,this.crossTileIDs)&&(i=!0),a[t.bucketInstanceId]=!0)}return r.removeStaleBuckets(a)&&(i=!0),i}pruneUnusedLayers(e){let t={};for(let n of e)t[n]=!0;for(let e in this.layerIndexes)t[e]||delete this.layerIndexes[e]}},pO=`#ifdef GL_ES
|
|
2
|
+
precision mediump float;
|
|
3
|
+
#else
|
|
4
|
+
#if !defined(lowp)
|
|
5
|
+
#define lowp
|
|
6
|
+
#endif
|
|
7
|
+
#if !defined(mediump)
|
|
8
|
+
#define mediump
|
|
9
|
+
#endif
|
|
10
|
+
#if !defined(highp)
|
|
11
|
+
#define highp
|
|
12
|
+
#endif
|
|
13
|
+
#endif
|
|
14
|
+
out highp vec4 fragColor;layout(std140) uniform ProjectionUBO {highp mat4 u_projection_matrix;highp mat4 u_projection_fallback_matrix;highp vec4 u_projection_tile_mercator_coords;highp vec4 u_projection_clipping_plane;highp float u_projection_transition;highp int u_projection_clip_antimeridian;};layout(std140) uniform FrameUBO {highp vec2 u_units_to_pixels;highp vec2 u_world_size;highp float u_camera_to_center_distance;highp float u_symbol_fade_change;highp float u_aspect_ratio;highp float u_device_pixel_ratio;highp vec2 u_viewport_size;highp vec2 u_pixel_extrude_scale;highp float u_pitch;};`,mO=`#ifdef GL_ES
|
|
15
|
+
precision highp float;
|
|
16
|
+
#else
|
|
17
|
+
#if !defined(lowp)
|
|
18
|
+
#define lowp
|
|
19
|
+
#endif
|
|
20
|
+
#if !defined(mediump)
|
|
21
|
+
#define mediump
|
|
22
|
+
#endif
|
|
23
|
+
#if !defined(highp)
|
|
24
|
+
#define highp
|
|
25
|
+
#endif
|
|
26
|
+
#endif
|
|
27
|
+
vec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const uint packedOpacity) {return vec2(float(packedOpacity >> 1u)/127.0,float(packedOpacity & 1u));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0
|
|
28
|
+
);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}mat3 rotationMatrixFromAxisAngle(vec3 u,float angle) {float c=cos(angle);float s=sin(angle);float c2=1.0-c;return mat3(u.x*u.x*c2+ c,u.x*u.y*c2-u.z*s,u.x*u.z*c2+u.y*s,u.y*u.x*c2+u.z*s,u.y*u.y*c2+ c,u.y*u.z*c2-u.x*s,u.z*u.x*c2-u.y*s,u.z*u.y*c2+u.x*s,u.z*u.z*c2+ c
|
|
29
|
+
);}
|
|
30
|
+
#ifdef TERRAIN3D
|
|
31
|
+
uniform sampler2D u_terrain;uniform highp sampler2D u_depth;layout(std140) uniform TerrainUBO {highp mat4 u_terrain_matrix;highp vec4 u_terrain_unpack;highp float u_terrain_dim;highp float u_terrain_exaggeration;};
|
|
32
|
+
#endif
|
|
33
|
+
const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) {
|
|
34
|
+
#ifdef TERRAIN3D
|
|
35
|
+
highp float d=unpack(texture(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0));
|
|
36
|
+
#else
|
|
37
|
+
return 1.0;
|
|
38
|
+
#endif
|
|
39
|
+
}float calculate_visibility(vec4 pos) {
|
|
40
|
+
#ifdef TERRAIN3D
|
|
41
|
+
vec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0;
|
|
42
|
+
#else
|
|
43
|
+
return 1.0;
|
|
44
|
+
#endif
|
|
45
|
+
}float ele(ivec2 pos) {
|
|
46
|
+
#ifdef TERRAIN3D
|
|
47
|
+
vec4 rgb=(texelFetch(u_terrain,pos,0)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;
|
|
48
|
+
#else
|
|
49
|
+
return 0.0;
|
|
50
|
+
#endif
|
|
51
|
+
}float get_elevation(vec2 pos) {
|
|
52
|
+
#ifdef TERRAIN3D
|
|
53
|
+
#ifdef GLOBE
|
|
54
|
+
if ((pos.y <-32767.5) || (pos.y > 32766.5)) {return 0.0;}
|
|
55
|
+
#endif
|
|
56
|
+
vec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.5;vec2 f=fract(coord);ivec2 c=ivec2(floor(coord));ivec2 hi=textureSize(u_terrain,0)-1;float tl=ele(clamp(c,ivec2(0),hi));float tr=ele(clamp(c+ivec2(1,0),ivec2(0),hi));float bl=ele(clamp(c+ivec2(0,1),ivec2(0),hi));float br=ele(clamp(c+ivec2(1,1),ivec2(0),hi));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration;
|
|
57
|
+
#else
|
|
58
|
+
return 0.0;
|
|
59
|
+
#endif
|
|
60
|
+
}const float PI=3.141592653589793;
|
|
61
|
+
#define PROJECTION_UBO
|
|
62
|
+
layout(std140) uniform ProjectionUBO {highp mat4 u_projection_matrix;highp mat4 u_projection_fallback_matrix;highp vec4 u_projection_tile_mercator_coords;highp vec4 u_projection_clipping_plane;highp float u_projection_transition;highp int u_projection_clip_antimeridian;};layout(std140) uniform FrameUBO {highp vec2 u_units_to_pixels;highp vec2 u_world_size;highp float u_camera_to_center_distance;highp float u_symbol_fade_change;highp float u_aspect_ratio;highp float u_device_pixel_ratio;highp vec2 u_viewport_size;highp vec2 u_pixel_extrude_scale;highp float u_pitch;};`,hO=`uniform vec4 u_color;uniform float u_opacity;void main() {fragColor=u_color*u_opacity;
|
|
63
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
64
|
+
fragColor=vec4(1.0);
|
|
65
|
+
#endif
|
|
66
|
+
}`,gO=`layout(location=0) in vec2 a_pos;void main() {gl_Position=projectTile(a_pos,a_pos);}`,_O=`uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);fragColor=mix(color1,color2,u_mix)*u_opacity;
|
|
67
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
68
|
+
fragColor=vec4(1.0);
|
|
69
|
+
#endif
|
|
70
|
+
}`,vO=`uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;layout(location=0) in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;void main() {gl_Position=projectTile(a_pos,a_pos);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}`,yO=`in vec3 v_data;in float v_visibility;
|
|
71
|
+
#pragma maplibre: define highp vec4 color
|
|
72
|
+
#pragma maplibre: define mediump float radius
|
|
73
|
+
#pragma maplibre: define lowp float blur
|
|
74
|
+
#pragma maplibre: define lowp float opacity
|
|
75
|
+
#pragma maplibre: define highp vec4 stroke_color
|
|
76
|
+
#pragma maplibre: define mediump float stroke_width
|
|
77
|
+
#pragma maplibre: define lowp float stroke_opacity
|
|
78
|
+
void main() {
|
|
79
|
+
#pragma maplibre: initialize highp vec4 color
|
|
80
|
+
#pragma maplibre: initialize mediump float radius
|
|
81
|
+
#pragma maplibre: initialize lowp float blur
|
|
82
|
+
#pragma maplibre: initialize lowp float opacity
|
|
83
|
+
#pragma maplibre: initialize highp vec4 stroke_color
|
|
84
|
+
#pragma maplibre: initialize mediump float stroke_width
|
|
85
|
+
#pragma maplibre: initialize lowp float stroke_opacity
|
|
86
|
+
vec2 extrude=v_data.xy;float extrude_length=length(extrude);float antialiased_blur=v_data.z;float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));fragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);const float epsilon=0.5/255.0;if (fragColor.r < epsilon && fragColor.g < epsilon && fragColor.b < epsilon && fragColor.a < epsilon) {discard;}
|
|
87
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
88
|
+
fragColor=vec4(1.0);
|
|
89
|
+
#endif
|
|
90
|
+
}`,bO=`uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform highp float u_globe_extrude_scale;uniform vec2 u_translate;layout(location=0) in ivec2 a_pos;out vec3 v_data;out float v_visibility;
|
|
91
|
+
#pragma maplibre: define highp vec4 color
|
|
92
|
+
#pragma maplibre: define mediump float radius
|
|
93
|
+
#pragma maplibre: define lowp float blur
|
|
94
|
+
#pragma maplibre: define lowp float opacity
|
|
95
|
+
#pragma maplibre: define highp vec4 stroke_color
|
|
96
|
+
#pragma maplibre: define mediump float stroke_width
|
|
97
|
+
#pragma maplibre: define lowp float stroke_opacity
|
|
98
|
+
void main(void) {
|
|
99
|
+
#pragma maplibre: initialize highp vec4 color
|
|
100
|
+
#pragma maplibre: initialize mediump float radius
|
|
101
|
+
#pragma maplibre: initialize lowp float blur
|
|
102
|
+
#pragma maplibre: initialize lowp float opacity
|
|
103
|
+
#pragma maplibre: initialize highp vec4 stroke_color
|
|
104
|
+
#pragma maplibre: initialize mediump float stroke_width
|
|
105
|
+
#pragma maplibre: initialize lowp float stroke_opacity
|
|
106
|
+
ivec2 pos_raw=a_pos+32768;vec2 extrude=vec2(pos_raw & 7)/7.0*2.0-1.0;vec2 circle_center=vec2(pos_raw >> 3)+u_translate;float ele=get_elevation(circle_center);v_visibility=calculate_visibility(projectTileWithElevation(circle_center,ele));if (u_pitch_with_map) {
|
|
107
|
+
#ifdef GLOBE
|
|
108
|
+
vec3 center_vector=projectToSphere(circle_center);
|
|
109
|
+
#endif
|
|
110
|
+
float angle_scale=u_globe_extrude_scale;vec2 corner_position=circle_center;if (u_scale_with_map) {angle_scale*=(radius+stroke_width);corner_position+=extrude*u_extrude_scale*(radius+stroke_width);} else {
|
|
111
|
+
#ifdef GLOBE
|
|
112
|
+
vec4 projected_center=interpolateProjection(circle_center,center_vector,ele);
|
|
113
|
+
#else
|
|
114
|
+
vec4 projected_center=projectTileWithElevation(circle_center,ele);
|
|
115
|
+
#endif
|
|
116
|
+
corner_position+=extrude*u_extrude_scale*(radius+stroke_width)*(projected_center.w/u_camera_to_center_distance);angle_scale*=(radius+stroke_width)*(projected_center.w/u_camera_to_center_distance);}
|
|
117
|
+
#ifdef GLOBE
|
|
118
|
+
vec2 angles=extrude*angle_scale;vec3 corner_vector=globeRotateVector(center_vector,angles);gl_Position=interpolateProjection(corner_position,corner_vector,ele);
|
|
119
|
+
#else
|
|
120
|
+
gl_Position=projectTileWithElevation(corner_position,ele);
|
|
121
|
+
#endif
|
|
122
|
+
} else {gl_Position=projectTileWithElevation(circle_center,ele);if (gl_Position.z/gl_Position.w > 1.0) {gl_Position.xy=vec2(10000.0);}if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}float antialiasblur=-max(1.0/u_device_pixel_ratio/(radius+stroke_width),blur);v_data=vec3(extrude.x,extrude.y,antialiasblur);}`,xO=`void main() {fragColor=vec4(1.0);}`,SO={prelude:CO(pO,mO),projectionMercator:CO(`
|
|
123
|
+
void clipAntimeridian() {}`,`float projectLineThickness(float tileY) {return 1.0;}float projectCircleRadius(float tileY) {return 1.0;}vec4 projectTile(vec2 p) {vec4 result=u_projection_matrix*vec4(p,0.0,1.0);return result;}vec4 projectTile(vec2 p,vec2 rawPos) {vec4 result=u_projection_matrix*vec4(p,0.0,1.0);if (rawPos.y <-32767.5 || rawPos.y > 32766.5) {result.z=-10000000.0;}return result;}vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_projection_matrix*vec4(posInTile,elevation,1.0);}vec4 projectTileFor3D(vec2 posInTile,float elevation) {return projectTileWithElevation(posInTile,elevation);}`),projectionGlobe:CO(`in highp float v_projection_tile_x;void clipAntimeridian() {if (u_projection_clip_antimeridian !=0 && (v_projection_tile_x < 0.0 || v_projection_tile_x >=8192.0)) {discard;}}`,`#define GLOBE_RADIUS 6371008.8
|
|
124
|
+
#ifndef PROJECTION_UBO
|
|
125
|
+
uniform highp vec4 u_projection_tile_mercator_coords;uniform highp vec4 u_projection_clipping_plane;uniform highp float u_projection_transition;uniform mat4 u_projection_fallback_matrix;
|
|
126
|
+
#endif
|
|
127
|
+
out highp float v_projection_tile_x;vec3 globeRotateVector(vec3 vec,vec2 angles) {vec3 axisRight=vec3(vec.z,0.0,-vec.x);vec3 axisUp=cross(axisRight,vec);axisRight=normalize(axisRight);axisUp=normalize(axisUp);vec2 t=tan(angles);return normalize(vec+axisRight*t.x+axisUp*t.y);}mat3 globeGetRotationMatrix(vec3 spherePos) {vec3 axisRight=vec3(spherePos.z,0.0,-spherePos.x);vec3 axisDown=cross(axisRight,spherePos);axisRight=normalize(axisRight);axisDown=normalize(axisDown);return mat3(axisRight,axisDown,spherePos
|
|
128
|
+
);}float circumferenceRatioAtTileY(float tileY) {float mercator_pos_y=u_projection_tile_mercator_coords.y+u_projection_tile_mercator_coords.w*tileY;float t=exp(PI-(mercator_pos_y*PI*2.0));return (2.0*t)/(t*t+1.0);}float projectLineThickness(float tileY) {float thickness=1.0/circumferenceRatioAtTileY(tileY);if (u_projection_transition < 0.999) {return mix(1.0,thickness,u_projection_transition);} else {return thickness;}}vec3 projectToSphere(vec2 translatedPos,vec2 rawPos) {vec2 mercator_pos=u_projection_tile_mercator_coords.xy+u_projection_tile_mercator_coords.zw*translatedPos;float spherical_x=mercator_pos.x*PI*2.0+PI;float t=exp(PI-(mercator_pos.y*PI*2.0));float t2=t*t;float denom=t2+1.0;float sin_sy=(t2-1.0)/denom;float cos_sy=(2.0*t)/denom;vec3 pos=vec3(sin(spherical_x)*cos_sy,sin_sy,cos(spherical_x)*cos_sy
|
|
129
|
+
);if (rawPos.y <-32767.5) {pos=vec3(0.0,1.0,0.0);}if (rawPos.y > 32766.5) {pos=vec3(0.0,-1.0,0.0);}return pos;}vec3 projectToSphere(vec2 posInTile) {return projectToSphere(posInTile,vec2(0.0,0.0));}float globeComputeClippingZ(vec3 spherePos) {return (1.0-(dot(spherePos,u_projection_clipping_plane.xyz)+u_projection_clipping_plane.w));}vec4 interpolateProjection(vec2 posInTile,vec3 spherePos,float elevation) {v_projection_tile_x=posInTile.x;vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);vec4 globePosition=u_projection_matrix*vec4(elevatedPos,1.0);globePosition.z=globeComputeClippingZ(elevatedPos)*globePosition.w;if (u_projection_transition > 0.999) {return globePosition;}vec4 flatPosition=u_projection_fallback_matrix*vec4(posInTile,elevation,1.0);const float z_globeness_threshold=0.2;vec4 result=globePosition;result.z=mix(0.0,globePosition.z,clamp((u_projection_transition-z_globeness_threshold)/(1.0-z_globeness_threshold),0.0,1.0));result.xyw=mix(flatPosition.xyw,globePosition.xyw,u_projection_transition);if ((posInTile.y <-32767.5) || (posInTile.y > 32766.5)) {result=globePosition;const float poles_hidden_anim_percentage=0.02;result.z=mix(globePosition.z,100.0,pow(max((1.0-u_projection_transition)/poles_hidden_anim_percentage,0.0),8.0));}return result;}vec4 interpolateProjectionFor3D(vec2 posInTile,vec3 spherePos,float elevation) {v_projection_tile_x=posInTile.x;vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);vec4 globePosition=u_projection_matrix*vec4(elevatedPos,1.0);if (u_projection_transition > 0.999) {return globePosition;}vec4 fallbackPosition=u_projection_fallback_matrix*vec4(posInTile,elevation,1.0);return mix(fallbackPosition,globePosition,u_projection_transition);}vec4 projectTile(vec2 posInTile) {return interpolateProjection(posInTile,projectToSphere(posInTile),0.0);}vec4 projectTile(vec2 posInTile,vec2 rawPos) {return interpolateProjection(posInTile,projectToSphere(posInTile,rawPos),0.0);}vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return interpolateProjection(posInTile,projectToSphere(posInTile),elevation);}vec4 projectTileFor3D(vec2 posInTile,float elevation) {vec3 spherePos=projectToSphere(posInTile,posInTile);return interpolateProjectionFor3D(posInTile,spherePos,elevation);}`),background:CO(hO,gO),backgroundPattern:CO(_O,vO),circle:CO(yO,bO),clippingMask:CO(xO,`layout(location=0) in vec2 a_pos;void main() {gl_Position=projectTile(a_pos,a_pos);}`),heatmap:CO(`uniform highp float u_intensity;in vec2 v_extrude;
|
|
130
|
+
#pragma maplibre: define highp float weight
|
|
131
|
+
#define GAUSS_COEF 0.3989422804014327
|
|
132
|
+
void main() {
|
|
133
|
+
#pragma maplibre: initialize highp float weight
|
|
134
|
+
float d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);fragColor=vec4(val,1.0,1.0,1.0);
|
|
135
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
136
|
+
fragColor=vec4(1.0);
|
|
137
|
+
#endif
|
|
138
|
+
}`,`uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;uniform highp float u_globe_extrude_scale;layout(location=0) in ivec2 a_pos;out vec2 v_extrude;
|
|
139
|
+
#pragma maplibre: define highp float weight
|
|
140
|
+
#pragma maplibre: define mediump float radius
|
|
141
|
+
const highp float ZERO=1.0/255.0/16.0;
|
|
142
|
+
#define GAUSS_COEF 0.3989422804014327
|
|
143
|
+
void main(void) {
|
|
144
|
+
#pragma maplibre: initialize highp float weight
|
|
145
|
+
#pragma maplibre: initialize mediump float radius
|
|
146
|
+
ivec2 pos_raw=a_pos+32768;vec2 unscaled_extrude=vec2(pos_raw & 7)/7.0*2.0-1.0;float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec2 circle_center=vec2(pos_raw >> 3);
|
|
147
|
+
#ifdef GLOBE
|
|
148
|
+
vec2 angles=v_extrude*radius*u_globe_extrude_scale;vec3 center_vector=projectToSphere(circle_center);vec3 corner_vector=globeRotateVector(center_vector,angles);gl_Position=interpolateProjection(circle_center+extrude,corner_vector,0.0);
|
|
149
|
+
#else
|
|
150
|
+
gl_Position=projectTileFor3D(circle_center+extrude,get_elevation(circle_center));
|
|
151
|
+
#endif
|
|
152
|
+
}`),heatmapTexture:CO(`uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;in vec2 v_pos;void main() {float t=texture(u_image,v_pos).r;vec4 color=texture(u_color_ramp,vec2(t,0.5));fragColor=color*u_opacity;
|
|
153
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
154
|
+
fragColor=vec4(0.0);
|
|
155
|
+
#endif
|
|
156
|
+
}`,`uniform mat4 u_matrix;layout(location=0) in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world_size,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}`),collisionBox:CO(`in float v_placed;in float v_notUsed;void main() {float alpha=0.5;fragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {fragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {fragColor*=.1;}}`,`layout(location=0) in vec2 a_anchor_pos;layout(location=1) in vec2 a_placed;layout(location=2) in vec2 a_box_real;out float v_placed;out float v_notUsed;void main() {gl_Position=projectTileWithElevation(a_anchor_pos,get_elevation(a_anchor_pos));gl_Position.xy=((a_box_real+0.5)*u_pixel_extrude_scale*2.0-1.0)*vec2(1.0,-1.0)*gl_Position.w;if (gl_Position.z/gl_Position.w < 1.1) {gl_Position.z=0.5;}v_placed=a_placed.x;v_notUsed=a_placed.y;}`),collisionCircle:CO(`in float v_radius;in vec2 v_extrude;in float v_collision;void main() {float alpha=0.5;float stroke_radius=0.9;float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);fragColor=color*alpha*opacity_t;}`,`layout(location=0) in vec2 a_pos;layout(location=1) in float a_radius;layout(location=2) in vec2 a_flags;out float v_radius;out vec2 v_extrude;out float v_collision;void main() {float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_collision=collision;gl_Position=vec4((a_pos/u_viewport_size*2.0-1.0)*vec2(1.0,-1.0),0.0,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}`),colorRelief:CO(`#ifdef GL_ES
|
|
157
|
+
precision highp float;
|
|
158
|
+
#endif
|
|
159
|
+
uniform sampler2D u_image;uniform vec4 u_unpack;uniform sampler2D u_elevation_stops;uniform sampler2D u_color_stops;uniform int u_color_ramp_size;uniform float u_opacity;in vec2 v_pos;float getElevation(vec2 coord) {vec4 data=texture(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack);}float getElevationStop(int stop) {vec4 data=texelFetch(u_elevation_stops,ivec2(stop,0),0)*255.0;data.a=-1.0;return dot(data,u_unpack);}void main() {float el=getElevation(v_pos);int r=(u_color_ramp_size-1);int l=0;float el_l=getElevationStop(l);float el_r=getElevationStop(r);while(r-l > 1){int m=(r+l)/2;float el_m=getElevationStop(m);if(el < el_m){r=m;el_r=el_m;}else
|
|
160
|
+
{l=m;el_l=el_m;}}float x=(float(l)+(el-el_l)/(el_r-el_l)+0.5)/float(u_color_ramp_size);fragColor=u_opacity*texture(u_color_stops,vec2(x,0));
|
|
161
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
162
|
+
fragColor=vec4(1.0);
|
|
163
|
+
#endif
|
|
164
|
+
}`,`uniform vec2 u_dimension;layout(location=0) in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=projectTile(a_pos,a_pos);highp vec2 epsilon=2.0/u_dimension;float scale=(u_dimension.x-4.0)/u_dimension.x;v_pos=(a_pos/8192.0)*scale+epsilon;if (a_pos.y <-32767.5) {v_pos.y=0.0;}if (a_pos.y > 32766.5) {v_pos.y=1.0;}}`),debug:CO(`uniform highp vec4 u_color;uniform sampler2D u_overlay;in vec2 v_uv;void main() {vec4 overlay_color=texture(u_overlay,v_uv);fragColor=mix(u_color,overlay_color,overlay_color.a);}`,`layout(location=0) in vec2 a_pos;out vec2 v_uv;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=projectTileWithElevation(a_pos*u_overlay_scale,get_elevation(a_pos));}`),depth:CO(xO,`layout(location=0) in vec2 a_pos;void main() {
|
|
165
|
+
#ifdef GLOBE
|
|
166
|
+
gl_Position=projectTileFor3D(a_pos,0.0);
|
|
167
|
+
#else
|
|
168
|
+
gl_Position=u_projection_matrix*vec4(a_pos,0.0,1.0);
|
|
169
|
+
#endif
|
|
170
|
+
}`),fill:CO(`#pragma maplibre: define highp vec4 color
|
|
171
|
+
#pragma maplibre: define lowp float opacity
|
|
172
|
+
void main() {
|
|
173
|
+
#pragma maplibre: initialize highp vec4 color
|
|
174
|
+
#pragma maplibre: initialize lowp float opacity
|
|
175
|
+
fragColor=color*opacity;
|
|
176
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
177
|
+
fragColor=vec4(1.0);
|
|
178
|
+
#endif
|
|
179
|
+
}`,`uniform vec2 u_fill_translate;layout(location=0) in vec2 a_pos;
|
|
180
|
+
#pragma maplibre: define highp vec4 color
|
|
181
|
+
#pragma maplibre: define lowp float opacity
|
|
182
|
+
void main() {
|
|
183
|
+
#pragma maplibre: initialize highp vec4 color
|
|
184
|
+
#pragma maplibre: initialize lowp float opacity
|
|
185
|
+
if (opacity < 0.01) {gl_Position=vec4(-2.0,-2.0,-2.0,1.0);return;}gl_Position=projectTile(a_pos+u_fill_translate,a_pos);}`),fillOutline:CO(`in vec2 v_pos;
|
|
186
|
+
#ifdef GLOBE
|
|
187
|
+
in float v_depth;
|
|
188
|
+
#endif
|
|
189
|
+
#pragma maplibre: define highp vec4 outline_color
|
|
190
|
+
#pragma maplibre: define lowp float opacity
|
|
191
|
+
void main() {
|
|
192
|
+
#pragma maplibre: initialize highp vec4 outline_color
|
|
193
|
+
#pragma maplibre: initialize lowp float opacity
|
|
194
|
+
float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);fragColor=outline_color*(alpha*opacity);
|
|
195
|
+
#ifdef GLOBE
|
|
196
|
+
if (v_depth > 1.0) {discard;}
|
|
197
|
+
#endif
|
|
198
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
199
|
+
fragColor=vec4(1.0);
|
|
200
|
+
#endif
|
|
201
|
+
}`,`uniform vec2 u_fill_translate;layout(location=0) in vec2 a_pos;out vec2 v_pos;
|
|
202
|
+
#ifdef GLOBE
|
|
203
|
+
out float v_depth;
|
|
204
|
+
#endif
|
|
205
|
+
#pragma maplibre: define highp vec4 outline_color
|
|
206
|
+
#pragma maplibre: define lowp float opacity
|
|
207
|
+
void main() {
|
|
208
|
+
#pragma maplibre: initialize highp vec4 outline_color
|
|
209
|
+
#pragma maplibre: initialize lowp float opacity
|
|
210
|
+
if (opacity < 0.01) {gl_Position=vec4(-2.0,-2.0,-2.0,1.0);return;}gl_Position=projectTile(a_pos+u_fill_translate,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world_size;
|
|
211
|
+
#ifdef GLOBE
|
|
212
|
+
v_depth=gl_Position.z/gl_Position.w;
|
|
213
|
+
#endif
|
|
214
|
+
}`),fillOutlinePattern:CO(`uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;uniform bool u_sdf_pattern;in vec2 v_pos_a;in vec2 v_pos_b;in vec2 v_pos;
|
|
215
|
+
#ifdef GLOBE
|
|
216
|
+
in float v_depth;
|
|
217
|
+
#endif
|
|
218
|
+
#pragma maplibre: define lowp float opacity
|
|
219
|
+
#pragma maplibre: define highp vec4 color
|
|
220
|
+
#pragma maplibre: define lowp vec4 pattern_from
|
|
221
|
+
#pragma maplibre: define lowp vec4 pattern_to
|
|
222
|
+
void main() {
|
|
223
|
+
#pragma maplibre: initialize lowp float opacity
|
|
224
|
+
#pragma maplibre: initialize highp vec4 color
|
|
225
|
+
#pragma maplibre: initialize mediump vec4 pattern_from
|
|
226
|
+
#pragma maplibre: initialize mediump vec4 pattern_to
|
|
227
|
+
vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);if (u_sdf_pattern) {highp float sdf_edge=(256.0-64.0)/256.0;highp float sdf_gamma_a=max(fwidth(color1.a)*0.5,1.0/255.0/16.0);highp float sdf_gamma_b=max(fwidth(color2.a)*0.5,1.0/255.0/16.0);float sdf_alpha_a=smoothstep(sdf_edge-sdf_gamma_a,sdf_edge+sdf_gamma_a,color1.a);float sdf_alpha_b=smoothstep(sdf_edge-sdf_gamma_b,sdf_edge+sdf_gamma_b,color2.a);fragColor=mix(color*sdf_alpha_a,color*sdf_alpha_b,u_fade)*alpha*opacity;} else {fragColor=mix(color1,color2,u_fade)*alpha*opacity;}
|
|
228
|
+
#ifdef GLOBE
|
|
229
|
+
if (v_depth > 1.0) {discard;}
|
|
230
|
+
#endif
|
|
231
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
232
|
+
fragColor=vec4(1.0);
|
|
233
|
+
#endif
|
|
234
|
+
}`,`uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;uniform vec2 u_fill_translate;layout(location=0) in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;out vec2 v_pos;
|
|
235
|
+
#ifdef GLOBE
|
|
236
|
+
out float v_depth;
|
|
237
|
+
#endif
|
|
238
|
+
#pragma maplibre: define lowp float opacity
|
|
239
|
+
#pragma maplibre: define highp vec4 color
|
|
240
|
+
#pragma maplibre: define lowp vec4 pattern_from
|
|
241
|
+
#pragma maplibre: define lowp vec4 pattern_to
|
|
242
|
+
#pragma maplibre: define lowp float pixel_ratio_from
|
|
243
|
+
#pragma maplibre: define lowp float pixel_ratio_to
|
|
244
|
+
void main() {
|
|
245
|
+
#pragma maplibre: initialize lowp float opacity
|
|
246
|
+
#pragma maplibre: initialize highp vec4 color
|
|
247
|
+
#pragma maplibre: initialize mediump vec4 pattern_from
|
|
248
|
+
#pragma maplibre: initialize mediump vec4 pattern_to
|
|
249
|
+
#pragma maplibre: initialize lowp float pixel_ratio_from
|
|
250
|
+
#pragma maplibre: initialize lowp float pixel_ratio_to
|
|
251
|
+
if (opacity < 0.01) {gl_Position=vec4(-2.0,-2.0,-2.0,1.0);return;}vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=projectTile(a_pos+u_fill_translate,a_pos);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world_size;
|
|
252
|
+
#ifdef GLOBE
|
|
253
|
+
v_depth=gl_Position.z/gl_Position.w;
|
|
254
|
+
#endif
|
|
255
|
+
}`),fillPattern:CO(`#ifdef GL_ES
|
|
256
|
+
precision highp float;
|
|
257
|
+
#endif
|
|
258
|
+
uniform vec2 u_texsize;uniform float u_fade;uniform bool u_sdf_pattern;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;
|
|
259
|
+
#pragma maplibre: define lowp float opacity
|
|
260
|
+
#pragma maplibre: define highp vec4 color
|
|
261
|
+
#pragma maplibre: define lowp vec4 pattern_from
|
|
262
|
+
#pragma maplibre: define lowp vec4 pattern_to
|
|
263
|
+
void main() {
|
|
264
|
+
#pragma maplibre: initialize lowp float opacity
|
|
265
|
+
#pragma maplibre: initialize highp vec4 color
|
|
266
|
+
#pragma maplibre: initialize mediump vec4 pattern_from
|
|
267
|
+
#pragma maplibre: initialize mediump vec4 pattern_to
|
|
268
|
+
vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);if (u_sdf_pattern) {highp float sdf_edge=(256.0-64.0)/256.0;highp float sdf_gamma_a=max(fwidth(color1.a)*0.5,1.0/255.0/16.0);highp float sdf_gamma_b=max(fwidth(color2.a)*0.5,1.0/255.0/16.0);float sdf_alpha_a=smoothstep(sdf_edge-sdf_gamma_a,sdf_edge+sdf_gamma_a,color1.a);float sdf_alpha_b=smoothstep(sdf_edge-sdf_gamma_b,sdf_edge+sdf_gamma_b,color2.a);fragColor=mix(color*sdf_alpha_a,color*sdf_alpha_b,u_fade)*opacity;} else {fragColor=mix(color1,color2,u_fade)*opacity;}
|
|
269
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
270
|
+
fragColor=vec4(1.0);
|
|
271
|
+
#endif
|
|
272
|
+
}`,`uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;uniform vec2 u_fill_translate;layout(location=0) in vec2 a_pos;out vec2 v_pos_a;out vec2 v_pos_b;
|
|
273
|
+
#pragma maplibre: define lowp float opacity
|
|
274
|
+
#pragma maplibre: define highp vec4 color
|
|
275
|
+
#pragma maplibre: define lowp vec4 pattern_from
|
|
276
|
+
#pragma maplibre: define lowp vec4 pattern_to
|
|
277
|
+
#pragma maplibre: define lowp float pixel_ratio_from
|
|
278
|
+
#pragma maplibre: define lowp float pixel_ratio_to
|
|
279
|
+
void main() {
|
|
280
|
+
#pragma maplibre: initialize lowp float opacity
|
|
281
|
+
#pragma maplibre: initialize highp vec4 color
|
|
282
|
+
#pragma maplibre: initialize mediump vec4 pattern_from
|
|
283
|
+
#pragma maplibre: initialize mediump vec4 pattern_to
|
|
284
|
+
#pragma maplibre: initialize lowp float pixel_ratio_from
|
|
285
|
+
#pragma maplibre: initialize lowp float pixel_ratio_to
|
|
286
|
+
if (opacity < 0.01) {gl_Position=vec4(-2.0,-2.0,-2.0,1.0);return;}vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=projectTile(a_pos+u_fill_translate,a_pos);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}`),fillExtrusion:CO(`in vec4 v_color;void main() {fragColor=v_color;
|
|
287
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
288
|
+
fragColor=vec4(1.0);
|
|
289
|
+
#endif
|
|
290
|
+
}`,`uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp vec3 u_lightpos_globe;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec2 u_fill_translate;layout(location=0) in vec2 a_pos;layout(location=1) in ivec4 a_normal_ed;
|
|
291
|
+
#ifdef TERRAIN3D
|
|
292
|
+
layout(location=2) in vec2 a_centroid;
|
|
293
|
+
#endif
|
|
294
|
+
out vec4 v_color;
|
|
295
|
+
#pragma maplibre: define highp float base
|
|
296
|
+
#pragma maplibre: define highp float height
|
|
297
|
+
#pragma maplibre: define highp vec4 color
|
|
298
|
+
void main() {
|
|
299
|
+
#pragma maplibre: initialize highp float base
|
|
300
|
+
#pragma maplibre: initialize highp float height
|
|
301
|
+
#pragma maplibre: initialize highp vec4 color
|
|
302
|
+
vec3 normal=vec3(a_normal_ed.xyz);float gradient_base=max(0.0,base);float gradient_height=max(0.0,height);
|
|
303
|
+
#ifdef TERRAIN3D
|
|
304
|
+
float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);
|
|
305
|
+
#else
|
|
306
|
+
float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;
|
|
307
|
+
#endif
|
|
308
|
+
base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=float(a_normal_ed.x & 1);float elevation=t > 0.0 ? height : base;vec2 posInTile=a_pos+u_fill_translate;
|
|
309
|
+
#ifdef GLOBE
|
|
310
|
+
vec3 spherePos=projectToSphere(posInTile,a_pos);gl_Position=interpolateProjectionFor3D(posInTile,spherePos,elevation);
|
|
311
|
+
#else
|
|
312
|
+
gl_Position=u_projection_matrix*vec4(posInTile,elevation,1.0);
|
|
313
|
+
#endif
|
|
314
|
+
float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;vec3 normalForLighting=normal/16384.0;float directional=clamp(dot(normalForLighting,u_lightpos),0.0,1.0);
|
|
315
|
+
#ifdef GLOBE
|
|
316
|
+
mat3 rotMatrix=globeGetRotationMatrix(spherePos);normalForLighting=rotMatrix*normalForLighting;directional=mix(directional,clamp(dot(normalForLighting,u_lightpos_globe),0.0,1.0),u_projection_transition);
|
|
317
|
+
#endif
|
|
318
|
+
directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.z==0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+gradient_base)*pow(gradient_height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`),fillExtrusionPattern:CO(`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;in vec2 v_pos_a;in vec2 v_pos_b;in vec4 v_lighting;
|
|
319
|
+
#pragma maplibre: define lowp float base
|
|
320
|
+
#pragma maplibre: define lowp float height
|
|
321
|
+
#pragma maplibre: define lowp vec4 pattern_from
|
|
322
|
+
#pragma maplibre: define lowp vec4 pattern_to
|
|
323
|
+
#pragma maplibre: define lowp float pixel_ratio_from
|
|
324
|
+
#pragma maplibre: define lowp float pixel_ratio_to
|
|
325
|
+
void main() {
|
|
326
|
+
#pragma maplibre: initialize lowp float base
|
|
327
|
+
#pragma maplibre: initialize lowp float height
|
|
328
|
+
#pragma maplibre: initialize mediump vec4 pattern_from
|
|
329
|
+
#pragma maplibre: initialize mediump vec4 pattern_to
|
|
330
|
+
#pragma maplibre: initialize lowp float pixel_ratio_from
|
|
331
|
+
#pragma maplibre: initialize lowp float pixel_ratio_to
|
|
332
|
+
vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);fragColor=mixedColor*v_lighting;
|
|
333
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
334
|
+
fragColor=vec4(1.0);
|
|
335
|
+
#endif
|
|
336
|
+
}`,`uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec2 u_fill_translate;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp vec3 u_lightpos_globe;uniform lowp float u_lightintensity;layout(location=0) in vec2 a_pos;layout(location=1) in ivec4 a_normal_ed;
|
|
337
|
+
#ifdef TERRAIN3D
|
|
338
|
+
layout(location=2) in vec2 a_centroid;
|
|
339
|
+
#endif
|
|
340
|
+
#ifdef GLOBE
|
|
341
|
+
out vec3 v_sphere_pos;
|
|
342
|
+
#endif
|
|
343
|
+
out vec2 v_pos_a;out vec2 v_pos_b;out vec4 v_lighting;
|
|
344
|
+
#pragma maplibre: define lowp float base
|
|
345
|
+
#pragma maplibre: define lowp float height
|
|
346
|
+
#pragma maplibre: define lowp vec4 pattern_from
|
|
347
|
+
#pragma maplibre: define lowp vec4 pattern_to
|
|
348
|
+
#pragma maplibre: define lowp float pixel_ratio_from
|
|
349
|
+
#pragma maplibre: define lowp float pixel_ratio_to
|
|
350
|
+
void main() {
|
|
351
|
+
#pragma maplibre: initialize lowp float base
|
|
352
|
+
#pragma maplibre: initialize lowp float height
|
|
353
|
+
#pragma maplibre: initialize mediump vec4 pattern_from
|
|
354
|
+
#pragma maplibre: initialize mediump vec4 pattern_to
|
|
355
|
+
#pragma maplibre: initialize lowp float pixel_ratio_from
|
|
356
|
+
#pragma maplibre: initialize lowp float pixel_ratio_to
|
|
357
|
+
vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=vec3(a_normal_ed.xyz);float edgedistance=float(a_normal_ed.w);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;float gradient_base=max(0.0,base);float gradient_height=max(0.0,height);
|
|
358
|
+
#ifdef TERRAIN3D
|
|
359
|
+
float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);
|
|
360
|
+
#else
|
|
361
|
+
float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;
|
|
362
|
+
#endif
|
|
363
|
+
base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=float(a_normal_ed.x & 1);float elevation=t > 0.0 ? height : base;vec2 posInTile=a_pos+u_fill_translate;
|
|
364
|
+
#ifdef GLOBE
|
|
365
|
+
vec3 spherePos=projectToSphere(posInTile,a_pos);vec3 elevatedPos=spherePos*(1.0+elevation/GLOBE_RADIUS);v_sphere_pos=elevatedPos;gl_Position=interpolateProjectionFor3D(posInTile,spherePos,elevation);
|
|
366
|
+
#else
|
|
367
|
+
gl_Position=u_projection_matrix*vec4(posInTile,elevation,1.0);
|
|
368
|
+
#endif
|
|
369
|
+
vec2 pos=a_normal_ed.x==1 && a_normal_ed.y==0 && a_normal_ed.z==16384
|
|
370
|
+
? a_pos
|
|
371
|
+
: vec2(edgedistance,elevation*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.z==0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+gradient_base)*pow(gradient_height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}`),hillshadePrepare:CO(`#ifdef GL_ES
|
|
372
|
+
precision highp float;
|
|
373
|
+
#endif
|
|
374
|
+
uniform sampler2D u_image;in vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;uniform float u_log2_world_width;float getElevation(ivec2 texel) {vec4 data=texelFetch(u_image,texel,0)*255.0;data.a=-1.0;return dot(data,u_unpack);}void main() {ivec2 pos=ivec2(gl_FragCoord.xy)+ivec2(1);float tileSize=u_dimension.x-4.0;float a=getElevation(pos+ivec2(-1,-1));float b=getElevation(pos+ivec2(0,-1));float c=getElevation(pos+ivec2(1,-1));float d=getElevation(pos+ivec2(-1,0));float e=getElevation(pos);float f=getElevation(pos+ivec2(1,0));float g=getElevation(pos+ivec2(-1,1));float h=getElevation(pos+ivec2(0,1));float i=getElevation(pos+ivec2(1,1));float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))*tileSize/pow(2.0,exaggeration+(3.0+u_log2_world_width-u_zoom));fragColor=clamp(vec4(deriv.x/8.0+128.0/255.0,deriv.y/8.0+128.0/255.0,1.0,1.0),0.0,1.0);
|
|
375
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
376
|
+
fragColor=vec4(1.0);
|
|
377
|
+
#endif
|
|
378
|
+
}`,`uniform mat4 u_matrix;uniform vec2 u_dimension;layout(location=0) in vec2 a_pos;layout(location=1) in vec2 a_texture_pos;out vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}`),hillshade:CO(`uniform sampler2D u_image;in highp vec2 v_pos;uniform vec2 u_latrange;uniform float u_exaggeration;uniform vec4 u_accent;uniform int u_method;uniform float u_altitudes[NUM_ILLUMINATION_SOURCES];uniform float u_azimuths[NUM_ILLUMINATION_SOURCES];uniform vec4 u_shadows[NUM_ILLUMINATION_SOURCES];uniform vec4 u_highlights[NUM_ILLUMINATION_SOURCES];
|
|
379
|
+
#define PI 3.141592653589793
|
|
380
|
+
#define STANDARD 0
|
|
381
|
+
#define COMBINED 1
|
|
382
|
+
#define IGOR 2
|
|
383
|
+
#define MULTIDIRECTIONAL 3
|
|
384
|
+
#define BASIC 4
|
|
385
|
+
float get_aspect(vec2 deriv){return deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);}void igor_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float aspect=get_aspect(deriv);float azimuth=u_azimuths[0]+PI;float slope_stength=atan(length(deriv))*2.0/PI;float aspect_strength=1.0-abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);float shadow_strength=slope_stength*aspect_strength;float highlight_strength=slope_stength*(1.0-aspect_strength);fragColor=u_shadows[0]*shadow_strength+u_highlights[0]*highlight_strength;}void standard_hillshade(vec2 deriv){float azimuth=u_azimuths[0]+PI;float slope=atan(0.625*length(deriv));float aspect=get_aspect(deriv);float intensity=u_exaggeration;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadows[0],u_highlights[0],shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);fragColor=accent_color*(1.0-shade_color.a)+shade_color;}void basic_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float azimuth=u_azimuths[0]+PI;float cos_az=cos(azimuth);float sin_az=sin(azimuth);float cos_alt=cos(u_altitudes[0]);float sin_alt=sin(u_altitudes[0]);float cang=(sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv));float shade=clamp(cang,0.0,1.0);if(shade > 0.5){fragColor=u_highlights[0]*(2.0*shade-1.0);}else
|
|
386
|
+
{fragColor=u_shadows[0]*(1.0-2.0*shade);}}void multidirectional_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;fragColor=vec4(0,0,0,0);for(int i=0; i < NUM_ILLUMINATION_SOURCES; i++){float cos_alt=cos(u_altitudes[i]);float sin_alt=sin(u_altitudes[i]);float cos_az=-cos(u_azimuths[i]);float sin_az=-sin(u_azimuths[i]);float cang=(sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv));float shade=clamp(cang,0.0,1.0);if(shade > 0.5){fragColor+=u_highlights[i]*(2.0*shade-1.0)/float(NUM_ILLUMINATION_SOURCES);}else
|
|
387
|
+
{fragColor+=u_shadows[i]*(1.0-2.0*shade)/float(NUM_ILLUMINATION_SOURCES);}}}void combined_hillshade(vec2 deriv){deriv=deriv*u_exaggeration*2.0;float azimuth=u_azimuths[0]+PI;float cos_az=cos(azimuth);float sin_az=sin(azimuth);float cos_alt=cos(u_altitudes[0]);float sin_alt=sin(u_altitudes[0]);float cang=acos((sin_alt-(deriv.y*cos_az*cos_alt-deriv.x*sin_az*cos_alt))/sqrt(1.0+dot(deriv,deriv)));cang=clamp(cang,0.0,PI/2.0);float shade=cang*atan(length(deriv))*4.0/PI/PI;float highlight=(PI/2.0-cang)*atan(length(deriv))*4.0/PI/PI;fragColor=u_shadows[0]*shade+u_highlights[0]*highlight;}void main() {highp vec2 size=vec2(textureSize(u_image,0));highp vec2 texturePos=(v_pos*(size-2.0)+1.0)/size;vec4 pixel=texture(u_image,texturePos);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));vec2 deriv=(pixel.rg-128.0/255.0)*8.0/scaleFactor;if (u_method==BASIC) {basic_hillshade(deriv);} else if (u_method==COMBINED) {combined_hillshade(deriv);} else if (u_method==IGOR) {igor_hillshade(deriv);} else if (u_method==MULTIDIRECTIONAL) {multidirectional_hillshade(deriv);} else if (u_method==STANDARD) {standard_hillshade(deriv);} else {standard_hillshade(deriv);}
|
|
388
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
389
|
+
fragColor=vec4(1.0);
|
|
390
|
+
#endif
|
|
391
|
+
}`,`uniform mat4 u_matrix;layout(location=0) in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=projectTile(a_pos,a_pos);v_pos=a_pos/8192.0;if (a_pos.y <-32767.5) {v_pos.y=0.0;}if (a_pos.y > 32766.5) {v_pos.y=1.0;}}`),line:CO(`in vec2 v_width2;in vec2 v_normal;in float v_gamma_scale;
|
|
392
|
+
#ifdef GLOBE
|
|
393
|
+
in float v_depth;
|
|
394
|
+
#endif
|
|
395
|
+
#pragma maplibre: define highp vec4 color
|
|
396
|
+
#pragma maplibre: define lowp float blur
|
|
397
|
+
#pragma maplibre: define lowp float opacity
|
|
398
|
+
void main() {
|
|
399
|
+
#pragma maplibre: initialize highp vec4 color
|
|
400
|
+
#pragma maplibre: initialize lowp float blur
|
|
401
|
+
#pragma maplibre: initialize lowp float opacity
|
|
402
|
+
clipAntimeridian();float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);fragColor=color*(alpha*opacity);
|
|
403
|
+
#ifdef GLOBE
|
|
404
|
+
if (v_depth > 1.0) {discard;}
|
|
405
|
+
#endif
|
|
406
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
407
|
+
fragColor=vec4(1.0);
|
|
408
|
+
#endif
|
|
409
|
+
}`,`
|
|
410
|
+
#define scale 0.015873016
|
|
411
|
+
layout(location=0) in ivec2 a_pos_normal;layout(location=1) in uvec4 a_data;layout(location=2) in vec2 a_offset_normal;uniform vec2 u_translation;uniform mediump float u_ratio;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp float v_linesofar;
|
|
412
|
+
#ifdef GLOBE
|
|
413
|
+
out float v_depth;
|
|
414
|
+
#endif
|
|
415
|
+
#pragma maplibre: define highp vec4 color
|
|
416
|
+
#pragma maplibre: define lowp float blur
|
|
417
|
+
#pragma maplibre: define lowp float opacity
|
|
418
|
+
#pragma maplibre: define mediump float gapwidth
|
|
419
|
+
#pragma maplibre: define lowp float offset
|
|
420
|
+
#pragma maplibre: define mediump float width
|
|
421
|
+
void main() {
|
|
422
|
+
#pragma maplibre: initialize highp vec4 color
|
|
423
|
+
#pragma maplibre: initialize lowp float blur
|
|
424
|
+
#pragma maplibre: initialize lowp float opacity
|
|
425
|
+
#pragma maplibre: initialize mediump float gapwidth
|
|
426
|
+
#pragma maplibre: initialize lowp float offset
|
|
427
|
+
#pragma maplibre: initialize mediump float width
|
|
428
|
+
if (opacity < 0.01) {gl_Position=vec4(-2.0,-2.0,-2.0,1.0);return;}float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=vec2(ivec2(a_data.xy)-128);v_linesofar=float((a_data.z >> 2u)+a_data.w*64u)*2.0;vec2 pos=vec2(a_pos_normal >> 1);mediump vec2 normal=vec2(a_pos_normal & 1);normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump vec2 offset2=offset*a_offset_normal*scale*normal.y;float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;
|
|
429
|
+
#ifdef GLOBE
|
|
430
|
+
v_depth=gl_Position.z/gl_Position.w;
|
|
431
|
+
#endif
|
|
432
|
+
#ifdef TERRAIN3D
|
|
433
|
+
v_gamma_scale=1.0;
|
|
434
|
+
#else
|
|
435
|
+
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
|
|
436
|
+
#endif
|
|
437
|
+
v_width2=vec2(outset,inset);}`),lineGradient:CO(`uniform sampler2D u_image;in vec2 v_width2;in vec2 v_normal;in float v_gamma_scale;in highp vec2 v_uv;
|
|
438
|
+
#ifdef GLOBE
|
|
439
|
+
in float v_depth;
|
|
440
|
+
#endif
|
|
441
|
+
#pragma maplibre: define lowp float blur
|
|
442
|
+
#pragma maplibre: define lowp float opacity
|
|
443
|
+
void main() {
|
|
444
|
+
#pragma maplibre: initialize lowp float blur
|
|
445
|
+
#pragma maplibre: initialize lowp float opacity
|
|
446
|
+
clipAntimeridian();float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture(u_image,v_uv);fragColor=color*(alpha*opacity);
|
|
447
|
+
#ifdef GLOBE
|
|
448
|
+
if (v_depth > 1.0) {discard;}
|
|
449
|
+
#endif
|
|
450
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
451
|
+
fragColor=vec4(1.0);
|
|
452
|
+
#endif
|
|
453
|
+
}`,`
|
|
454
|
+
#define scale 0.015873016
|
|
455
|
+
layout(location=0) in ivec2 a_pos_normal;layout(location=1) in uvec4 a_data;layout(location=2) in vec2 a_offset_normal;layout(location=3) in float a_uv_x;layout(location=4) in float a_split_index;uniform vec2 u_translation;uniform mediump float u_ratio;uniform float u_image_height;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp vec2 v_uv;
|
|
456
|
+
#ifdef GLOBE
|
|
457
|
+
out float v_depth;
|
|
458
|
+
#endif
|
|
459
|
+
#pragma maplibre: define lowp float blur
|
|
460
|
+
#pragma maplibre: define lowp float opacity
|
|
461
|
+
#pragma maplibre: define mediump float gapwidth
|
|
462
|
+
#pragma maplibre: define lowp float offset
|
|
463
|
+
#pragma maplibre: define mediump float width
|
|
464
|
+
void main() {
|
|
465
|
+
#pragma maplibre: initialize lowp float blur
|
|
466
|
+
#pragma maplibre: initialize lowp float opacity
|
|
467
|
+
#pragma maplibre: initialize mediump float gapwidth
|
|
468
|
+
#pragma maplibre: initialize lowp float offset
|
|
469
|
+
#pragma maplibre: initialize mediump float width
|
|
470
|
+
if (opacity < 0.01) {gl_Position=vec4(-2.0,-2.0,-2.0,1.0);return;}float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=vec2(ivec2(a_data.xy)-128);highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=vec2(a_pos_normal >> 1);mediump vec2 normal=vec2(a_pos_normal & 1);normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump vec2 offset2=offset*a_offset_normal*scale*normal.y;float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;
|
|
471
|
+
#ifdef GLOBE
|
|
472
|
+
v_depth=gl_Position.z/gl_Position.w;
|
|
473
|
+
#endif
|
|
474
|
+
#ifdef TERRAIN3D
|
|
475
|
+
v_gamma_scale=1.0;
|
|
476
|
+
#else
|
|
477
|
+
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
|
|
478
|
+
#endif
|
|
479
|
+
v_width2=vec2(outset,inset);}`),linePattern:CO(`#ifdef GL_ES
|
|
480
|
+
precision highp float;
|
|
481
|
+
#endif
|
|
482
|
+
uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;in vec2 v_normal;in vec2 v_width2;in float v_linesofar;in float v_gamma_scale;in float v_width;
|
|
483
|
+
#ifdef GLOBE
|
|
484
|
+
in float v_depth;
|
|
485
|
+
#endif
|
|
486
|
+
#pragma maplibre: define lowp vec4 pattern_from
|
|
487
|
+
#pragma maplibre: define lowp vec4 pattern_to
|
|
488
|
+
#pragma maplibre: define lowp float pixel_ratio_from
|
|
489
|
+
#pragma maplibre: define lowp float pixel_ratio_to
|
|
490
|
+
#pragma maplibre: define lowp float blur
|
|
491
|
+
#pragma maplibre: define lowp float opacity
|
|
492
|
+
void main() {
|
|
493
|
+
#pragma maplibre: initialize mediump vec4 pattern_from
|
|
494
|
+
#pragma maplibre: initialize mediump vec4 pattern_to
|
|
495
|
+
#pragma maplibre: initialize lowp float pixel_ratio_from
|
|
496
|
+
#pragma maplibre: initialize lowp float pixel_ratio_to
|
|
497
|
+
#pragma maplibre: initialize lowp float blur
|
|
498
|
+
#pragma maplibre: initialize lowp float opacity
|
|
499
|
+
clipAntimeridian();vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture(u_image,pos_a),texture(u_image,pos_b),u_fade);fragColor=color*alpha*opacity;
|
|
500
|
+
#ifdef GLOBE
|
|
501
|
+
if (v_depth > 1.0) {discard;}
|
|
502
|
+
#endif
|
|
503
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
504
|
+
fragColor=vec4(1.0);
|
|
505
|
+
#endif
|
|
506
|
+
}`,`
|
|
507
|
+
#define scale 0.015873016
|
|
508
|
+
#define LINE_DISTANCE_SCALE 2.0
|
|
509
|
+
layout(location=0) in ivec2 a_pos_normal;layout(location=1) in uvec4 a_data;layout(location=2) in vec2 a_offset_normal;uniform vec2 u_translation;uniform mediump float u_ratio;out vec2 v_normal;out vec2 v_width2;out float v_linesofar;out float v_gamma_scale;out float v_width;
|
|
510
|
+
#ifdef GLOBE
|
|
511
|
+
out float v_depth;
|
|
512
|
+
#endif
|
|
513
|
+
#pragma maplibre: define lowp float blur
|
|
514
|
+
#pragma maplibre: define lowp float opacity
|
|
515
|
+
#pragma maplibre: define lowp float offset
|
|
516
|
+
#pragma maplibre: define mediump float gapwidth
|
|
517
|
+
#pragma maplibre: define mediump float width
|
|
518
|
+
#pragma maplibre: define lowp float floorwidth
|
|
519
|
+
#pragma maplibre: define lowp vec4 pattern_from
|
|
520
|
+
#pragma maplibre: define lowp vec4 pattern_to
|
|
521
|
+
#pragma maplibre: define lowp float pixel_ratio_from
|
|
522
|
+
#pragma maplibre: define lowp float pixel_ratio_to
|
|
523
|
+
void main() {
|
|
524
|
+
#pragma maplibre: initialize lowp float blur
|
|
525
|
+
#pragma maplibre: initialize lowp float opacity
|
|
526
|
+
#pragma maplibre: initialize lowp float offset
|
|
527
|
+
#pragma maplibre: initialize mediump float gapwidth
|
|
528
|
+
#pragma maplibre: initialize mediump float width
|
|
529
|
+
#pragma maplibre: initialize lowp float floorwidth
|
|
530
|
+
#pragma maplibre: initialize mediump vec4 pattern_from
|
|
531
|
+
#pragma maplibre: initialize mediump vec4 pattern_to
|
|
532
|
+
#pragma maplibre: initialize lowp float pixel_ratio_from
|
|
533
|
+
#pragma maplibre: initialize lowp float pixel_ratio_to
|
|
534
|
+
if (opacity < 0.01) {gl_Position=vec4(-2.0,-2.0,-2.0,1.0);return;}float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=vec2(ivec2(a_data.xy)-128);float a_linesofar=float((a_data.z >> 2u)+a_data.w*64u)*LINE_DISTANCE_SCALE;vec2 pos=vec2(a_pos_normal >> 1);mediump vec2 normal=vec2(a_pos_normal & 1);normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump vec2 offset2=offset*a_offset_normal*scale*normal.y;float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;
|
|
535
|
+
#ifdef GLOBE
|
|
536
|
+
v_depth=gl_Position.z/gl_Position.w;
|
|
537
|
+
#endif
|
|
538
|
+
#ifdef TERRAIN3D
|
|
539
|
+
v_gamma_scale=1.0;
|
|
540
|
+
#else
|
|
541
|
+
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
|
|
542
|
+
#endif
|
|
543
|
+
v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`),lineSDF:CO(`uniform lowp float u_lineatlas_width;uniform sampler2D u_image;uniform float u_mix;in vec2 v_normal;in vec2 v_width2;in vec2 v_tex_a;in vec2 v_tex_b;in float v_gamma_scale;
|
|
544
|
+
#ifdef GLOBE
|
|
545
|
+
in float v_depth;
|
|
546
|
+
#endif
|
|
547
|
+
#pragma maplibre: define highp vec4 color
|
|
548
|
+
#pragma maplibre: define lowp float blur
|
|
549
|
+
#pragma maplibre: define lowp float opacity
|
|
550
|
+
#pragma maplibre: define mediump float width
|
|
551
|
+
#pragma maplibre: define lowp float floorwidth
|
|
552
|
+
#pragma maplibre: define mediump vec4 dasharray_from
|
|
553
|
+
#pragma maplibre: define mediump vec4 dasharray_to
|
|
554
|
+
void main() {
|
|
555
|
+
#pragma maplibre: initialize highp vec4 color
|
|
556
|
+
#pragma maplibre: initialize lowp float blur
|
|
557
|
+
#pragma maplibre: initialize lowp float opacity
|
|
558
|
+
#pragma maplibre: initialize mediump float width
|
|
559
|
+
#pragma maplibre: initialize lowp float floorwidth
|
|
560
|
+
#pragma maplibre: initialize mediump vec4 dasharray_from
|
|
561
|
+
#pragma maplibre: initialize mediump vec4 dasharray_to
|
|
562
|
+
clipAntimeridian();float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture(u_image,v_tex_a).a;float sdfdist_b=texture(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfgamma=(u_lineatlas_width/256.0/u_device_pixel_ratio)/min(dasharray_from.w,dasharray_to.w);alpha*=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);fragColor=color*(alpha*opacity);
|
|
563
|
+
#ifdef GLOBE
|
|
564
|
+
if (v_depth > 1.0) {discard;}
|
|
565
|
+
#endif
|
|
566
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
567
|
+
fragColor=vec4(1.0);
|
|
568
|
+
#endif
|
|
569
|
+
}`,`
|
|
570
|
+
#define scale 0.015873016
|
|
571
|
+
#define LINE_DISTANCE_SCALE 2.0
|
|
572
|
+
layout(location=0) in ivec2 a_pos_normal;layout(location=1) in uvec4 a_data;layout(location=2) in vec2 a_offset_normal;uniform vec2 u_translation;uniform mediump float u_ratio;uniform float u_tileratio;uniform float u_crossfade_from;uniform float u_crossfade_to;uniform float u_lineatlas_height;out vec2 v_normal;out vec2 v_width2;out vec2 v_tex_a;out vec2 v_tex_b;out float v_gamma_scale;
|
|
573
|
+
#ifdef GLOBE
|
|
574
|
+
out float v_depth;
|
|
575
|
+
#endif
|
|
576
|
+
#pragma maplibre: define highp vec4 color
|
|
577
|
+
#pragma maplibre: define lowp float blur
|
|
578
|
+
#pragma maplibre: define lowp float opacity
|
|
579
|
+
#pragma maplibre: define mediump float gapwidth
|
|
580
|
+
#pragma maplibre: define lowp float offset
|
|
581
|
+
#pragma maplibre: define mediump float width
|
|
582
|
+
#pragma maplibre: define lowp float floorwidth
|
|
583
|
+
#pragma maplibre: define mediump vec4 dasharray_from
|
|
584
|
+
#pragma maplibre: define mediump vec4 dasharray_to
|
|
585
|
+
void main() {
|
|
586
|
+
#pragma maplibre: initialize highp vec4 color
|
|
587
|
+
#pragma maplibre: initialize lowp float blur
|
|
588
|
+
#pragma maplibre: initialize lowp float opacity
|
|
589
|
+
#pragma maplibre: initialize mediump float gapwidth
|
|
590
|
+
#pragma maplibre: initialize lowp float offset
|
|
591
|
+
#pragma maplibre: initialize mediump float width
|
|
592
|
+
#pragma maplibre: initialize lowp float floorwidth
|
|
593
|
+
#pragma maplibre: initialize mediump vec4 dasharray_from
|
|
594
|
+
#pragma maplibre: initialize mediump vec4 dasharray_to
|
|
595
|
+
if (opacity < 0.01) {gl_Position=vec4(-2.0,-2.0,-2.0,1.0);return;}float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=vec2(ivec2(a_data.xy)-128);float a_linesofar=float((a_data.z >> 2u)+a_data.w*64u)*LINE_DISTANCE_SCALE;vec2 pos=vec2(a_pos_normal >> 1);mediump vec2 normal=vec2(a_pos_normal & 1);normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump vec2 offset2=offset*a_offset_normal*scale*normal.y;float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;
|
|
596
|
+
#ifdef GLOBE
|
|
597
|
+
v_depth=gl_Position.z/gl_Position.w;
|
|
598
|
+
#endif
|
|
599
|
+
#ifdef TERRAIN3D
|
|
600
|
+
v_gamma_scale=1.0;
|
|
601
|
+
#else
|
|
602
|
+
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
|
|
603
|
+
#endif
|
|
604
|
+
float u_patternscale_a_x=u_tileratio/dasharray_from.w/u_crossfade_from;float u_patternscale_a_y=-dasharray_from.z/2.0/u_lineatlas_height;float u_patternscale_b_x=u_tileratio/dasharray_to.w/u_crossfade_to;float u_patternscale_b_y=-dasharray_to.z/2.0/u_lineatlas_height;v_tex_a=vec2(a_linesofar*u_patternscale_a_x/floorwidth,normal.y*u_patternscale_a_y+(float(dasharray_from.y)+0.5)/u_lineatlas_height);v_tex_b=vec2(a_linesofar*u_patternscale_b_x/floorwidth,normal.y*u_patternscale_b_y+(float(dasharray_to.y)+0.5)/u_lineatlas_height);v_width2=vec2(outset,inset);}`),lineGradientSDF:CO(`uniform sampler2D u_image;uniform sampler2D u_image_dash;uniform float u_mix;uniform lowp float u_lineatlas_width;in vec2 v_normal;in vec2 v_width2;in vec2 v_tex_a;in vec2 v_tex_b;in float v_gamma_scale;in highp vec2 v_uv;
|
|
605
|
+
#ifdef GLOBE
|
|
606
|
+
in float v_depth;
|
|
607
|
+
#endif
|
|
608
|
+
#pragma maplibre: define lowp float blur
|
|
609
|
+
#pragma maplibre: define lowp float opacity
|
|
610
|
+
#pragma maplibre: define mediump float width
|
|
611
|
+
#pragma maplibre: define lowp float floorwidth
|
|
612
|
+
#pragma maplibre: define mediump vec4 dasharray_from
|
|
613
|
+
#pragma maplibre: define mediump vec4 dasharray_to
|
|
614
|
+
void main() {
|
|
615
|
+
#pragma maplibre: initialize lowp float blur
|
|
616
|
+
#pragma maplibre: initialize lowp float opacity
|
|
617
|
+
#pragma maplibre: initialize mediump float width
|
|
618
|
+
#pragma maplibre: initialize lowp float floorwidth
|
|
619
|
+
#pragma maplibre: initialize mediump vec4 dasharray_from
|
|
620
|
+
#pragma maplibre: initialize mediump vec4 dasharray_to
|
|
621
|
+
clipAntimeridian();float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture(u_image,v_uv);float sdfdist_a=texture(u_image_dash,v_tex_a).a;float sdfdist_b=texture(u_image_dash,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);float sdfgamma=(u_lineatlas_width/256.0)/min(dasharray_from.w,dasharray_to.w);float dash_alpha=smoothstep(0.5-sdfgamma/floorwidth,0.5+sdfgamma/floorwidth,sdfdist);fragColor=color*(alpha*dash_alpha*opacity);
|
|
622
|
+
#ifdef GLOBE
|
|
623
|
+
if (v_depth > 1.0) {discard;}
|
|
624
|
+
#endif
|
|
625
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
626
|
+
fragColor=vec4(1.0);
|
|
627
|
+
#endif
|
|
628
|
+
}`,`
|
|
629
|
+
#define scale 0.015873016
|
|
630
|
+
#define LINE_DISTANCE_SCALE 2.0
|
|
631
|
+
layout(location=0) in ivec2 a_pos_normal;layout(location=1) in uvec4 a_data;layout(location=2) in vec2 a_offset_normal;layout(location=3) in float a_uv_x;layout(location=4) in float a_split_index;uniform vec2 u_translation;uniform mediump float u_ratio;uniform float u_image_height;uniform float u_tileratio;uniform float u_crossfade_from;uniform float u_crossfade_to;uniform float u_lineatlas_height;out vec2 v_normal;out vec2 v_width2;out float v_gamma_scale;out highp vec2 v_uv;out vec2 v_tex_a;out vec2 v_tex_b;
|
|
632
|
+
#ifdef GLOBE
|
|
633
|
+
out float v_depth;
|
|
634
|
+
#endif
|
|
635
|
+
#pragma maplibre: define lowp float blur
|
|
636
|
+
#pragma maplibre: define lowp float opacity
|
|
637
|
+
#pragma maplibre: define mediump float gapwidth
|
|
638
|
+
#pragma maplibre: define lowp float offset
|
|
639
|
+
#pragma maplibre: define mediump float width
|
|
640
|
+
#pragma maplibre: define lowp float floorwidth
|
|
641
|
+
#pragma maplibre: define mediump vec4 dasharray_from
|
|
642
|
+
#pragma maplibre: define mediump vec4 dasharray_to
|
|
643
|
+
void main() {
|
|
644
|
+
#pragma maplibre: initialize lowp float blur
|
|
645
|
+
#pragma maplibre: initialize lowp float opacity
|
|
646
|
+
#pragma maplibre: initialize mediump float gapwidth
|
|
647
|
+
#pragma maplibre: initialize lowp float offset
|
|
648
|
+
#pragma maplibre: initialize mediump float width
|
|
649
|
+
#pragma maplibre: initialize lowp float floorwidth
|
|
650
|
+
#pragma maplibre: initialize mediump vec4 dasharray_from
|
|
651
|
+
#pragma maplibre: initialize mediump vec4 dasharray_to
|
|
652
|
+
if (opacity < 0.01) {gl_Position=vec4(-2.0,-2.0,-2.0,1.0);return;}float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=vec2(ivec2(a_data.xy)-128);float a_linesofar=float((a_data.z >> 2u)+a_data.w*64u)*LINE_DISTANCE_SCALE;float texel_height=1.0/u_image_height;float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=vec2(a_pos_normal >> 1);mediump vec2 normal=vec2(a_pos_normal & 1);normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump vec2 offset2=offset*a_offset_normal*scale*normal.y;float adjustedThickness=projectLineThickness(pos.y);vec4 projected_no_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation);vec4 projected_with_extrude=projectTile(pos+offset2/u_ratio*adjustedThickness+u_translation+dist/u_ratio*adjustedThickness);gl_Position=projected_with_extrude;
|
|
653
|
+
#ifdef GLOBE
|
|
654
|
+
v_depth=gl_Position.z/gl_Position.w;
|
|
655
|
+
#endif
|
|
656
|
+
#ifdef TERRAIN3D
|
|
657
|
+
v_gamma_scale=1.0;
|
|
658
|
+
#else
|
|
659
|
+
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length((projected_with_extrude.xy-projected_no_extrude.xy)/projected_with_extrude.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
|
|
660
|
+
#endif
|
|
661
|
+
float u_patternscale_a_x=u_tileratio/dasharray_from.w/u_crossfade_from;float u_patternscale_a_y=-dasharray_from.z/2.0/u_lineatlas_height;float u_patternscale_b_x=u_tileratio/dasharray_to.w/u_crossfade_to;float u_patternscale_b_y=-dasharray_to.z/2.0/u_lineatlas_height;v_tex_a=vec2(a_linesofar*u_patternscale_a_x/floorwidth,normal.y*u_patternscale_a_y+(float(dasharray_from.y)+0.5)/u_lineatlas_height);v_tex_b=vec2(a_linesofar*u_patternscale_b_x/floorwidth,normal.y*u_patternscale_b_y+(float(dasharray_to.y)+0.5)/u_lineatlas_height);v_width2=vec2(outset,inset);}`),layerOpacity:CO(`uniform sampler2D u_image;uniform float u_opacity;in vec2 v_pos;void main() {fragColor=texture(u_image,v_pos)*u_opacity;
|
|
662
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
663
|
+
fragColor=vec4(0.0);
|
|
664
|
+
#endif
|
|
665
|
+
}`,`layout(location=0) in vec2 a_pos;out vec2 v_pos;void main() {gl_Position=vec4(a_pos.x*2.0-1.0,1.0-a_pos.y*2.0,0.0,1.0);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}`),raster:CO(`uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;in vec3 v_pos0;in vec3 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture(u_image0,v_pos0.xy/v_pos0.z);vec4 color1=texture(u_image1,v_pos1.xy/v_pos1.z);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);fragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);
|
|
666
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
667
|
+
fragColor=vec4(1.0);
|
|
668
|
+
#endif
|
|
669
|
+
}`,`uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;uniform vec3 u_image_warp;uniform vec4 u_coords_top;uniform vec4 u_coords_bottom;layout(location=0) in vec2 a_pos;out vec3 v_pos0;out vec3 v_pos1;void main() {vec2 fractionalPos=a_pos/8192.0;vec2 topLeft=u_coords_top.xy;vec2 topRight=u_coords_top.zw;vec2 bottomLeft=u_coords_bottom.xy;vec2 bottomRight=u_coords_bottom.zw;vec2 bilinearPos=mix(mix(topLeft,topRight,fractionalPos.x),mix(bottomLeft,bottomRight,fractionalPos.x),fractionalPos.y);float denominator=dot(u_image_warp.xy,fractionalPos)+1.0;vec2 acrossTop=topRight-topLeft+u_image_warp.x*topRight;vec2 downLeft=bottomLeft-topLeft+u_image_warp.y*bottomLeft;vec2 projectivePos=(acrossTop*fractionalPos.x+downLeft*fractionalPos.y+topLeft)/denominator;vec2 position=mix(projectivePos,bilinearPos,u_image_warp.z);gl_Position=projectTile(position,position);vec2 texturePos=((fractionalPos-0.5)/u_buffer_scale)+0.5;
|
|
670
|
+
#ifdef GLOBE
|
|
671
|
+
if (a_pos.y <-32767.5) {texturePos.y=0.0;}if (a_pos.y > 32766.5) {texturePos.y=1.0;}
|
|
672
|
+
#endif
|
|
673
|
+
float perspectiveRatio=mix(1.0/denominator,1.0,u_image_warp.z);v_pos0=vec3(texturePos*perspectiveRatio,perspectiveRatio);vec2 parentPos=(texturePos*u_scale_parent)+u_tl_parent;v_pos1=vec3(parentPos*perspectiveRatio,perspectiveRatio);}`),symbolIcon:CO(`uniform sampler2D u_texture;in vec2 v_tex;in float v_total_opacity;void main() {fragColor=texture(u_texture,v_tex)*v_total_opacity;
|
|
674
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
675
|
+
fragColor=vec4(1.0);
|
|
676
|
+
#endif
|
|
677
|
+
}`,`layout(location=0) in vec4 a_pos_offset;layout(location=1) in uvec4 a_data;layout(location=2) in vec4 a_pixeloffset;layout(location=3) in vec3 a_projected_pos;layout(location=4) in uint a_fade_opacity;layout(location=5) in float a_height_offset;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform bool u_rotate_symbol;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;uniform bool u_is_offset;uniform bool u_height_anchor_ground;out vec2 v_tex;out float v_total_opacity;
|
|
678
|
+
#pragma maplibre: define lowp float opacity
|
|
679
|
+
void main() {
|
|
680
|
+
#pragma maplibre: initialize lowp float opacity
|
|
681
|
+
vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=vec2(a_data.xy);vec2 a_size=vec2(a_data.zw);float a_size_min=float(a_data.z >> 1u);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=a_height_offset+(u_height_anchor_ground ? get_elevation(a_pos) : 0.0);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_symbol_fade_change :-u_symbol_fade_change;float visibility=calculate_visibility(projectedPoint);v_total_opacity=opacity*max(0.0,min(visibility,fade_opacity[0]+fade_change));if (v_total_opacity < 0.1){gl_Position=vec4(-2.,-2.,-2.,1.);return;}highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?
|
|
682
|
+
camera_to_anchor_distance/u_camera_to_center_distance :
|
|
683
|
+
u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);if (!u_is_offset) {size*=perspective_ratio;}float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;
|
|
684
|
+
#ifdef GLOBE
|
|
685
|
+
if(u_pitch_with_map) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}
|
|
686
|
+
#endif
|
|
687
|
+
vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}gl_Position=finalPos;v_tex=a_tex/u_texsize;}`),symbolSDF:CO(`#define SDF_PX 8.0
|
|
688
|
+
uniform bool u_is_halo;uniform bool u_is_plain;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform bool u_is_text;in vec2 v_data0;in vec3 v_data1;
|
|
689
|
+
#pragma maplibre: define highp vec4 fill_color
|
|
690
|
+
#pragma maplibre: define highp vec4 halo_color
|
|
691
|
+
#pragma maplibre: define lowp float halo_width
|
|
692
|
+
#pragma maplibre: define lowp float halo_blur
|
|
693
|
+
void main() {
|
|
694
|
+
#pragma maplibre: initialize highp vec4 fill_color
|
|
695
|
+
#pragma maplibre: initialize highp vec4 halo_color
|
|
696
|
+
#pragma maplibre: initialize lowp float halo_width
|
|
697
|
+
#pragma maplibre: initialize lowp float halo_blur
|
|
698
|
+
float EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float total_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;lowp float dist=texture(u_texture,tex).a;lowp vec4 color_alpha_out_text,color_alpha_out_halo;if (u_is_plain){highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);color_alpha_out_text=total_opacity*alpha*fill_color;}if (u_is_halo) {float gamma_halo=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);float inner_edge_halo=inner_edge+gamma_halo*gamma_scale;highp float gamma_scaled_halo=gamma_halo*gamma_scale;highp float alpha_halo=smoothstep(inner_edge_halo-gamma_scaled_halo,inner_edge_halo+gamma_scaled_halo,dist);highp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha_halo= min(smoothstep(halo_edge-gamma_scaled_halo,halo_edge+gamma_scaled_halo,dist),1.0-alpha_halo);color_alpha_out_halo=total_opacity*alpha_halo*halo_color;}if (u_is_plain && u_is_halo) {fragColor=color_alpha_out_text+(1.-color_alpha_out_text.a)*color_alpha_out_halo;} else if (u_is_halo){fragColor=color_alpha_out_halo;} else {fragColor=color_alpha_out_text;}
|
|
699
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
700
|
+
fragColor=vec4(1.0);
|
|
701
|
+
#endif
|
|
702
|
+
}`,`layout(location=0) in vec4 a_pos_offset;layout(location=1) in uvec4 a_data;layout(location=2) in vec4 a_pixeloffset;layout(location=3) in vec3 a_projected_pos;layout(location=4) in uint a_fade_opacity;layout(location=5) in float a_height_offset;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform bool u_rotate_symbol;uniform vec2 u_texsize;uniform vec2 u_translation;uniform float u_pitched_scale;uniform bool u_is_offset;uniform bool u_height_anchor_ground;out vec2 v_data0;out vec3 v_data1;
|
|
703
|
+
#pragma maplibre: define highp vec4 fill_color
|
|
704
|
+
#pragma maplibre: define highp vec4 halo_color
|
|
705
|
+
#pragma maplibre: define lowp float opacity
|
|
706
|
+
#pragma maplibre: define lowp float halo_width
|
|
707
|
+
#pragma maplibre: define lowp float halo_blur
|
|
708
|
+
void main() {
|
|
709
|
+
#pragma maplibre: initialize highp vec4 fill_color
|
|
710
|
+
#pragma maplibre: initialize highp vec4 halo_color
|
|
711
|
+
#pragma maplibre: initialize lowp float opacity
|
|
712
|
+
#pragma maplibre: initialize lowp float halo_width
|
|
713
|
+
#pragma maplibre: initialize lowp float halo_blur
|
|
714
|
+
vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=vec2(a_data.xy);vec2 a_size=vec2(a_data.zw);float a_size_min=float(a_data.z >> 1u);vec2 a_pxoffset=a_pixeloffset.xy/16.0;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=a_height_offset+(u_height_anchor_ground ? get_elevation(a_pos) : 0.0);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_symbol_fade_change :-u_symbol_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));float total_opacity=opacity*interpolated_fade_opacity;if (total_opacity < 0.1){gl_Position=vec4(-2.,-2.,-2.,1.);return;}highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?
|
|
715
|
+
camera_to_anchor_distance/u_camera_to_center_distance :
|
|
716
|
+
u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);if (!u_is_offset) {size*=perspective_ratio;}float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;
|
|
717
|
+
#ifdef GLOBE
|
|
718
|
+
if(u_pitch_with_map) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}
|
|
719
|
+
#endif
|
|
720
|
+
vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,total_opacity);}`),symbolTextAndIcon:CO(`#define SDF_PX 8.0
|
|
721
|
+
#define SDF 1.0
|
|
722
|
+
#define ICON 0.0
|
|
723
|
+
uniform bool u_is_halo;uniform bool u_is_text;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;in vec4 v_data0;in vec3 v_data1;in float v_is_sdf;
|
|
724
|
+
#pragma maplibre: define highp vec4 fill_color
|
|
725
|
+
#pragma maplibre: define highp vec4 halo_color
|
|
726
|
+
#pragma maplibre: define lowp float halo_width
|
|
727
|
+
#pragma maplibre: define lowp float halo_blur
|
|
728
|
+
void main() {
|
|
729
|
+
#pragma maplibre: initialize highp vec4 fill_color
|
|
730
|
+
#pragma maplibre: initialize highp vec4 halo_color
|
|
731
|
+
#pragma maplibre: initialize lowp float halo_width
|
|
732
|
+
#pragma maplibre: initialize lowp float halo_blur
|
|
733
|
+
float total_opacity=v_data1[2];if (v_is_sdf==ICON) {vec2 tex_icon=v_data0.zw;fragColor=texture(u_texture_icon,tex_icon)*total_opacity;
|
|
734
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
735
|
+
fragColor=vec4(1.0);
|
|
736
|
+
#endif
|
|
737
|
+
return;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;lowp float dist=texture(u_texture,tex).a;lowp vec4 color_alpha_out,color_alpha_out_halo;if (u_is_text) {highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);color_alpha_out=fill_color*(alpha*total_opacity);}if (u_is_halo) {highp float gamma_halo=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);lowp float buff_halo=(6.0-halo_width/fontScale)/SDF_PX;highp float gamma_scaled_halo=gamma_halo*gamma_scale;highp float alpha_halo=smoothstep(buff_halo-gamma_scaled_halo,buff_halo+gamma_scaled_halo,dist);color_alpha_out_halo=halo_color*(alpha_halo*total_opacity);}if (u_is_text && u_is_halo) {fragColor=color_alpha_out+(1.-color_alpha_out.a)*color_alpha_out_halo;} else if (u_is_halo) {fragColor=color_alpha_out_halo;} else {fragColor=color_alpha_out;}
|
|
738
|
+
#ifdef OVERDRAW_INSPECTOR
|
|
739
|
+
fragColor=vec4(1.0);
|
|
740
|
+
#endif
|
|
741
|
+
}`,`layout(location=0) in vec4 a_pos_offset;layout(location=1) in uvec4 a_data;layout(location=2) in vec3 a_projected_pos;layout(location=3) in uint a_fade_opacity;layout(location=4) in float a_height_offset;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_rotate_symbol;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;uniform bool u_is_offset;uniform bool u_height_anchor_ground;out vec4 v_data0;out vec3 v_data1;out float v_is_sdf;
|
|
742
|
+
#pragma maplibre: define highp vec4 fill_color
|
|
743
|
+
#pragma maplibre: define highp vec4 halo_color
|
|
744
|
+
#pragma maplibre: define lowp float opacity
|
|
745
|
+
#pragma maplibre: define lowp float halo_width
|
|
746
|
+
#pragma maplibre: define lowp float halo_blur
|
|
747
|
+
void main() {
|
|
748
|
+
#pragma maplibre: initialize highp vec4 fill_color
|
|
749
|
+
#pragma maplibre: initialize highp vec4 halo_color
|
|
750
|
+
#pragma maplibre: initialize lowp float opacity
|
|
751
|
+
#pragma maplibre: initialize lowp float halo_width
|
|
752
|
+
#pragma maplibre: initialize lowp float halo_blur
|
|
753
|
+
vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=vec2(a_data.xy);vec2 a_size=vec2(a_data.zw);float a_size_min=float(a_data.z >> 1u);float is_sdf=float(a_data.z & 1u);float ele=a_height_offset+(u_height_anchor_ground ? get_elevation(a_pos) : 0.0);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_symbol_fade_change :-u_symbol_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));float total_opacity=opacity*interpolated_fade_opacity;if (total_opacity < 0.1){gl_Position=vec4(-2.,-2.,-2.,1.);return;}highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?
|
|
754
|
+
camera_to_anchor_distance/u_camera_to_center_distance :
|
|
755
|
+
u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);if (!u_is_offset) {size*=perspective_ratio;}float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;
|
|
756
|
+
#ifdef GLOBE
|
|
757
|
+
if(u_pitch_with_map && !u_is_along_line) {float anchor_pos_tile_y=(u_coord_matrix*vec4(projected_pos.xy/projected_pos.w,z,1.0)).y;projectionScaling=mix(projectionScaling,1.0/circumferenceRatioAtTileY(anchor_pos_tile_y)*u_pitched_scale,u_projection_transition);}
|
|
758
|
+
#endif
|
|
759
|
+
vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec3(gamma_scale,size,total_opacity);v_is_sdf=is_sdf;}`),terrain:CO(`uniform sampler2D u_texture;uniform vec4 u_fog_color;uniform vec4 u_horizon_color;uniform float u_fog_ground_blend;uniform float u_fog_ground_blend_opacity;uniform float u_horizon_fog_blend;uniform bool u_is_globe_mode;in vec2 v_texture_pos;in float v_fog_depth;const float gamma=2.2;vec4 gammaToLinear(vec4 color) {return pow(color,vec4(gamma));}vec4 linearToGamma(vec4 color) {return pow(color,vec4(1.0/gamma));}void main() {vec4 surface_color=texture(u_texture,vec2(v_texture_pos.x,1.0-v_texture_pos.y));if (!u_is_globe_mode && u_fog_ground_blend_opacity > 0.0 && v_fog_depth > u_fog_ground_blend) {vec4 surface_color_linear=gammaToLinear(surface_color);float blend_color=smoothstep(0.0,1.0,max((v_fog_depth-u_horizon_fog_blend)/(1.0-u_horizon_fog_blend),0.0));vec4 fog_horizon_color_linear=mix(gammaToLinear(u_fog_color),gammaToLinear(u_horizon_color),blend_color);float factor_fog=max(v_fog_depth-u_fog_ground_blend,0.0)/(1.0-u_fog_ground_blend);fragColor=linearToGamma(mix(surface_color_linear,fog_horizon_color_linear,pow(factor_fog,2.0)*u_fog_ground_blend_opacity));} else {fragColor=surface_color;}}`,`layout(location=0) in vec3 a_pos3d;uniform mat4 u_fog_matrix;uniform float u_ele_delta;out vec2 v_texture_pos;out float v_fog_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=projectTileFor3D(a_pos3d.xy,ele-ele_delta);vec4 pos=u_fog_matrix*vec4(a_pos3d.xy,ele,1.0);v_fog_depth=pos.z/pos.w*0.5+0.5;}`),terrainDepth:CO(`in float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {fragColor=pack(v_depth);}`,`layout(location=0) in vec3 a_pos3d;uniform float u_ele_delta;out float v_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;gl_Position=projectTileFor3D(a_pos3d.xy,ele-ele_delta);v_depth=gl_Position.z/gl_Position.w;}`),terrainHeight:CO(`in highp float v_elevation;void main() {fragColor=vec4(v_elevation,0.0,0.0,1.0);}`,`layout(location=0) in vec3 a_pos3d;uniform vec4 u_tile_bounds;out highp float v_elevation;void main() {v_elevation=get_elevation(a_pos3d.xy);vec2 position=u_tile_bounds.xy+a_pos3d.xy/8192.0*u_tile_bounds.zw;gl_Position=vec4(position.x*2.0-1.0,1.0-position.y*2.0,0.0,1.0);}`),atmosphere:CO(`#ifdef GL_ES
|
|
760
|
+
precision highp float;
|
|
761
|
+
#endif
|
|
762
|
+
in vec3 view_direction;uniform vec3 u_sun_pos;uniform vec3 u_globe_position;uniform float u_globe_radius;uniform float u_atmosphere_blend;/**Shader use from https:*Made some change to adapt to MapLibre Globe geometry*/const float PI=3.141592653589793;const int iSteps=5;const int jSteps=3;/*radius of the planet*/const float EARTH_RADIUS=6371e3;/*radius of the atmosphere*/const float ATMOS_RADIUS=6471e3;vec2 rsi(vec3 r0,vec3 rd,float sr) {float a=dot(rd,rd);float b=2.0*dot(rd,r0);float c=dot(r0,r0)-(sr*sr);float d=(b*b)-4.0*a*c;if (d < 0.0) return vec2(1e5,-1e5);return vec2((-b-sqrt(d))/(2.0*a),(-b+sqrt(d))/(2.0*a));}vec4 atmosphere(vec3 r,vec3 r0,vec3 pSun,float iSun,float rPlanet,float rAtmos,vec3 kRlh,float kMie,float shRlh,float shMie,float g) {pSun=normalize(pSun);r=normalize(r);vec2 p=rsi(r0,r,rAtmos);if (p.x > p.y) {return vec4(0.0,0.0,0.0,1.0);}if (p.x < 0.0) {p.x=0.0;}vec3 pos=r0+r*p.x;vec2 p2=rsi(r0,r,rPlanet);if (p2.x <=p2.y && p2.x > 0.0) {p.y=min(p.y,p2.x);}float iStepSize=(p.y-p.x)/float(iSteps);float iTime=p.x+iStepSize*0.5;vec3 totalRlh=vec3(0,0,0);vec3 totalMie=vec3(0,0,0);float iOdRlh=0.0;float iOdMie=0.0;float mu=dot(r,pSun);float mumu=mu*mu;float gg=g*g;float pRlh=3.0/(16.0*PI)*(1.0+mumu);float pMie=3.0/(8.0*PI)*((1.0-gg)*(mumu+1.0))/(pow(1.0+gg-2.0*mu*g,1.5)*(2.0+gg));for (int i=0; i < iSteps; i++) {vec3 iPos=r0+r*iTime;float iHeight=length(iPos)-rPlanet;float odStepRlh=exp(-iHeight/shRlh)*iStepSize;float odStepMie=exp(-iHeight/shMie)*iStepSize;iOdRlh+=odStepRlh;iOdMie+=odStepMie;float jStepSize=rsi(iPos,pSun,rAtmos).y/float(jSteps);float jTime=jStepSize*0.5;float jOdRlh=0.0;float jOdMie=0.0;for (int j=0; j < jSteps; j++) {vec3 jPos=iPos+pSun*jTime;float jHeight=length(jPos)-rPlanet;jOdRlh+=exp(-jHeight/shRlh)*jStepSize;jOdMie+=exp(-jHeight/shMie)*jStepSize;jTime+=jStepSize;}vec3 attn=exp(-(kMie*(iOdMie+jOdMie)+kRlh*(iOdRlh+jOdRlh)));totalRlh+=odStepRlh*attn;totalMie+=odStepMie*attn;iTime+=iStepSize;}float opacity=exp(-(length(kRlh)*length(totalRlh)+kMie*length(totalMie)));vec3 color=iSun*(pRlh*kRlh*totalRlh+pMie*kMie*totalMie);return vec4(color,opacity);}void main() {vec3 scale_camera_pos=-u_globe_position*EARTH_RADIUS/u_globe_radius;vec4 color=atmosphere(normalize(view_direction),scale_camera_pos,u_sun_pos,22.0,EARTH_RADIUS,ATMOS_RADIUS,vec3(5.5e-6,13.0e-6,22.4e-6),21e-6,8e3,1.2e3,0.758
|
|
763
|
+
);color.rgb=1.0-exp(-1.0*color.rgb);color=pow(color,vec4(1.0/2.2));fragColor=vec4(color.rgb,1.0-color.a)*u_atmosphere_blend;}`,`layout(location=0) in vec2 a_pos;uniform mat4 u_inv_proj_matrix;out vec3 view_direction;void main() {view_direction=(u_inv_proj_matrix*vec4(a_pos,0.0,1.0)).xyz;gl_Position=vec4(a_pos,0.0,1.0);}`),sky:CO(`uniform vec4 u_sky_color;uniform vec4 u_horizon_color;uniform vec2 u_horizon;uniform vec2 u_horizon_normal;uniform float u_sky_horizon_blend;uniform float u_sky_blend;uniform vec3 u_globe_position;uniform float u_globe_radius;uniform float u_atmosphere_blend;in vec3 v_view_direction;const float ATMOSPHERE_HEIGHT_TO_GLOBE_RADIUS=100000.0/6371000.0;void main() {float x=gl_FragCoord.x;float y=gl_FragCoord.y;float blend=(y-u_horizon.y)*u_horizon_normal.y+(x-u_horizon.x)*u_horizon_normal.x;float opacity=1.0;if (u_sky_blend > 0.0) {vec3 ray=normalize(v_view_direction);float globe_distance=length(u_globe_position);float angle_to_globe_center=acos(clamp(dot(ray,u_globe_position)/globe_distance,-1.0,1.0));float horizon_angle=asin(min(u_globe_radius/globe_distance,1.0));blend=mix(blend,((angle_to_globe_center-horizon_angle)*u_camera_to_center_distance+1.0)*u_device_pixel_ratio,u_sky_blend);float closest_approach=max(dot(ray,u_globe_position),0.0);float lowest_altitude=sqrt(max(globe_distance*globe_distance-closest_approach*closest_approach,0.0))-u_globe_radius;float atmosphere_height=u_globe_radius*ATMOSPHERE_HEIGHT_TO_GLOBE_RADIUS;float inside_atmosphere=1.0-smoothstep(atmosphere_height,10.0*atmosphere_height,globe_distance-u_globe_radius);float through_atmosphere=1.0-smoothstep(0.0,atmosphere_height,lowest_altitude);opacity=inside_atmosphere*through_atmosphere*(1.0-u_atmosphere_blend);}if (blend > 0.0) {if (blend < u_sky_horizon_blend) {fragColor=mix(u_sky_color,u_horizon_color,pow(1.0-blend/u_sky_horizon_blend,2.0));} else {fragColor=u_sky_color;}}fragColor*=mix(1.0,opacity,u_sky_blend);}`,`layout(location=0) in vec2 a_pos;uniform mat4 u_inv_proj_matrix;out vec3 v_view_direction;void main() {v_view_direction=(u_inv_proj_matrix*vec4(a_pos,0.0,1.0)).xyz;gl_Position=vec4(a_pos,1.0,1.0);}`)};function CO(e,t){let n=/#pragma maplibre: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,r=t.match(/in ([\w]+) ([\w]+)/g),i=e.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),a=t.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),o=a?a.concat(i):i,s=r?r.length:0,c={};return e=e.replace(n,(e,t,n,r,i)=>(c[i]=!0,t===`define`?`
|
|
764
|
+
#ifndef HAS_UNIFORM_u_${i}
|
|
765
|
+
in ${n} ${r} ${i};
|
|
766
|
+
#else
|
|
767
|
+
uniform ${n} ${r} u_${i};
|
|
768
|
+
#endif
|
|
769
|
+
`:`
|
|
770
|
+
#ifdef HAS_UNIFORM_u_${i}
|
|
771
|
+
${n} ${r} ${i} = u_${i};
|
|
772
|
+
#endif
|
|
773
|
+
`)),t=t.replace(n,(e,t,n,r,i)=>{let a=r===`float`?`vec2`:`vec4`,o=i.match(/color/)?`color`:a;return c[i]?t===`define`?`
|
|
774
|
+
#ifndef HAS_UNIFORM_u_${i}
|
|
775
|
+
uniform lowp float u_${i}_t;
|
|
776
|
+
layout(location = ${s++}) in ${n} ${a} a_${i};
|
|
777
|
+
out ${n} ${r} ${i};
|
|
778
|
+
#else
|
|
779
|
+
uniform ${n} ${r} u_${i};
|
|
780
|
+
#endif
|
|
781
|
+
`:o===`vec4`?`
|
|
782
|
+
#ifndef HAS_UNIFORM_u_${i}
|
|
783
|
+
${i} = a_${i};
|
|
784
|
+
#else
|
|
785
|
+
${n} ${r} ${i} = u_${i};
|
|
786
|
+
#endif
|
|
787
|
+
`:`
|
|
788
|
+
#ifndef HAS_UNIFORM_u_${i}
|
|
789
|
+
${i} = unpack_mix_${o}(a_${i}, u_${i}_t);
|
|
790
|
+
#else
|
|
791
|
+
${n} ${r} ${i} = u_${i};
|
|
792
|
+
#endif
|
|
793
|
+
`:t===`define`?`
|
|
794
|
+
#ifndef HAS_UNIFORM_u_${i}
|
|
795
|
+
uniform lowp float u_${i}_t;
|
|
796
|
+
layout(location = ${s++}) in ${n} ${a} a_${i};
|
|
797
|
+
#else
|
|
798
|
+
uniform ${n} ${r} u_${i};
|
|
799
|
+
#endif
|
|
800
|
+
`:o===`vec4`?`
|
|
801
|
+
#ifndef HAS_UNIFORM_u_${i}
|
|
802
|
+
${n} ${r} ${i} = a_${i};
|
|
803
|
+
#else
|
|
804
|
+
${n} ${r} ${i} = u_${i};
|
|
805
|
+
#endif
|
|
806
|
+
`:`
|
|
807
|
+
#ifndef HAS_UNIFORM_u_${i}
|
|
808
|
+
${n} ${r} ${i} = unpack_mix_${o}(a_${i}, u_${i}_t);
|
|
809
|
+
#else
|
|
810
|
+
${n} ${r} ${i} = u_${i};
|
|
811
|
+
#endif
|
|
812
|
+
`}),{fragmentSource:e,vertexSource:t,staticAttributes:r,staticUniforms:o}}var wO=`#define PROJECTION_MERCATOR`,TO=`mercator`,EO=class{constructor(e=Bm){this._cachedMesh=null,this._worldCoordinateHelper=e}get name(){return this._worldCoordinateHelper.name}get worldCoordinateHelper(){return this._worldCoordinateHelper}get useSubdivision(){return!1}get shaderVariantName(){return TO}get shaderDefine(){return wO}get shaderPreludeCode(){return SO.projectionMercator}get vertexShaderPreludeCode(){return SO.projectionMercator.vertexSource}get subdivisionGranularity(){return Yp.noSubdivision}get useGlobeControls(){return!1}get transitionState(){return 0}destroy(){}getMeshFromTileID(e,t,n,r,i){if(this._cachedMesh)return this._cachedMesh;let a=new Au;a.emplaceBack(0,0),a.emplaceBack(N,0),a.emplaceBack(0,N),a.emplaceBack(N,N);let o=e.createVertexBuffer(a,Ex.members),s=Qu.simpleSegment(0,0,4,2),c=new qu;c.emplaceBack(1,0,2),c.emplaceBack(1,2,3);let l=e.createIndexBuffer(c);return this._cachedMesh=new Tx(o,l,s),this._cachedMesh}recalculate(){}hasTransition(){return!1}},DO=class e{constructor(e=0,t=0,n=0,r=0){if(isNaN(e)||e<0||isNaN(t)||t<0||isNaN(n)||n<0||isNaN(r)||r<0)throw Error(`Invalid value for edge-insets, top, bottom, left and right must all be numbers`);this.top=e,this.bottom=t,this.left=n,this.right=r}interpolate(e,t,n){return t.top!=null&&e.top!=null&&(this.top=Ki.number(e.top,t.top,n)),t.bottom!=null&&e.bottom!=null&&(this.bottom=Ki.number(e.bottom,t.bottom,n)),t.left!=null&&e.left!=null&&(this.left=Ki.number(e.left,t.left,n)),t.right!=null&&e.right!=null&&(this.right=Ki.number(e.right,t.right,n)),this}getCenter(e,t){return new f(P((this.left+e-this.right)/2,0,e),P((this.top+t-this.bottom)/2,0,t))}equals(e){return this.top===e.top&&this.bottom===e.bottom&&this.left===e.left&&this.right===e.right}clone(){return new e(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}};function OO(e,t){if(!e.renderWorldCopies||!e.worldCoordinateHelper.wraps||e.lngRange)return;let n=t.lng-e.center.lng;t.lng+=n>180?-360:n<-180?360:0}function kO(e){return Math.max(0,Math.floor(e))}var AO=class{constructor(e,t){this.applyConstrain=(e,t)=>this._constrainOverride===null?this._callbacks.defaultConstrain(e,t):this._constrainOverride(e,t),this._callbacks=e,this._tileSize=512,this._worldCoordinateHelper=Bm,this._renderWorldCopies=t?.renderWorldCopies===void 0||!!t?.renderWorldCopies,this._minZoom=t?.minZoom||0,this._maxZoom=t?.maxZoom||22,this._minPitch=t?.minPitch===void 0||t?.minPitch===null?0:t?.minPitch,this._maxPitch=t?.maxPitch===void 0||t?.maxPitch===null?60:t?.maxPitch,this._constrainOverride=t?.constrainOverride??null,this.setMaxBounds(),this._width=0,this._height=0,this._center=new Q(0,0),this._elevation=0,this._zoom=0,this._tileZoom=kO(this._zoom),this._scale=Nt(this._zoom),this._bearingInRadians=0,this._fovInRadians=.6435011087932844,this._pitchInRadians=0,this._rollInRadians=0,this._unmodified=!0,this._edgeInsets=new DO,this._minElevationForCurrentTile=0,this._autoCalculateNearFarZ=!0}apply(e,t){this._constrainOverride=e.constrainOverride,this._latRange=e.latRange,this._lngRange=e.lngRange,this._width=e.width,this._height=e.height,this._center=e.center,this._elevation=e.elevation,this._minElevationForCurrentTile=e.minElevationForCurrentTile,this._zoom=e.zoom,this._tileZoom=kO(this._zoom),this._scale=Nt(this._zoom),this._bearingInRadians=e.bearingInRadians,this._fovInRadians=e.fovInRadians,this._pitchInRadians=e.pitchInRadians,this._rollInRadians=e.rollInRadians,this._unmodified=e.unmodified,this._edgeInsets=new DO(e.padding.top,e.padding.bottom,e.padding.left,e.padding.right),this._minZoom=e.minZoom,this._maxZoom=e.maxZoom,this._minPitch=e.minPitch,this._maxPitch=e.maxPitch,this._renderWorldCopies=e.renderWorldCopies,this._cameraToCenterDistance=e.cameraToCenterDistance,this._nearZ=e.nearZ,this._farZ=e.farZ,this._autoCalculateNearFarZ=e.autoCalculateNearFarZ,t&&this.constrainInternal(),this._calcMatrices()}get pixelsToClipSpaceMatrix(){return this._pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._clipSpaceToPixelsMatrix}get minElevationForCurrentTile(){return this._minElevationForCurrentTile}setMinElevationForCurrentTile(e){e!==this._minElevationForCurrentTile&&(this._minElevationForCurrentTile=e,this._calcMatrices())}get tileSize(){return this._tileSize}get tileZoom(){return this._tileZoom}get scale(){return this._scale}get width(){return this._width}get height(){return this._height}get bearingInRadians(){return this._bearingInRadians}get lngRange(){return this._lngRange}get latRange(){return this._latRange}get worldCoordinateHelper(){return this._worldCoordinateHelper}get pixelsToGLUnits(){return this._pixelsToGLUnits}get minZoom(){return this._minZoom}setMinZoom(e){if(this._minZoom===e)return;this._minZoom=e;let t=this._unmodified;this.setZoom(this.applyConstrain(this._center,this.zoom).zoom),this._unmodified=t}get maxZoom(){return this._maxZoom}setMaxZoom(e){if(this._maxZoom===e)return;this._maxZoom=e;let t=this._unmodified;this.setZoom(this.applyConstrain(this._center,this.zoom).zoom),this._unmodified=t}get minPitch(){return this._minPitch}setMinPitch(e){if(this._minPitch===e)return;this._minPitch=e;let t=this._unmodified;this.setPitch(Math.max(this.pitch,e)),this._unmodified=t}get maxPitch(){return this._maxPitch}setMaxPitch(e){if(this._maxPitch===e)return;this._maxPitch=e;let t=this._unmodified;this.setPitch(Math.min(this.pitch,e)),this._unmodified=t}get renderWorldCopies(){return this._renderWorldCopies}setRenderWorldCopies(e){e===void 0?e=!0:e===null&&(e=!1),e&&!this._worldCoordinateHelper.wraps&&I(`renderWorldCopies has no effect in a projection whose world does not wrap.`),this._renderWorldCopies=e}get constrainOverride(){return this._constrainOverride}setConstrainOverride(e){e===void 0&&(e=null),this._constrainOverride!==e&&(this._constrainOverride=e,this.constrainInternal(),this._calcMatrices())}get worldSize(){return this._tileSize*this._scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new f(this._width,this._height)}get bearing(){return this._bearingInRadians/Math.PI*180}setBearing(e){let t=Dt(e,-180,180)*Math.PI/180;this._bearingInRadians!==t&&(this._unmodified=!1,this._bearingInRadians=t,this._calcMatrices(),this._rotationMatrix=y(),S(this._rotationMatrix,this._rotationMatrix,-this._bearingInRadians))}get rotationMatrix(){return this._rotationMatrix}get pitchInRadians(){return this._pitchInRadians}get pitch(){return this._pitchInRadians/Math.PI*180}setPitch(e){let t=P(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitchInRadians!==t&&(this._unmodified=!1,this._pitchInRadians=t,this._calcMatrices())}get rollInRadians(){return this._rollInRadians}get roll(){return this._rollInRadians/Math.PI*180}setRoll(e){let t=e/180*Math.PI;this._rollInRadians!==t&&(this._unmodified=!1,this._rollInRadians=t,this._calcMatrices())}get fovInRadians(){return this._fovInRadians}get fov(){return tn(this._fovInRadians)}setFov(e){e=P(e,.1,150),this.fov!==e&&(this._unmodified=!1,this._fovInRadians=en(e),this._calcMatrices())}get zoom(){return this._zoom}setZoom(e){let t=this.applyConstrain(this._center,e).zoom;this._zoom!==t&&(this._unmodified=!1,this._zoom=t,this._tileZoom=Math.max(0,Math.floor(t)),this._scale=Nt(t),this.constrainInternal(),this._calcMatrices())}get center(){return this._center}setCenter(e){(e.lat!==this._center.lat||e.lng!==this._center.lng)&&(this._unmodified=!1,this._center=e,this.constrainInternal(),this._calcMatrices())}get elevation(){return this._elevation}setElevation(e){e!==this._elevation&&(this._elevation=e,this.constrainInternal(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}setPadding(e){this._edgeInsets.equals(e)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,e,1),this.constrainInternal(),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this._width,this._height)}get pixelsPerMeter(){return this._pixelPerMeter}get unmodified(){return this._unmodified}get cameraToCenterDistance(){return this._cameraToCenterDistance}get nearZ(){return this._nearZ}get farZ(){return this._farZ}get autoCalculateNearFarZ(){return this._autoCalculateNearFarZ}overrideNearFarZ(e,t){this._autoCalculateNearFarZ=!1,this._nearZ=e,this._farZ=t,this._calcMatrices()}clearNearFarZOverride(){this._autoCalculateNearFarZ=!0,this._calcMatrices()}isPaddingEqual(e){return this._edgeInsets.equals(e)}interpolatePadding(e,t,n){this._unmodified=!1,this._edgeInsets.interpolate(e,t,n),this.constrainInternal(),this._calcMatrices()}resize(e,t,n=!0){this._width=e,this._height=t,n&&this.constrainInternal(),this._calcMatrices()}getMaxBounds(){return this._latRange?.length!==2||this._lngRange?.length!==2?null:new Rb([this._lngRange[0],this._latRange[0]],[this._lngRange[1],this._latRange[1]])}setWorldCoordinateHelper(e){this._worldCoordinateHelper=e}setMaxBounds(e){e?(this._lngRange=[e.getWest(),e.getEast()],this._latRange=[e.getSouth(),e.getNorth()],this.constrainInternal()):(this._lngRange=null,this._latRange=[-85.051129,sn])}getCameraQueryGeometry(e,t){if(t.length===1)return[t[0],e];{let{minX:n,minY:r,maxX:i,maxY:a}=Pd.fromPoints(t).extend(e);return[new f(n,r),new f(i,r),new f(i,a),new f(n,a),new f(n,r)]}}constrainInternal(){if(!this.center||!this._width||!this._height||this._constraining)return;this._constraining=!0;let e=this._unmodified,{center:t,zoom:n}=this.applyConstrain(this.center,this.zoom);this.setCenter(t),this.setZoom(n),this._unmodified=e,this._constraining=!1}_calcMatrices(){if(this._pixelPerMeter=this.worldCoordinateHelper.worldZFromAltitude(1,this.center)*this.worldSize,!this._width||!this._height)return;this._pixelsToGLUnits=[2/this._width,-2/this._height];let e=A(new Float64Array(16));ne(e,e,[this._width/2,-this._height/2,1]),te(e,e,[1,-1,0]),this._clipSpaceToPixelsMatrix=e,e=A(new Float64Array(16)),ne(e,e,[1,-1,1]),te(e,e,[-1,-1,0]),ne(e,e,[2/this._width,2/this._height,1]),this._pixelsToClipSpaceMatrix=e;let t=this.fovInRadians/2;this._cameraToCenterDistance=.5/Math.tan(t)*this._height,this._callbacks.calcMatrices()}calculateCenterFromCameraLngLatAlt(e,t,n,r){let i=n===void 0?this.bearing:n,a=r=r===void 0?this.pitch:r,{distanceToCenter:o,clampedElevation:s}=this._distanceToCenterFromAltElevationPitch(t,this.elevation,a),{x:c,y:l}=Xm(a,i),u=this.worldCoordinateHelper,d=Q.convert(e),f=u.worldFromLngLat(d.lng,d.lat,t),{centerMercator:p,dMercator:m}=this._centerAlongView(f,c,l,o,u.metersPerWorldUnit(f.x,f.y));return{center:u.lngLatFromWorld(p.x,p.y),elevation:s,zoom:Pt(this.height/2/Math.tan(this.fovInRadians/2)/m/this.tileSize)}}recalculateZoomAndCenter(e){if(this.elevation-e===0)return;let t=this.pitch,n=this.bearing,{x:r,y:i,z:a}=Xm(t,n),o=this.worldCoordinateHelper,s=o.worldFromLngLat(this.center.lng,this.center.lat,this.elevation),c=1/o.worldZFromAltitude(1,this.center),l=this.cameraToCenterDistance/this.worldSize,u=new zm(s.x-r*l,s.y-i*l,s.z+a*l),{distanceToCenter:d,clampedElevation:f}=this._distanceToCenterFromAltElevationPitch(u.z*c,e,t),{centerMercator:p,dMercator:m}=this._centerAlongView(u,r,i,d,c),h=o.lngLatFromWorld(p.x,p.y),g=Pt(this.cameraToCenterDistance/m/this.tileSize);this._elevation=f,this._center=h;let _=this._zoom;this.setZoom(g),this._zoom===_&&(this._unmodified=!1,this.constrainInternal(),this._calcMatrices())}_centerAlongView(e,t,n,r,i){let a=r/i,o=new zm(e.x+t*a,e.y+n*a),s=1/0;for(let c=1;c<10;c++){let c=this.worldCoordinateHelper.metersPerWorldUnit(o.x,o.y),l=Math.abs(c-i);if(l<=1e-12*i||l>=s)break;s=l,i=c,a=r/i,o=new zm(e.x+t*a,e.y+n*a)}return{centerMercator:o,dMercator:a}}_distanceToCenterFromAltElevationPitch(e,t,n){let r=-Math.cos(en(n)),i=e-t,a,o=t;return r*i>=0||Math.abs(r)<Math.cos(en(89.25))?(a=1e4,o=e+a*r):a=-i/r,{distanceToCenter:a,clampedElevation:o}}getCameraPoint(){let e=this.pitchInRadians,t=Math.tan(e)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new f(t*Math.sin(this.rollInRadians),t*Math.cos(this.rollInRadians)))}getMercatorTileCoordinates(e){if(!e)return[0,0,1,1];let t=e.canonical.z>=0?1<<e.canonical.z:2**e.canonical.z;return[e.canonical.x/t,e.canonical.y/t,1/t/N,1/t/N]}},jO=class{getCenter(e){return e.center}distanceToTile2d(e,t,n,r){let i=r,a=i.distanceX([e,t]),o=i.distanceY([e,t]);return Math.hypot(a,o)}getWrap(e,t,n){return n}getTileBoundingVolume(e,t,n,r){let i=Math.min(0,n),a=Math.max(0,n);if(r?.terrain){let n=new Kb(e.z,t,e.z,e.x,e.y),o=r.terrain.getMinMaxElevation(n);i=o.minElevation??i,a=o.maxElevation??a}let o=1<<e.z;return new ME([t+e.x/o,e.y/o,i],[t+(e.x+1)/o,(e.y+1)/o,a])}allowVariableZoom(e,t){let n=P(78.5-e.fov*(Math.abs(Math.cos(e.rollInRadians))*e.height+Math.abs(Math.sin(e.rollInRadians))*e.width)/e.height/2,0,60);return!!t.terrain||e.pitch>n}allowWorldCopies(){return!0}prepareNextFrame(){}},MO=N*(1-1e-12),NO=-.5,PO={covered:!1,demLoaded:!1,elevation:0},FO=class{constructor(e,t,n=()=>Bm){this.tileManager=e,this.exaggeration=t,this.getWorldCoordinateHelper=n,this._samplerCache=new Map}reset(){this._samplerCache.clear(),this._index=void 0,this._ownDemIndex=void 0}getIndex(e=!1){return e?(this._ownDemIndex===void 0&&(this._ownDemIndex=this._build(!0)),this._ownDemIndex):(this._index===void 0&&(this._index=this._build(!1)),this._index)}sample(e,t=!1){let n=this.getIndex(t);if(!n)return;let r=this.getWorldCoordinateHelper(),{x:i,y:a}=r.worldFromLngLat(e.lng,e.lat),o=IO(n,this.exaggeration,i,a,r.wraps);return o.demLoaded?o.elevation:void 0}getSampler(e){let t=e.key,n=this._samplerCache.get(t);if(n)return n;let r=this._createElevationSampler(e);return r&&this._samplerCache.set(t,r),r}_createElevationSampler(e){let t=this.tileManager.getSourceTile(e,!0),n=t?.dem;if(!t||!n)return null;let r=e.canonical.z-t.tileID.canonical.z,i=1<<r,a=n.dim/(N*i),o=(e.canonical.x-(e.canonical.x>>r<<r))/i*n.dim+NO,s=(e.canonical.y-(e.canonical.y>>r<<r))/i*n.dim+NO;return(e,t,r)=>{let i=r===8192?1:N/r;return n.sampleBilinear(e*i*a+o,t*i*a+s)}}_build(e){let{tileManager:t}=this,n=[],r=new Map,i=0,a=0;for(let o of t.getRenderableTiles()){if(!o)continue;let{canonical:s,wrap:c}=o.tileID;n.includes(s.z)||n.push(s.z);let l=e&&!t.getSourceTile(o.tileID)?.dem?null:this.getSampler(o.tileID);r.set(`${c}/${s.z}/${s.x}/${s.y}`,l);let u=t.getSourceTile(o.tileID,!0)?.dem;i=Math.min(i,(u?.min??0)*this.exaggeration),a=Math.max(a,(u?.max??0)*this.exaggeration)}return r.size===0?null:(n.sort((e,t)=>t-e),{zooms:n,samplerPerTile:r,minElevation:i-10,maxElevation:a+10})}};function IO(e,t,n,r,i){if(r<0||r>=1||!i&&(n<0||n>=1))return PO;let a=i?Math.floor(n):0,o=n-a;for(let n of e.zooms){let i=1<<n,s=o*i,c=r*i,l=Math.floor(s),u=Math.floor(c),d=`${a}/${n}/${l}/${u}`;if(!e.samplerPerTile.has(d))continue;let f=e.samplerPerTile.get(d);return f?{covered:!0,demLoaded:!0,elevation:f(Math.min((s-l)*N,MO),Math.min((c-u)*N,MO),N)*t}:{covered:!0,demLoaded:!1,elevation:0}}return PO}function LO(e,t){return e.covered&&t<=e.elevation+1e-6}function RO(e,t,n,r,i){for(let a=0;a<40&&r-n>i;a++){let i=(n+r)/2;t(e,i)?r=i:n=i}return{lo:n,hi:r}}var zO=class e{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(e){this._helper.setMinZoom(e)}setMaxZoom(e){this._helper.setMaxZoom(e)}setMinPitch(e){this._helper.setMinPitch(e)}setMaxPitch(e){this._helper.setMaxPitch(e)}setRenderWorldCopies(e){this._helper.setRenderWorldCopies(e)}setBearing(e){this._helper.setBearing(e)}setPitch(e){this._helper.setPitch(e)}setRoll(e){this._helper.setRoll(e)}setFov(e){this._helper.setFov(e)}setZoom(e){this._helper.setZoom(e)}setCenter(e){this._helper.setCenter(e)}setElevation(e){this._helper.setElevation(e)}setMinElevationForCurrentTile(e){this._helper.setMinElevationForCurrentTile(e)}setPadding(e){this._helper.setPadding(e)}interpolatePadding(e,t,n){this._helper.interpolatePadding(e,t,n)}isPaddingEqual(e){return this._helper.isPaddingEqual(e)}resize(e,t,n=!0){this._helper.resize(e,t,n)}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(e){this._helper.setMaxBounds(e)}setConstrainOverride(e){this._helper.setConstrainOverride(e)}overrideNearFarZ(e,t){this._helper.overrideNearFarZ(e,t)}clearNearFarZOverride(){this._helper.clearNearFarZOverride()}getCameraQueryGeometry(e){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),e)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}get constrainOverride(){return this._helper.constrainOverride}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}setTransitionState(e){}constructor(e,t){this._posMatrixCache=new Map,this._alignedPosMatrixCache=new Map,this._fogMatrixCacheF32=new Map,this._maxBoundsWorldBox=null,this.defaultConstrain=(e,t)=>{if(t=P(+t,this.minZoom,this.maxZoom),!this.worldCoordinateHelper.wraps)return this._constrainToWorldSquare(e,t);let n={center:new Q(e.lng,e.lat),zoom:t},r=this._helper._lngRange;!this._helper._renderWorldCopies&&r===null&&(r=[-179.9999999999,180-1e-10]);let i=this.tileSize*Nt(n.zoom),a=0,o=i,s=0,c=i,l=0,u=0,{top:d=0,bottom:p=0,left:m=0,right:h=0}=this.padding,g=this.width-m-h,_=this.height-d-p;if(this._helper._latRange){let e=this._helper._latRange;a=Nm(e[1])*i,o=Nm(e[0])*i,o-a<_&&(l=_/(o-a))}r&&(s=Dt(Mm(r[0])*i,0,i),c=Dt(Mm(r[1])*i,0,i),c<s&&(c+=i),c-s<g&&(u=g/(c-s)));let{x:v,y}=Wm(i,e,this.worldCoordinateHelper),b,x,S=Math.max(u||0,l||0);if(S)return n.center=Gm(i,new f(u?(c+s)/2:v,l?(o+a)/2:y),this.worldCoordinateHelper).wrap(),n.zoom+=Pt(S),n;if(this._helper._latRange){let e=_/2;y-e<a&&(x=a+e),y+e>o&&(x=o-e)}if(r){let e=(s+c)/2,t=v;this._helper._renderWorldCopies&&(t=Dt(v,e-i/2,e+i/2));let n=g/2;t-n<s&&(b=s+n),t+n>c&&(b=c-n)}return(b!==void 0||x!==void 0)&&(n.center=Gm(i,new f(b??v,x??y),this.worldCoordinateHelper).wrap()),n},this.applyConstrain=(e,t)=>this._helper.applyConstrain(e,t),this._helper=t??new AO({calcMatrices:()=>this._calcMatrices(),defaultConstrain:(e,t)=>this.defaultConstrain(e,t)},e),this._coveringTilesDetailsProvider=new jO}clone(){let t=new e;return t.setWorldCoordinateHelper(this.worldCoordinateHelper),t.apply(this,!1),t}get worldCoordinateHelper(){return this._helper.worldCoordinateHelper}setWorldCoordinateHelper(e){this._helper.setWorldCoordinateHelper(e),this._maxBoundsWorldBox=null}apply(e,t){this._helper.apply(e,t)}get cameraPosition(){return this._cameraPosition}get projectionMatrix(){return this._projectionMatrix}get modelViewProjectionMatrix(){return this._viewProjMatrix}get inverseProjectionMatrix(){return this._invProjMatrix}get mercatorMatrix(){return this._mercatorMatrix}getVisibleUnwrappedCoordinates(e){let t=[new Gb(0,e)];if(this._helper.renderWorldCopies&&this.worldCoordinateHelper.wraps){let n=this.screenPointToMercatorCoordinate(new f(0,0)),r=this.screenPointToMercatorCoordinate(new f(this._helper._width,0)),i=this.screenPointToMercatorCoordinate(new f(this._helper._width,this._helper._height)),a=this.screenPointToMercatorCoordinate(new f(0,this._helper._height)),o=Math.floor(Math.min(n.x,r.x,i.x,a.x)),s=Math.floor(Math.max(n.x,r.x,i.x,a.x));for(let n=o-1;n<=s+1;n++)n!==0&&t.push(new Gb(n,e))}return t}getCameraFrustum(){return NE.fromInvProjectionMatrix(this._invViewProjMatrix,this.worldSize)}getClippingPlane(){return null}getCoveringTilesDetailsProvider(){return this._coveringTilesDetailsProvider}recalculateZoomAndCenter(e){for(let t=0;t<3;t++){let t=e&&this._terrainPointPastMaxZoom(e)||this.screenPointToLocation(this.centerPoint,e),n=e?e.getElevationForLngLat(t,this):0;if(this.pitch<90&&n>=this.getCameraAltitude()||(this._helper.recalculateZoomAndCenter(n),!e||Math.abs(e.getElevationForLngLat(this.center,this)-this.elevation)<=1e-4))return}}setLocationAtPoint(e,t,n=this.elevation){let r=n-this.elevation,i=this.screenPointToMercatorCoordinateAtZ(t,r),a=this.screenPointToMercatorCoordinateAtZ(this.centerPoint,0),o=this.worldCoordinateHelper,s=o.worldFromLngLat(e.lng,e.lat);this.setCenter(o.lngLatFromWorld(s.x-(i.x-a.x),s.y-(i.y-a.y))),this._helper.renderWorldCopies&&this.worldCoordinateHelper.wraps&&this.setCenter(this.center.wrap())}locationToScreenPoint(e,t){let n=this.worldCoordinateHelper.worldFromLngLat(e.lng,e.lat);return t?this.coordinatePoint(n,t.getElevationForLngLat(e,this),this._pixelMatrix3D):this.coordinatePoint(n)}screenPointToLocation(e,t){return this._worldToLngLat(this.screenPointToMercatorCoordinate(e,t))}screenPointToLocationAtElevation(e,t){return this._worldToLngLat(this.screenPointToMercatorCoordinateAtZ(e,t-this.elevation))}_worldToLngLat(e){return e?this.worldCoordinateHelper.lngLatFromWorld(e.x,e.y):void 0}screenPointToMercatorCoordinate(e,t){if(t){let n=this.screenTerrainPointToMercatorCoordinate(e,t);if(n!=null)return n}return this.screenPointToMercatorCoordinateAtZ(e)}_terrainPointPastMaxZoom(e){let t=e.getCoverageIndex();if(!t)return null;let{near:n,far:r}=this.getRaySegmentFromPixel(this.centerPoint,-1),i=this.cameraToCenterDistance*Nt(this.zoom-this.maxZoom),a=Ee([],n,r,Math.max(0,(i-this.nearZ)/(this.farZ-this.nearZ)));return LO(IO(t,e.exaggeration,a[0]/this.worldSize,a[1]/this.worldSize,this.worldCoordinateHelper.wraps),a[2])?null:this._worldToLngLat(this._raycastTerrain(a,r,e))??null}screenTerrainPointToMercatorCoordinate(e,t){let{near:n,far:r}=this.getRaySegmentFromPixel(e,-1);return this._raycastTerrain(n,r,t)}_raycastTerrain(e,t,n){let r=n.getCoverageIndex();if(!r)return null;let i=this.worldSize,a=t[0]-e[0],o=t[1]-e[1],s=t[2]-e[2],c={index:r,exaggeration:n.exaggeration,near:e,dx:a,dy:o,dz:s,worldSize:i,wraps:this.worldCoordinateHelper.wraps},l=0,u=1;if(s===0){if(e[2]>r.maxElevation||e[2]<r.minElevation)return null}else{let t=(r.maxElevation-e[2])/s,n=(r.minElevation-e[2])/s;if(l=Math.max(l,Math.min(t,n)),u=Math.min(u,Math.max(t,n)),l>u)return null}let d=Math.hypot(a,o),f=P(Math.ceil(d*(u-l)/4),1,512),p=0,m=!HO(c,0);for(let t=0;t<=f;t++){let n=l+(u-l)*t/f;if(!m)m=!HO(c,n);else if(HO(c,n)){let{lo:t,hi:r}=RO(c,HO,p,n,.001/d),l=VO(c,t),u=VO(c,r),f=e[2]+t*s-l.elevation,m=e[2]+r*s-u.elevation,h=l.covered&&f>m?P(t+f*(r-t)/(f-m),t,r):r;return new zm((e[0]+h*a)/i,(e[1]+h*o)/i,VO(c,h).elevation)}p=n}return null}getRaySegmentFromPixel(e,t=0){let n=[e.x,e.y,t,1],r=[e.x,e.y,1,1];Ve(n,n,this._pixelMatrixInverse),Ve(r,r,this._pixelMatrixInverse);let i=n[3],a=r[3],o=this.elevation;return{near:[n[0]/i,n[1]/i,n[2]/i+o],far:[r[0]/a,r[1]/a,r[2]/a+o]}}screenPointToMercatorCoordinateAtZ(e,t){let n=t||0,{near:r,far:i}=this.getRaySegmentFromPixel(e),a=r[2]===i[2]?0:(n+this.elevation-r[2])/(i[2]-r[2]);return new zm(Ki.number(r[0],i[0],a)/this.worldSize,Ki.number(r[1],i[1],a)/this.worldSize,n)}coordinatePoint(e,t=0,n=this._pixelMatrix){let r=this._coordinateClipPoint(e,t,n),i=r[3];return i>0?new f(r[0]/i,r[1]/i):this._offScreenPointBehindCamera(r[0],r[1],i)}_coordinateClipPoint(e,t,n){let r=[e.x*this.worldSize,e.y*this.worldSize,t,1];return Ve(r,r,n)}_offScreenPointBehindCamera(e,t,n){let r=this.width/2,i=this.height/2,a=e-r*n,o=t-i*n;a===0&&o===0&&(o=1);let s=r+this.width,c=i+this.height,l=Math.min(a===0?1/0:s/Math.abs(a),o===0?1/0:c/Math.abs(o));return new f(r+a*l,i+o*l)}getBounds(){let e=Math.max(0,this._helper._height/2-Km(this));return new Rb().extend(this.screenPointToLocation(new f(0,e))).extend(this.screenPointToLocation(new f(this._helper._width,e))).extend(this.screenPointToLocation(new f(this._helper._width,this._helper._height))).extend(this.screenPointToLocation(new f(0,this._helper._height)))}isPointOnMapSurface(e,t){if(t)return this.screenTerrainPointToMercatorCoordinate(e,t)!=null;let n=e.y>this.centerPoint.y-Km(this);if(!n||this.worldCoordinateHelper.wraps)return n;let r=this.screenPointToMercatorCoordinate(e);return this.worldCoordinateHelper.hasLngLat(r.x,r.y)}calculatePosMatrix(e,t=!1,n=!1){let r=e.key??qb(e.wrap,e.canonical.z,e.canonical.z,e.canonical.x,e.canonical.y),i=t?this._alignedPosMatrixCache:this._posMatrixCache;if(i.has(r)){let e=i.get(r);return n?e.f32:e.f64}let a=qm(e,this.worldSize);ee(a,t?this._alignedProjMatrix:this._viewProjMatrix,a);let o={f64:a,f32:new Float32Array(a)};return i.set(r,o),n?o.f32:o.f64}calculateFogMatrix(e){let t=e.key,n=this._fogMatrixCacheF32;if(n.has(t))return n.get(t);let r=qm(e,this.worldSize);return ee(r,this._fogMatrix,r),n.set(t,new Float32Array(r)),n.get(t)}_constrainToWorldSquare(e,t){let n=this.worldCoordinateHelper,r=this._helper._lngRange,i=this.tileSize*Nt(t);if(!r){let{x:r,y:a}=Wm(i,e,n),o=P(r,0,i),s=P(a,0,i);return o!==r||s!==a?{center:Gm(i,new f(o,s),n),zoom:t}:{center:new Q(e.lng,e.lat),zoom:t}}let a=this._projectMaxBounds(r,this._helper._latRange),o=Math.max(a.minX,0)*i,s=Math.min(a.maxX,1)*i,c=Math.max(a.minY,0)*i,l=Math.min(a.maxY,1)*i,{x:u,y:d}=this.size,p=s-o<u?u/(s-o):0,m=l-c<d?d/(l-c):0,{x:h,y:g}=Wm(i,e,n),_=Math.max(p,m);if(_)return{center:Gm(i,new f(p?(s+o)/2:h,m?(l+c)/2:g),n),zoom:t+Pt(_)};let v=P(h,o+u/2,s-u/2),y=P(g,c+d/2,l-d/2);return v!==h||y!==g?{center:Gm(i,new f(v,y),n),zoom:t}:{center:new Q(e.lng,e.lat),zoom:t}}_projectMaxBounds(e,t){let n=this._maxBoundsWorldBox;if(n?.lngRange===e&&n.latRange===t)return n.box;let r=Qm(this.worldCoordinateHelper,e[0],t[0],e[1],t[1]);return this._maxBoundsWorldBox={lngRange:e,latRange:t,box:r},r}calculateCenterFromCameraLngLatAlt(e,t,n,r){return this._helper.calculateCenterFromCameraLngLatAlt(e,t,n,r)}calculateCameraOptionsFromTo(e,t,n,r){let i=this.worldCoordinateHelper,a=Q.convert(e),o=Q.convert(n),s=i.worldFromLngLat(a.lng,a.lat,t),c=i.worldFromLngLat(o.lng,o.lat,r),l=c.x-s.x,u=c.y-s.y,d=c.z-s.z,f=Math.hypot(l,u,d);if(f===0)throw Error(`Can't calculate camera options with same From and To`);let p=Math.hypot(l,u),m=Pt(this.cameraToCenterDistance/f/this.tileSize),h=tn(Math.atan2(l,-u)),g=tn(Math.acos(p/f));return g=d<0?90-g:90+g,{center:i.lngLatFromWorld(c.x,c.y),elevation:r,zoom:m,pitch:g,bearing:h}}_calculateNearFarZ(e,t,n){let r=Math.min(this.elevation,this.minElevationForCurrentTile,this.getCameraAltitude()-100),i=e-r*this._helper._pixelPerMeter/Math.cos(t),a=r<0?i:e,o=Math.PI/2+this.pitchInRadians,s=en(this.fov)*(Math.abs(Math.cos(en(this.roll)))*this.height+Math.abs(Math.sin(en(this.roll)))*this.width)/this.height*(.5+n.y/this.height),c=Math.sin(s)*a/Math.sin(P(Math.PI-o-s,.01,Math.PI-.01)),l=Km(this),u=Math.atan(l/this._helper.cameraToCenterDistance),d=en(.75),f=u>d?2*u*(.5+n.y/(l*2)):d,p=Math.sin(f)*a/Math.sin(P(Math.PI-o-f,.01,Math.PI-.01)),m=Math.min(c,p);this._helper._farZ=(Math.cos(Math.PI/2-t)*m+a)*1.01,this._helper._nearZ=this._helper._height/50}_calcMatrices(e=this._helper.autoCalculateNearFarZ){let t=this.centerOffset,n=this.worldCoordinateHelper,r=Wm(this.worldSize,this.center,n),i=r.x,a=r.y,o=en(Math.min(this.pitch,Vm)),s=Math.max(this._helper.cameraToCenterDistance/2,this._helper.cameraToCenterDistance+this._helper._elevation*this._helper._pixelPerMeter/Math.cos(o));e&&this._calculateNearFarZ(s,o,t);let c;c=new Float64Array(16),ce(c,this.fovInRadians,this._helper._width/this._helper._height,this._helper._nearZ,this._helper._farZ),this._invProjMatrix=new Float64Array(16),lD(this._invProjMatrix,c),c[8]=-t.x*2/this._helper._width,c[9]=t.y*2/this._helper._height,this._projectionMatrix=O(c),ne(c,c,[1,-1,1]),te(c,c,[0,0,-this._helper.cameraToCenterDistance]),ae(c,c,-this.rollInRadians),re(c,c,this.pitchInRadians),ae(c,c,-this.bearingInRadians),te(c,c,[-i,-a,0]),this._mercatorMatrix=ne([],c,[this.worldSize,this.worldSize,this.worldSize]),ne(c,c,[1,1,this._helper._pixelPerMeter]),this._pixelMatrix=ee(new Float64Array(16),this.clipSpaceToPixelsMatrix,c),te(c,c,[0,0,-this.elevation]),this._viewProjMatrix=c,this._invViewProjMatrix=j([],c);let l=[0,0,-1,1];Ve(l,l,this._invViewProjMatrix),this._cameraPosition=[l[0]/l[3],l[1]/l[3],l[2]/l[3]],this._fogMatrix=new Float64Array(16),ce(this._fogMatrix,this.fovInRadians,this.width/this.height,s,this._helper._farZ),this._fogMatrix[8]=-t.x*2/this.width,this._fogMatrix[9]=t.y*2/this.height,ne(this._fogMatrix,this._fogMatrix,[1,-1,1]),te(this._fogMatrix,this._fogMatrix,[0,0,-this.cameraToCenterDistance]),ae(this._fogMatrix,this._fogMatrix,-this.rollInRadians),re(this._fogMatrix,this._fogMatrix,this.pitchInRadians),ae(this._fogMatrix,this._fogMatrix,-this.bearingInRadians),te(this._fogMatrix,this._fogMatrix,[-i,-a,0]),ne(this._fogMatrix,this._fogMatrix,[1,1,this._helper._pixelPerMeter]),te(this._fogMatrix,this._fogMatrix,[0,0,-this.elevation]),this._pixelMatrix3D=ee(new Float64Array(16),this.clipSpaceToPixelsMatrix,c);let u=this._helper._width%2/2,d=this._helper._height%2/2,f=Math.cos(this.bearingInRadians),p=Math.sin(-this.bearingInRadians),m=i-Math.round(i)+f*u+p*d,h=a-Math.round(a)+f*d+p*u,g=new Float64Array(c);if(te(g,g,[m>.5?m-1:m,h>.5?h-1:h,0]),this._alignedProjMatrix=g,c=j(new Float64Array(16),this._pixelMatrix),!c)throw Error(`failed to invert matrix`);this._pixelMatrixInverse=c,this._clearMatrixCaches()}_clearMatrixCaches(){this._posMatrixCache.clear(),this._alignedPosMatrixCache.clear(),this._fogMatrixCacheF32.clear()}maxPitchScaleFactor(){if(!this._pixelMatrixInverse)return 1;let e=this.screenPointToMercatorCoordinate(new f(0,0)),t=[e.x*this.worldSize,e.y*this.worldSize,0,1];return Ve(t,t,this._pixelMatrix)[3]/this._helper.cameraToCenterDistance}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return Math.cos(this.pitchInRadians)*this.cameraToCenterDistance/this.pixelsPerMeter+this.elevation}getCameraLngLat(){let e=this.worldCoordinateHelper,t=this.center,n=e.worldZFromAltitude(1,t),r=n*this.worldSize,i=this._helper.cameraToCenterDistance/r,a=Jm(e.worldFromLngLat(t.lng,t.lat,this.elevation),this.pitch,this.bearing,i*n);return e.lngLatFromWorld(a.x,a.y)}getProjectionData(e){let{overscaledTileID:t,aligned:n,applyTerrainMatrix:r}=e,i=this._helper.getMercatorTileCoordinates(t),a=t?this.calculatePosMatrix(t,n,!0):null,o;return o=t?.terrainRttPosMatrix32f&&r?t.terrainRttPosMatrix32f:a||dt(),{mainMatrix:o,tileMercatorCoords:i,clippingPlane:[0,0,0,0],projectionTransition:0,fallbackMatrix:o,clipAntimeridian:!1}}isLocationOccluded(e,t,n){if(!t?.getCoverageIndex())return!1;let r=this.worldCoordinateHelper.worldFromLngLat(e.lng,e.lat);n??=t.getElevationForLngLat(e,this);let i=this._coordinateClipPoint(r,n,this._pixelMatrix3D),a=i[3];if(a<=0||i[2]>a)return!0;let o=new f(i[0]/a,i[1]/a),s=this.screenTerrainPointToMercatorCoordinate(o,t);if(s==null)return!1;let c=this.getRaySegmentFromPixel(o,-1),l=UO(c,r.x*this.worldSize,r.y*this.worldSize,n);return UO(c,s.x*this.worldSize,s.y*this.worldSize,s.z)<l*.99}getPixelScale(){return 1}getCircleRadiusCorrection(){return 1}getPitchedTextCorrection(e,t,n){return 1}transformLightDirection(e){return me(e)}getRayDirectionFromPixel(e){throw Error(`Not implemented.`)}projectTileCoordinates(e,t,n,r){let i=this.calculatePosMatrix(n),a;r==null?(a=[e,t,0,1],ND(a,a,i)):(a=[e,t,r,1],Ve(a,a,i));let o=a[3];return{point:new f(a[0]/o,a[1]/o),signedDistanceFromCamera:o,isOccluded:!1}}populateCache(e){for(let t of e)this.calculatePosMatrix(t)}getProjectionDataForCustomLayer(e=!0){let t=new Kb(0,0,0,0,0),n=this.getProjectionData({overscaledTileID:t,applyGlobeMatrix:e}),r=qm(t,this.worldSize);ee(r,this._viewProjMatrix,r);let i=[N,N,this.worldSize/this._helper.pixelsPerMeter],a=lt();return ne(a,r,i),{...n,tileMercatorCoords:[0,0,1,1],fallbackMatrix:a,mainMatrix:a}}getFastPathSimpleProjectionMatrix(e){return this.calculatePosMatrix(e)}};function BO(e){return new zO(e)}function VO(e,t){return IO(e.index,e.exaggeration,(e.near[0]+t*e.dx)/e.worldSize,(e.near[1]+t*e.dy)/e.worldSize,e.wraps)}function HO(e,t){return LO(VO(e,t),e.near[2]+t*e.dz)}function UO({near:e,far:t},n,r,i){let a=t[0]-e[0],o=t[1]-e[1],s=t[2]-e[2];return((n-e[0])*a+(r-e[1])*o+(i-e[2])*s)/(a*a+o*o+s*s)}function WO(){I(`Map cannot fit within canvas with the given bounds, padding, and/or offset.`)}function GO(e){if(e.useSlerp){if(e.k<1){let t=on(e.startEulerAngles.roll,e.startEulerAngles.pitch,e.startEulerAngles.bearing),n=on(e.endEulerAngles.roll,e.endEulerAngles.pitch,e.endEulerAngles.bearing),r=new Float64Array(4);qe(r,t,n,e.k);let i=rn(r);e.tr.setRoll(i.roll),e.tr.setPitch(i.pitch),e.tr.setBearing(i.bearing)}else e.tr.setRoll(e.endEulerAngles.roll),e.tr.setPitch(e.endEulerAngles.pitch),e.tr.setBearing(e.endEulerAngles.bearing)}else e.tr.setRoll(Ki.number(e.startEulerAngles.roll,e.endEulerAngles.roll,e.k)),e.tr.setPitch(Ki.number(e.startEulerAngles.pitch,e.endEulerAngles.pitch,e.k)),e.tr.setBearing(Ki.number(e.startEulerAngles.bearing,e.endEulerAngles.bearing,e.k))}function KO(e,t,n,r,i,a){let o=a.worldCoordinateHelper,s=Wm(a.worldSize,r.getNorthWest(),o),c=Wm(a.worldSize,r.getNorthEast(),o),l=Wm(a.worldSize,r.getSouthEast(),o),u=Wm(a.worldSize,r.getSouthWest(),o),[d,p]=o.wraps?[P(r.getSouth(),-85.051129,sn),P(r.getNorth(),-85.051129,sn)]:[r.getSouth(),r.getNorth()],{points:m,bulge:h}=Zm(o,r.getWest(),d,r.getEast(),p),g=en(-i),_=1/0,v=1/0,y=-1/0,b=-1/0;for(let e of m){let{x:t,y:n}=e.mult(a.worldSize).rotate(g);t<_&&(_=t),n<v&&(v=n),t>y&&(y=t),n>b&&(b=n)}let x=h*a.worldSize,S=new f(y+x,b+x),C=new f(_-x,v-x),w=S.sub(C),T=a.width-(n.left+n.right+t.left+t.right),E=a.height-(n.top+n.bottom+t.top+t.bottom),D=T/w.x,O=E/w.y;if(O<0||D<0||!Number.isFinite(w.x)||!Number.isFinite(w.y)){WO();return}let k=Math.min(Pt(a.scale*Math.min(D,O)),e.maxZoom),A=f.convert(e.offset),j=new f((t.left-t.right)/2,(t.top-t.bottom)/2).rotate(en(i)),ee=A.add(j).mult(a.scale/Nt(k)),te=h===0&&s.add(l).equals(c.add(u))?s.add(l).div(2):S.add(C).div(2).rotate(-g);return{center:Gm(a.worldSize,te.sub(ee),o),zoom:k,bearing:i}}var qO=class{get useGlobeControls(){return!1}handlePanInertia(e,t){let n=e.mag(),r=Math.abs(Km(t));return{easingOffset:e.mult(Math.min(r*.75/n,1)),easingCenter:t.center}}handleMapControlsRollPitchBearingZoom(e,t){e.bearingDelta&&t.setBearing(t.bearing+e.bearingDelta),e.pitchDelta&&t.setPitch(t.pitch+e.pitchDelta),e.rollDelta&&t.setRoll(t.roll+e.rollDelta),e.zoomDelta&&t.setZoom(t.zoom+e.zoomDelta)}handleMapControlsPan(e,t,n){e.around.distSqr(t.centerPoint)<.01||t.setLocationAtPoint(n,e.around,e.aroundElevation)}cameraForBoxAndBearing(e,t,n,r,i,a){return KO(e,t,n,r,i,a)}handleJumpToCenterZoom(e,t){let n=t.zoom===void 0?e.zoom:+t.zoom;e.zoom!==n&&e.setZoom(+t.zoom),t.center!==void 0&&e.setCenter(Q.convert(t.center))}handleEaseTo(e,t){let n=e.zoom,r=e.padding,i={roll:e.roll,pitch:e.pitch,bearing:e.bearing},a={roll:t.roll===void 0?e.roll:t.roll,pitch:t.pitch===void 0?e.pitch:t.pitch,bearing:t.bearing===void 0?e.bearing:t.bearing},o=t.zoom!==void 0,s=!e.isPaddingEqual(t.padding),c=!1,l=o?+t.zoom:e.zoom,u=e.centerPoint.add(t.offsetAsPoint),d=e.screenPointToLocation(u),{center:f,zoom:p}=e.applyConstrain(Q.convert(t.center||d),l??n);OO(e,f);let m=e.worldCoordinateHelper,h=Wm(e.worldSize,d,m),g=Wm(e.worldSize,f,m).sub(h),_=Nt(p-n);c=p!==n;let v=o=>{if(c&&e.setZoom(Ki.number(n,p,o)),nn(i,a)||GO({startEulerAngles:i,endEulerAngles:a,tr:e,k:o,useSlerp:i.roll!=a.roll}),s&&(e.interpolatePadding(r,t.padding,o),u=e.centerPoint.add(t.offsetAsPoint)),t.around)e.setLocationAtPoint(t.around,t.aroundPoint);else{let t=Nt(e.zoom-n),r=(p>n?Math.min(2,_):Math.max(.5,_))**(1-o),i=h.add(g.mult(o*r)).mult(t),a=Gm(e.worldSize,i,m);e.setLocationAtPoint(e.renderWorldCopies&&m.wraps?a.wrap():a,u)}},y=this._transformAtAnimationEnd(e,p,a,t.padding);return t.around?y.setLocationAtPoint(t.around,t.aroundPoint):y.setLocationAtPoint(f,y.centerPoint.add(t.offsetAsPoint)),{easeFunc:v,isZooming:c,elevationCenter:y.center}}handleFlyTo(e,t){let n=t.zoom!==void 0,r=e.zoom,i=e.applyConstrain(Q.convert(t.center||t.locationAtOffset),n?+t.zoom:r),a=i.center,o=i.zoom;OO(e,a);let s=e.worldCoordinateHelper,c=e.worldSize,l=Wm(c,t.locationAtOffset,s),u=Wm(c,a,s).sub(l),d=u.mag(),f=Nt(o-r),p=t.minZoom===void 0?e.minZoom:+t.minZoom,m=Math.max(p,e.minZoom),h=Math.min(m,r,o),g=e.applyConstrain(a,h).zoom,_=Nt(g-r),v=(t,n,i,d)=>{e.setZoom(t===1?o:r+Pt(n));let f=t===1?a:Gm(c,l.add(u.mult(i)),s);e.setLocationAtPoint(e.renderWorldCopies&&s.wraps?f.wrap():f,d)},y=this._transformAtAnimationEnd(e,o,{roll:t.roll,pitch:t.pitch,bearing:t.bearing},t.padding);return y.setLocationAtPoint(a,y.centerPoint.add(t.offsetAsPoint)),{easeFunc:v,scaleOfZoom:f,targetCenter:y.center,scaleOfMinZoom:_,pixelPathLength:d}}_transformAtAnimationEnd(e,t,n,r){let i=e.clone();return i.setZoom(t),i.setRoll(n.roll),i.setPitch(n.pitch),i.setBearing(n.bearing),i.setPadding(r),i}},JO,YO=()=>JO||=new Nl({type:new q(B.projection.type,`type`)}),XO=new Yp({fill:new Jp(128,2),line:new Jp(512,0),tile:new Jp(128,32),stencil:new Jp(128,1),circle:3}),ZO=class{constructor(){this._tileMeshCache={}}get name(){return`vertical-perspective`}get worldCoordinateHelper(){return Bm}get transitionState(){return 1}get useSubdivision(){return!0}get shaderVariantName(){return`globe`}get shaderDefine(){return`#define GLOBE`}get shaderPreludeCode(){return SO.projectionGlobe}get vertexShaderPreludeCode(){return SO.projectionMercator.vertexSource}get subdivisionGranularity(){return XO}get useGlobeControls(){return!0}destroy(){}_getMeshKey(e){return`${e.granularity.toString(36)}_${e.generateBorders?`b`:``}${e.extendToNorthPole?`n`:``}${e.extendToSouthPole?`s`:``}`}getMeshFromTileID(e,t,n,r,i){let a=(i===`stencil`?XO.stencil:XO.tile).getGranularityForZoomLevel(t.z),o=t.y===0&&r,s=t.y===(1<<t.z)-1&&r;return this._getMesh(e,{granularity:a,generateBorders:n,extendToNorthPole:o,extendToSouthPole:s})}_getMesh(e,t){let n=this._getMeshKey(t);if(n in this._tileMeshCache)return this._tileMeshCache[n];let r=Dx(e,t);return this._tileMeshCache[n]=r,r}recalculate(e){}hasTransition(){return!1}},QO=class extends Qn{constructor(e,t){super(),this._transitionable=new Sl(YO(),`projection`,t),this.setProjection(e),this._transitioning=this._transitionable.untransitioned(),this.recalculate(new yl(0)),this._mercatorProjection=new EO,this._verticalPerspectiveProjection=new ZO}get transitionState(){let e=this.properties.get(`type`);if(typeof e==`string`&&e===`mercator`)return 0;if(typeof e==`string`&&e===`vertical-perspective`)return 1;if(e instanceof Mi){if(e.from===e.to)return e.from===`mercator`?0:1;if(e.from===`vertical-perspective`&&e.to===`mercator`)return 1-e.transition;if(e.from===`mercator`&&e.to===`vertical-perspective`)return e.transition}return 1}get useGlobeRendering(){return this.transitionState>0}get currentProjection(){return this.useGlobeRendering?this._verticalPerspectiveProjection:this._mercatorProjection}get name(){return`globe`}get worldCoordinateHelper(){return this.currentProjection.worldCoordinateHelper}get useSubdivision(){return this.currentProjection.useSubdivision}get shaderVariantName(){return this.currentProjection.shaderVariantName}get shaderDefine(){return this.currentProjection.shaderDefine}get shaderPreludeCode(){return this.currentProjection.shaderPreludeCode}get vertexShaderPreludeCode(){return this.currentProjection.vertexShaderPreludeCode}get subdivisionGranularity(){return this.currentProjection.subdivisionGranularity}get useGlobeControls(){return this.transitionState>0}destroy(){this._mercatorProjection.destroy(),this._verticalPerspectiveProjection.destroy()}getMeshFromTileID(e,t,n,r,i){return this.currentProjection.getMeshFromTileID(e,t,n,r,i)}setProjection(e){this._transitionable.setValue(`type`,e?.type||`mercator`)}updateTransitions(e){this._transitioning=this._transitionable.transitioned(e,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()||this.currentProjection.hasTransition()}recalculate(e){this.properties=this._transitioning.possiblyEvaluate(e)}};function $O(e){let t=ak(e.worldSize,e.center.lat);return 2*Math.PI*t}function ek(e,t,n){let r=P(we(ik(t),ik(n)),-1,1),i=Math.acos(r),a=$O(e);return i/(2*Math.PI)*a}function tk(e,t){return[yt(e*Math.PI*2+Math.PI,Math.PI*2),2*Math.atan(Math.exp(Math.PI-t*Math.PI*2))-Math.PI*.5]}function nk(e,t){let n=Math.cos(t),r=new Float64Array(3);return r[0]=Math.sin(e)*n,r[1]=Math.sin(t),r[2]=Math.cos(e)*n,r}function rk(e,t,n,r,i){let a=1/(1<<i),o=e/N*a+n*a,s=t/N*a+r*a,c=yt(o*Math.PI*2+Math.PI,Math.PI*2),l=2*Math.atan(Math.exp(Math.PI-s*Math.PI*2))-Math.PI*.5,u=Math.cos(l),d=new Float64Array(3);return d[0]=Math.sin(c)*u,d[1]=Math.sin(l),d[2]=Math.cos(c)*u,d}function ik(e){return nk(e.lng*Math.PI/180,e.lat*Math.PI/180)}function ak(e,t){return e/(2*Math.PI)/_k(t)}function ok(e){let t=Ve(st(),[0,0,0,1],e.modelViewProjectionMatrix);return Ve(t,t,e.inverseProjectionMatrix),[t[0]/t[3],t[1]/t[3],t[2]/t[3]]}function sk(e){let t=Math.asin(e[1])/Math.PI*180,n=Math.sqrt(e[0]*e[0]+e[2]*e[2]);if(n>1e-6){let r=e[0]/n,i=e[2]/n,a=Math.acos(i);return new Q(Dt((r>0?a:-a)/Math.PI*180,-180,180),t)}return new Q(0,t)}function ck(e,t){return Ye(st(),-e.lng,-e.lat,t)}function lk(e){let t=e[0],n=e[1],r=e[2],i=e[3];return{lng:-Math.atan2(2*(i*t+n*r),1-2*(t*t+n*n))*180/Math.PI,lat:-Math.asin(P(2*(i*n-r*t),-1,1))*180/Math.PI,bearing:Math.atan2(2*(i*r+t*n),1-2*(n*n+r*r))*180/Math.PI}}var uk=Math.PI*.98;function dk(e,t){let n=e.cameraPosition,r=he(n);if(r<=1)return e.screenPointToLocation(t);let i=ct();Ce(i,n);let a=e.getRayDirectionFromPixel(t),o=-we(a,i),s=ct();be(s,a,i,o);let c=he(s);if(c<1e-9)return e.screenPointToLocation(t);let l=Math.atan2(c,o),u=Math.asin(1/r)*.9;if(l<u)return e.screenPointToLocation(t);let d=r*Math.sin(u),f=Math.asin(P(d,-1,1))-u,p=r*Math.cos(u)/Math.sqrt(Math.max(1-d*d,1e-12))-1,m=uk-f,h=l-u,g=f+p*h*m/(m+p*h),_=ct();ye(_,s,1/c);let v=ct();return ye(v,i,Math.cos(P(g,0,uk))),be(v,v,_,Math.sin(P(g,0,uk))),Ce(v,v),sk(v)}function fk(e,t,n,r,i=!0){let a=dk(e,n),o=t;if(r)o=dk(e,n.sub(r));else if(!e.isPointOnMapSurface(n))return;let s=ik(a),c=ik(o),l=ck(e.center,e.bearing),u=Te(ct(),c,s),d=Math.sqrt(we(u,u)),f=Math.acos(P(we(c,s),-1,1))/2,p=Math.sin(f),m=d?Xe(st(),u[1]/d*p,-u[0]/d*p,u[2]/d*p,Math.cos(f)):We(st()),{lng:h,lat:g,bearing:_}=lk(Ke(st(),l,m)),v=e.center.lat,y=e.zoom,b=i?pk(e,g,_):g,x=i?mk(e,n,r,h):h;e.setCenter(new Q(Dt(x,-180,180),b)),i||e.setBearing(_),e.setZoom(y+vk(v,e.center.lat))}function pk(e,t,n){return Math.abs(_t(e.bearing,n))<=90?t:t>0?90:-90}function mk(e,t,n,r){let i=e.center.lng,a=e.center.lat,o=a>=0?90:-90,s=e.locationToScreenPoint(new Q(0,o)),c=t.x-s.x,l=t.y-s.y,u=c*c+l*l,d=P(1-(sn-Math.abs(a))/12,0,1),f=d*d*(3-2*d),p=yt(r-i+180,360)-180,m=0;if(f>0&&n){let e=(c*n.y-l*n.x)/Math.max(u,400);m=(o>0?1:-1)*e*180/Math.PI}return i+(1-f)*p+f*m}function hk(e){let t=ct();return t[0]=e[0]*-e[3],t[1]=e[1]*-e[3],t[2]=e[2]*-e[3],{center:t,radius:Math.sqrt(1-e[3]*e[3])}}function gk(e,t,n){let r=ct();Pe(r,n,e);let i=ct();return be(i,e,r,t/Fe(r)),i}function _k(e){return Math.cos(Math.min(Math.abs(e),sn)*Math.PI/180)}function vk(e,t){let n=_k(e);return Pt(_k(t)/n)}function yk(e,t){return 360/$O({worldSize:e,center:{lat:t}})}function bk(e,t){let n=e.rotate(t.bearingInRadians),r=t.zoom+vk(t.center.lat,0),i=xt(1/_k(t.center.lat),1/_k(Math.min(Math.abs(t.center.lat),60)),bt(r,7,3,0,1)),a=yk(t.worldSize,t.center.lat);return new Q(t.center.lng-n.x*a*i,P(t.center.lat+n.y*a,-90,90))}function xk(e){let t=.5*e,n=Math.sin(t),r=Math.cos(t);return Math.log(n+r)-Math.log(r-n)}function Sk(e,t,n,r){let i=P(e.lat+n*r,-90,90),a=P(e.lat,-85.051129,sn),o=P(e.lat+n,-85.051129,sn);if(Math.abs(o-a)>1){let n=(Math.sign(o)===Math.sign(a)?Math.abs(a):-Math.abs(a))*Math.PI/180,s=Math.abs(o)*Math.PI/180,c=xk(n+r*(s-n)),l=xk(n),u=xk(s),d=(c-l)/(u-l);return new Q(e.lng+t*d,i)}return new Q(e.lng+t*r,i)}function Ck(e,t,n=1){let r=we(e,t),i=n*n,a=ct(),o=ct();ye(o,t,r),Pe(a,e,o);let s=i-we(a,a);if(s<0)return null;let c=we(e,e)-i,l=-r+(r<0?1:-1)*Math.sqrt(s),u=c/l,d=l,f=Math.max(u,d);return f<0?null:{tMin:Math.min(u,d),tMax:f}}function wk(e,t){let n=t*.01569612305760477,r=P((e-n)/(9*n),0,1);return r*r*(3-2*r)}var Tk=class{constructor(e){this._cachePrevious=new Map,this._cache=new Map,this._hadAnyChanges=!1,this._boundingVolumeFactory=e}swapBuffers(){if(!this._hadAnyChanges)return;let e=this._cachePrevious;this._cachePrevious=this._cache,this._cache=e,this._cache.clear(),this._hadAnyChanges=!1}getTileBoundingVolume(e,t,n,r){let i=`${e.z}_${e.x}_${e.y}_${r?.terrain?`t`:``}_${Math.round(n)}`,a=this._cache.get(i);if(a)return a;let o=this._cachePrevious.get(i);if(o)return this._cache.set(i,o),o;let s=this._boundingVolumeFactory(e,t,n,r);return this._cache.set(i,s),this._hadAnyChanges=!0,s}},Ek=class e{constructor(e,t,n,r){this.min=n,this.max=r,this.points=e,this.planes=t}static fromAabb(t,n){let r=[];for(let e=0;e<8;e++)r.push([((e|0)&1)==1?n[0]:t[0],(e>>1&1)==1?n[1]:t[1],(e>>2&1)==1?n[2]:t[2]]);return new e(r,[[-1,0,0,n[0]],[1,0,0,-t[0]],[0,-1,0,n[1]],[0,1,0,-t[1]],[0,0,-1,n[2]],[0,0,1,-t[2]]],t,n)}static fromCenterSizeAngles(t,n,r){let i=Ye([],r[0],r[1],r[2]),a=ke([],[n[0],0,0],i),o=ke([],[0,n[1],0],i),s=ke([],[0,0,n[2]],i),c=[...t],l=[...t];for(let e=0;e<8;e++)for(let n=0;n<3;n++){let r=t[n]+a[n]*(((e|0)&1)==1?1:-1)+o[n]*((e>>1&1)==1?1:-1)+s[n]*((e>>2&1)==1?1:-1);c[n]=Math.min(c[n],r),l[n]=Math.max(l[n],r)}let u=[];for(let e=0;e<8;e++){let n=[...t];_e(n,n,ye([],a,((e|0)&1)==1?1:-1)),_e(n,n,ye([],o,(e>>1&1)==1?1:-1)),_e(n,n,ye([],s,(e>>2&1)==1?1:-1)),u.push(n)}return new e(u,[[...a,-we(a,u[0])],[...o,-we(o,u[0])],[...s,-we(s,u[0])],[-a[0],-a[1],-a[2],-we(a,u[7])],[-o[0],-o[1],-o[2],-we(o,u[7])],[-s[0],-s[1],-s[2],-we(s,u[7])]],c,l)}intersectsFrustum(e){let t=!0,n=this.points.length,r=this.planes.length,i=e.planes.length,a=e.points.length;for(let r=0;r<i;r++){let i=e.planes[r],a=0;for(let e=0;e<n;e++){let t=this.points[e];i[0]*t[0]+i[1]*t[1]+i[2]*t[2]+i[3]>=0&&a++}if(a===0)return 0;a<n&&(t=!1)}if(t)return 2;for(let t=0;t<r;t++){let n=this.planes[t],r=0;for(let t=0;t<a;t++){let i=e.points[t];n[0]*i[0]+n[1]*i[1]+n[2]*i[2]+n[3]>=0&&r++}if(r===0)return 0}return 1}intersectsPlane(e){let t=this.points.length,n=0;for(let r=0;r<t;r++){let t=this.points[r];e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]>=0&&n++}return n===t?2:n===0?0:1}};function Dk(e,t,n){let r=e-t;return r<0?-r:Math.max(0,r-n)}function Ok(e,t,n,r,i){let a=e-n,o;return o=a<0?Math.min(-a,1+a-i):a>i?Math.min(Math.max(a-i,0),1-a):0,Math.max(o,Dk(t,r,i))}var kk=class{constructor(){this._boundingVolumeCache=new Tk(this._computeTileBoundingVolume)}getCenter(e){return new Q(e.center.lng,P(e.center.lat,-85.051129,sn))}prepareNextFrame(){this._boundingVolumeCache.swapBuffers()}distanceToTile2d(e,t,n,r){let i=1<<n.z,a=1/i,o=n.x/i,s=n.y/i,c=.5,l=2;return l=Math.min(l,Ok(e,t,o,s,a)),l=Math.min(l,Ok(e,t,o+c,-s-a,a)),l=Math.min(l,Ok(e,t,o+c,2-s-a,a)),l}getWrap(e,t,n){let r=1<<t.z,i=1/r,a=t.x/r,o=Dk(e.x,a,i),s=Dk(e.x,a-1,i),c=Dk(e.x,a+1,i),l=Math.min(o,s,c);return l===c?1:l===s?-1:0}allowVariableZoom(e,t){return HE(e,t)>4}allowWorldCopies(){return!1}getTileBoundingVolume(e,t,n,r){return this._boundingVolumeCache.getTileBoundingVolume(e,t,n,r)}_computeTileBoundingVolume(e,t,n,r){let i=Math.min(0,n),a=Math.max(0,n);if(r?.terrain){let n=new Kb(e.z,t,e.z,e.x,e.y),o=r.terrain.getMinMaxElevation(n);i=o.minElevation??i,a=Math.max(o.maxElevation??a,a)}if(i/=Dm,a/=Dm,i+=1,a+=1,e.z<=0)return Ek.fromAabb([-a,-a,-a],[a,a,a]);if(e.z===1)return Ek.fromAabb([e.x===0?-a:0,e.y===0?0:-a,-a],[e.x===0?0:a,e.y===0?a:0,a]);{let t=[rk(0,0,e.x,e.y,e.z),rk(N,0,e.x,e.y,e.z),rk(N,N,e.x,e.y,e.z),rk(0,N,e.x,e.y,e.z)],n=[];for(let e of t)n.push(ye([],e,a));if(a!==i)for(let e of t)n.push(ye([],e,i));e.y===0&&n.push([0,1,0]),e.y===(1<<e.z)-1&&n.push([0,-1,0]);let r=[1,1,1],o=[-1,-1,-1];for(let e of n)for(let t=0;t<3;t++)r[t]=Math.min(r[t],e[t]),o[t]=Math.max(o[t],e[t]);let s=rk(N/2,N/2,e.x,e.y,e.z),c=Te([],[0,1,0],s);Ce(c,c);let l=Te([],s,c);Ce(l,l);let u=Te([],t[2],t[1]);Ce(u,u);let d=Te([],t[0],t[3]);Ce(d,d),n.push(ye([],s,a)),e.y>=(1<<e.z)/2&&n.push(ye([],rk(4096,0,e.x,e.y,e.z),a)),e.y<(1<<e.z)/2&&n.push(ye([],rk(4096,8192,e.x,e.y,e.z),a));let f=Ak(s,n),p=Ak(l,n),m=[-s[0],-s[1],-s[2],f.max],h=[s[0],s[1],s[2],-f.min],g=[-l[0],-l[1],-l[2],p.max],_=[l[0],l[1],l[2],-p.min],v=[...u,0],y=[...d,0],b=[];return e.y===0?b.push(mt(y,v,m),mt(y,v,h)):b.push(mt(g,v,m),mt(g,v,h),mt(g,y,m),mt(g,y,h)),e.y===(1<<e.z)-1?b.push(mt(y,v,m),mt(y,v,h)):b.push(mt(_,v,m),mt(_,v,h),mt(_,y,m),mt(_,y,h)),new Ek(b,[m,h,g,_,v,y],r,o)}}};function Ak(e,t){let n=1/0,r=-1/0;for(let i of t){let t=we(e,i);n=Math.min(n,t),r=Math.max(r,t)}return{min:n,max:r}}var jk=1e-12,Mk=class e{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(e){this._helper.setMinZoom(e)}setMaxZoom(e){this._helper.setMaxZoom(e)}setMinPitch(e){this._helper.setMinPitch(e)}setMaxPitch(e){this._helper.setMaxPitch(e)}setRenderWorldCopies(e){this._helper.setRenderWorldCopies(e)}setBearing(e){this._helper.setBearing(e)}setPitch(e){this._helper.setPitch(e)}setRoll(e){this._helper.setRoll(e)}setFov(e){this._helper.setFov(e)}setZoom(e){this._helper.setZoom(e)}setCenter(e){this._helper.setCenter(e)}setElevation(e){this._helper.setElevation(e)}setMinElevationForCurrentTile(e){this._helper.setMinElevationForCurrentTile(e)}setPadding(e){this._helper.setPadding(e)}interpolatePadding(e,t,n){this._helper.interpolatePadding(e,t,n)}isPaddingEqual(e){return this._helper.isPaddingEqual(e)}resize(e,t,n=!0){this._helper.resize(e,t,n)}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(e){this._helper.setMaxBounds(e)}setConstrainOverride(e){this._helper.setConstrainOverride(e)}overrideNearFarZ(e,t){this._helper.overrideNearFarZ(e,t)}clearNearFarZOverride(){this._helper.clearNearFarZOverride()}getCameraQueryGeometry(e){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),e)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get constrainOverride(){return this._helper.constrainOverride}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}setTransitionState(e){}constructor(e,t){this._cachedClippingPlane=st(),this._projectionMatrix=ut(),this._globeViewProjMatrix32f=dt(),this._globeViewProjMatrixF64=ut(),this._globeViewProjMatrixF64Inverted=ut(),this._globeProjMatrixInverted=ut(),this._cameraPosition=ct(),this.defaultConstrain=(e,t)=>{let n=P(+t,this.minZoom+vk(0,e.lat),this.maxZoom),r=this._getMaxLatitude(n);return{center:new Q(e.lng,P(e.lat,-r,r)),zoom:n}},this.applyConstrain=(e,t)=>this._helper.applyConstrain(e,t),this._helper=t??new AO({calcMatrices:()=>this._calcMatrices(),defaultConstrain:(e,t)=>this.defaultConstrain(e,t)},e),this._coveringTilesDetailsProvider=new kk}clone(){let t=new e;return t.apply(this,!1),t}apply(e,t){this._helper.apply(e,t)}get projectionMatrix(){return this._projectionMatrix}get modelViewProjectionMatrix(){return this._globeViewProjMatrixF64}get inverseProjectionMatrix(){return this._globeProjMatrixInverted}get cameraPosition(){let e=ct();return e[0]=this._cameraPosition[0],e[1]=this._cameraPosition[1],e[2]=this._cameraPosition[2],e}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}getProjectionData(e){let{overscaledTileID:t,applyGlobeMatrix:n}=e,r=this._helper.getMercatorTileCoordinates(t);return{mainMatrix:this._globeViewProjMatrix32f,tileMercatorCoords:r,clippingPlane:this._cachedClippingPlane,projectionTransition:+!!n,fallbackMatrix:this._globeViewProjMatrix32f,clipAntimeridian:t?.canonical.z===0}}_computeClippingPlane(e){let t=this.pitchInRadians,n=this.cameraToCenterDistance/e,r=Math.sin(t)*n,i=Math.cos(t)*n+1,a=1/Math.sqrt(r*r+i*i)*1,o=-r,s=i,c=Math.sqrt(o*o+s*s);o/=c,s/=c;let l=[0,o,s];Me(l,l,[0,0,0],-this.bearingInRadians),Ae(l,l,[0,0,0],-1*this.center.lat*Math.PI/180),je(l,l,[0,0,0],this.center.lng*Math.PI/180);let u=1/he(l);return ye(l,l,u),[...l,-a*u]}isLocationOccluded(e,t,n){let r=t?.getCoverageIndex();n??=r?t.getElevationForLngLat(e,this):0;let i=Ik(e,n);if(!this.isSurfacePointVisible(i))return!0;if(!r)return!1;let a=this._projectSurfacePointToScreen(i),o=this.cameraPosition,s=this.getRayDirectionFromPixel(a),c=Lk(o,s,i);if(c<=0)return!0;let l=this.screenTerrainPointToMercatorCoordinate(a,t);return l!=null&&Lk(o,s,Ik(l.toLngLat(),l.z))<c*.99}transformLightDirection(e){let t=this._helper._center.lng*Math.PI/180,n=this._helper._center.lat*Math.PI/180,r=Math.cos(n),i=[Math.sin(t)*r,Math.sin(n),Math.cos(t)*r],a=[i[2],0,-i[0]],o=[0,0,0];Te(o,a,i),Ce(a,a),Ce(o,o);let s=[a[0]*e[0]+o[0]*e[1]+i[0]*e[2],a[1]*e[0]+o[1]*e[1]+i[1]*e[2],a[2]*e[0]+o[2]*e[1]+i[2]*e[2]],c=[0,0,0];return Ce(c,s),c}getPixelScale(){return 1/_k(this._helper._center.lat)}getCircleRadiusCorrection(){return _k(this._helper._center.lat)}getPitchedTextCorrection(e,t,n){let r=Hm(e,t,n.canonical),i=tk(r.x,r.y);return this.getCircleRadiusCorrection()/Math.cos(i[1])}projectTileCoordinates(e,t,n,r){let i=n.canonical,a=rk(e,t,i.x,i.y,i.z),o=1+(r??0)/Dm,s=a[0]*o,c=a[1]*o,l=a[2]*o,u=[s,c,l,1];Ve(u,u,this._globeViewProjMatrixF64);let d;if(o<=1){let e=this._cachedClippingPlane;d=e[0]*a[0]+e[1]*a[1]+e[2]*a[2]+e[3]<0}else d=this._isLineOfSightBlocked(s,c,l);return{point:new f(u[0]/u[3],u[1]/u[3]),signedDistanceFromCamera:u[3],isOccluded:d}}_isLineOfSightBlocked(e,t,n){let r=this._cameraPosition,i=e-r[0],a=t-r[1],o=n-r[2],s=i*i+a*a+o*o;if(s===0)return!1;let c=P(-(r[0]*i+r[1]*a+r[2]*o)/s,0,1),l=r[0]+c*i,u=r[1]+c*a,d=r[2]+c*o;return l*l+u*u+d*d<1}_calcMatrices(e=this._helper.autoCalculateNearFarZ){let t=ak(this.worldSize,this.center.lat),n=lt();e&&(this._helper._nearZ=.5,this._helper._farZ=this.cameraToCenterDistance+t*2),ce(n,this.fovInRadians,this.width/this.height,this._helper._nearZ,this._helper._farZ);let r=this.centerOffset;n[8]=-r.x*2/this._helper._width,n[9]=r.y*2/this._helper._height,this._projectionMatrix=O(n),this._globeProjMatrixInverted=lt(),j(this._globeProjMatrixInverted,n),te(n,n,[0,0,-this.cameraToCenterDistance]),ae(n,n,this.rollInRadians),re(n,n,-this.pitchInRadians),ae(n,n,this.bearingInRadians),te(n,n,[0,0,-t]);let i=ct();i[0]=t,i[1]=t,i[2]=t,re(n,n,this.center.lat*Math.PI/180),ie(n,n,-this.center.lng*Math.PI/180),ne(n,n,i),this._globeViewProjMatrixF64=n,this._globeViewProjMatrix32f=new Float32Array(n),this._globeViewProjMatrixF64Inverted=lt(),j(this._globeViewProjMatrixF64Inverted,n);let a=ct();this._cameraPosition=ct(),this._cameraPosition[2]=this.cameraToCenterDistance/t,Me(this._cameraPosition,this._cameraPosition,a,-this.rollInRadians),Ae(this._cameraPosition,this._cameraPosition,a,this.pitchInRadians),Me(this._cameraPosition,this._cameraPosition,a,-this.bearingInRadians),_e(this._cameraPosition,this._cameraPosition,[0,0,1]),Ae(this._cameraPosition,this._cameraPosition,a,-this.center.lat*Math.PI/180),je(this._cameraPosition,this._cameraPosition,a,this.center.lng*Math.PI/180),this._cachedClippingPlane=this._computeClippingPlane(t);let o=O(this._globeViewProjMatrixF64Inverted);ne(o,o,[1,1,-1]),this._cachedFrustum=NE.fromInvProjectionMatrix(o,1,0,this._cachedClippingPlane,!0)}calculateFogMatrix(e){I(`calculateFogMatrix is not supported on globe projection.`);let t=lt();return A(t),t}getVisibleUnwrappedCoordinates(e){return[new Gb(0,e)]}getCameraFrustum(){return this._cachedFrustum}getClippingPlane(){return this._cachedClippingPlane}getCoveringTilesDetailsProvider(){return this._coveringTilesDetailsProvider}recalculateZoomAndCenter(e){e?I(`terrain is not fully supported on vertical perspective projection.`):this._helper.recalculateZoomAndCenter(0)}maxPitchScaleFactor(){return 1}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return(he(this._cameraPosition)-1)*Dm}getCameraLngLat(){let e=ct();return Ce(e,this._cameraPosition),sk(e)}get worldCoordinateHelper(){return this._helper.worldCoordinateHelper}populateCache(e){}getBounds(){let e=this.width*.5,t=this.height*.5,n=[new f(0,0),new f(e,0),new f(this.width,0),new f(this.width,t),new f(this.width,this.height),new f(e,this.height),new f(0,this.height),new f(0,t)],r=[];for(let e of n)r.push(this.unprojectScreenPoint(e));let i=0,a=0,o=0,s=0,c=this.center;for(let e of r){let t=_t(c.lng,e.lng),n=_t(c.lat,e.lat);t<a&&(a=t),t>i&&(i=t),n<s&&(s=n),n>o&&(o=n)}let l=[c.lng+a,c.lat+s,c.lng+i,c.lat+o];return this.isSurfacePointOnScreen([0,1,0])&&(l[3]=90,l[0]=-180,l[2]=180),this.isSurfacePointOnScreen([0,-1,0])&&(l[1]=-90,l[0]=-180,l[2]=180),new Rb(l)}_getMaxLatitude(e){let t=en(4.948870999999997),n=ak(this.tileSize*Nt(e),sn)*t,r=Math.min(this.width,this.height)/2;return sn+tn(t*(Math.min(n,r)*bt(n,r,r*4,1,0))/n)}calculateCenterFromCameraLngLatAlt(e,t,n,r){return this._helper.calculateCenterFromCameraLngLatAlt(e,t,n,r)}calculateCameraOptionsFromTo(e,t,n,r){let i=Q.convert(n),a=ik(Q.convert(e));ye(a,a,1+t/Dm);let o=ik(i),s=ye(ct(),o,1+r/Dm),c=ve(ct(),a,o),l=he(c);if(l<jk||xe(a,s)<jk)throw Error(`Can't calculate camera options with same From and To`);let u=ct();je(c,c,u,-en(i.lng)),Ae(c,c,u,en(i.lat));let d=tn(Math.acos(P(c[2]/l,-1,1))),f=Math.hypot(c[0],c[1])<l*1e-9?this.bearing:tn(Math.atan2(-c[0],-c[1]));return{center:i,elevation:r,zoom:Pt(this.cameraToCenterDistance/l/ak(this.tileSize,i.lat)),pitch:d,bearing:f}}setLocationAtPoint(e,t,n){let r=ik(this.unprojectScreenPoint(t)),i=ik(e),a=ct();Ne(a);let o=ct();je(o,r,a,-this.center.lng*Math.PI/180),Ae(o,o,a,this.center.lat*Math.PI/180);let s=i[0]*i[0]+i[2]*i[2],c=o[0]*o[0];if(s<c)return;let l=Math.sqrt(s-c),u=-l,d=gt(i[0],i[2],o[0],l),f=gt(i[0],i[2],o[0],u),p=ct();je(p,i,a,-d);let m=gt(p[1],p[2],o[1],o[2]),h=ct();je(h,i,a,-f);let g=gt(h[1],h[2],o[1],o[2]),_=Math.PI*.5,v=m>=-_&&m<=_,y=g>=-_&&g<=_,b,x;if(v&&y){let e=this.center.lng*Math.PI/180,t=this.center.lat*Math.PI/180,n=vt(d,e),r=vt(m,t),i=vt(f,e),a=vt(g,t);n+r<i+a?(b=d,x=m):(b=f,x=g)}else if(v)b=d,x=m;else if(y)b=f,x=g;else return;let S=b/Math.PI*180,C=x/Math.PI*180,w=this.center.lat;this.setCenter(new Q(S,P(C,-90,90))),this.setZoom(this.zoom+vk(w,this.center.lat))}locationToScreenPoint(e,t){let n=ik(e);return t&&ye(n,n,1+t.getElevationForLngLat(e,this)/Dm),this._projectSurfacePointToScreen(n)}_projectSurfacePointToScreen(e){let t=st();return Ve(t,[...e,1],this._globeViewProjMatrixF64),t[0]/=t[3],t[1]/=t[3],new f((t[0]*.5+.5)*this.width,(-t[1]*.5+.5)*this.height)}screenPointToMercatorCoordinate(e,t){if(t){let n=this.screenTerrainPointToMercatorCoordinate(e,t);if(n)return n}return zm.fromLngLat(this.unprojectScreenPoint(e))}screenTerrainPointToMercatorCoordinate(e,t){let n=t.getCoverageIndex();if(!n)return null;let r=this.cameraPosition,i=this.getRayDirectionFromPixel(e),a=Ck(r,i,1+n.maxElevation/Dm);if(!a)return null;let o=Ck(r,i,1+n.minElevation/Dm),s=Math.max(a.tMin,0),c=o?o.tMin:a.tMax;if(c<=s)return null;let l={index:n,exaggeration:t.exaggeration,origin:r,direction:i},u=0;for(let e=0;e<=256;e++){let t=s+(c-s)*e/256;if(Fk(l,t)){let{hi:e}=RO(l,Fk,u,t,1e-12),{sample:n,mercator:r}=Pk(l,e);return new zm(r.x,r.y,n.elevation)}u=t}return null}screenPointToLocation(e,t){return this.screenPointToMercatorCoordinate(e,t)?.toLngLat()}screenPointToLocationAtElevation(e,t){return this.screenPointToLocation(e)}isPointOnMapSurface(e,t){let n=this._cameraPosition;return!!Ck(n,this.getRayDirectionFromPixel(e))}getRayDirectionFromPixel(e){let t=st();t[0]=e.x/this.width*2-1,t[1]=(e.y/this.height*2-1)*-1,t[2]=1,t[3]=1,Ve(t,t,this._globeViewProjMatrixF64Inverted),t[0]/=t[3],t[1]/=t[3],t[2]/=t[3];let n=ct();n[0]=t[0]-this._cameraPosition[0],n[1]=t[1]-this._cameraPosition[1],n[2]=t[2]-this._cameraPosition[2];let r=ct();return Ce(r,n),r}isSurfacePointVisible(e){let t=this._cachedClippingPlane;return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]>=0}isSurfacePointOnScreen(e){if(!this.isSurfacePointVisible(e))return!1;let t=st();return Ve(t,[...e,1],this._globeViewProjMatrixF64),t[0]/=t[3],t[1]/=t[3],t[2]/=t[3],t[0]>-1&&t[0]<1&&t[1]>-1&&t[1]<1&&t[2]>-1&&t[2]<1}unprojectScreenPoint(e){let t=this._cameraPosition,n=this.getRayDirectionFromPixel(e),r=Ck(t,n);if(r){let e=ct();_e(e,t,[n[0]*r.tMin,n[1]*r.tMin,n[2]*r.tMin]);let i=ct();return Ce(i,e),sk(i)}let i=this._cachedClippingPlane,a=i[0]*n[0]+i[1]*n[1]+i[2]*n[2],o=-pt(i,t)/a,s=ct();if(o>0)_e(s,t,[n[0]*o,n[1]*o,n[2]*o]);else{let e=ct();_e(e,t,[n[0]*2,n[1]*2,n[2]*2]);let r=pt(this._cachedClippingPlane,e);Pe(s,e,[this._cachedClippingPlane[0]*r,this._cachedClippingPlane[1]*r,this._cachedClippingPlane[2]*r])}let c=hk(i);return sk(gk(c.center,c.radius,s))}getProjectionDataForCustomLayer(e=!0){let t=this.getProjectionData({overscaledTileID:new Kb(0,0,0,0,0),applyGlobeMatrix:e});return t.tileMercatorCoords=[0,0,1,1],t}getFastPathSimpleProjectionMatrix(e){}};function Nk(e){return new Mk(e)}function Pk(e,t){let n=ct();be(n,e.origin,e.direction,t);let r=he(n),i=ct();ye(i,n,1/r);let a=sk(i),o=zm.fromLngLat(a),s=new zm(o.x,P(o.y,0,.999999999)),c=IO(e.index,e.exaggeration,s.x,s.y,!1),l=Math.abs(a.lat)>85.051129?0:c.elevation;return{sample:{...c,elevation:l},radius:r,mercator:s}}function Fk(e,t){let{sample:n,radius:r}=Pk(e,t);return LO(n,(r-1)*Dm)}function Ik(e,t){let n=ik(e);return ye(n,n,1+t/Dm)}function Lk(e,t,n){return we(ve(ct(),n,e),t)}var Rk=class e{get pixelsToClipSpaceMatrix(){return this._helper.pixelsToClipSpaceMatrix}get clipSpaceToPixelsMatrix(){return this._helper.clipSpaceToPixelsMatrix}get pixelsToGLUnits(){return this._helper.pixelsToGLUnits}get centerOffset(){return this._helper.centerOffset}get size(){return this._helper.size}get rotationMatrix(){return this._helper.rotationMatrix}get centerPoint(){return this._helper.centerPoint}get pixelsPerMeter(){return this._helper.pixelsPerMeter}setMinZoom(e){this._helper.setMinZoom(e)}setMaxZoom(e){this._helper.setMaxZoom(e)}setMinPitch(e){this._helper.setMinPitch(e)}setMaxPitch(e){this._helper.setMaxPitch(e)}setRenderWorldCopies(e){this._helper.setRenderWorldCopies(e)}setBearing(e){this._helper.setBearing(e)}setPitch(e){this._helper.setPitch(e)}setRoll(e){this._helper.setRoll(e)}setFov(e){this._helper.setFov(e)}setZoom(e){this._helper.setZoom(e)}setCenter(e){this._helper.setCenter(e)}setElevation(e){this._helper.setElevation(e)}setMinElevationForCurrentTile(e){this._helper.setMinElevationForCurrentTile(e)}setPadding(e){this._helper.setPadding(e)}interpolatePadding(e,t,n){this._helper.interpolatePadding(e,t,n)}isPaddingEqual(e){return this._helper.isPaddingEqual(e)}resize(e,t,n=!0){this._helper.resize(e,t,n)}getMaxBounds(){return this._helper.getMaxBounds()}setMaxBounds(e){this._helper.setMaxBounds(e)}setConstrainOverride(e){this._helper.setConstrainOverride(e)}overrideNearFarZ(e,t){this._helper.overrideNearFarZ(e,t)}clearNearFarZOverride(){this._helper.clearNearFarZOverride()}getCameraQueryGeometry(e){return this._helper.getCameraQueryGeometry(this.getCameraPoint(),e)}get tileSize(){return this._helper.tileSize}get tileZoom(){return this._helper.tileZoom}get scale(){return this._helper.scale}get worldSize(){return this._helper.worldSize}get width(){return this._helper.width}get height(){return this._helper.height}get lngRange(){return this._helper.lngRange}get latRange(){return this._helper.latRange}get minZoom(){return this._helper.minZoom}get maxZoom(){return this._helper.maxZoom}get zoom(){return this._helper.zoom}get center(){return this._helper.center}get minPitch(){return this._helper.minPitch}get maxPitch(){return this._helper.maxPitch}get pitch(){return this._helper.pitch}get pitchInRadians(){return this._helper.pitchInRadians}get roll(){return this._helper.roll}get rollInRadians(){return this._helper.rollInRadians}get bearing(){return this._helper.bearing}get bearingInRadians(){return this._helper.bearingInRadians}get fov(){return this._helper.fov}get fovInRadians(){return this._helper.fovInRadians}get elevation(){return this._helper.elevation}get minElevationForCurrentTile(){return this._helper.minElevationForCurrentTile}get padding(){return this._helper.padding}get unmodified(){return this._helper.unmodified}get renderWorldCopies(){return this._helper.renderWorldCopies}get cameraToCenterDistance(){return this._helper.cameraToCenterDistance}get constrainOverride(){return this._helper.constrainOverride}get nearZ(){return this._helper.nearZ}get farZ(){return this._helper.farZ}get autoCalculateNearFarZ(){return this._helper.autoCalculateNearFarZ}get isGlobeRendering(){return this._globeness>0}setTransitionState(e){this._globeness=e,this._calcMatrices(),this._verticalPerspectiveTransform.getCoveringTilesDetailsProvider().prepareNextFrame(),this._mercatorTransform.getCoveringTilesDetailsProvider().prepareNextFrame()}get currentTransform(){return this.isGlobeRendering?this._verticalPerspectiveTransform:this._mercatorTransform}constructor(e){this._globeness=1,this.defaultConstrain=(e,t)=>this.currentTransform.defaultConstrain(e,t),this.applyConstrain=(e,t)=>this._helper.applyConstrain(e,t),this._helper=new AO({calcMatrices:()=>this._calcMatrices(),defaultConstrain:(e,t)=>this.defaultConstrain(e,t)},e),this._globeness=1,this._mercatorTransform=new zO(void 0,this._helper),this._verticalPerspectiveTransform=new Mk(void 0,this._helper)}clone(){let t=new e;return t._globeness=this._globeness,t.apply(this,!1),t}apply(e,t){this._helper.apply(e,t)}get projectionMatrix(){return this.currentTransform.projectionMatrix}get modelViewProjectionMatrix(){return this.currentTransform.modelViewProjectionMatrix}get inverseProjectionMatrix(){return this.currentTransform.inverseProjectionMatrix}get cameraPosition(){return this.currentTransform.cameraPosition}getProjectionData(e){let t=this._mercatorTransform.getProjectionData(e),n=this._verticalPerspectiveTransform.getProjectionData(e);return{mainMatrix:this.isGlobeRendering?n.mainMatrix:t.mainMatrix,clippingPlane:n.clippingPlane,tileMercatorCoords:n.tileMercatorCoords,projectionTransition:e.applyGlobeMatrix?this._globeness:0,fallbackMatrix:t.fallbackMatrix,clipAntimeridian:n.clipAntimeridian}}isLocationOccluded(e,t,n){return this.currentTransform.isLocationOccluded(e,t,n)}transformLightDirection(e){return this.currentTransform.transformLightDirection(e)}getPixelScale(){return xt(this._mercatorTransform.getPixelScale(),this._verticalPerspectiveTransform.getPixelScale(),this._globeness)}getCircleRadiusCorrection(){return this.currentTransform.getCircleRadiusCorrection()}getPitchedTextCorrection(e,t,n){return xt(this._mercatorTransform.getPitchedTextCorrection(e,t,n),this._verticalPerspectiveTransform.getPitchedTextCorrection(e,t,n),this._globeness)}projectTileCoordinates(e,t,n,r){return this.currentTransform.projectTileCoordinates(e,t,n,r)}_calcMatrices(){this._helper._width&&this._helper._height&&(this._verticalPerspectiveTransform._calcMatrices(),this._mercatorTransform._calcMatrices(this.autoCalculateNearFarZ&&!this.isGlobeRendering))}calculateFogMatrix(e){return this.currentTransform.calculateFogMatrix(e)}getVisibleUnwrappedCoordinates(e){return this.currentTransform.getVisibleUnwrappedCoordinates(e)}getCameraFrustum(){return this.currentTransform.getCameraFrustum()}getClippingPlane(){return this.currentTransform.getClippingPlane()}getCoveringTilesDetailsProvider(){return this.currentTransform.getCoveringTilesDetailsProvider()}recalculateZoomAndCenter(e){this.currentTransform.recalculateZoomAndCenter(e)}maxPitchScaleFactor(){return this._mercatorTransform.maxPitchScaleFactor()}getCameraPoint(){return this._helper.getCameraPoint()}getCameraAltitude(){return this.currentTransform.getCameraAltitude()}getCameraLngLat(){return this.currentTransform.getCameraLngLat()}get worldCoordinateHelper(){return this._helper.worldCoordinateHelper}populateCache(e){this._mercatorTransform.populateCache(e),this._verticalPerspectiveTransform.populateCache(e)}getBounds(){return this.currentTransform.getBounds()}calculateCenterFromCameraLngLatAlt(e,t,n,r){return this._helper.calculateCenterFromCameraLngLatAlt(e,t,n,r)}calculateCameraOptionsFromTo(e,t,n,r){return this.currentTransform.calculateCameraOptionsFromTo(e,t,n,r)}setLocationAtPoint(e,t,n){this.currentTransform.setLocationAtPoint(e,t,n)}locationToScreenPoint(e,t){return this.currentTransform.locationToScreenPoint(e,t)}screenPointToMercatorCoordinate(e,t){return this.currentTransform.screenPointToMercatorCoordinate(e,t)}screenTerrainPointToMercatorCoordinate(e,t){return this.currentTransform.screenTerrainPointToMercatorCoordinate(e,t)}screenPointToLocation(e,t){return this.currentTransform.screenPointToLocation(e,t)}screenPointToLocationAtElevation(e,t){return this.currentTransform.screenPointToLocationAtElevation(e,t)}isPointOnMapSurface(e,t){return this.currentTransform.isPointOnMapSurface(e,t)}getRayDirectionFromPixel(e){return this._verticalPerspectiveTransform.getRayDirectionFromPixel(e)}getProjectionDataForCustomLayer(e=!0){let t=this._mercatorTransform.getProjectionDataForCustomLayer(e);if(!this.isGlobeRendering)return t;let n=this._verticalPerspectiveTransform.getProjectionDataForCustomLayer(e);return n.fallbackMatrix=t.mainMatrix,n.projectionTransition=this._globeness,n}getFastPathSimpleProjectionMatrix(e){return this.currentTransform.getFastPathSimpleProjectionMatrix(e)}};function zk(e){return new Rk(e)}var Bk=class e{get useGlobeControls(){return!0}handlePanInertia(e,t){let n=bk(e,t);return Math.abs(n.lng-t.center.lng)>180&&(n.lng=t.center.lng+179.5*Math.sign(n.lng-t.center.lng)),{easingCenter:n,easingOffset:new f(0,0)}}handleMapControlsRollPitchBearingZoom(e,t){let n=e.around,r=t.screenPointToLocation(n);e.bearingDelta&&t.setBearing(t.bearing+e.bearingDelta),e.pitchDelta&&t.setPitch(t.pitch+e.pitchDelta),e.rollDelta&&t.setRoll(t.roll+e.rollDelta);let i=t.zoom;e.zoomDelta&&t.setZoom(t.zoom+e.zoomDelta);let a=t.zoom-i;if(a===0)return;let o=_t(t.center.lng,r.lng),s=o/(Math.abs(o/180)+1),c=_t(t.center.lat,r.lat),l=t.getRayDirectionFromPixel(n),u=t.cameraPosition,d=we(u,l)*-1,f=ct();_e(f,u,[l[0]*d,l[1]*d,l[2]*d]);let p=he(f),m=p-1,h=Math.exp(-Math.max(m-.3,0)*.5),g=bt(p,.95,.999,0,1),_=bt(ak(t.worldSize,t.center.lat)/Math.min(t.width,t.height),.9,.5,1,.25),v=Math.min(h,xt(1,_,g)),y=(1-Nt(-a))*v,b=t.center.lat,x=t.zoom,S=new Q(t.center.lng+s*y,P(t.center.lat+c*y,-90,90));t.setLocationAtPoint(r,n);let C=t.center,w=bt(Math.abs(o),45,85,0,1),T=Math.max(w,g)**.25,E=_t(C.lng,S.lng),D=_t(C.lat,S.lat);t.setCenter(new Q(C.lng+E*T,P(C.lat+D*T,-90,90)).wrap()),t.setZoom(x+vk(b,t.center.lat))}handleMapControlsPan(e,t,n){e.panDelta&&fk(t,n,t.isPointOnMapSurface(e.around)?e.around:t.centerPoint,e.panDelta)}cameraForBoxAndBearing(t,n,r,i,a,o){let s=KO(t,n,r,i,a,o);if(!s)return;let c=n.left/o.width*2-1,l=(o.width-n.right)/o.width*2-1,u=n.top/o.height*-2+1,d=(o.height-n.bottom)/o.height*-2+1,f=_t(i.getWest(),i.getEast())<0,p=f?i.getEast():i.getWest(),m=f?i.getWest():i.getEast(),h=Math.max(i.getNorth(),i.getSouth()),g=Math.min(i.getNorth(),i.getSouth()),_=p+_t(p,m)*.5,v=h+_t(h,g)*.5,y=o.clone();y.setCenter(s.center),y.setPadding(r),y.setBearing(s.bearing),y.setPitch(0),y.setRoll(0),y.setZoom(s.zoom);let b=y.modelViewProjectionMatrix,x=[ik(i.getNorthWest()),ik(i.getNorthEast()),ik(i.getSouthWest()),ik(i.getSouthEast()),ik(new Q(m,v)),ik(new Q(p,v)),ik(new Q(_,h)),ik(new Q(_,g))],S=ik(s.center),C=1/0;for(let t of x)c<0&&(C=e.getLesserNonNegativeNonNull(C,e.solveVectorScale(t,S,b,`x`,c))),l>0&&(C=e.getLesserNonNegativeNonNull(C,e.solveVectorScale(t,S,b,`x`,l))),u>0&&(C=e.getLesserNonNegativeNonNull(C,e.solveVectorScale(t,S,b,`y`,u))),d<0&&(C=e.getLesserNonNegativeNonNull(C,e.solveVectorScale(t,S,b,`y`,d)));if(!Number.isFinite(C)||C===0)WO();else return s.zoom=Math.min(y.zoom+Pt(C),t.maxZoom),s}handleJumpToCenterZoom(e,t){let n=e.center.lat,r=t.center?Q.convert(t.center):e.center;e.setCenter(e.applyConstrain(r,e.zoom).center.wrap());let i=t.zoom===void 0?e.zoom+vk(n,e.center.lat):+t.zoom;e.zoom!==i&&(e.setZoom(i),e.setCenter(e.applyConstrain(r,e.zoom).center.wrap()))}handleEaseTo(e,t){let n=e.zoom,r=e.center,i=e.padding,a={roll:e.roll,pitch:e.pitch,bearing:e.bearing},o={roll:t.roll===void 0?e.roll:t.roll,pitch:t.pitch===void 0?e.pitch:t.pitch,bearing:t.bearing===void 0?e.bearing:t.bearing},s=t.zoom!==void 0,c=!e.isPaddingEqual(t.padding),l=!1,u=t.center?Q.convert(t.center):r,d=e.applyConstrain(u,s?+t.zoom:n).center;OO(e,d);let p=e.clone();p.setCenter(d),p.setZoom(s?+t.zoom:n+vk(r.lat,u.lat)),p.setBearing(t.bearing);let m=new f(P(e.centerPoint.x+t.offsetAsPoint.x,0,e.width),P(e.centerPoint.y+t.offsetAsPoint.y,0,e.height));p.setLocationAtPoint(d,m);let h=(t.offset&&t.offsetAsPoint.mag())>0?p.center:d,g=s?+t.zoom:n+vk(r.lat,h.lat),_=n+vk(r.lat,0),v=g+vk(h.lat,0),y=_t(r.lng,h.lng),b=_t(r.lat,h.lat),x=Nt(v-_);return l=g!==n,{easeFunc:n=>{if(nn(a,o)||GO({startEulerAngles:a,endEulerAngles:o,tr:e,k:n,useSlerp:a.roll!=o.roll}),c&&e.interpolatePadding(i,t.padding,n),t.around)I(`Easing around a point is not supported under globe projection.`),e.setLocationAtPoint(t.around,t.aroundPoint);else{let t=n*(v>_?Math.min(2,x):Math.max(.5,x))**(1-n),i=Sk(r,y,b,t);e.setCenter(i.wrap())}if(l){let t=Ki.number(_,v,n)+vk(0,e.center.lat);e.setZoom(t)}n===1&&!t.around&&e.setCenter(h.wrap())},isZooming:l,elevationCenter:h}}handleFlyTo(e,t){let n=t.zoom!==void 0,r=e.center,i=e.zoom,a=e.padding,o=!e.isPaddingEqual(t.padding),s=e.applyConstrain(Q.convert(t.center||t.locationAtOffset),n?+t.zoom:i).center,c=n?+t.zoom:e.zoom+vk(e.center.lat,s.lat),l=e.clone();l.setCenter(s),l.setZoom(c),l.setBearing(t.bearing);let u=new f(P(e.centerPoint.x+t.offsetAsPoint.x,0,e.width),P(e.centerPoint.y+t.offsetAsPoint.y,0,e.height));l.setLocationAtPoint(s,u);let d=l.center;OO(e,d);let p=ek(e,r,d),m=i+vk(r.lat,0),h=c+vk(d.lat,0),g=Nt(h-m),_=typeof t.minZoom==`number`?+t.minZoom:e.minZoom,v=Math.max(_,e.minZoom)+vk(d.lat,0),y=Math.min(v,m,h)+vk(0,d.lat),b=Nt(e.applyConstrain(d,y).zoom+vk(d.lat,0)-m),x=_t(r.lng,d.lng),S=_t(r.lat,d.lat);return{easeFunc:(n,i,s,l)=>{let u=Sk(r,x,S,s);o&&e.interpolatePadding(a,t.padding,n);let f=n===1?d:u;e.setCenter(f.wrap());let p=m+Pt(i);e.setZoom(n===1?c:p+vk(0,f.lat)),n===1&&e.setCenter(d.wrap())},scaleOfZoom:g,targetCenter:d,scaleOfMinZoom:b,pixelPathLength:p}}static solveVectorScale(e,t,n,r,i){let a=i,o=r===`x`?[n[0],n[4],n[8],n[12]]:[n[1],n[5],n[9],n[13]],s=[n[3],n[7],n[11],n[15]],c=e[0]*o[0]+e[1]*o[1]+e[2]*o[2],l=e[0]*s[0]+e[1]*s[1]+e[2]*s[2],u=t[0]*o[0]+t[1]*o[1]+t[2]*o[2],d=t[0]*s[0]+t[1]*s[1]+t[2]*s[2],f=(u+o[3]-a*d-a*s[3])/(u-c-a*d+a*l);return u+a*l===c+a*d||s[3]*(c-u)+o[3]*(d-l)+c*d===u*l?null:f}static getLesserNonNegativeNonNull(e,t){return t!==null&&t>=0&&t<e?t:e}},Vk=class{constructor(e){this._globe=e,this._mercatorCameraHelper=new qO,this._verticalPerspectiveCameraHelper=new Bk}get useGlobeControls(){return this._globe.useGlobeRendering}get currentHelper(){return this.useGlobeControls?this._verticalPerspectiveCameraHelper:this._mercatorCameraHelper}handlePanInertia(e,t){return this.currentHelper.handlePanInertia(e,t)}handleMapControlsRollPitchBearingZoom(e,t){this.currentHelper.handleMapControlsRollPitchBearingZoom(e,t)}handleMapControlsPan(e,t,n){this.currentHelper.handleMapControlsPan(e,t,n)}cameraForBoxAndBearing(e,t,n,r,i,a){return this.currentHelper.cameraForBoxAndBearing(e,t,n,r,i,a)}handleJumpToCenterZoom(e,t){this.currentHelper.handleJumpToCenterZoom(e,t)}handleEaseTo(e,t){return this.currentHelper.handleEaseTo(e,t)}handleFlyTo(e,t){return this.currentHelper.handleFlyTo(e,t)}};function Hk(e,t,n){let r={constrainOverride:t};if(Array.isArray(e)){let t=Uk(e);t&&I(`Projection expressions cannot use the registered projection "${t}", which only works as a plain name. Falling back to the globe projection.`);let i=new QO({type:e},n);return{projection:i,transform:zk(r),cameraHelper:new Vk(i)}}let i=hx(e);if(i){let e=new dx(i),t=BO(r);return t.setWorldCoordinateHelper(e),{projection:new EO(e),transform:t,cameraHelper:new qO}}switch(e){case`mercator`:return{projection:new EO,transform:BO(r),cameraHelper:new qO};case`globe`:{let e=new QO({type:[`interpolate`,[`linear`],[`zoom`],11,`vertical-perspective`,12,`mercator`]},{});return{projection:e,transform:zk(r),cameraHelper:new Vk(e)}}case`vertical-perspective`:return{projection:new ZO,transform:Nk(r),cameraHelper:new Bk};default:return I(`Unknown projection name: ${e}. Falling back to mercator projection.`),{projection:new EO,transform:BO(r),cameraHelper:new qO}}}function Uk(e){return e.flat(1/0).find(e=>typeof e==`string`&&hx(e)!==void 0)}var Wk=rc(),Gk=class extends Qn{constructor(e,t={}){super(),this._rtlPluginLoaded=()=>{for(let e in this.tileManagers){let t=this.tileManagers[e].getSource().type;(t===`vector`||t===`geojson`)&&this.tileManagers[e].reload()}},this.map=e,this.dispatcher=new wb(xb(),e._getMapId()).setEventedParent(this),this.dispatcher.registerMessageHandler(`GG`,(e,t)=>this.getGlyphs(e,t)),this.dispatcher.registerMessageHandler(`GI`,(e,t)=>this.getImages(e,t)),this.dispatcher.registerMessageHandler(`GDA`,(e,t)=>this.getDashes(e,t)),this.imageManager=new Py,this.imageManager.setEventedParent(this),this.imageManager.setMissingImageResolver(e._missingStyleImageResolver),this.patternAtlas=new Fy(this.imageManager);let n=e._container?.lang||typeof document<`u`&&document.documentElement?.lang||void 0;this.glyphManager=new Qy(e._requestManager,t.localIdeographFontFamily,n),this.lineAtlas=new ob(256,512),this.crossTileSymbolIndex=new fO,this._setInitialValues(),this._initialGlobalState=t.globalState??{},this._resetUpdates(),this.dispatcher.broadcast(`SR`,Rn()),DE().on(wE,this._rtlPluginLoaded),this.on(`data`,e=>{if(e.dataType!==`source`||e.sourceDataType!==`metadata`)return;let t=this.tileManagers[e.sourceId];if(!t)return;let n=t.getSource();if(n?.vectorLayerIds)for(let e in this._layers){let t=this._layers[e];t.source===n.id&&this._validateLayer(t)}})}_setInitialValues(){this._layers={},this._order=[],this.tileManagers={},this.zoomHistory=new vl,this._imagesListDirty=!1,this._initialGlobalState={},this._globalState={},this._serializedLayers={},this.stylesheet=null,this.light=null,this.sky=null,this.projection&&(this.projection.destroy(),delete this.projection),this._loaded=!1,this._changed=!1,this._updatedLayers={},this._updatedSources={},this._changedImages={},this._glyphsDidChange=!1,this._updatedPaintProps={},this._layerOrderChanged=!1,this._symbolPlacementTriggered=!1,this._placedProjectionTransition=void 0,this.crossTileSymbolIndex=new((this.crossTileSymbolIndex?.constructor)||Object),this.pauseablePlacement=void 0,this.placement=void 0,this.z=0}setGlobalStateProperty(e,t){this._checkLoaded();let n=t===null?this.stylesheet.state?.[e]?.default??null:t;return this._setGlobalStateValues({[e]:n}),this}getGlobalState(){return this._globalState}setGlobalState(e){this._checkLoaded();let t={},n=new Set([...Object.keys(e??{}),...Object.keys(this._initialGlobalState)]);for(let r of n)t[r]=this._initialGlobalState[r]??e[r]?.default??null;this._setGlobalStateValues(t)}_setGlobalStateValues(e){let t=[];for(let n in e)Rt(e[n],this._globalState[n])||t.push(n);if(t.length===0)return;let n={...this._globalState};for(let n of t)this._globalState[n]=e[n];this._applyGlobalStateChanges(t,n)}_applyGlobalStateChanges(e,t){let n=new Set,r={};for(let t of e)r[t]=this._globalState[t];for(let r in this._layers){let i=this._layers[r];i.retainPriorGlobalState(e,t);let a=i.getLayoutAffectingGlobalStateRefs(),o=i.getPaintAffectingGlobalStateRefs(),s=i.getVisibilityAffectingGlobalStateRefs();for(let t of e){if(a.has(t)&&n.add(i.source),o.has(t))for(let{name:e,value:n}of o.get(t))this._updatePaintProperty(i,e,n,{validate:!1});s?.has(t)&&(i.recalculateVisibility(),this._updateLayer(i))}}let i={now:Sn(),transition:this.getTransition()};this.light?.applyGlobalStateChange(e,t,i),this.sky?.applyGlobalStateChange(e,t,i),this.dispatcher.broadcast(`UGS`,r);for(let e in this.tileManagers)n.has(e)&&(this._reloadSource(e),this._changed=!0)}async loadURL(e,t={},n){this.fire(new tr(`dataloading`)),t.validate=typeof t.validate!=`boolean`||t.validate,this._loadStyleRequest=new AbortController;let r=this._loadStyleRequest;try{let i=await this.map._requestManager.transformRequest(e,`Style`);gn(r.signal);let a=await Un(i,r);this._loadStyleRequest===r&&(this._loadStyleRequest=null),this._load(a.data,t,n)}catch(e){this._loadStyleRequest===r&&(this._loadStyleRequest=null),e&&!r.signal.aborted&&this.fire(new R(ot(e)))}}loadJSON(e,t={},n){this.fire(new tr(`dataloading`)),this._frameRequest=new AbortController,bn.frameAsync(this._frameRequest,this.map._ownerWindow).then(()=>{this._frameRequest=null,t.validate=t.validate!==!1,this._load(e,t,n)}).catch(()=>{})}loadEmpty(){this.fire(new tr(`dataloading`)),this._load(Wk,{validate:!1})}_load(e,t,n){let r=t.transformStyle?t.transformStyle(n,e):e;if(t.validate&&sl(this,r))return;r={...r},this._loaded=!0,this.stylesheet=r,this.setGlobalState(this.stylesheet.state??null);let i=Hk(this.stylesheet.projection?.type||`mercator`,this.map._camera?.transform.constrainOverride,this._globalState);this.projection=i.projection;for(let e in r.sources)this.addSource(e,r.sources[e],{validate:!1});r.sprite?this._loadSprite(r.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(r.glyphs),this.glyphManager.setFontFaces(r[`font-faces`]),this._createLayers(),this.light=new tb(this.stylesheet.light??{},this._globalState),this._applyProjection(i),this.sky=new ib(this.stylesheet.sky,this._globalState),this.sky.setEventedParent(this),this.map.setTerrain(this.stylesheet.terrain??null,{validate:!1}),this.fire(new tr(`data`)),this.fire(new er)}_createLayers(){let e=mr(this.stylesheet.layers);this.dispatcher.broadcast(`SL`,e),this._order=e.map(e=>e.id),this._layers={},this._serializedLayers=null;for(let t of e){let e=ky(t,this._globalState);if(e.setEventedParent(this,{layer:{id:t.id}}),this._layers[t.id]=e,Bl(e)&&this.tileManagers[e.source]){let n=t.paint?.[`raster-fade-duration`]??e.paint.get(`raster-fade-duration`);this.tileManagers[e.source].setRasterFadeDuration(n)}}}async _loadSprite(e,t=!1,n=void 0){this.imageManager.setLoaded(!1);let r=new AbortController;this._spriteRequest=r;let i;try{let n=await My(e,this.map._requestManager,this.map.getPixelRatio(),r);if(!n)return;for(let e in n){let{loaded:r,removed:i}=this.imageManager.setSpriteImages(e,n[e]);this._markImagesChanged(i),t&&this._markImagesChanged(r)}}catch(e){i=e,r.signal.aborted||this.fire(new R(i))}finally{this._spriteRequest=null,this.imageManager.setLoaded(!0),t&&(this._changed=!0),this.dispatcher.broadcast(`SI`,this.imageManager.listImages()),this.fire(new tr(`data`)),n?.(i)}}_unloadSprite(){this._markImagesChanged(this.imageManager.removeAllSpriteImages()),this._imagesListDirty=!0,this._changed=!0,this.fire(new tr(`data`))}_validateLayer(e){let t=this.tileManagers[e.source];if(!t)return;let n=e.sourceLayer;if(!n)return;let r=t.getSource();(r.type===`geojson`||r.vectorLayerIds&&!r.vectorLayerIds.includes(n))&&this.fire(new R(Error(`Source layer "${n}" does not exist on source "${r.id}" as specified by style layer "${e.id}".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(let e in this.tileManagers)if(!this.tileManagers[e].loaded())return!1;return this.imageManager.isLoaded()}_serializeByIds(e,t=!1){let n=this._serializedAllLayers();if(!e||e.length===0)return Object.values(t?zt(n):n);let r=[];for(let i of e)if(n[i]){let e=t?zt(n[i]):n[i];r.push(e)}return r}_serializedAllLayers(){let e=this._serializedLayers;if(e)return e;e=this._serializedLayers={};let t=Object.keys(this._layers);for(let n of t){let t=this._layers[n];t.type!==`custom`&&(e[n]=t.serialize())}return e}hasTransitions(){if(this.light?.hasTransition()||this.sky?.hasTransition()||this.projection?.hasTransition())return!0;for(let e in this.tileManagers)if(this.tileManagers[e].hasTransition())return!0;for(let e in this._layers)if(this._layers[e].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw Error(`Style is not done loading.`)}update(e){if(!this._loaded)return;let t=this._changed;if(t){this._imagesListDirty&&=(this.dispatcher.broadcast(`SI`,this.imageManager.listImages()),!1);let t=Object.keys(this._updatedLayers),n=Object.keys(this._removedLayers);(t.length||n.length)&&this._updateWorkerLayers(t,n);for(let e in this._updatedSources){let t=this._updatedSources[e];if(t===`reload`)this._reloadSource(e);else if(t===`clear`)this._clearSource(e);else throw Error(`Invalid action ${t}`)}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(let t in this._updatedPaintProps)this._layers[t].updateTransitions(e);this._resetUpdates()}let n={};for(let e in this.tileManagers){let t=this.tileManagers[e];n[e]=t.used,t.used=!1}let r=this.imageManager.listImages();for(let t of this._order){let n=this._layers[t];n.recalculate(e,r),!n.isHidden(e.zoom)&&n.source&&(this.tileManagers[n.source].used=!0)}for(let e in n){let t=this.tileManagers[e];!!n[e]!=!!t.used&&t.fire(new nr(`data`,{sourceDataType:`visibility`,sourceId:e}))}this.light.recalculate(e),this.sky.recalculate(e),this.projection.recalculate(e),this.z=e.zoom,t&&this.fire(new tr(`data`))}_updateTilesForChangedImages(){let e=Object.keys(this._changedImages);if(e.length){for(let t in this.tileManagers)this.tileManagers[t].reloadTilesForDependencies([`icons`,`patterns`],e);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(let e in this.tileManagers)this.tileManagers[e].reloadTilesForDependencies([`glyphs`],[``]);this._glyphsDidChange=!1}}_updateWorkerLayers(e,t){this.dispatcher.broadcast(`UL`,{layers:this._serializeByIds(e,!1),removedIds:t})}resize(){for(let e of this._order)this._layers[e].resize()}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(e,t={}){this._checkLoaded();let n=this.serialize();if(e=t.transformStyle?t.transformStyle(n,e):e,(t.validate??!0)&&sl(this,e))return!1;e=zt(e),e.layers=mr(e.layers);let r=Dr(n,e),i=this._getOperationsToPerform(r);if(i.unimplemented.length>0)throw Error(`Unimplemented: ${i.unimplemented.join(`, `)}.`);if(i.operations.length===0)return!1;this._initialGlobalState=t.globalState??{};for(let e of i.operations)e();return this.stylesheet=e,this._serializedLayers=null,this.fire(new er({style:this})),!0}_getOperationsToPerform(e){let t=[],n=[];for(let r of e)switch(r.command){case`setCenter`:case`setZoom`:case`setBearing`:case`setPitch`:case`setRoll`:continue;case`addLayer`:{let[e,n]=r.args;t.push(()=>this.addLayer(e,n));break}case`removeLayer`:{let[e]=r.args;t.push(()=>this.removeLayer(e));break}case`setPaintProperty`:{let[e,n,i]=r.args;t.push(()=>this.setPaintProperty(e,n,i));break}case`setLayoutProperty`:{let[e,n,i]=r.args;t.push(()=>this.setLayoutProperty(e,n,i));break}case`setFilter`:{let[e,n]=r.args;t.push(()=>this.setFilter(e,n));break}case`addSource`:{let[e,n]=r.args;t.push(()=>this.addSource(e,n));break}case`removeSource`:{let[e]=r.args;t.push(()=>this.removeSource(e));break}case`setLayerZoomRange`:{let[e,n,i]=r.args;t.push(()=>this.setLayerZoomRange(e,n,i));break}case`setLight`:{let[e]=r.args;t.push(()=>this.setLight(e));break}case`setGeoJSONSourceData`:{let[e,n]=r.args;t.push(()=>this.setGeoJSONSourceData(e,n));break}case`setGlyphs`:{let[e]=r.args;t.push(()=>this.setGlyphs(e));break}case`setFontFaces`:{let[e]=r.args;t.push(()=>this.setFontFaces(e));break}case`setSprite`:{let[e]=r.args;t.push(()=>this.setSprite(e));break}case`setTerrain`:{let[e]=r.args;t.push(()=>this.map.setTerrain(e));break}case`setSky`:{let[e]=r.args;t.push(()=>this.setSky(e));break}case`setProjection`:{let[e]=r.args;t.push(()=>this.setProjection(e));break}case`setGlobalState`:{let[e]=r.args;t.push(()=>this.setGlobalState(e));break}case`setTransition`:t.push(()=>{});break;default:n.push(r.command)}return{operations:t,unimplemented:n}}addImage(e,t){this.getImage(e)?this.fire(new R(Error(`An image named "${e}" already exists.`))):(this.imageManager.addImage(e,t),this._afterImageUpdated(e))}updateImage(e,t){this.imageManager.updateImage(e,t)}getImage(e){return this.imageManager.getImage(e)}setMissingImageResolver(e){this.imageManager.setMissingImageResolver(e)}removeImage(e){this.getImage(e)?(this.imageManager.removeImage(e),this._afterImageUpdated(e)):this.fire(new R(Error(`An image named "${e}" does not exist.`)))}_markImagesChanged(e){for(let t of e)this._changedImages[t]=!0}_afterImageUpdated(e){this._changedImages[e]=!0,this._imagesListDirty=!0,this._changed=!0,this.fire(new tr(`data`))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(e,t,n={}){if(this._checkLoaded(),this.tileManagers[e]!==void 0)throw Error(`Source "${e}" already exists.`);if(!t.type)throw Error(`The type property must be defined, but only the following properties were given: ${Object.keys(t).join(`, `)}.`);if(al.has(t.type)&&this._validate(il.source,`sources.${e}`,t,null,n))return;this.map?._collectResourceTiming&&(t.collectResourceTiming=!0);let r=this.tileManagers[e]=new rD(e,t,this.dispatcher);r.style=this,r.setEventedParent(this,()=>({isSourceLoaded:r.loaded(),source:r.serialize(),sourceId:e})),r.onAdd(this.map),this._changed=!0}removeSource(e){if(this._checkLoaded(),this.tileManagers[e]===void 0)throw Error(`There is no source with this ID=${e}`);for(let t in this._layers)if(this._layers[t].source===e)return this.fire(new R(Error(`Source "${e}" cannot be removed while layer "${t}" is using it.`)));let t=this.tileManagers[e];delete this.tileManagers[e],delete this._updatedSources[e],t.fire(new nr(`data`,{sourceDataType:`metadata`,sourceId:e})),t.setEventedParent(null),t.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(e,t){if(this._checkLoaded(),this.tileManagers[e]===void 0)throw Error(`There is no source with this ID=${e}`);let n=this.tileManagers[e].getSource();if(n.type!==`geojson`)throw Error(`geojsonSource.type is ${n.type}, which is !== 'geojson`);n.setData(t),this._changed=!0}getSource(e){return this.tileManagers[e]?.getSource()}addLayer(e,t,n={}){this._checkLoaded();let r=e.id;if(this.getLayer(r)){this.fire(new R(Error(`Layer "${r}" already exists on this map.`)));return}let i;if(e.type===`custom`){if(cl(this,Ey(e)))return;i=ky(e,this._globalState)}else{if(`source`in e&&typeof e.source==`object`&&(this.addSource(r,e.source),e=zt(e),e=F(e,{source:r})),this._validate(il.layer,`layers.${r}`,e,{arrayIndex:-1},n))return;i=ky(e,this._globalState),this._validateLayer(i),i.setEventedParent(this,{layer:{id:r}})}let a=t?this._order.indexOf(t):this._order.length;if(t&&a===-1)this.fire(new R(Error(`Cannot add layer "${r}" before non-existing layer "${t}".`)));else{if(this._order.splice(a,0,r),this._layerOrderChanged=!0,this._layers[r]=i,this._removedLayers[r]&&i.source&&i.type!==`custom`){let e=this._removedLayers[r];delete this._removedLayers[r],e.type===i.type?(this._updatedSources[i.source]=`reload`,this.tileManagers[i.source].pause()):this._updatedSources[i.source]=`clear`}this._updateLayer(i),i.onAdd&&i.onAdd(this.map)}}moveLayer(e,t){if(this._checkLoaded(),this._changed=!0,!this._layers[e]){this.fire(new R(Error(`The layer '${e}' does not exist in the map's style and cannot be moved.`)));return}if(e===t)return;if(t&&!this._order.includes(t)){this.fire(new R(Error(`Cannot move layer "${e}" before non-existing layer "${t}".`)));return}let n=this._order.indexOf(e);this._order.splice(n,1);let r=t?this._order.indexOf(t):this._order.length;this._order.splice(r,0,e),this._layerOrderChanged=!0}removeLayer(e){this._checkLoaded();let t=this._layers[e];if(!t){this.fire(new R(Error(`Cannot remove non-existing layer "${e}".`)));return}t.setEventedParent(null);let n=this._order.indexOf(e);this._order.splice(n,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=t,delete this._layers[e],this._serializedLayers&&delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],t.type===`symbol`&&t.source&&this.tileManagers[t.source]?.resetMaxContentElevation(),t.onRemove&&t.onRemove(this.map)}getLayer(e){return this._layers[e]}getLayersOrder(){return[...this._order]}hasLayer(e){return e in this._layers}setLayerZoomRange(e,t,n){this._checkLoaded();let r=this.getLayer(e);r?(r.minzoom!==t||r.maxzoom!==n)&&(t!=null&&(r.minzoom=t),n!=null&&(r.maxzoom=n),this._updateLayer(r)):this.fire(new R(Error(`Cannot set the zoom range of non-existing layer "${e}".`)))}setFilter(e,t,n={}){this._checkLoaded();let r=this.getLayer(e);r?Rt(r.filter,t)||(t==null?(r.setFilter(void 0),this._updateLayer(r)):this._validate(il.filter,`layers.${r.id}.filter`,t,null,n)||(r.setFilter(zt(t)),this._updateLayer(r))):this.fire(new R(Error(`Cannot filter non-existing layer "${e}".`)))}getFilter(e){return zt(this.getLayer(e).filter)}setLayoutProperty(e,t,n,r={}){this._checkLoaded();let i=this.getLayer(e);i?Rt(i.getLayoutProperty(t),n)||(i.setLayoutProperty(t,n,r),this._updateLayer(i)):this.fire(new R(Error(`Cannot style non-existing layer "${e}".`)))}getLayoutProperty(e,t){let n=this.getLayer(e);if(!n)this.fire(new R(Error(`Cannot get style of non-existing layer "${e}".`)));else return n.getLayoutProperty(t)}setPaintProperty(e,t,n,r={}){this._checkLoaded();let i=this.getLayer(e);i?Rt(i.getPaintProperty(t),n)||this._updatePaintProperty(i,t,n,r):this.fire(new R(Error(`Cannot style non-existing layer "${e}".`)))}_updatePaintProperty(e,t,n,r={}){e.setPaintProperty(t,n,r)&&this._updateLayer(e),Bl(e)&&t===`raster-fade-duration`&&this.tileManagers[e.source].setRasterFadeDuration(n),this._changed=!0,this._updatedPaintProps[e.id]=!0,e.type===`symbol`&&this.triggerSymbolPlacement(),this._serializedLayers=null}getPaintProperty(e,t){return this.getLayer(e).getPaintProperty(t)}setFeatureState(e,t){this._checkLoaded();let n=e.source,r=e.sourceLayer,i=this.tileManagers[n];if(i===void 0){this.fire(new R(Error(`The source '${n}' does not exist in the map's style.`)));return}let a=i.getSource().type;if(a===`geojson`&&r){this.fire(new R(Error(`GeoJSON sources cannot have a sourceLayer parameter.`)));return}if(a===`vector`&&!r){this.fire(new R(Error(`The sourceLayer parameter must be provided for vector source types.`)));return}if(e.id===void 0){this.fire(new R(Error(`The feature id parameter must be provided.`)));return}let o=[`__proto__`,`constructor`,`prototype`];t&&Object.keys(t).some(e=>o.includes(e))?this.fire(new R(Error(`The feature state should not include one of the following keys: ${o}`))):i.setFeatureState(r,e.id,t)}removeFeatureState(e,t){this._checkLoaded();let n=e.source,r=this.tileManagers[n];if(r===void 0){this.fire(new R(Error(`The source '${n}' does not exist in the map's style.`)));return}let i=r.getSource().type,a=i===`vector`?e.sourceLayer:void 0;i===`vector`&&!a?this.fire(new R(Error(`The sourceLayer parameter must be provided for vector source types.`))):t&&typeof e.id!=`string`&&typeof e.id!=`number`?this.fire(new R(Error(`A feature id is required to remove its specific state property.`))):r.removeFeatureState(a,e.id,t)}getFeatureState(e){this._checkLoaded();let t=e.source,n=e.sourceLayer,r=this.tileManagers[t];if(r===void 0)this.fire(new R(Error(`The source '${t}' does not exist in the map's style.`)));else if(r.getSource().type===`vector`&&!n)this.fire(new R(Error(`The sourceLayer parameter must be provided for vector source types.`)));else return e.id===void 0&&this.fire(new R(Error(`The feature id parameter must be provided.`))),r.getFeatureState(n,e.id)}getTransition(){return F({duration:300,delay:0},this.stylesheet?.transition)}serialize(){if(!this._loaded)return;let e=It(this.tileManagers,e=>e.serialize()),t=this._serializeByIds(this._order,!0),n=this.map.getTerrain()||void 0,r=this.stylesheet;return Lt({version:r.version,name:r.name,metadata:r.metadata,light:r.light,sky:r.sky,center:r.center,zoom:r.zoom,bearing:r.bearing,pitch:r.pitch,sprite:r.sprite,glyphs:r.glyphs,"font-faces":r[`font-faces`],transition:r.transition,projection:r.projection,state:r.state,sources:e,layers:t,terrain:n},e=>e!==void 0)}_updateLayer(e){this._updatedLayers[e.id]=!0,e.source&&!this._updatedSources[e.source]&&this.tileManagers[e.source].getSource().type!==`raster`&&(this._updatedSources[e.source]=`reload`,this.tileManagers[e.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(e){let t=e=>this._layers[e].type===`fill-extrusion`,n={},r=[];for(let i=this._order.length-1;i>=0;i--){let a=this._order[i];if(t(a)){n[a]=i;for(let t of e){let e=t[a];if(e)for(let t of e)r.push(t)}}}r.sort((e,t)=>t.intersectionZ-e.intersectionZ);let i=[];for(let a=this._order.length-1;a>=0;a--){let o=this._order[a];if(t(o))for(let e=r.length-1;e>=0;e--){let t=r[e].feature;if(n[t.layer.id]<a)break;i.push(t),r.pop()}else for(let t of e){let e=t[o];if(e)for(let t of e)i.push(t.feature)}}return i}queryRenderedFeatures(e,t,n){t?.filter&&this._validate(il.filter,`queryRenderedFeatures.filter`,t.filter,null,t);let r={};if(t?.layers){if(!(Array.isArray(t.layers)||t.layers instanceof Set))return this.fire(new R(Error(`parameters.layers must be an Array or a Set of strings`))),[];for(let e of t.layers){let t=this._layers[e];if(!t)return this.fire(new R(Error(`The layer '${e}' does not exist in the map's style and cannot be queried for features.`))),[];r[t.source]=!0}}let i=[];t.availableImages=this.imageManager.listImages();let a=this._serializedAllLayers(),o=t.layers instanceof Set?t.layers:Array.isArray(t.layers)?new Set(t.layers):null,s={...t,layers:o,globalState:this._globalState};for(let o in this.tileManagers)(!t.layers||r[o])&&i.push(kb(this.tileManagers[o],this._layers,a,e,s,n,this.map.terrain?(e,t,n)=>this.map.terrain.getElevation(e,t,n):void 0));return this.placement&&i.push(Ab(this._layers,a,this.tileManagers,e,s,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(i)}querySourceFeatures(e,t){t?.filter&&this._validate(il.filter,`querySourceFeatures.filter`,t.filter,null,t);let n=this.tileManagers[e];return n?jb(n,{...t,globalState:this._globalState,worldCoordinateHelper:this.projection.worldCoordinateHelper}):[]}getLight(){return this.light.getLight()}setLight(e,t={}){this._checkLoaded();let n=this.light.getLight(),r=!1;for(let t in e)if(!Rt(e[t],n[t])){r=!0;break}if(!r)return;let i={now:Sn(),transition:F({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(e,t),this.light.updateTransitions(i)}getProjection(){return this.stylesheet?.projection}setProjection(e){this._checkLoaded();let t=e??{type:`mercator`};if(this.stylesheet.projection=e,this.projection){if(this.projection.name===t.type)return;this.projection.destroy(),delete this.projection}this._setProjectionInternal(t.type)}getSky(){return this.stylesheet?.sky}setSky(e,t={}){this._checkLoaded();let n=this.getSky(),r=!1;if(!e&&!n)return;if(e&&!n)r=!0;else if(!e&&n)r=!0;else for(let t in e)if(!Rt(e[t],n[t])){r=!0;break}if(!r)return;let i={now:Sn(),transition:F({duration:300,delay:0},this.stylesheet.transition)};this.sky.setSky(e,t)&&(this.stylesheet.sky=e,this.sky.updateTransitions(i))}_setProjectionInternal(e){this._applyProjection(Hk(e,this.map._camera?.transform.constrainOverride,this._globalState))}_applyProjection(e){this.projection=e.projection,this.map.migrateProjection(e.transform,e.cameraHelper);for(let e in this.tileManagers)this.tileManagers[e].reload()}_validate(e,t,n,r,i={}){return i.validate!==!1&&ll(this,e,{key:t,style:this.serialize(),value:n,...r},i)}_remove(e=!0){this._frameRequest&&=(this._frameRequest.abort(),null),this._loadStyleRequest&&=(this._loadStyleRequest.abort(),null),this._spriteRequest&&=(this._spriteRequest.abort(),null),DE().off(wE,this._rtlPluginLoaded);for(let e in this._layers)this._layers[e].setEventedParent(null);for(let e in this.tileManagers){let t=this.tileManagers[e];t.setEventedParent(null),t.onRemove(this.map)}this.imageManager.setEventedParent(null),this.setEventedParent(null),e&&this.dispatcher.broadcast(`RM`,void 0),this.dispatcher.remove(e)}_clearSource(e){this.tileManagers[e].clearTiles()}_reloadSource(e){this.tileManagers[e].resume(),this.tileManagers[e].reload()}_updateSources(e){for(let t in this.tileManagers)this.tileManagers[t].update(e,this.map.terrain)}_generateCollisionBoxes(){for(let e in this.tileManagers)this._reloadSource(e)}triggerSymbolPlacement(){this._symbolPlacementTriggered=!0}_placementInputsChanged(e,t,n){let r=this.pauseablePlacement;return!r||this._symbolPlacementTriggered||this._placedProjectionTransition!==this.projection?.transitionState||r._showCollisionBoxes!==t||r.placement.collisionGroups.crossSourceCollisions!==n||r.placement.transform.renderWorldCopies!==e.renderWorldCopies||!de(r.placement.transform.modelViewProjectionMatrix,e.modelViewProjectionMatrix)}_updatePlacement(e,t,n,r,i=!1){let a=!1,o=!1,s={};for(let t of this._order){let n=this._layers[t];if(n.type!==`symbol`)continue;if(!s[n.source]){let e=this.tileManagers[n.source];s[n.source]=e.getRenderableIds(!0).map(t=>e.getTileByID(t)).sort((e,t)=>t.tileID.overscaledZ-e.tileID.overscaledZ||(e.tileID.isLessThan(t.tileID)?-1:1))}let r=this.crossTileSymbolIndex.addLayer(n,s[n.source],e.worldCoordinateHelper.wraps?e.center.lng:0);a||=r}this.crossTileSymbolIndex.pruneUnusedLayers(this._order),i||=this._layerOrderChanged||n===0;let c=a||this._placementInputsChanged(e,t,r),l=this.pauseablePlacement?.isDone()&&!this.placement.stillRecent(Sn(),e.zoom);if((i||!this.pauseablePlacement||l&&(c||this.placement.stale))&&(this._symbolPlacementTriggered=!1,this._placedProjectionTransition=this.projection?.transitionState,this.pauseablePlacement=new $D(e,this.map.terrain,this._order,i,t,n,r,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?c&&this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,s),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(Sn()),o=!0),a&&this.pauseablePlacement.placement.setStale()),o||a)for(let e of this._order){let t=this._layers[e];t.type===`symbol`&&this.placement.updateLayerOpacities(t,s[t.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(Sn())}_releaseSymbolFadeTiles(){for(let e in this.tileManagers)this.tileManagers[e].releaseSymbolFadeTiles()}async getImages(e,t){let n=await this.imageManager.getImages(t.icons);this._updateTilesForChangedImages();let r=this.tileManagers[t.source];return r&&r.setDependencies(t.tileID.key,t.type,t.icons),n}async getGlyphs(e,t){let n=await this.glyphManager.getGlyphs(t.stacks),r=this.tileManagers[t.source];return r&&r.setDependencies(t.tileID.key,t.type,[``]),n}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(e,t={}){this._checkLoaded(),!(e&&this._validate(il.glyphs,`glyphs`,e,null,t))&&(this._changed=!0,this._glyphsDidChange=!0,this.stylesheet.glyphs=e,this.glyphManager.entries={},this.glyphManager.setURL(e))}getFontFaces(){return this.stylesheet[`font-faces`]||null}setFontFaces(e){this._checkLoaded(),this._changed=!0,this._glyphsDidChange=!0,this.stylesheet[`font-faces`]=e,this.glyphManager.setFontFaces(e)}async getDashes(e,t){let n={};for(let[e,r]of Object.entries(t.dashes))n[e]=this.lineAtlas.getDash(r.dasharray,r.round);return n}addSprite(e,t,n={},r){this._checkLoaded();let i=[{id:e,url:t}],a=[...Ay(this.stylesheet.sprite),...i];this._validate(il.sprite,`sprite`,a,null,n)||(this.stylesheet.sprite=a,this._loadSprite(i,!0,r))}removeSprite(e){this._checkLoaded();let t=Ay(this.stylesheet.sprite);if(!t.find(t=>t.id===e)){this.fire(new R(Error(`Sprite "${e}" doesn't exists on this map.`)));return}let n=this.imageManager.removeSpriteImages(e);this._markImagesChanged(n),t.splice(t.findIndex(t=>t.id===e),1),this.stylesheet.sprite=t.length>0?t:void 0,this._imagesListDirty=!0,this._changed=!0,this.fire(new tr(`data`))}getSprite(){return Ay(this.stylesheet.sprite)}setSprite(e,t={},n){this._checkLoaded(),!(e&&this._validate(il.sprite,`sprite`,e,null,t))&&(this.stylesheet.sprite=e,e?this._loadSprite(e,!0,n):(this._unloadSprite(),n&&n(null)))}destroy(){this._frameRequest&&=(this._frameRequest.abort(),null),this._loadStyleRequest&&=(this._loadStyleRequest.abort(),null),this._spriteRequest&&=(this._spriteRequest.abort(),null);for(let e in this.tileManagers){let t=this.tileManagers[e];t.setEventedParent(null),t.onRemove(this.map)}this.tileManagers={},this.imageManager&&(this.imageManager.setEventedParent(null),this.imageManager.destroy(),this.patternAtlas.destroy()),this.glyphManager&&this.glyphManager.destroy();for(let e in this._layers){let t=this._layers[e];t.setEventedParent(null),t.onRemove&&t.onRemove(this.map)}this._setInitialValues(),this.setEventedParent(null),this.dispatcher.unregisterMessageHandler(`GG`),this.dispatcher.unregisterMessageHandler(`GI`),this.dispatcher.unregisterMessageHandler(`GDA`),this.dispatcher.remove(!0),this._listeners={},this._oneTimeListeners={}}},Kk=Gl([{name:`a_pos`,type:`Int16`,components:2},{name:`a_texture_pos`,type:`Int16`,components:2}]),qk=class{constructor(e,t,n){this.context=e;let r=e.gl;this.buffer=r.createBuffer(),this.dynamicDraw=!!n,this.context.unbindVAO(),e.bindElementBuffer.set(this.buffer),r.bufferData(r.ELEMENT_ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?r.DYNAMIC_DRAW:r.STATIC_DRAW),this.dynamicDraw||t.freeBufferAfterUpload()}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(e){let t=this.context.gl;if(!this.dynamicDraw)throw Error(`Attempted to update data while not in dynamic mode.`);this.context.unbindVAO(),this.bind(),t.bufferSubData(t.ELEMENT_ARRAY_BUFFER,0,e.arrayBuffer)}destroy(){let e=this.context.gl;this.buffer&&(e.deleteBuffer(this.buffer),delete this.buffer)}},Jk={Int8:`BYTE`,Uint8:`UNSIGNED_BYTE`,Int16:`SHORT`,Uint16:`UNSIGNED_SHORT`,Int32:`INT`,Uint32:`UNSIGNED_INT`,Float32:`FLOAT`},Yk=class{constructor(e,t,n,r){this.length=t.length,this.attributes=n,this.itemSize=t.bytesPerElement,this.dynamicDraw=r,this.context=e;let i=e.gl;this.buffer=i.createBuffer(),e.bindVertexBuffer.set(this.buffer),i.bufferData(i.ARRAY_BUFFER,t.arrayBuffer,this.dynamicDraw?i.DYNAMIC_DRAW:i.STATIC_DRAW),this.dynamicDraw||t.freeBufferAfterUpload()}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(e){if(e.length!==this.length)throw Error(`Length of new data is ${e.length}, which doesn't match current length of ${this.length}`);let t=this.context.gl;this.bind(),t.bufferSubData(t.ARRAY_BUFFER,0,e.arrayBuffer)}enableAttributes(e,t){for(let n of this.attributes){let r=t.attributes[n.name];r!==void 0&&e.enableVertexAttribArray(r.location)}}setVertexAttribPointers(e,t,n){for(let r of this.attributes){let i=t.attributes[r.name];if(i!==void 0){let t=r.offset+this.itemSize*(n||0);i.isInteger?e.vertexAttribIPointer(i.location,r.components,e[Jk[r.type]],this.itemSize,t):e.vertexAttribPointer(i.location,r.components,e[Jk[r.type]],!1,this.itemSize,t)}}}destroy(){let e=this.context.gl;this.buffer&&(e.deleteBuffer(this.buffer),delete this.buffer)}},Xk=class{constructor(e){this.gl=e.gl,this.default=this.getDefault(),this.current=this.default,this.dirty=!1}get(){return this.current}set(e){}getDefault(){return this.default}setDefault(){this.set(this.default)}},Zk=class extends Xk{getDefault(){return G.transparent}set(e){let t=this.current;(e.r!==t.r||e.g!==t.g||e.b!==t.b||e.a!==t.a||this.dirty)&&(this.gl.clearColor(e.r,e.g,e.b,e.a),this.current=e,this.dirty=!1)}},Qk=class extends Xk{getDefault(){return 1}set(e){(e!==this.current||this.dirty)&&(this.gl.clearDepth(e),this.current=e,this.dirty=!1)}},$k=class extends Xk{getDefault(){return 0}set(e){(e!==this.current||this.dirty)&&(this.gl.clearStencil(e),this.current=e,this.dirty=!1)}},eA=class extends Xk{getDefault(){return[!0,!0,!0,!0]}set(e){let t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[3]!==t[3]||this.dirty)&&(this.gl.colorMask(e[0],e[1],e[2],e[3]),this.current=e,this.dirty=!1)}},tA=class extends Xk{getDefault(){return!0}set(e){(e!==this.current||this.dirty)&&(this.gl.depthMask(e),this.current=e,this.dirty=!1)}},nA=class extends Xk{getDefault(){return 255}set(e){(e!==this.current||this.dirty)&&(this.gl.stencilMask(e),this.current=e,this.dirty=!1)}},rA=class extends Xk{getDefault(){return{func:this.gl.ALWAYS,ref:0,mask:255}}set(e){let t=this.current;(e.func!==t.func||e.ref!==t.ref||e.mask!==t.mask||this.dirty)&&(this.gl.stencilFunc(e.func,e.ref,e.mask),this.current=e,this.dirty=!1)}},iA=class extends Xk{getDefault(){let e=this.gl;return[e.KEEP,e.KEEP,e.KEEP]}set(e){let t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||this.dirty)&&(this.gl.stencilOp(e[0],e[1],e[2]),this.current=e,this.dirty=!1)}},aA=class extends Xk{getDefault(){return!1}set(e){if(e===this.current&&!this.dirty)return;let t=this.gl;e?t.enable(t.STENCIL_TEST):t.disable(t.STENCIL_TEST),this.current=e,this.dirty=!1}},oA=class extends Xk{getDefault(){return[0,1]}set(e){let t=this.current;(e[0]!==t[0]||e[1]!==t[1]||this.dirty)&&(this.gl.depthRange(e[0],e[1]),this.current=e,this.dirty=!1)}},sA=class extends Xk{getDefault(){return!1}set(e){if(e===this.current&&!this.dirty)return;let t=this.gl;e?t.enable(t.DEPTH_TEST):t.disable(t.DEPTH_TEST),this.current=e,this.dirty=!1}},cA=class extends Xk{getDefault(){return this.gl.LESS}set(e){(e!==this.current||this.dirty)&&(this.gl.depthFunc(e),this.current=e,this.dirty=!1)}},lA=class extends Xk{getDefault(){return!1}set(e){if(e===this.current&&!this.dirty)return;let t=this.gl;e?t.enable(t.BLEND):t.disable(t.BLEND),this.current=e,this.dirty=!1}},uA=class extends Xk{getDefault(){let e=this.gl;return[e.ONE,e.ZERO]}set(e){let t=this.current;(e[0]!==t[0]||e[1]!==t[1]||this.dirty)&&(this.gl.blendFunc(e[0],e[1]),this.current=e,this.dirty=!1)}},dA=class extends Xk{getDefault(){return G.transparent}set(e){let t=this.current;(e.r!==t.r||e.g!==t.g||e.b!==t.b||e.a!==t.a||this.dirty)&&(this.gl.blendColor(e.r,e.g,e.b,e.a),this.current=e,this.dirty=!1)}},fA=class extends Xk{getDefault(){return this.gl.FUNC_ADD}set(e){(e!==this.current||this.dirty)&&(this.gl.blendEquation(e),this.current=e,this.dirty=!1)}},pA=class extends Xk{getDefault(){return!1}set(e){if(e===this.current&&!this.dirty)return;let t=this.gl;e?t.enable(t.CULL_FACE):t.disable(t.CULL_FACE),this.current=e,this.dirty=!1}},mA=class extends Xk{getDefault(){return this.gl.BACK}set(e){(e!==this.current||this.dirty)&&(this.gl.cullFace(e),this.current=e,this.dirty=!1)}},hA=class extends Xk{getDefault(){return this.gl.CCW}set(e){(e!==this.current||this.dirty)&&(this.gl.frontFace(e),this.current=e,this.dirty=!1)}},gA=class extends Xk{getDefault(){return null}set(e){(e!==this.current||this.dirty)&&(this.gl.useProgram(e),this.current=e,this.dirty=!1)}},_A=class extends Xk{getDefault(){return this.gl.TEXTURE0}set(e){(e!==this.current||this.dirty)&&(this.gl.activeTexture(e),this.current=e,this.dirty=!1)}},vA=class extends Xk{getDefault(){let e=this.gl;return[0,0,e.drawingBufferWidth,e.drawingBufferHeight]}set(e){let t=this.current;(e[0]!==t[0]||e[1]!==t[1]||e[2]!==t[2]||e[3]!==t[3]||this.dirty)&&(this.gl.viewport(e[0],e[1],e[2],e[3]),this.current=e,this.dirty=!1)}},yA=class extends Xk{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;let t=this.gl;t.bindFramebuffer(t.FRAMEBUFFER,e),this.current=e,this.dirty=!1}},bA=class extends Xk{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;let t=this.gl;t.bindRenderbuffer(t.RENDERBUFFER,e),this.current=e,this.dirty=!1}},xA=class extends Xk{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;let t=this.gl;t.bindTexture(t.TEXTURE_2D,e),this.current=e,this.dirty=!1}},SA=class extends Xk{getDefault(){return null}set(e){if(e===this.current&&!this.dirty)return;let t=this.gl;t.bindBuffer(t.ARRAY_BUFFER,e),this.current=e,this.dirty=!1}},CA=class extends Xk{getDefault(){return null}set(e){let t=this.gl;t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,e),this.current=e,this.dirty=!1}},wA=class extends Xk{getDefault(){return null}set(e){(e!==this.current||this.dirty)&&(this.gl.bindVertexArray(e),this.current=e,this.dirty=!1)}},TA=class extends Xk{getDefault(){return 4}set(e){if(e===this.current&&!this.dirty)return;let t=this.gl;t.pixelStorei(t.UNPACK_ALIGNMENT,e),this.current=e,this.dirty=!1}},EA=class extends Xk{getDefault(){return!1}set(e){if(e===this.current&&!this.dirty)return;let t=this.gl;t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e),this.current=e,this.dirty=!1}},DA=class extends Xk{getDefault(){return!1}set(e){if(e===this.current&&!this.dirty)return;let t=this.gl;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,e),this.current=e,this.dirty=!1}},OA=class extends Xk{constructor(e,t){super(e),this.context=e,this.parent=t}getDefault(){return null}},kA=class extends OA{setDirty(){this.dirty=!0}set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);let t=this.gl;t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),this.current=e,this.dirty=!1}},AA=class extends OA{set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);let t=this.gl;t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,e),this.current=e,this.dirty=!1}},jA=class extends OA{set(e){if(e===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);let t=this.gl;t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,e),this.current=e,this.dirty=!1}},MA=class{constructor(e,t,n,r,i){this.context=e,this.width=t,this.height=n;let a=e.gl,o=this.framebuffer=a.createFramebuffer();if(this.colorAttachment=new kA(e,o),r)this.depthAttachment=i?new jA(e,o):new AA(e,o);else if(i)throw Error(`Stencil cannot be set without depth`)}destroy(){let e=this.context.gl,t=this.colorAttachment.get();if(t&&e.deleteTexture(t),this.depthAttachment){let t=this.depthAttachment.get();t&&e.deleteRenderbuffer(t)}e.deleteFramebuffer(this.framebuffer)}},NA={ProjectionUBO:0,TerrainUBO:1,FrameUBO:2};function PA(e,t){for(let[n,r]of Object.entries(NA)){let i=e.getUniformBlockIndex(t,n);i!==e.INVALID_INDEX&&e.uniformBlockBinding(t,i,r)}}var FA={float:[1,1],int:[1,1],vec2:[2,2],vec4:[4,4],mat4:[16,4]};function IA(e){let t={},n=0;for(let{name:r,type:i}of e){let[e,a]=FA[i];n=Math.ceil(n/a)*a,t[r]=n,n+=e}return{offsets:t,contentWords:n,sizeWords:Math.ceil(n/4)*4}}var LA=class{constructor(e,t,n){this.context=e,this.binding=t,this.contentWords=n.contentWords;let r=e.gl;this.buffer=r.createBuffer(),r.bindBuffer(r.UNIFORM_BUFFER,this.buffer),r.bufferData(r.UNIFORM_BUFFER,n.sizeWords*4,r.DYNAMIC_DRAW),this.uploaded=new Float32Array(n.sizeWords),this.pending=new Float32Array(n.sizeWords),this.uploadedWords=new Uint32Array(this.uploaded.buffer),this.pendingWords=new Uint32Array(this.pending.buffer),this.hasData=!1}upload(){let e=this.context.gl,t=!this.hasData;if(!t){let e=this.pendingWords,n=this.uploadedWords;for(let r=0;r<this.contentWords;r++)if(e[r]!==n[r]){t=!0;break}}t?(e.bindBufferBase(e.UNIFORM_BUFFER,this.binding,this.buffer),this.context.boundUniformBuffers[this.binding]=this.buffer,e.bufferData(e.UNIFORM_BUFFER,this.pending,e.DYNAMIC_DRAW),this.uploaded.set(this.pending),this.hasData=!0):this.bind()}bind(){let e=this.context.boundUniformBuffers;if(e[this.binding]===this.buffer)return;let t=this.context.gl;t.bindBufferBase(t.UNIFORM_BUFFER,this.binding,this.buffer),e[this.binding]=this.buffer}destroy(){let e=this.context.gl;this.buffer&&(e.deleteBuffer(this.buffer),delete this.buffer)}},RA=IA([{name:`u_projection_matrix`,type:`mat4`},{name:`u_projection_fallback_matrix`,type:`mat4`},{name:`u_projection_tile_mercator_coords`,type:`vec4`},{name:`u_projection_clipping_plane`,type:`vec4`},{name:`u_projection_transition`,type:`float`},{name:`u_projection_clip_antimeridian`,type:`int`}]),zA=RA.offsets;function BA(e){return new LA(e,NA.ProjectionUBO,RA)}function VA(e,t){let n=e.pending;n.set(t.mainMatrix,zA.u_projection_matrix),n.set(t.fallbackMatrix,zA.u_projection_fallback_matrix),n.set(t.tileMercatorCoords,zA.u_projection_tile_mercator_coords),n.set(t.clippingPlane,zA.u_projection_clipping_plane),n[zA.u_projection_transition]=t.projectionTransition,e.pendingWords[zA.u_projection_clip_antimeridian]=+!!t.clipAntimeridian,e.upload()}function HA(e,t){if(!t){e.projectionUniformBuffer.bind();return}let n=t.uniformBufferKey;if(n===void 0){VA(e.projectionUniformBuffer,t);return}let r=e.keyedProjectionUniformBuffers.get(n);if(r){r.bind();return}let i=e.freeProjectionUniformBuffers.pop()??BA(e);e.keyedProjectionUniformBuffers.set(n,i),VA(i,t)}function UA(e){e.freeProjectionUniformBuffers.push(...e.keyedProjectionUniformBuffers.values()),e.keyedProjectionUniformBuffers.clear()}function WA(e){e.projectionUniformBuffer.destroy();for(let t of e.keyedProjectionUniformBuffers.values())t.destroy();for(let t of e.freeProjectionUniformBuffers)t.destroy()}var GA=IA([{name:`u_units_to_pixels`,type:`vec2`},{name:`u_world_size`,type:`vec2`},{name:`u_camera_to_center_distance`,type:`float`},{name:`u_symbol_fade_change`,type:`float`},{name:`u_aspect_ratio`,type:`float`},{name:`u_device_pixel_ratio`,type:`float`},{name:`u_viewport_size`,type:`vec2`},{name:`u_pixel_extrude_scale`,type:`vec2`},{name:`u_pitch`,type:`float`}]),KA=GA.offsets;function qA(e){return new LA(e,NA.FrameUBO,GA)}function JA(e,t,n){let r=e.pending,i=e.context.gl;r[KA.u_units_to_pixels]=1/t.pixelsToGLUnits[0],r[KA.u_units_to_pixels+1]=1/t.pixelsToGLUnits[1],r[KA.u_world_size]=i.drawingBufferWidth,r[KA.u_world_size+1]=i.drawingBufferHeight,r[KA.u_camera_to_center_distance]=t.cameraToCenterDistance,r[KA.u_symbol_fade_change]=n.fadeDuration?n.symbolFadeChange:1,r[KA.u_aspect_ratio]=t.width/t.height,r[KA.u_device_pixel_ratio]=n.pixelRatio,r[KA.u_viewport_size]=t.width,r[KA.u_viewport_size+1]=t.height,r[KA.u_pixel_extrude_scale]=1/t.width,r[KA.u_pixel_extrude_scale+1]=1/t.height,r[KA.u_pitch]=t.pitch/360*2*Math.PI,e.upload()}function YA(e,t,n){let r=e.pending;r[KA.u_world_size]=t,r[KA.u_world_size+1]=n,e.upload()}var XA=IA([{name:`u_terrain_matrix`,type:`mat4`},{name:`u_terrain_unpack`,type:`vec4`},{name:`u_terrain_dim`,type:`float`},{name:`u_terrain_exaggeration`,type:`float`}]),ZA=XA.offsets;function QA(e){return new LA(e,NA.TerrainUBO,XA)}function $A(e,t){let n=e.pending;n.set(t.u_terrain_matrix,ZA.u_terrain_matrix),n.set(t.u_terrain_unpack,ZA.u_terrain_unpack),n[ZA.u_terrain_dim]=t.u_terrain_dim,n[ZA.u_terrain_exaggeration]=t.u_terrain_exaggeration,e.upload()}var ej=class{constructor(e,t,n){this.blendFunction=e,this.blendColor=t,this.mask=n}};ej.Replace=[1,0],ej.disabled=new ej(ej.Replace,G.transparent,[!1,!1,!1,!1]),ej.unblended=new ej(ej.Replace,G.transparent,[!0,!0,!0,!0]),ej.alphaBlended=new ej([1,771],G.transparent,[!0,!0,!0,!0]);var tj=class{constructor(e){this.gl=e,this.clearColor=new Zk(this),this.clearDepth=new Qk(this),this.clearStencil=new $k(this),this.colorMask=new eA(this),this.depthMask=new tA(this),this.stencilMask=new nA(this),this.stencilFunc=new rA(this),this.stencilOp=new iA(this),this.stencilTest=new aA(this),this.depthRange=new oA(this),this.depthTest=new sA(this),this.depthFunc=new cA(this),this.blend=new lA(this),this.blendFunc=new uA(this),this.blendColor=new dA(this),this.blendEquation=new fA(this),this.cullFace=new pA(this),this.cullFaceSide=new mA(this),this.frontFace=new hA(this),this.program=new gA(this),this.activeTexture=new _A(this),this.viewport=new vA(this),this.bindFramebuffer=new yA(this),this.bindRenderbuffer=new bA(this),this.bindTexture=new xA(this),this.bindVertexBuffer=new SA(this),this.bindElementBuffer=new CA(this),this.bindVertexArray=new wA(this),this.pixelStoreUnpack=new TA(this),this.pixelStoreUnpackPremultiplyAlpha=new EA(this),this.pixelStoreUnpackFlipY=new DA(this),this.extTextureFilterAnisotropic=e.getExtension(`EXT_texture_filter_anisotropic`),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=e.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.maxTextureSize=e.getParameter(e.MAX_TEXTURE_SIZE),e.getExtension(`EXT_color_buffer_half_float`),e.getExtension(`EXT_color_buffer_float`),this.boundUniformBuffers=[],this.projectionUniformBuffer=BA(this),this.keyedProjectionUniformBuffers=new Map,this.freeProjectionUniformBuffers=[],this.terrainUniformBuffer=QA(this),this.frameUniformBuffer=qA(this)}destroy(){WA(this),this.terrainUniformBuffer.destroy(),this.frameUniformBuffer.destroy()}setDefault(){this.unbindVAO(),this.clearColor.setDefault(),this.clearDepth.setDefault(),this.clearStencil.setDefault(),this.colorMask.setDefault(),this.depthMask.setDefault(),this.stencilMask.setDefault(),this.stencilFunc.setDefault(),this.stencilOp.setDefault(),this.stencilTest.setDefault(),this.depthRange.setDefault(),this.depthTest.setDefault(),this.depthFunc.setDefault(),this.blend.setDefault(),this.blendFunc.setDefault(),this.blendColor.setDefault(),this.blendEquation.setDefault(),this.cullFace.setDefault(),this.cullFaceSide.setDefault(),this.frontFace.setDefault(),this.program.setDefault(),this.activeTexture.setDefault(),this.bindFramebuffer.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault()}setDirty(){this.clearColor.dirty=!0,this.clearDepth.dirty=!0,this.clearStencil.dirty=!0,this.colorMask.dirty=!0,this.depthMask.dirty=!0,this.stencilMask.dirty=!0,this.stencilFunc.dirty=!0,this.stencilOp.dirty=!0,this.stencilTest.dirty=!0,this.depthRange.dirty=!0,this.depthTest.dirty=!0,this.depthFunc.dirty=!0,this.blend.dirty=!0,this.blendFunc.dirty=!0,this.blendColor.dirty=!0,this.blendEquation.dirty=!0,this.cullFace.dirty=!0,this.cullFaceSide.dirty=!0,this.frontFace.dirty=!0,this.program.dirty=!0,this.activeTexture.dirty=!0,this.viewport.dirty=!0,this.bindFramebuffer.dirty=!0,this.bindRenderbuffer.dirty=!0,this.bindTexture.dirty=!0,this.bindVertexBuffer.dirty=!0,this.bindElementBuffer.dirty=!0,this.bindVertexArray.dirty=!0,this.pixelStoreUnpack.dirty=!0,this.pixelStoreUnpackPremultiplyAlpha.dirty=!0,this.pixelStoreUnpackFlipY.dirty=!0,this.boundUniformBuffers=[]}setCustomLayerDefaults(){this.unbindVAO(),this.cullFace.setDefault(),this.activeTexture.setDefault(),this.pixelStoreUnpack.setDefault(),this.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.pixelStoreUnpackFlipY.setDefault()}createIndexBuffer(e,t){return new qk(this,e,t)}createVertexBuffer(e,t,n){return new Yk(this,e,t,n)}createRenderbuffer(e,t,n){let r=this.gl,i=r.createRenderbuffer();return this.bindRenderbuffer.set(i),r.renderbufferStorage(r.RENDERBUFFER,e,t,n),this.bindRenderbuffer.set(null),i}createFramebuffer(e,t,n,r){return new MA(this,e,t,n,r)}clear({color:e,depth:t,stencil:n}){let r=this.gl,i=0;e&&(i|=r.COLOR_BUFFER_BIT,this.clearColor.set(e),this.colorMask.set([!0,!0,!0,!0])),t!==void 0&&(i|=r.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(t),this.depthMask.set(!0)),n!==void 0&&(i|=r.STENCIL_BUFFER_BIT,this.clearStencil.set(n),this.stencilMask.set(255)),r.clear(i)}setCullFace(e){e.enable===!1?this.cullFace.set(!1):(this.cullFace.set(!0),this.cullFaceSide.set(e.mode),this.frontFace.set(e.frontFace))}setDepthMode(e){e.func===this.gl.ALWAYS&&!e.mask?this.depthTest.set(!1):(this.depthTest.set(!0),this.depthFunc.set(e.func),this.depthMask.set(e.mask),this.depthRange.set(e.range))}setStencilMode(e){e.test.func===this.gl.ALWAYS&&!e.mask?this.stencilTest.set(!1):(this.stencilTest.set(!0),this.stencilMask.set(e.mask),this.stencilOp.set([e.fail,e.depthFail,e.pass]),this.stencilFunc.set({func:e.test.func,ref:e.ref,mask:e.test.mask}))}setColorMode(e){Rt(e.blendFunction,ej.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(e.blendFunction),this.blendColor.set(e.blendColor)),this.colorMask.set(e.mask)}createVertexArray(){return this.gl.createVertexArray()}deleteVertexArray(e){this.gl.deleteVertexArray(e)}unbindVAO(){this.bindVertexArray.set(null)}},nj=class{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(e,t,n,r,i,a,o,s,c){this.context=e;let l=this.boundPaintVertexBuffers.length!==r.length;for(let e=0;!l&&e<r.length;e++)this.boundPaintVertexBuffers[e]!==r[e]&&(l=!0);!this.vao||this.boundProgram!==t||this.boundLayoutVertexBuffer!==n||l||this.boundIndexBuffer!==i||this.boundVertexOffset!==a||this.boundDynamicVertexBuffer!==o||this.boundDynamicVertexBuffer2!==s||this.boundDynamicVertexBuffer3!==c?this.freshBind(t,n,r,i,a,o,s,c):e.bindVertexArray.set(this.vao)}freshBind(e,t,n,r,i,a,o,s){let c=e.numAttributes,l=this.context,u=l.gl;this.vao&&this.destroy(),this.vao=l.createVertexArray(),l.bindVertexArray.set(this.vao),this.boundProgram=e,this.boundLayoutVertexBuffer=t,this.boundPaintVertexBuffers=n,this.boundIndexBuffer=r,this.boundVertexOffset=i,this.boundDynamicVertexBuffer=a,this.boundDynamicVertexBuffer2=o,this.boundDynamicVertexBuffer3=s,t.enableAttributes(u,e);for(let t of n)t.enableAttributes(u,e);a&&a.enableAttributes(u,e),o&&o.enableAttributes(u,e),s&&s.enableAttributes(u,e),t.bind(),t.setVertexAttribPointers(u,e,i);for(let t of n)t.bind(),t.setVertexAttribPointers(u,e,i);a&&(a.bind(),a.setVertexAttribPointers(u,e,i)),r&&r.bind(),o&&(o.bind(),o.setVertexAttribPointers(u,e,i)),s&&(s.bind(),s.setVertexAttribPointers(u,e,i)),l.currentNumAttributes=c}destroy(){this.vao&&=(this.context.deleteVertexArray(this.vao),null)}},rj=(e,t)=>({u_depth:new Y(e,t.u_depth),u_terrain:new Y(e,t.u_terrain)}),ij=(e,t)=>({u_texture:new Y(e,t.u_texture),u_ele_delta:new X(e,t.u_ele_delta),u_fog_matrix:new gd(e,t.u_fog_matrix),u_fog_color:new fd(e,t.u_fog_color),u_fog_ground_blend:new X(e,t.u_fog_ground_blend),u_fog_ground_blend_opacity:new X(e,t.u_fog_ground_blend_opacity),u_horizon_color:new fd(e,t.u_horizon_color),u_horizon_fog_blend:new X(e,t.u_horizon_fog_blend),u_is_globe_mode:new X(e,t.u_is_globe_mode)}),aj=(e,t)=>({u_ele_delta:new X(e,t.u_ele_delta)}),oj=(e,t)=>({u_tile_bounds:new dd(e,t.u_tile_bounds)}),sj=(e,t,n,r,i)=>({u_texture:0,u_ele_delta:e,u_fog_matrix:t,u_fog_color:n?n[`fog-color`]:G.white,u_fog_ground_blend:n?n[`fog-ground-blend`]:1,u_fog_ground_blend_opacity:i?0:n?ab(r):0,u_horizon_color:n?n[`horizon-color`]:G.white,u_horizon_fog_blend:n?n[`horizon-fog-blend`]:1,u_is_globe_mode:+!!i}),cj=e=>({u_ele_delta:e}),lj=e=>({u_tile_bounds:e});function uj(e){let t=[];for(let n of e){if(n===null)continue;let e=n.split(` `);t.push(e.pop())}return t}function dj(e,t){let n=new Set([e.INT,e.INT_VEC2,e.INT_VEC3,e.INT_VEC4,e.UNSIGNED_INT,e.UNSIGNED_INT_VEC2,e.UNSIGNED_INT_VEC3,e.UNSIGNED_INT_VEC4]),r=new Set,i=e.getProgramParameter(t,e.ACTIVE_ATTRIBUTES);for(let a=0;a<i;a++){let i=e.getActiveAttrib(t,a);i&&n.has(i.type)&&r.add(i.name)}return r}var fj=class{constructor(e,t,n,r,i,a,o,s,c=[]){let l=e.gl;this.program=l.createProgram();let u=uj(t.staticAttributes),d=n?n.getBinderAttributes():[],f=u.concat(d),p=SO.prelude.staticUniforms?uj(SO.prelude.staticUniforms):[],m=t.staticUniforms?uj(t.staticUniforms):[],h=n?n.getBinderUniforms():[],g=p.concat(m).concat(h),_=[];for(let e of g)_.includes(e)||_.push(e);let v=n?n.defines():[];v.unshift(`#version 300 es`),i&&v.push(`#define OVERDRAW_INSPECTOR;`),a&&v.push(`#define TERRAIN3D;`),s&&v.push(s),c&&v.push(...c);let y=v.concat(SO.prelude.fragmentSource,o.fragmentSource,t.fragmentSource).join(`
|
|
813
|
+
`),b=v.concat(SO.prelude.vertexSource,o.vertexSource,t.vertexSource).join(`
|
|
814
|
+
`),x=l.createShader(l.FRAGMENT_SHADER);if(l.isContextLost()){this.failedToCreate=!0;return}l.shaderSource(x,y),l.compileShader(x),l.attachShader(this.program,x);let S=l.createShader(l.VERTEX_SHADER);if(l.isContextLost()){this.failedToCreate=!0;return}l.shaderSource(S,b),l.compileShader(S),l.attachShader(this.program,S),this.attributes={};let C={};if(this.numAttributes=f.length,l.linkProgram(this.program),!l.getProgramParameter(this.program,l.LINK_STATUS)){if(l.isContextLost()||l.getProgramParameter(this.program,l.ATTACHED_SHADERS)===0){this.failedToCreate=!0;return}throw l.getShaderParameter(x,l.COMPILE_STATUS)?l.getShaderParameter(S,l.COMPILE_STATUS)?Error(`Program failed to link: ${l.getProgramInfoLog(this.program)}`):Error(`Could not compile vertex shader: ${l.getShaderInfoLog(S)}`):Error(`Could not compile fragment shader: ${l.getShaderInfoLog(x)}`)}PA(l,this.program);let w=dj(l,this.program);for(let e of f){if(!e)continue;let t=l.getAttribLocation(this.program,e);t>=0&&(this.attributes[e]={location:t,isInteger:w.has(e)})}l.deleteShader(S),l.deleteShader(x);for(let e of _)if(e&&!C[e]){let t=l.getUniformLocation(this.program,e);t&&(C[e]=t)}this.fixedUniforms=r(e,C),this.terrainUniforms=rj(e,C),this.binderUniforms=n?n.getUniforms(e,C):[]}draw(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v){let y=e.gl;if(this.failedToCreate)return;if(e.program.set(this.program),e.terrainUniformBuffer.bind(),e.frameUniformBuffer.bind(),e.setDepthMode(n),e.setStencilMode(r),e.setColorMode(i),e.setCullFace(a),s){e.activeTexture.set(y.TEXTURE2),y.bindTexture(y.TEXTURE_2D,s.depthTexture),e.activeTexture.set(y.TEXTURE3),y.bindTexture(y.TEXTURE_2D,s.texture);for(let e in this.terrainUniforms)this.terrainUniforms[e].set(s[e]);$A(e.terrainUniformBuffer,s)}if(HA(e,c),o)for(let e in this.fixedUniforms)this.fixedUniforms[e].set(o[e]);h&&h.setUniforms(e,this.binderUniforms,p,{zoom:m});let b=0;switch(t){case y.LINES:b=2;break;case y.TRIANGLES:b=3;break;case y.LINE_STRIP:b=1}for(let n of f.get())n.vaos||={},n.vaos[l]||=new nj,n.vaos[l].bind(e,this,u,h?h.getPaintVertexBuffers():[],d,n.vertexOffset,g,_,v),y.drawElements(t,n.primitiveLength*b,y.UNSIGNED_SHORT,n.primitiveOffset*b*2)}};function pj(e,t,n){let r=1/at(n,1,t.tileZoom),i=2**n.tileID.overscaledZ,a=n.tileSize*2**t.tileZoom/i,o=a*(n.tileID.canonical.x+n.tileID.wrap*i),s=a*n.tileID.canonical.y;return{u_image:0,u_texsize:n.imageAtlasTexture.size,u_scale:[r,e.fromScale,e.toScale],u_fade:e.t,u_pixel_coord_upper:[o>>16,s>>16],u_pixel_coord_lower:[o&65535,s&65535]}}function mj(e,t,n,r,i){let a=n.getPattern(e.from.toString()),o=n.getPattern(e.to.toString()),{width:s,height:c}=n.getPixelSize(),l=2**i.tileID.overscaledZ,u=i.tileSize*2**r.tileZoom/l,d=u*(i.tileID.canonical.x+i.tileID.wrap*l),f=u*i.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:a.tl,u_pattern_br_a:a.br,u_pattern_tl_b:o.tl,u_pattern_br_b:o.br,u_texsize:[s,c],u_mix:t.t,u_pattern_size_a:a.displaySize,u_pattern_size_b:o.displaySize,u_scale_a:t.fromScale,u_scale_b:t.toScale,u_tile_units_to_pixels:1/at(i,1,r.tileZoom),u_pixel_coord_upper:[d>>16,f>>16],u_pixel_coord_lower:[d&65535,f&65535]}}var hj=(e,t)=>({u_lightpos:new ud(e,t.u_lightpos),u_lightpos_globe:new ud(e,t.u_lightpos_globe),u_lightintensity:new X(e,t.u_lightintensity),u_lightcolor:new ud(e,t.u_lightcolor),u_vertical_gradient:new X(e,t.u_vertical_gradient),u_opacity:new X(e,t.u_opacity),u_fill_translate:new Z(e,t.u_fill_translate)}),gj=(e,t)=>({u_lightpos:new ud(e,t.u_lightpos),u_lightpos_globe:new ud(e,t.u_lightpos_globe),u_lightintensity:new X(e,t.u_lightintensity),u_lightcolor:new ud(e,t.u_lightcolor),u_vertical_gradient:new X(e,t.u_vertical_gradient),u_height_factor:new X(e,t.u_height_factor),u_opacity:new X(e,t.u_opacity),u_fill_translate:new Z(e,t.u_fill_translate),u_image:new Y(e,t.u_image),u_texsize:new Z(e,t.u_texsize),u_pixel_coord_upper:new Z(e,t.u_pixel_coord_upper),u_pixel_coord_lower:new Z(e,t.u_pixel_coord_lower),u_scale:new ud(e,t.u_scale),u_fade:new X(e,t.u_fade)}),_j=(e,t,n,r,i)=>{let a=Ut(t.position),o=C();t.anchor===`viewport`&&T(o,e.bearingInRadians),Oe(a,a,o);let s=e.transformLightDirection(a),c=t.color;return{u_lightpos:a,u_lightpos_globe:s,u_lightintensity:t.intensity,u_lightcolor:[c.r,c.g,c.b],u_vertical_gradient:+n,u_opacity:r,u_fill_translate:i}},vj=(e,t,n,r,i,a,o,s)=>F(_j(e,t,n,r,i),pj(o,e,s),{u_height_factor:-(2**a.overscaledZ)/s.tileSize/8}),yj=(e,t)=>({u_fill_translate:new Z(e,t.u_fill_translate)}),bj=(e,t)=>({u_image:new Y(e,t.u_image),u_texsize:new Z(e,t.u_texsize),u_pixel_coord_upper:new Z(e,t.u_pixel_coord_upper),u_pixel_coord_lower:new Z(e,t.u_pixel_coord_lower),u_scale:new ud(e,t.u_scale),u_fade:new X(e,t.u_fade),u_sdf_pattern:new Y(e,t.u_sdf_pattern),u_fill_translate:new Z(e,t.u_fill_translate)}),xj=(e,t)=>({u_fill_translate:new Z(e,t.u_fill_translate)}),Sj=(e,t)=>({u_image:new Y(e,t.u_image),u_texsize:new Z(e,t.u_texsize),u_pixel_coord_upper:new Z(e,t.u_pixel_coord_upper),u_pixel_coord_lower:new Z(e,t.u_pixel_coord_lower),u_scale:new ud(e,t.u_scale),u_fade:new X(e,t.u_fade),u_sdf_pattern:new Y(e,t.u_sdf_pattern),u_fill_translate:new Z(e,t.u_fill_translate)}),Cj=(e,t,n,r,i)=>F(pj(t,e,n),{u_fill_translate:r,u_sdf_pattern:+!!i}),wj=e=>({u_fill_translate:e}),Tj=e=>({u_fill_translate:e}),Ej=(e,t,n,r,i)=>Cj(e,t,n,r,i),Dj=(e,t)=>({u_scale_with_map:new Y(e,t.u_scale_with_map),u_pitch_with_map:new Y(e,t.u_pitch_with_map),u_extrude_scale:new Z(e,t.u_extrude_scale),u_globe_extrude_scale:new X(e,t.u_globe_extrude_scale),u_translate:new Z(e,t.u_translate)}),Oj=(e,t,n,r,i)=>{let a,o,s=0;if(n.paint.get(`circle-pitch-alignment`)===`map`){let n=at(t,1,e.zoom);a=!0,o=[n,n],s=n/(N*2**t.tileID.overscaledZ)*2*Math.PI*i}else a=!1,o=e.pixelsToGLUnits;return{u_scale_with_map:+(n.paint.get(`circle-pitch-scale`)===`map`),u_pitch_with_map:+a,u_extrude_scale:o,u_globe_extrude_scale:s,u_translate:r}},kj=(e,t)=>({u_color:new fd(e,t.u_color),u_overlay:new Y(e,t.u_overlay),u_overlay_scale:new X(e,t.u_overlay_scale)}),Aj=(e,t=1)=>({u_color:e,u_overlay:0,u_overlay_scale:t}),jj=(e,t)=>({u_extrude_scale:new X(e,t.u_extrude_scale),u_intensity:new X(e,t.u_intensity),u_globe_extrude_scale:new X(e,t.u_globe_extrude_scale)}),Mj=(e,t)=>({u_matrix:new gd(e,t.u_matrix),u_image:new Y(e,t.u_image),u_color_ramp:new Y(e,t.u_color_ramp),u_opacity:new X(e,t.u_opacity)}),Nj=(e,t,n,r)=>{let i=at(e,1,t)/(N*2**e.tileID.overscaledZ)*2*Math.PI*r;return{u_extrude_scale:at(e,1,t),u_intensity:n,u_globe_extrude_scale:i}},Pj=(e,t,n,r)=>{let i=D();return ue(i,0,e.width,e.height,0,0,1),{u_matrix:i,u_image:n,u_color_ramp:r,u_opacity:t.paint.get(`heatmap-opacity`)}},Fj=(e,t)=>({u_image:new Y(e,t.u_image),u_latrange:new Z(e,t.u_latrange),u_exaggeration:new X(e,t.u_exaggeration),u_altitudes:new md(e,t.u_altitudes),u_azimuths:new md(e,t.u_azimuths),u_accent:new fd(e,t.u_accent),u_method:new Y(e,t.u_method),u_shadows:new pd(e,t.u_shadows),u_highlights:new pd(e,t.u_highlights)}),Ij=(e,t)=>({u_matrix:new gd(e,t.u_matrix),u_image:new Y(e,t.u_image),u_dimension:new Z(e,t.u_dimension),u_zoom:new X(e,t.u_zoom),u_unpack:new dd(e,t.u_unpack),u_log2_world_width:new X(e,t.u_log2_world_width)}),Lj=(e,t,n)=>{let r=n.paint.get(`hillshade-accent-color`),i;switch(n.paint.get(`hillshade-method`)){case`basic`:i=4;break;case`combined`:i=1;break;case`igor`:i=2;break;case`multidirectional`:i=3;break;default:i=0}let a=n.getIlluminationProperties();for(let t=0;t<a.directionRadians.length;t++)n.paint.get(`hillshade-illumination-anchor`)===`viewport`&&(a.directionRadians[t]+=e.bearingInRadians);return{u_image:0,u_latrange:Bj(e,t.tileID),u_exaggeration:n.paint.get(`hillshade-exaggeration`),u_altitudes:a.altitudeRadians,u_azimuths:a.directionRadians,u_accent:r,u_method:i,u_highlights:a.highlightColor,u_shadows:a.shadowColor}},Rj=(e,t,n)=>{let r=n.stride,i=D();return ue(i,0,N,-8192,0,0,1),te(i,i,[0,-8192,0]),{u_matrix:i,u_image:1,u_dimension:[r,r],u_zoom:t.overscaledZ,u_unpack:n.getUnpackVector(),u_log2_world_width:zj(e)}};function zj(e){let t=e.worldCoordinateHelper;return t.wraps?25.2562:Math.log2(t.metersPerWorldUnit(.5,.5))}function Bj(e,t){let n=e.worldCoordinateHelper;if(!n.wraps)return[0,0];let r=2**t.canonical.z,i=t.canonical.y;return[n.lngLatFromWorld(0,i/r).lat,n.lngLatFromWorld(0,(i+1)/r).lat]}var Vj=(e,t)=>({u_image:new Y(e,t.u_image),u_unpack:new dd(e,t.u_unpack),u_dimension:new Z(e,t.u_dimension),u_elevation_stops:new Y(e,t.u_elevation_stops),u_color_stops:new Y(e,t.u_color_stops),u_color_ramp_size:new Y(e,t.u_color_ramp_size),u_opacity:new X(e,t.u_opacity)}),Hj=(e,t,n=0)=>({u_image:0,u_unpack:t.getUnpackVector(),u_dimension:[t.stride,t.stride],u_elevation_stops:1,u_color_stops:4,u_color_ramp_size:n,u_opacity:e.paint.get(`color-relief-opacity`)}),Uj=(e,t)=>({u_translation:new Z(e,t.u_translation),u_ratio:new X(e,t.u_ratio)}),Wj=(e,t)=>({u_translation:new Z(e,t.u_translation),u_ratio:new X(e,t.u_ratio),u_image:new Y(e,t.u_image),u_image_height:new X(e,t.u_image_height)}),Gj=(e,t)=>({u_translation:new Z(e,t.u_translation),u_texsize:new Z(e,t.u_texsize),u_ratio:new X(e,t.u_ratio),u_image:new Y(e,t.u_image),u_scale:new ud(e,t.u_scale),u_fade:new X(e,t.u_fade)}),Kj=(e,t)=>({u_translation:new Z(e,t.u_translation),u_ratio:new X(e,t.u_ratio),u_image:new Y(e,t.u_image),u_mix:new X(e,t.u_mix),u_tileratio:new X(e,t.u_tileratio),u_crossfade_from:new X(e,t.u_crossfade_from),u_crossfade_to:new X(e,t.u_crossfade_to),u_lineatlas_width:new X(e,t.u_lineatlas_width),u_lineatlas_height:new X(e,t.u_lineatlas_height)}),qj=(e,t)=>({u_translation:new Z(e,t.u_translation),u_ratio:new X(e,t.u_ratio),u_image:new Y(e,t.u_image),u_image_height:new X(e,t.u_image_height),u_tileratio:new X(e,t.u_tileratio),u_crossfade_from:new X(e,t.u_crossfade_from),u_crossfade_to:new X(e,t.u_crossfade_to),u_image_dash:new Y(e,t.u_image_dash),u_mix:new X(e,t.u_mix),u_lineatlas_width:new X(e,t.u_lineatlas_width),u_lineatlas_height:new X(e,t.u_lineatlas_height)}),Jj=(e,t,n,r)=>({u_translation:eM(e,t,n),u_ratio:r/at(t,1,e.zoom)}),Yj=(e,t,n,r,i)=>F(Jj(e,t,n,r),{u_image:0,u_image_height:i}),Xj=(e,t,n,r,i)=>{let a=$j(t,e);return{u_translation:eM(e,t,n),u_texsize:t.imageAtlasTexture.size,u_ratio:r/at(t,1,e.zoom),u_image:0,u_scale:[a,i.fromScale,i.toScale],u_fade:i.t}},Zj=(e,t,n,r,i,a)=>{let o=$j(n,e);return F(Jj(e,n,r,i),{u_tileratio:o,u_crossfade_from:a.fromScale,u_crossfade_to:a.toScale,u_image:0,u_mix:a.t,u_lineatlas_width:t.width,u_lineatlas_height:t.height})},Qj=(e,t,n,r,i,a,o)=>{let s=$j(n,e);return F(Jj(e,n,r,i),{u_image:0,u_image_height:o,u_tileratio:s,u_crossfade_from:a.fromScale,u_crossfade_to:a.toScale,u_image_dash:1,u_mix:a.t,u_lineatlas_width:t.width,u_lineatlas_height:t.height})};function $j(e,t){return 1/at(e,1,t.tileZoom)}function eM(e,t,n){return ft(e,t,n.paint.get(`line-translate`),n.paint.get(`line-translate-anchor`))}var tM=(e,t)=>({u_image:new Y(e,t.u_image),u_opacity:new X(e,t.u_opacity)}),nM=(e,t)=>({u_image:t,u_opacity:e}),rM=(e,t)=>({u_is_size_zoom_constant:new Y(e,t.u_is_size_zoom_constant),u_is_size_feature_constant:new Y(e,t.u_is_size_feature_constant),u_size_t:new X(e,t.u_size_t),u_size:new X(e,t.u_size),u_rotate_symbol:new Y(e,t.u_rotate_symbol),u_label_plane_matrix:new gd(e,t.u_label_plane_matrix),u_coord_matrix:new gd(e,t.u_coord_matrix),u_is_text:new Y(e,t.u_is_text),u_pitch_with_map:new Y(e,t.u_pitch_with_map),u_is_along_line:new Y(e,t.u_is_along_line),u_is_variable_anchor:new Y(e,t.u_is_variable_anchor),u_texsize:new Z(e,t.u_texsize),u_texture:new Y(e,t.u_texture),u_translation:new Z(e,t.u_translation),u_pitched_scale:new X(e,t.u_pitched_scale),u_is_offset:new Y(e,t.u_is_offset),u_height_anchor_ground:new Y(e,t.u_height_anchor_ground)}),iM=(e,t)=>({u_is_size_zoom_constant:new Y(e,t.u_is_size_zoom_constant),u_is_size_feature_constant:new Y(e,t.u_is_size_feature_constant),u_size_t:new X(e,t.u_size_t),u_size:new X(e,t.u_size),u_rotate_symbol:new Y(e,t.u_rotate_symbol),u_label_plane_matrix:new gd(e,t.u_label_plane_matrix),u_coord_matrix:new gd(e,t.u_coord_matrix),u_is_text:new Y(e,t.u_is_text),u_pitch_with_map:new Y(e,t.u_pitch_with_map),u_is_along_line:new Y(e,t.u_is_along_line),u_is_variable_anchor:new Y(e,t.u_is_variable_anchor),u_texsize:new Z(e,t.u_texsize),u_texture:new Y(e,t.u_texture),u_gamma_scale:new X(e,t.u_gamma_scale),u_is_halo:new Y(e,t.u_is_halo),u_is_plain:new Y(e,t.u_is_plain),u_translation:new Z(e,t.u_translation),u_pitched_scale:new X(e,t.u_pitched_scale),u_is_offset:new Y(e,t.u_is_offset),u_height_anchor_ground:new Y(e,t.u_height_anchor_ground)}),aM=(e,t)=>({u_is_size_zoom_constant:new Y(e,t.u_is_size_zoom_constant),u_is_size_feature_constant:new Y(e,t.u_is_size_feature_constant),u_size_t:new X(e,t.u_size_t),u_size:new X(e,t.u_size),u_rotate_symbol:new Y(e,t.u_rotate_symbol),u_label_plane_matrix:new gd(e,t.u_label_plane_matrix),u_coord_matrix:new gd(e,t.u_coord_matrix),u_is_text:new Y(e,t.u_is_text),u_pitch_with_map:new Y(e,t.u_pitch_with_map),u_is_along_line:new Y(e,t.u_is_along_line),u_is_variable_anchor:new Y(e,t.u_is_variable_anchor),u_texsize:new Z(e,t.u_texsize),u_texsize_icon:new Z(e,t.u_texsize_icon),u_texture:new Y(e,t.u_texture),u_texture_icon:new Y(e,t.u_texture_icon),u_gamma_scale:new X(e,t.u_gamma_scale),u_is_halo:new Y(e,t.u_is_halo),u_translation:new Z(e,t.u_translation),u_pitched_scale:new X(e,t.u_pitched_scale),u_is_offset:new Y(e,t.u_is_offset),u_height_anchor_ground:new Y(e,t.u_height_anchor_ground)}),oM=(e,t,n,r,i,a,o,s,c,l,u,d,f,p)=>({u_is_size_zoom_constant:+(e===`constant`||e===`source`),u_is_size_feature_constant:+(e===`constant`||e===`camera`),u_size_t:t?t.uSizeT:0,u_size:t?t.uSize:0,u_rotate_symbol:+n,u_label_plane_matrix:o,u_coord_matrix:s,u_is_text:+l,u_pitch_with_map:+r,u_is_along_line:i,u_is_variable_anchor:a,u_texsize:u,u_texture:0,u_translation:c,u_pitched_scale:d,u_is_offset:f,u_height_anchor_ground:+p}),sM=(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h)=>F(oM(e,t,n,r,i,a,s,c,l,u,d,p,m,h),{u_gamma_scale:r?Math.cos(o.pitch*Math.PI/180)*o.cameraToCenterDistance:1,u_is_halo:+!!f,u_is_plain:1}),cM=(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m)=>F(sM(e,t,n,r,i,a,o,s,c,l,!0,u,!0,f,p,m),{u_texsize_icon:d,u_texture_icon:1}),lM=(e,t)=>({u_opacity:new X(e,t.u_opacity),u_color:new fd(e,t.u_color)}),uM=(e,t)=>({u_opacity:new X(e,t.u_opacity),u_image:new Y(e,t.u_image),u_pattern_tl_a:new Z(e,t.u_pattern_tl_a),u_pattern_br_a:new Z(e,t.u_pattern_br_a),u_pattern_tl_b:new Z(e,t.u_pattern_tl_b),u_pattern_br_b:new Z(e,t.u_pattern_br_b),u_texsize:new Z(e,t.u_texsize),u_mix:new X(e,t.u_mix),u_pattern_size_a:new Z(e,t.u_pattern_size_a),u_pattern_size_b:new Z(e,t.u_pattern_size_b),u_scale_a:new X(e,t.u_scale_a),u_scale_b:new X(e,t.u_scale_b),u_pixel_coord_upper:new Z(e,t.u_pixel_coord_upper),u_pixel_coord_lower:new Z(e,t.u_pixel_coord_lower),u_tile_units_to_pixels:new X(e,t.u_tile_units_to_pixels)}),dM=(e,t)=>({u_opacity:e,u_color:t}),fM=(e,t,n,r,i,a)=>F(mj(r,a,t,n,i),{u_opacity:e}),pM=(e,t)=>({u_sun_pos:new ud(e,t.u_sun_pos),u_atmosphere_blend:new X(e,t.u_atmosphere_blend),u_globe_position:new ud(e,t.u_globe_position),u_globe_radius:new X(e,t.u_globe_radius),u_inv_proj_matrix:new gd(e,t.u_inv_proj_matrix)}),mM=(e,t,n,r,i)=>({u_sun_pos:e,u_atmosphere_blend:t,u_globe_position:n,u_globe_radius:r,u_inv_proj_matrix:i}),hM=(e,t)=>({u_sky_color:new fd(e,t.u_sky_color),u_horizon_color:new fd(e,t.u_horizon_color),u_horizon:new Z(e,t.u_horizon),u_horizon_normal:new Z(e,t.u_horizon_normal),u_sky_horizon_blend:new X(e,t.u_sky_horizon_blend),u_sky_blend:new X(e,t.u_sky_blend),u_inv_proj_matrix:new gd(e,t.u_inv_proj_matrix),u_globe_position:new ud(e,t.u_globe_position),u_globe_radius:new X(e,t.u_globe_radius),u_atmosphere_blend:new X(e,t.u_atmosphere_blend)}),gM=(e,t,n)=>{let r=Math.cos(t.rollInRadians),i=Math.sin(t.rollInRadians),a=Km(t),o=t.getProjectionData({overscaledTileID:null,applyGlobeMatrix:!0,applyTerrainMatrix:!0}).projectionTransition,s=ok(t),c=ak(t.worldSize,t.center.lat);return{u_sky_color:e[`sky-color`],u_horizon_color:e[`horizon-color`],u_horizon:[(t.width/2-a*i)*n,(t.height/2+a*r)*n],u_horizon_normal:[-i,r],u_sky_horizon_blend:e[`sky-horizon-blend`]*t.height/2*n,u_sky_blend:o,u_inv_proj_matrix:t.inverseProjectionMatrix,u_globe_position:s,u_globe_radius:c,u_atmosphere_blend:e[`atmosphere-blend`]*wk(he(s)-c,c)}},_M=(e,t)=>({}),vM={fillExtrusion:hj,fillExtrusionPattern:gj,fill:yj,fillPattern:bj,fillOutline:xj,fillOutlinePattern:Sj,circle:Dj,collisionBox:_M,collisionCircle:_M,debug:kj,depth:_M,clippingMask:_M,heatmap:jj,heatmapTexture:Mj,hillshade:Fj,hillshadePrepare:Ij,colorRelief:Vj,line:Uj,lineGradient:Wj,linePattern:Gj,lineSDF:Kj,lineGradientSDF:qj,layerOpacity:tM,raster:bx,symbolIcon:rM,symbolSDF:iM,symbolTextAndIcon:aM,background:lM,backgroundPattern:uM,terrain:ij,terrainDepth:aj,terrainHeight:oj,atmosphere:pM,sky:hM},yM=class{constructor(e){this.programs={},this.context=e}getProgram(e){let t=e.programConfiguration?e.programConfiguration.cacheKey:``,n=`/${e.projectionShaderVariant.name}`,r=e.showOverdrawInspector?`/overdraw`:``,i=e.useTerrain?`/terrain`:``,a=e.defines?`/${e.defines.join(`/`)}`:``,o=e.name+t+n+r+i+a;return this.programs[o]||=new fj(this.context,SO[e.name],e.programConfiguration,vM[e.name],e.showOverdrawInspector,e.useTerrain,e.projectionShaderVariant.prelude,e.projectionShaderVariant.define,e.defines),this.programs[o]}destroy(){for(let e of Object.values(this.programs))e.program&&this.context.gl.deleteProgram(e.program);this.programs={}}},bM=7680,xM=class{constructor(e,t,n,r,i,a){this.test=e,this.ref=t,this.mask=n,this.fail=r,this.depthFail=i,this.pass=a}};xM.disabled=new xM({func:519,mask:0},0,0,bM,bM,bM);var SM=1029,CM=2305,wM=class{constructor(e,t,n){this.enable=e,this.mode=t,this.frontFace=n}};wM.disabled=new wM(!1,SM,CM),wM.backCCW=new wM(!0,SM,CM),wM.frontCCW=new wM(!0,1028,CM);var TM=class{constructor(e,t,n){this.func=e,this.mask=t,this.range=n}};TM.ReadOnly=!1,TM.ReadWrite=!0,TM.disabled=new TM(519,TM.ReadOnly,[0,1]);var EM;function DM(e,t,n,r,i){let a=i.context,o=a.gl,s=i.useProgram(`collisionBox`),c=[],l=0,u=0;for(let d of n){let n=e.getTile(d).getBucket(t);if(!n)continue;let f=r?n.textCollisionBox:n.iconCollisionBox,p=n.collisionCircleArray;p.length>0&&(c.push({circleArray:p,circleOffset:u,coord:d}),l+=p.length/4,u=l),f&&s.draw(a,o.LINES,TM.disabled,xM.disabled,i.colorModeForRenderPass(),wM.disabled,null,i.getTerrainDataForTile(d),i.getProjectionDataForTile(d),t.id,f.layoutVertexBuffer,f.indexBuffer,f.segments,null,i.transform.zoom,null,null,f.collisionVertexBuffer)}if(!r||!c.length)return;let d=i.useProgram(`collisionCircle`),f=new Wu;f.resize(l*4),f._trim();let p=0;for(let e of c)for(let t=0;t<e.circleArray.length/4;t++){let n=t*4,r=e.circleArray[n+0],i=e.circleArray[n+1],a=e.circleArray[n+2],o=e.circleArray[n+3];f.emplace(p++,r,i,a,o,0),f.emplace(p++,r,i,a,o,1),f.emplace(p++,r,i,a,o,2),f.emplace(p++,r,i,a,o,3)}(!EM||EM.length<l*2)&&(EM=OM(l));let m=a.createIndexBuffer(EM,!0),h=a.createVertexBuffer(f,Xh.members,!0);for(let e of c)d.draw(a,o.TRIANGLES,TM.disabled,xM.disabled,i.colorModeForRenderPass(),wM.disabled,null,i.getTerrainDataForTile(e.coord),null,t.id,h,m,Qu.simpleSegment(0,e.circleOffset*2,e.circleArray.length,e.circleArray.length/2),null,i.transform.zoom,null,null,null);h.destroy(),m.destroy()}function OM(e){let t=e*2,n=new Ku;n.resize(t),n._trim();for(let e=0;e<t;e++){let t=e*6;n.uint16[t+0]=e*4+0,n.uint16[t+1]=e*4+1,n.uint16[t+2]=e*4+2,n.uint16[t+3]=e*4+2,n.uint16[t+4]=e*4+3,n.uint16[t+5]=e*4+0}return n}var kM=A(new Float32Array(16));function AM(e,t,n,r,i){if(i.currentPass!==`translucent`)return;let a=xM.disabled,o=i.colorModeForRenderPass();(n._unevaluatedLayout.hasValue(`text-variable-anchor`)||n._unevaluatedLayout.hasValue(`text-variable-anchor-offset`))&&MM(r,n,t,n.layout.get(`text-rotation-alignment`),n.layout.get(`text-pitch-alignment`),n.paint.get(`text-translate`),n.paint.get(`text-translate-anchor`),i),n.paint.get(`icon-opacity`).constantOr(1)!==0&&IM(e,t,n,r,!1,n.paint.get(`icon-translate`),n.paint.get(`icon-translate-anchor`),n.layout.get(`icon-rotation-alignment`).constantOr(`viewport`),n.layout.get(`icon-pitch-alignment`),n.layout.get(`icon-keep-upright`),a,o,i),n.paint.get(`text-opacity`).constantOr(1)!==0&&IM(e,t,n,r,!0,n.paint.get(`text-translate`),n.paint.get(`text-translate-anchor`),n.layout.get(`text-rotation-alignment`),n.layout.get(`text-pitch-alignment`),n.layout.get(`text-keep-upright`),a,o,i),t.map.showCollisionBoxes&&(DM(t,n,r,!0,i),DM(t,n,r,!1,i))}function jM(e,t,n,r,i,a){let{horizontalAlign:o,verticalAlign:s}=K_(e),c=-(o-.5)*t,l=-(s-.5)*n;return new f((c/i+r[0])*a,(l/i+r[1])*a)}function MM(e,t,n,r,i,a,o,s){let c=s.transform,l=s.terrain,u=s.data.variableOffsets,d=r===`map`,f=i===`map`;for(let r of e){let e=n.getTile(r),i=e.getBucket(t);if(!i?.text?.segments.get().length)continue;let s=i.textSizeData,p=vv(s,c.zoom),m=fD(d,c,at(e,1,c.zoom)),h=t.layout.get(`icon-text-fit`)!==`none`&&i.hasIconData();if(p){let n=2**(c.zoom-e.tileID.overscaledZ),s=l?(e,t)=>l.getElevation(r,e,t):void 0;PM(i,d,f,u,c,m,n,p,h,ft(c,e,a,o),r.toUnwrapped(),s,t.layout.get(`symbol-height-anchor`)===`ground`)}}}function NM(e,t,n,r,i,a){let o=t.tileAnchorPoint.add(new f(t.translation[0],t.translation[1]));if(t.pitchWithMap){let e=r.mult(a);n||(e=e.rotate(-i));let s=o.add(e);return gD(s.x,s.y,t.pitchedLabelPlaneMatrix,hD(t,s.x,s.y)).point}if(n){let n=TD(t.tileAnchorPoint.x+1,t.tileAnchorPoint.y,t).point.sub(e),i=Math.atan(n.y/n.x)+(n.x<0?Math.PI:0);return e.add(r.rotate(i))}return e.add(r)}function PM(e,t,n,r,i,a,o,s,c,l,u,d,p){let m=e.text.placedSymbolArray,h=e.text.dynamicLayoutVertexArray,g=e.icon.dynamicLayoutVertexArray,_={};h.clear();for(let g=0;g<m.length;g++){let v=m.get(g),y=e.allowVerticalPlacement&&!v.placedOrientation,b=!v.hidden&&v.crossTileID&&!y?r[v.crossTileID]:null;if(!b)MD(v.numGlyphs,h);else{let r=new f(v.anchorX,v.anchorY),m={getElevation:d,heightOffset:v.heightOffset,heightAnchorGround:p,width:i.width,height:i.height,pitchedLabelPlaneMatrix:a,lineVertexArray:null,pitchWithMap:n,transform:i,projectionCache:null,tileAnchorPoint:r,translation:l,unwrappedTileID:u},g=n?DD(r.x,r.y,m):TD(r.x,r.y,m),y=_D(i.cameraToCenterDistance,g.signedDistanceFromCamera),x=_v(e.textSizeData,s,v)*y/24;n&&(x*=e.tilePixelRatio/o);let{width:S,height:C,anchor:w,textOffset:T,textBoxScale:E}=b,D=jM(w,S,C,T,E,x),O=i.getPitchedTextCorrection(r.x+l[0],r.y+l[1],u),k=NM(g.point,m,t,D,-i.bearingInRadians,O),A=e.allowVerticalPlacement&&v.placedOrientation===2?Math.PI/2:0;for(let e=0;e<v.numGlyphs;e++)ay(h,k,A);c&&v.associatedIconIndex>=0&&(_[v.associatedIconIndex]={shiftedAnchor:k,angle:A})}}if(c){g.clear();let t=e.icon.placedSymbolArray;for(let e=0;e<t.length;e++){let n=t.get(e);if(n.hidden)MD(n.numGlyphs,g);else{let t=_[e];if(!t)MD(n.numGlyphs,g);else for(let e=0;e<n.numGlyphs;e++)ay(g,t.shiftedAnchor,t.angle)}}e.icon.dynamicLayoutVertexBuffer.updateData(g)}e.text.dynamicLayoutVertexBuffer.updateData(h)}function FM(e,t,n){return n.iconsInText&&t?`symbolTextAndIcon`:e?`symbolSDF`:`symbolIcon`}function IM(e,t,n,r,i,a,o,s,c,l,u,d,f){let p=f.context,m=p.gl,h=f.transform,g=s===`map`,_=c===`map`,v=s!==`viewport`&&n.layout.get(`symbol-placement`)!==`point`,y=g&&!_&&!v,b=!n.layout.get(`symbol-sort-key`).isConstant(),x=!1,S=f.getDepthModeForSublayer(0,TM.ReadOnly),C=n._unevaluatedLayout.hasValue(`text-variable-anchor`)||n._unevaluatedLayout.hasValue(`text-variable-anchor-offset`),w=[],T=h.getCircleRadiusCorrection();for(let s of r){let r=t.getTile(s),c=r.getBucket(n);if(!c)continue;let u=i?c.text:c.icon;if(!u?.segments.get().length||!u.hasVisibleVertices)continue;let d=u.programConfigurations.get(n.id),p=i||c.sdfIcons,S=i?c.textSizeData:c.iconSizeData,E=_||h.pitch!==0,O=f.useProgram(FM(p,i,c),d),k=vv(S,h.zoom),A=f.getTerrainDataForTile(s),j,ee=[0,0],te,ne,re=null,ie;if(i){if(te=r.glyphAtlasTexture,ne=m.LINEAR,j=r.glyphAtlasTexture.size,c.iconsInText){ee=r.imageAtlasTexture.size,re=r.imageAtlasTexture;let e=S.kind===`composite`||S.kind===`camera`;ie=E||f.data.rotating||f.data.zooming||e?m.LINEAR:m.NEAREST}}else{let e=n.layout.get(`icon-size`).constantOr(0)!==1||c.iconsNeedLinear;te=r.imageAtlasTexture,ne=p||f.data.rotating||f.data.zooming||e||E?m.LINEAR:m.NEAREST,j=r.imageAtlasTexture.size}let ae=at(r,1,f.transform.zoom),oe=fD(g,f.transform,ae),se=pD(_,g,f.transform,ae),ce=ft(h,r,a,o),le=f.getProjectionDataForTile(s),ue=C&&c.hasTextData(),de=n.layout.get(`icon-text-fit`)!==`none`&&ue&&c.hasIconData(),fe=n._unevaluatedLayout.hasValue(`icon-offset`),pe=n.layout.get(`symbol-height-anchor`)===`ground`;if(v){let t=D();cD(t,oe);let r=f.terrain?(e,t)=>f.terrain.getElevation(s,e,t):void 0;yD(c,e,h,i,oe,t,_,l,n.layout.get(`text-rotation-alignment`)===`map`,s.toUnwrapped(),ce,r)}let me=i&&C||de,he=_?oe:f.transform.clipSpaceToPixelsMatrix,ge=v||me?kM:he,_e=p&&n.paint.get(i?`text-halo-width`:`icon-halo-width`).constantOr(1)!==0,ve;ve=p?c.iconsInText?cM(S.kind,k,y,_,v,me,h,ge,se,ce,j,ee,T,fe,pe):sM(S.kind,k,y,_,v,me,h,ge,se,ce,i,j,_e,T,fe,pe):oM(S.kind,k,y,_,v,me,ge,se,ce,i,j,T,fe,pe);let ye={program:O,buffers:u,uniformValues:ve,projectionData:le,atlasTexture:te,atlasTextureIcon:re,atlasInterpolation:ne,atlasInterpolationIcon:ie,isSDF:p,hasHalo:_e};if(b&&c.canOverlap){x=!0;let e=u.segments.get();for(let t of e)w.push({segments:new Qu([t]),sortKey:t.sortKey,state:ye,terrainData:A})}else w.push({segments:u.segments,sortKey:0,state:ye,terrainData:A})}x&&w.sort((e,t)=>e.sortKey-t.sortKey);let E=n.paint.get(i?`text-halo-width`:`icon-halo-width`).constantOr(null)??1/0,O=n.layout.get(`text-letter-spacing`).constantOr(0)*24<0||E>1;for(let e of w){let t=e.state;p.activeTexture.set(m.TEXTURE0),t.atlasTexture.bind(t.atlasInterpolation,m.CLAMP_TO_EDGE),t.atlasTextureIcon&&(p.activeTexture.set(m.TEXTURE1),t.atlasTextureIcon&&t.atlasTextureIcon.bind(t.atlasInterpolationIcon,m.CLAMP_TO_EDGE));let r=t.isSDF&&t.hasHalo;if(r){let r=t.uniformValues;r.u_is_halo=1,O&&(r.u_is_plain=0,LM(t.buffers,e.segments,n,f,t.program,S,u,d,r,t.projectionData,e.terrainData),r.u_is_halo=0,r.u_is_plain=1)}LM(t.buffers,e.segments,n,f,t.program,S,u,d,t.uniformValues,t.projectionData,e.terrainData),r&&!O&&(t.uniformValues.u_is_halo=0)}}function LM(e,t,n,r,i,a,o,s,c,l,u){let d=r.context,f=d.gl;i.draw(d,f.TRIANGLES,a,o,s,wM.backCCW,c,u,l,n.id,e.layoutVertexBuffer,e.indexBuffer,t,n.paint,r.transform.zoom,e.programConfigurations.get(n.id),e.dynamicLayoutVertexBuffer,e.opacityVertexBuffer)}function RM(e,t,n,r){if(r.currentPass!==`translucent`)return;let i=t.paint.get(`circle-opacity`),a=t.paint.get(`circle-stroke-width`),o=t.paint.get(`circle-stroke-opacity`),s=!t.layout.get(`circle-sort-key`).isConstant();if(i.constantOr(1)===0&&(a.constantOr(1)===0||o.constantOr(1)===0))return;let c=r.context,l=c.gl,u=r.transform,d=r.getDepthModeForSublayer(0,TM.ReadOnly),f=xM.disabled,p=r.colorModeForRenderPass(),m=[],h=u.getCircleRadiusCorrection();for(let i of n){let n=e.getTile(i),a=n.getBucket(t);if(!a)continue;let o=ft(u,n,t.paint.get(`circle-translate`),t.paint.get(`circle-translate-anchor`)),c=a.programConfigurations.get(t.id),l=r.useProgram(`circle`,c),d=a.layoutVertexBuffer,f=a.indexBuffer,p=r.getTerrainDataForTile(i),g={programConfiguration:c,program:l,layoutVertexBuffer:d,indexBuffer:f,uniformValues:Oj(u,n,t,o,h),terrainData:p,projectionData:r.getProjectionDataForTile(i)};if(s){let e=a.segments.get();for(let t of e)m.push({segments:new Qu([t]),sortKey:t.sortKey,state:g})}else m.push({segments:a.segments,sortKey:0,state:g})}s&&m.sort((e,t)=>e.sortKey-t.sortKey);for(let e of m){let{programConfiguration:n,program:i,layoutVertexBuffer:a,indexBuffer:o,uniformValues:s,terrainData:u,projectionData:m}=e.state,h=e.segments;i.draw(c,l.TRIANGLES,d,f,p,wM.backCCW,s,u,m,t.id,a,o,h,t.paint,r.transform.zoom,n)}}function zM(e,t,n,r,i){if(n.paint.get(`heatmap-opacity`)===0)return;let a=i.context;if(i.terrain){for(let a of r){let r=t.getTile(a);t.hasRenderableParent(a)||(i.currentPass===`offscreen`?HM(r,n,a,i):i.currentPass===`translucent`&&UM(e,n,a,i))}a.viewport.set([0,0,e.width,e.height])}else i.currentPass===`offscreen`?BM(e,t,n,r,i):i.currentPass===`translucent`&&VM(e,n,i)}function BM(e,t,n,r,i){let a=i.context,o=a.gl,s=i.transform,c=xM.disabled,l=new ej([o.ONE,o.ONE],G.transparent,[!0,!0,!0,!0]);WM(a,e,n),a.clear({color:G.transparent});for(let e of r){if(t.hasRenderableParent(e))continue;let r=t.getTile(e),u=r.getBucket(n);if(!u)continue;let d=u.programConfigurations.get(n.id),f=i.useProgram(`heatmap`,d),p=i.getProjectionDataForTile(e,{applyTerrainMatrix:!1}),m=s.getCircleRadiusCorrection();f.draw(a,o.TRIANGLES,TM.disabled,c,l,wM.backCCW,Nj(r,s.zoom,n.paint.get(`heatmap-intensity`),m),null,p,n.id,u.layoutVertexBuffer,u.indexBuffer,u.segments,n.paint,s.zoom,d)}a.viewport.set([0,0,e.width,e.height])}function VM(e,t,n){let r=n.context,i=r.gl;r.setColorMode(n.colorModeForRenderPass());let a=t.heatmapFbos.get(Mf);a&&(r.activeTexture.set(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,a.colorAttachment.get()),r.activeTexture.set(i.TEXTURE1),KM(r,t).bind(i.LINEAR,i.CLAMP_TO_EDGE),n.useProgram(`heatmapTexture`).draw(r,i.TRIANGLES,TM.disabled,xM.disabled,n.colorModeForRenderPass(),wM.disabled,Pj(e,t,0,1),null,null,t.id,e.viewportBuffer,e.quadTriangleIndexBuffer,e.viewportSegments,t.paint,n.transform.zoom))}function HM(e,t,n,r){let i=r.context,a=i.gl,o=xM.disabled,s=new ej([a.ONE,a.ONE],G.transparent,[!0,!0,!0,!0]),c=e.getBucket(t);if(!c)return;let l=n.key,u=t.heatmapFbos.get(l);u||(u=GM(i,e.tileSize,e.tileSize),t.heatmapFbos.set(l,u)),i.bindFramebuffer.set(u.framebuffer),i.viewport.set([0,0,e.tileSize,e.tileSize]),i.clear({color:G.transparent});let d=c.programConfigurations.get(t.id),f=r.useProgram(`heatmap`,d,!r.data.isRenderingGlobe),p=r.getProjectionDataForTile(e.tileID),m=r.getTerrainDataForTile(n);f.draw(i,a.TRIANGLES,TM.disabled,o,s,wM.disabled,Nj(e,r.transform.zoom,t.paint.get(`heatmap-intensity`),1),m,p,t.id,c.layoutVertexBuffer,c.indexBuffer,c.segments,t.paint,r.transform.zoom,d)}function UM(e,t,n,r){let i=r.context,a=i.gl,o=r.transform;i.setColorMode(r.colorModeForRenderPass());let s=KM(i,t),c=n.key,l=t.heatmapFbos.get(c);if(!l)return;i.activeTexture.set(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,l.colorAttachment.get()),i.activeTexture.set(a.TEXTURE1),s.bind(a.LINEAR,a.CLAMP_TO_EDGE);let u=r.getProjectionDataForTile(n,{applyTerrainMatrix:r.data.isRenderingGlobe});r.useProgram(`heatmapTexture`).draw(i,a.TRIANGLES,TM.disabled,xM.disabled,r.colorModeForRenderPass(),wM.disabled,Pj(e,t,0,1),null,u,t.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments,t.paint,o.zoom),l.destroy(),t.heatmapFbos.delete(c)}function WM(e,t,n){let r=e.gl;e.activeTexture.set(r.TEXTURE1),e.viewport.set([0,0,t.width/4,t.height/4]);let i=n.heatmapFbos.get(Mf);i?(r.bindTexture(r.TEXTURE_2D,i.colorAttachment.get()),e.bindFramebuffer.set(i.framebuffer)):(i=GM(e,t.width/4,t.height/4),n.heatmapFbos.set(Mf,i))}function GM(e,t,n){let r=e.gl,i=r.createTexture();r.bindTexture(r.TEXTURE_2D,i),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texStorage2D(r.TEXTURE_2D,1,r.RGBA16F,t,n);let a=e.createFramebuffer(t,n,!1,!1);return a.colorAttachment.set(i),a}function KM(e,t){return t.colorRampTexture||=new Wf(e,t.colorRamp,e.gl.RGBA),t.colorRampTexture}function qM(e,t,n,r){let i=r.context,a=i.bindFramebuffer.get(),o=i.viewport.get(),[,,s,c]=o;return JM(e,s,c),i.viewport.set([0,0,s,c]),i.clear({color:G.transparent,depth:1,stencil:0}),r.invalidateTileClippingMasks(),r.renderTileClippingMasks(t,n),{compositeTarget:a,compositeViewport:o}}function JM(e,t,n){let r=e.context.gl;if(!e.layerOpacityFbo){let i=e.context.createFramebuffer(t,n,!0,!0),a=r.createTexture();r.bindTexture(r.TEXTURE_2D,a),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,t,n,0,r.RGBA,r.UNSIGNED_BYTE,null),i.colorAttachment.set(a),i.depthAttachment.set(e.context.createRenderbuffer(r.DEPTH_STENCIL,t,n)),e.layerOpacityFbo=i,e.context.bindFramebuffer.set(e.layerOpacityFbo.framebuffer);return}if(e.layerOpacityFbo.width===t&&e.layerOpacityFbo.height===n){e.context.bindFramebuffer.set(e.layerOpacityFbo.framebuffer);return}let i=e.layerOpacityFbo;r.bindTexture(r.TEXTURE_2D,i.colorAttachment.get()),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,t,n,0,r.RGBA,r.UNSIGNED_BYTE,null),e.context.bindRenderbuffer.set(i.depthAttachment.get()),r.renderbufferStorage(r.RENDERBUFFER,r.DEPTH_STENCIL,t,n),e.context.bindRenderbuffer.set(null),i.width=t,i.height=n,e.context.bindFramebuffer.set(i.framebuffer)}function YM(e,t,n,r,i){let a=i.context,o=a.gl;a.bindFramebuffer.set(n.compositeTarget),a.viewport.set(n.compositeViewport),a.activeTexture.set(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,e.layerOpacityFbo.colorAttachment.get()),i.useProgram(`layerOpacity`).draw(a,o.TRIANGLES,TM.disabled,xM.disabled,i.colorModeForRenderPass(),wM.disabled,nM(t,0),null,null,r.id,e.viewportBuffer,e.quadTriangleIndexBuffer,e.viewportSegments,r.paint,i.transform.zoom),i.invalidateTileClippingMasks()}function XM(e,t,n,r,i,a,o,s){let c=256;if(r.stepInterpolant){let n=e.getSource().maxzoom,r=a.canonical.z===n?Math.ceil(1<<s.transform.maxZoom-a.canonical.z):1;c=P(Mt(i.maxLineLength/N*1024*r),256,t.maxTextureSize)}return o.gradient=jf({expression:r.gradientExpression(),evaluationKey:`lineProgress`,resolution:c,image:o.gradient||void 0,clips:i.lineClipsArray}),o.texture?o.texture.update(o.gradient):o.texture=new Wf(t,o.gradient,n.RGBA),o.version=r.gradientVersion,o.texture}function ZM(e,t,n,r,i){e.activeTexture.set(t.TEXTURE0),n.imageAtlasTexture.bind(t.LINEAR,t.CLAMP_TO_EDGE),r.updatePaintBuffers(i)}function QM(e,t,n,r,i,a){(i||e.lineAtlas.dirty)&&(t.activeTexture.set(n.TEXTURE0),e.lineAtlas.bind(t)),r.updatePaintBuffers(a)}function $M(e,t,n,r,i,a,o){let s=i.gradients[r.id],c=s.texture;r.gradientVersion!==s.version&&(c=XM(e,t,n,r,i,a,s,o)),t.activeTexture.set(n.TEXTURE0),c.bind(r.stepInterpolant?n.NEAREST:n.LINEAR,n.CLAMP_TO_EDGE)}function eN(e,t,n,r,i,a,o,s,c,l){let u=a.gradients[i.id],d=u.texture;i.gradientVersion!==u.version&&(d=XM(t,n,r,i,a,o,u,l)),n.activeTexture.set(r.TEXTURE0),d.bind(i.stepInterpolant?r.NEAREST:r.LINEAR,r.CLAMP_TO_EDGE),n.activeTexture.set(r.TEXTURE1),e.lineAtlas.bind(n),s.updatePaintBuffers(c)}function tN(e,t,n,r,i){if(i.currentPass!==`translucent`)return;let a=n.paint.get(`line-opacity`),o=n.paint.get(`line-width`),s=n.paint.get(`line-layer-opacity`);if(a.constantOr(1)!==0&&o.constantOr(1)!==0&&s!==0){if(s<1){let a=qM(e,n,r,i);nN(e,t,n,r,i),YM(e,s,a,n,i)}else nN(e,t,n,r,i)}}function nN(e,t,n,r,i){let a=i.getDepthModeForSublayer(0,TM.ReadOnly),o=i.colorModeForRenderPass(),s=n.paint.get(`line-dasharray`),c=s.constantOr(1),l=n.paint.get(`line-pattern`),u=l.constantOr(1),d=n.paint.get(`line-gradient`),f=n.getCrossfadeParameters(),p;p=u?`linePattern`:c&&d?`lineGradientSDF`:c?`lineSDF`:d?`lineGradient`:`line`;let m=i.context,h=m.gl,g=i.transform,_=!0;for(let v of r){let r=t.getTile(v);if(u&&!r.patternsLoaded())continue;let y=r.getBucket(n);if(!y)continue;let b=y.programConfigurations.get(n.id),x=m.program.get(),S=i.useProgram(p,b),C=_||S.program!==x,w=i.getTerrainDataForTile(v),T=l.constantOr(null),E=s?.constantOr(null);if(T&&r.imageAtlas){let e=r.imageAtlas,t=e.patternPositions[T.to.toString()],n=e.patternPositions[T.from.toString()];t&&n&&b.setConstantPatternPositions(t,n)}else if(E){let t=n.layout.get(`line-cap`).constantOr(null)===`round`,r=e.lineAtlas.getDash(E.to,t),i=e.lineAtlas.getDash(E.from,t);b.setConstantDashPositions(r,i)}let D=i.getProjectionDataForTile(v),O=g.getPixelScale(),k;u?(k=Xj(g,r,n,O,f),ZM(m,h,r,b,f)):c&&d?(k=Qj(g,e.lineAtlas,r,n,O,f,y.lineClipsArray.length),eN(e,t,m,h,n,y,v,b,f,i)):c?(k=Zj(g,e.lineAtlas,r,n,O,f),QM(e,m,h,b,C,f)):d?(k=Yj(g,r,n,O,y.lineClipsArray.length),$M(t,m,h,n,y,v,i)):k=Jj(g,r,n,O);let A=i.stencilModeForClipping(v);S.draw(m,h.TRIANGLES,a,A,o,wM.disabled,k,w,D,n.id,y.layoutVertexBuffer,y.indexBuffer,y.segments,n.paint,i.transform.zoom,b,y.layoutVertexBuffer2),_=!1}}function rN(e,t,n,r,i){if(!n||!r?.imageAtlas)return;let a=r.imageAtlas.patternPositions,o=a[n.to.toString()],s=a[n.from.toString()];if(!o&&s&&(o=s),!s&&o&&(s=o),!o||!s){let e=i.getPaintProperty(t);o=a[e],s=a[e]}o&&s&&e.setConstantPatternPositions(o,s)}function iN(e,t,n,r,i){let a=n.paint.get(`fill-color`),o=n.paint.get(`fill-opacity`),s=n.paint.get(`fill-layer-opacity`);if(o.constantOr(1)===0||s===0)return;if(s<1){if(i.currentPass!==`translucent`)return;let a=qM(e,n,r,i);aN(t,n,r,i),YM(e,s,a,n,i);return}let c=n.paint.get(`fill-pattern`),l=i.opaquePassEnabledForLayer()&&!c.constantOr(1)&&a.constantOr(G.transparent).a===1&&o.constantOr(0)===1;if(l&&i.currentPass===`opaque`){let e=i.colorModeForRenderPass();sN(t,n,r,i.getDepthModeForSublayer(1,TM.ReadWrite),e,!1,i)}else l&&i.currentPass===`translucent`?oN(t,n,r,i):i.currentPass===`translucent`&&aN(t,n,r,i)}function aN(e,t,n,r){let i=r.colorModeForRenderPass();sN(e,t,n,r.getDepthModeForSublayer(1,TM.ReadOnly),i,!1,r),oN(e,t,n,r)}function oN(e,t,n,r){if(!t.paint.get(`fill-antialias`))return;let i=r.colorModeForRenderPass();sN(e,t,n,r.getDepthModeForSublayer(t.getPaintProperty(`fill-outline-color`)?2:0,TM.ReadOnly),i,!0,r)}function sN(e,t,n,r,i,a,o){let s=o.context,c=s.gl,l=`fill-pattern`,u=t.paint.get(l),d=u?.constantOr(1),f=t.getCrossfadeParameters(),p,m,h,g,_,v=o.transform,y=t.paint.get(`fill-translate`),b=t.paint.get(`fill-translate-anchor`);a?(m=d&&!t.getPaintProperty(`fill-outline-color`)?`fillOutlinePattern`:`fillOutline`,p=c.LINES):(m=d?`fillPattern`:`fill`,p=c.TRIANGLES);let x=u.constantOr(null);for(let u of n){let n=e.getTile(u);if(d&&!n.patternsLoaded())continue;let S=n.getBucket(t);if(!S)continue;let C=S.sdfPatterns[t.id]??!1,w=S.programConfigurations.get(t.id),T=o.useProgram(m,w),E=o.getTerrainDataForTile(u);d&&(s.activeTexture.set(c.TEXTURE0),n.imageAtlasTexture.bind(c.LINEAR,c.CLAMP_TO_EDGE),w.updatePaintBuffers(f)),rN(w,l,x,n,t);let D=o.getProjectionDataForTile(u),O=ft(v,n,y,b);a?(g=S.indexBuffer2,_=S.segments2,h=m===`fillOutlinePattern`&&d?Ej(v,f,n,O,C):Tj(O)):(g=S.indexBuffer,_=S.segments,h=d?Cj(v,f,n,O,C):wj(O));let k=o.stencilModeForClipping(u);T.draw(s,p,r,k,i,wM.backCCW,h,E,D,t.id,S.layoutVertexBuffer,g,_,t.paint,o.transform.zoom,w)}}function cN(e,t,n,r){let i=t.paint.get(`fill-extrusion-opacity`);if(i!==0&&r.currentPass===`translucent`){let a=new TM(r.context.gl.LEQUAL,TM.ReadWrite,r.depthRangeFor3D);if(i===1&&!t.paint.get(`fill-extrusion-pattern`).constantOr(1)){let i=r.colorModeForRenderPass();lN(e,t,n,a,xM.disabled,i,r)}else lN(e,t,n,a,xM.disabled,ej.disabled,r),lN(e,t,n,a,r.stencilModeFor3D(),r.colorModeForRenderPass(),r)}}function lN(e,t,n,r,i,a,o){let s=o.context,c=s.gl,l=`fill-extrusion-pattern`,u=t.paint.get(l),d=u.constantOr(1),f=t.getCrossfadeParameters(),p=t.paint.get(`fill-extrusion-opacity`),m=u.constantOr(null),h=o.transform;for(let u of n){let n=e.getTile(u),g=n.getBucket(t);if(!g)continue;let _=o.getTerrainDataForTile(u),v=g.programConfigurations.get(t.id),y=o.useProgram(d?`fillExtrusionPattern`:`fillExtrusion`,v);d&&(s.activeTexture.set(c.TEXTURE0),n.imageAtlasTexture.bind(c.LINEAR,c.CLAMP_TO_EDGE),v.updatePaintBuffers(f));let b=o.getProjectionDataForTile(u);rN(v,l,m,n,t);let x=ft(h,n,t.paint.get(`fill-extrusion-translate`),t.paint.get(`fill-extrusion-translate-anchor`)),S=t.paint.get(`fill-extrusion-vertical-gradient`),C=d?vj(h,o.data.light,S,p,x,u,f,n):_j(h,o.data.light,S,p,x);y.draw(s,s.gl.TRIANGLES,r,i,a,wM.backCCW,C,_,b,t.id,g.layoutVertexBuffer,g.indexBuffer,g.segments,t.paint,o.transform.zoom,v,o.terrain&&g.centroidVertexBuffer)}}function uN(e,t,n,r,i){if(i.currentPass!==`offscreen`&&i.currentPass!==`translucent`)return;let a=i.context,{useSubdivision:o}=i.data,s=i.getDepthModeForSublayer(0,TM.ReadOnly),c=i.colorModeForRenderPass();if(i.currentPass===`offscreen`)fN(e,t,r,n,s,xM.disabled,c,i),a.viewport.set([0,0,e.width,e.height]);else if(i.currentPass===`translucent`){if(o){let[e,a,o]=i.stencilConfigForOverlapTwoPass(r);dN(t,n,o,e,s,c,!1,i),dN(t,n,o,a,s,c,!0,i)}else{let[e,a]=i.getStencilConfigForOverlapAndUpdateStencilID(r);dN(t,n,a,e,s,c,!1,i)}}}function dN(e,t,n,r,i,a,o,s){let c=s.context,l=c.gl,u=[`#define NUM_ILLUMINATION_SOURCES ${t.paint.get(`hillshade-highlight-color`).values.length}`],d=s.useProgram(`hillshade`,null,!1,u),f=!s.data.moving;for(let u of n){let n=e.getTile(u),p=n.fbo;if(!p)continue;let m=s.getMeshFromTileID(u.canonical,o,!0,`raster`),h=s.getTerrainDataForTile(u);c.activeTexture.set(l.TEXTURE0),l.bindTexture(l.TEXTURE_2D,p.colorAttachment.get());let g=s.getProjectionDataForTile(u,{aligned:f});d.draw(c,l.TRIANGLES,i,r[u.overscaledZ],a,wM.backCCW,Lj(s.transform,n,t),h,g,t.id,m.vertexBuffer,m.indexBuffer,m.segments)}}function fN(e,t,n,r,i,a,o,s){let c=s.context,l=c.gl,u=r.paint.get(`resampling`)===`nearest`?l.NEAREST:l.LINEAR;for(let d of n){let n=t.getTile(d),f=n.dem;if(!f?.data||!n.needsHillshadePrepare)continue;let p=f.dim+2,m=f.stride,h=f.getPixels();if(c.activeTexture.set(l.TEXTURE1),c.pixelStoreUnpackPremultiplyAlpha.set(!1),n.demTexture||=e.getTileTexture(m),n.demTexture){let e=n.demTexture;e.update(h,{premultiply:!1}),e.bind(l.NEAREST,l.CLAMP_TO_EDGE)}else n.demTexture=new Wf(c,h,l.RGBA,{premultiply:!1}),n.demTexture.bind(l.NEAREST,l.CLAMP_TO_EDGE);c.activeTexture.set(l.TEXTURE0);let g=n.fbo;if(!g){let e=new Wf(c,{width:p,height:p,data:null},l.RGBA);e.bind(u,l.CLAMP_TO_EDGE),g=n.fbo=c.createFramebuffer(p,p,!0,!1),g.colorAttachment.set(e.texture)}c.bindFramebuffer.set(g.framebuffer),c.viewport.set([0,0,p,p]),s.useProgram(`hillshadePrepare`).draw(c,l.TRIANGLES,i,a,o,wM.disabled,Rj(s.transform,n.tileID,f),null,null,r.id,e.rasterBoundsBuffer,e.quadTriangleIndexBuffer,e.rasterBoundsSegments),n.needsHillshadePrepare=!1}}function pN(e,t,n,r,i){if(i.currentPass!==`translucent`||!r.length)return;let{useSubdivision:a}=i.data,o=i.getDepthModeForSublayer(0,TM.ReadOnly),s=i.colorModeForRenderPass();if(a){let[a,c,l]=i.stencilConfigForOverlapTwoPass(r);hN(e,t,n,l,a,o,s,!1,i),hN(e,t,n,l,c,o,s,!0,i)}else{let[a,c]=i.getStencilConfigForOverlapAndUpdateStencilID(r);hN(e,t,n,c,a,o,s,!1,i)}}var mN=0;function hN(e,t,n,r,i,a,o,s,c){let l=c.context,u=l.gl,d=c.useProgram(`colorRelief`),f=!c.data.moving,p=n.paint.get(`resampling`)===`nearest`?u.NEAREST:u.LINEAR,m=!0,h=0;for(let g of r){let r=t.getTile(g),_=r.dem;if(!_?.data)continue;if(m){mN||=u.getParameter(u.MAX_TEXTURE_SIZE);let e=mN,{elevationTexture:t,colorTexture:r}=n.getColorRampTextures(l,e,_.getUnpackVector());l.activeTexture.set(u.TEXTURE1),t.bind(u.NEAREST,u.CLAMP_TO_EDGE),l.activeTexture.set(u.TEXTURE4),r.bind(u.LINEAR,u.CLAMP_TO_EDGE),m=!1,h=t.size[0]}let v=_.stride;l.activeTexture.set(u.TEXTURE0),(!r.demTexture||r.needsColorReliefPrepare)&&(l.pixelStoreUnpackPremultiplyAlpha.set(!1),r.demTexture||=e.getTileTexture(v)??new Wf(l,{width:v,height:v,data:null},u.RGBA),r.demTexture.update(_.getPixels(),{premultiply:!1}),r.needsColorReliefPrepare=!1),r.demTexture.bind(p,u.CLAMP_TO_EDGE);let y=c.getMeshFromTileID(g.canonical,s,!0,`raster`),b=c.getTerrainDataForTile(g),x=c.getProjectionDataForTile(g,{aligned:f});d.draw(l,u.TRIANGLES,a,i[g.overscaledZ],o,wM.backCCW,Hj(n,r.dem,h),b,x,n.id,y.vertexBuffer,y.indexBuffer,y.segments)}}var gN=[new f(0,0),new f(N,0),new f(N,N),new f(0,N)];function _N(e,t,n,r){if(r.currentPass!==`translucent`||t.paint.get(`raster-opacity`)===0||!n.length)return;let i=e.getSource(),{useSubdivision:a}=r.data;if(i instanceof kx)vN(e,t,n,null,!1,!1,i.tileCoords,i.imageWarp,i.flippedWindingOrder,r,i.getMesh(r.context,a));else if(a){let[i,a,o]=r.stencilConfigForOverlapTwoPass(n);vN(e,t,o,i,!1,!0,gN,yx,!1,r),vN(e,t,o,a,!0,!0,gN,yx,!1,r)}else{let[i,a]=r.getStencilConfigForOverlapAndUpdateStencilID(n);vN(e,t,a,i,!1,!0,gN,yx,!1,r)}}function vN(e,t,n,r,i,a,o,s,c=!1,l,u=null){let d=n[n.length-1].overscaledZ,f=l.context,p=f.gl,m=l.useProgram(`raster`),h=l.colorModeForRenderPass(),g=!l.data.moving,_=t.paint.get(`raster-opacity`),v=t.paint.get(`resampling`)===`nearest`||t.paint.get(`raster-resampling`)===`nearest`?p.NEAREST:p.LINEAR,y=t.paint.get(`raster-fade-duration`),b=!!l.terrain;for(let x of n){let n=l.getDepthModeForSublayer(x.overscaledZ-d,_===1?TM.ReadWrite:TM.ReadOnly,p.LESS),S=e.getTile(x);f.activeTexture.set(p.TEXTURE0),S.texture.bind(v,p.CLAMP_TO_EDGE,p.LINEAR_MIPMAP_NEAREST),f.activeTexture.set(p.TEXTURE1);let{parentTile:C,parentScaleBy:w,parentTopLeft:T,fadeValues:E}=yN(S,e,y,b);S.fadeOpacity=E.tileOpacity,C?(C.fadeOpacity=E.parentTileOpacity,C.texture.bind(v,p.CLAMP_TO_EDGE,p.LINEAR_MIPMAP_NEAREST)):S.texture.bind(v,p.CLAMP_TO_EDGE,p.LINEAR_MIPMAP_NEAREST),S.texture.useMipmap&&f.extTextureFilterAnisotropic&&l.transform.pitch>l.data.anisotropicFilterPitch&&p.texParameterf(p.TEXTURE_2D,f.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,f.extTextureFilterAnisotropicMax);let D=l.getTerrainDataForTile(x),O=l.getProjectionDataForTile(x,{aligned:g}),k=xx(T,w,E.fadeMix,t,o,s),A=u??l.getMeshFromTileID(x.canonical,i,a,`raster`),j=r?r[x.overscaledZ]:xM.disabled;m.draw(f,p.TRIANGLES,n,j,h,c?wM.frontCCW:wM.backCCW,k,D,O,t.id,A.vertexBuffer,A.indexBuffer,A.segments)}}function yN(e,t,n,r){let i={parentTile:null,parentScaleBy:1,parentTopLeft:[0,0],fadeValues:{tileOpacity:1,parentTileOpacity:1,fadeMix:{opacity:1,mix:0}}};if(n===0||r)return i;if(e.fadingParentID){let r=t.getLoadedTile(e.fadingParentID);if(!r)return i;let a=2**(r.tileID.overscaledZ-e.tileID.overscaledZ);return{parentTile:r,parentScaleBy:a,parentTopLeft:[e.tileID.canonical.x*a%1,e.tileID.canonical.y*a%1],fadeValues:bN(e,r,n)}}return e.selfFading?{parentTile:null,parentScaleBy:1,parentTopLeft:[0,0],fadeValues:xN(e,n)}:i}function bN(e,t,n){let r=Sn(),i=(r-e.timeAdded)/n,a=(r-t.timeAdded)/n,o=e.fadingDirection===1,s=P(i,0,1),c=P(1-a,0,1),l=o?s:c;return{tileOpacity:l,parentTileOpacity:o?c:s,fadeMix:{opacity:1,mix:1-l}}}function xN(e,t){let n=P((Sn()-e.timeAdded)/t,0,1);return{tileOpacity:n,fadeMix:{opacity:n,mix:0}}}function SN(e,t,n,r,i){let a=n.paint.get(`background-color`),o=n.paint.get(`background-opacity`);if(o===0)return;let s=i.context,c=s.gl,l=i.transform,u=l.tileSize,d=n.paint.get(`background-pattern`);if(e.patternAtlas.isPatternMissing(d))return;let f=!d&&a.a===1&&o===1&&i.opaquePassEnabledForLayer()?`opaque`:`translucent`;if(i.currentPass!==f)return;let p=xM.disabled,m=i.getDepthModeForSublayer(0,f===`opaque`?TM.ReadWrite:TM.ReadOnly),h=i.colorModeForRenderPass(),g=i.useProgram(d?`backgroundPattern`:`background`),_=r||KE(l,{tileSize:u,terrain:i.terrain});d&&(s.activeTexture.set(c.TEXTURE0),e.patternAtlas.bind(s));let v=n.getCrossfadeParameters();for(let t of _){let r=i.getProjectionDataForTile(t),f=d?fM(o,e.patternAtlas,l,d,{tileID:t,tileSize:u},v):dM(o,a),_=i.getTerrainDataForTile(t),y=i.getMeshFromTileID(t.canonical,!1,!0,`raster`);g.draw(s,c.TRIANGLES,m,p,h,wM.backCCW,f,_,r,n.id,y.vertexBuffer,y.indexBuffer,y.segments)}}var CN=new G(1,0,0,1),wN=new G(0,1,0,1),TN=new G(0,0,1,1),EN=new G(1,0,1,1),DN=new G(0,1,1,1);function ON(e){let t=e.transform.padding;AN(e,e.transform.height-(t.top||0),3,CN),AN(e,t.bottom||0,3,wN),jN(e,t.left||0,3,TN),jN(e,e.transform.width-(t.right||0),3,EN);let n=e.transform.centerPoint;kN(e,n.x,e.transform.height-n.y,DN)}function kN(e,t,n,r){MN(e,t-1,n-10,2,20,r),MN(e,t-10,n-1,20,2,r)}function AN(e,t,n,r){MN(e,0,t+n/2,e.transform.width,n,r)}function jN(e,t,n,r){MN(e,t-n/2,0,n,e.transform.height,r)}function MN(e,t,n,r,i,a){let o=e.context,s=o.gl,c=e.data.pixelRatio;s.enable(s.SCISSOR_TEST),s.scissor(t*c,n*c,r*c,i*c),o.clear({color:a}),s.disable(s.SCISSOR_TEST)}function NN(e,t,n,r){for(let i of n)PN(e,t,i,r)}function PN(e,t,n,r){let i=r.context,a=i.gl,o=r.useProgram(`debug`),s=TM.disabled,c=xM.disabled,l=r.colorModeForRenderPass(),u=`$debug`,d=r.getTerrainDataForTile(n);i.activeTexture.set(a.TEXTURE0);let f=t.getTileByID(n.key).latestRawTileData?.byteLength||0,p=Math.floor(f/1024),m=t.getTile(n).tileSize,h=512/Math.min(m,512)*(n.overscaledZ/r.transform.zoom)*.5,g=n.canonical.toString();n.overscaledZ!==n.canonical.z&&(g+=` => ${n.overscaledZ}`),FN(e,`${g} ${p}kB`);let _=r.getProjectionDataForTile(n);o.draw(i,a.TRIANGLES,s,c,ej.alphaBlended,wM.disabled,Aj(G.transparent,h),null,_,u,e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments),o.draw(i,a.LINE_STRIP,s,c,l,wM.disabled,Aj(G.red),d,_,u,e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments)}function FN(e,t){e.initDebugOverlayCanvas();let n=e.debugOverlayCanvas,r=e.context.gl,i=e.debugOverlayCanvas.getContext(`2d`);i.clearRect(0,0,n.width,n.height),i.shadowColor=`white`,i.shadowBlur=2,i.lineWidth=1.5,i.strokeStyle=`white`,i.textBaseline=`top`,i.font=`bold 36px Open Sans, sans-serif`,i.fillText(t,5,5),i.strokeText(t,5,5),e.debugOverlayTexture.update(n),e.debugOverlayTexture.bind(r.LINEAR,r.CLAMP_TO_EDGE)}function IN(e,t){let n=null,r=Object.values(e._layers).flatMap(n=>n.source&&!n.isHidden(t)?[e.tileManagers[n.source]]:[]),i=r.filter(e=>e.getSource().type===`vector`),a=r.filter(e=>e.getSource().type!==`vector`),o=e=>{(!n||n.getSource().maxzoom<e.getSource().maxzoom)&&(n=e)};for(let e of i)o(e);if(!n)for(let e of a)o(e);return n}function LN(e,t,n){let r=n.context,i=r.gl,a=n.transform,o=ej.unblended,s=new TM(i.LEQUAL,TM.ReadWrite,[0,1]),c=t.tileManager.getRenderableTiles(),l=n.useProgram(`terrainDepth`);r.bindFramebuffer.set(t.getFramebuffer().framebuffer),r.viewport.set([0,0,e.width/devicePixelRatio,e.height/devicePixelRatio]),r.clear({color:G.white,depth:1});for(let e of c){let c=t.getTerrainMesh(e.tileID,n.data.isRenderingGlobe),u=t.getTerrainData(e.tileID),d=a.getProjectionData({overscaledTileID:e.tileID,applyTerrainMatrix:!1,applyGlobeMatrix:!0}),f=cj(t.getSkirtLength(a.zoom));l.draw(r,i.TRIANGLES,s,xM.disabled,o,wM.backCCW,f,u,d,`terrain`,c.vertexBuffer,c.indexBuffer,c.segments)}r.bindFramebuffer.set(null),r.viewport.set([0,0,e.width,e.height])}function RN(e,t,n,r){let{isRenderingGlobe:i}=r.data,a=r.context,o=a.gl,s=r.transform,c=r.colorModeForRenderPass(),l=r.getDepthModeFor3D(),u=r.useProgram(`terrain`);a.bindFramebuffer.set(null),a.viewport.set([0,0,e.width,e.height]);for(let d of n){let n=t.getTerrainMesh(d.tileID,i),f=e.renderToTexture.getTexture(d),p=t.getTerrainData(d.tileID);a.activeTexture.set(o.TEXTURE0),f.bind(o.LINEAR,o.CLAMP_TO_EDGE,o.LINEAR_MIPMAP_LINEAR);let m=sj(t.getSkirtLength(s.zoom),s.calculateFogMatrix(d.tileID.toUnwrapped()),r.data.sky,s.pitch,i),h=r.getProjectionDataForTile(d.tileID,{applyTerrainMatrix:!1});u.draw(a,o.TRIANGLES,l,xM.disabled,c,wM.backCCW,m,p,h,`terrain`,n.vertexBuffer,n.indexBuffer,n.segments)}}function zN(e,t,n){let r=e.context,i=r.gl,[a,o,s,c]=n.bounds;r.setDirty();let l=t.getHeightMapFramebuffer(n.texture);r.viewport.set([0,0,n.width,n.height]),r.clear({color:G.transparent});let u=e.useProgram(`terrainHeight`,null,!0);for(let n of t.tileManager.getRenderableTiles()){let l=t.getTerrainData(n.tileID);if(!l.tile?.dem)continue;let{canonical:d,wrap:f}=n.tileID,p=1/(1<<d.z),m=lj([(d.x*p+f-a)/(s-a),(d.y*p-o)/(c-o),p/(s-a),p/(c-o)]),h=t.getTerrainMesh(n.tileID,e.data.isRenderingGlobe);u.draw(r,i.TRIANGLES,TM.disabled,xM.disabled,ej.unblended,wM.disabled,m,l,null,`terrain`,h.vertexBuffer,h.indexBuffer,h.segments)}l.colorAttachment.set(null)}function BN(e,t,n,r,i){if(i.isRenderingToTexture){VN(e,n,r[0],i);return}let{isRenderingGlobe:a,projectionShaderVariant:o}=i.data,{terrain:s}=i,c=i.context,l=n.implementation,u=i.transform,d=u.getProjectionDataForCustomLayer(a),f={farZ:u.farZ,nearZ:u.nearZ,fov:u.fov*Math.PI/180,modelViewProjectionMatrix:u.modelViewProjectionMatrix,projectionMatrix:u.projectionMatrix,shaderData:{variantName:o.name,vertexShaderPrelude:`const float PI = 3.141592653589793;\nuniform mat4 u_projection_matrix;\n${o.prelude.vertexSource}`,define:o.define},defaultProjectionData:d,getProjectionData:e=>u.getProjectionData({overscaledTileID:new Kb(e.tileID.canonical.z,e.tileID.wrap??0,e.tileID.canonical.z,e.tileID.canonical.x,e.tileID.canonical.y),aligned:e.aligned,applyGlobeMatrix:e.applyGlobeMatrix,applyTerrainMatrix:e.applyTerrainMatrix}),renderTerrainHeightMap:s&&i.currentPass===`offscreen`?e=>zN(i,s,e):void 0},p=l.renderingMode?l.renderingMode:`2d`;if(i.currentPass===`offscreen`){let t=l.prerender;t&&(c.setCustomLayerDefaults(),c.setColorMode(i.colorModeForRenderPass()),t.call(l,c.gl,f),c.setDirty(),e.setBaseState())}else if(i.currentPass===`translucent`){c.setCustomLayerDefaults(),c.setColorMode(i.colorModeForRenderPass()),c.setStencilMode(xM.disabled);let t=p===`3d`?i.getDepthModeFor3D():i.getDepthModeForSublayer(0,TM.ReadOnly);c.setDepthMode(t),l.render(c.gl,f),c.setDirty(),e.setBaseState(),c.bindFramebuffer.set(null)}}function VN(e,t,n,r){let i=r.context,a=i.bindFramebuffer.get(),o=i.viewport.get();i.setCustomLayerDefaults(),i.setColorMode(r.colorModeForRenderPass()),i.setDepthMode(TM.disabled),i.setStencilMode(xM.disabled),t.implementation.renderToTerrainTile(i.gl,{tileID:{canonical:n.canonical,wrap:n.wrap},width:o[2],height:o[3]}),i.setDirty(),e.setBaseState(),i.bindFramebuffer.set(a),i.viewport.set(o)}function HN(e,t){let n=t.context,r=n.gl,{sky:i,pixelRatio:a}=t.data,o=gM(i,t.transform,a),s=new TM(r.LEQUAL,TM.ReadWrite,[0,1]),c=xM.disabled,l=t.colorModeForRenderPass();t.useProgram(`sky`).draw(n,r.TRIANGLES,s,c,l,wM.disabled,o,null,void 0,`sky`,e.vertexBuffer,e.indexBuffer,e.segments)}function UN(e,t){let n=Ut(e.position);Se(n,n);let r=A(new Float64Array(16));return e.anchor===`map`&&(ae(r,r,t.rollInRadians),re(r,r,-t.pitchInRadians),ae(r,r,t.bearingInRadians),re(r,r,t.center.lat*Math.PI/180),ie(r,r,-t.center.lng*Math.PI/180)),De(n,n,r),n}function WN(e,t){let n=t.context,r=n.gl,{sky:i,light:a}=t.data,o=t.useProgram(`atmosphere`),s=new TM(r.LEQUAL,TM.ReadOnly,[0,1]),c=t.transform,l=UN(a,c),u=c.getProjectionData({overscaledTileID:null,applyGlobeMatrix:!0,applyTerrainMatrix:!0}),d=ak(c.worldSize,c.center.lat),f=ok(c),p=wk(he(f)-d,d),m=i[`atmosphere-blend`]*u.projectionTransition*p;if(m===0)return;let h=mM(l,m,f,d,c.inverseProjectionMatrix);o.draw(n,r.TRIANGLES,s,xM.disabled,ej.alphaBlended,wM.disabled,h,null,null,`atmosphere`,e.vertexBuffer,e.indexBuffer,e.segments)}var GN={symbol:AM,circle:RM,heatmap:zM,line:tN,fill:iN,fillExtrusion:cN,hillshade:uN,colorRelief:pN,raster:_N,background:SN,sky:HN,atmosphere:WN,custom:BN,debug:NN,debugPadding:ON,terrainDepth:LN},KN=rD.maxOverzooming+rD.maxUnderzooming+1,qN=1/2**16,JN={name:TO,define:wO,prelude:SO.projectionMercator},YN=class{constructor(e){this.currentLayer=0,this.opaquePassCutoff=1/0,this.depthRangeFor3D=[0,1],this.isRenderingToTexture=!1,this.nextStencilID=1,this.tileClippingMaskIDs={},this.transform=e.transform,this.terrain=e.terrain,this.data=e.data,this.context=e.context,this.programCache=e.programCache,this.currentPass=e.currentPass,this.projection=e.projection}getProjectionDataForTile(e,t={}){let n=this.transform.getProjectionData({overscaledTileID:e,aligned:t.aligned,applyGlobeMatrix:!this.isRenderingToTexture,applyTerrainMatrix:t.applyTerrainMatrix??!0});return this.isRenderingToTexture||(n.uniformBufferKey=t.aligned?`${e.key}/aligned`:e.key),n}getTerrainDataForTile(e){return this.isRenderingToTexture?null:this.terrain?.getTerrainData(e)??null}getMeshFromTileID(e,t,n,r){return this.projection.getMeshFromTileID(this.context,e,t,n,r)}useProgram(e,t,n=!1,r=[]){return this.programCache.getProgram({name:e,programConfiguration:t,projectionShaderVariant:n?JN:this.data.projectionShaderVariant,showOverdrawInspector:this.data.showOverdrawInspector,useTerrain:this.terrain!==null,defines:r})}colorModeForRenderPass(){let e=this.context.gl;if(this.data.showOverdrawInspector){let t=1/8;return new ej([e.CONSTANT_COLOR,e.ONE],new G(t,t,t,0),[!0,!0,!0,!0])}return this.currentPass===`opaque`?ej.unblended:ej.alphaBlended}getDepthModeForSublayer(e,t,n){if(!this.opaquePassEnabledForLayer())return TM.disabled;let r=1-((1+this.currentLayer)*KN+e)*qN;return new TM(n||this.context.gl.LEQUAL,t,[r,r])}getDepthModeFor3D(){return new TM(this.context.gl.LEQUAL,TM.ReadWrite,this.depthRangeFor3D)}setDepthRangeFor3D(e){this.depthRangeFor3D=[0,1-(e+2)*KN*qN]}opaquePassEnabledForLayer(){return this.currentLayer<this.opaquePassCutoff}clearStencil(){this.nextStencilID=1,this.currentStencilSource=void 0,this.context.clear({stencil:0})}invalidateTileClippingMasks(){this.currentStencilSource=void 0}renderTileClippingMasks(e,t){if(this.currentStencilSource===e.source||!e.isTileClipped()||!t?.length)return;this.currentStencilSource=e.source,this.nextStencilID+t.length>256&&this.clearStencil();let n=this.context;n.setColorMode(ej.disabled),n.setDepthMode(TM.disabled);let r={};for(let e of t)r[e.key]=this.nextStencilID++;this.data.useSubdivision&&this.renderTileMasks(r,t,!0),this.renderTileMasks(r,t,!1),this.tileClippingMaskIDs=r}renderTileMasks(e,t,n){let r=this.context,i=r.gl,a=this.useProgram(`clippingMask`);for(let o of t){let t=e[o.key],s=this.getTerrainDataForTile(o),c=this.getMeshFromTileID(o.canonical,n,!0,`stencil`),l=this.getProjectionDataForTile(o);a.draw(r,i.TRIANGLES,TM.disabled,new xM({func:i.ALWAYS,mask:0},t,255,i.KEEP,i.KEEP,i.REPLACE),ej.disabled,this.isRenderingToTexture?wM.disabled:wM.backCCW,null,s,l,`$clipping`,c.vertexBuffer,c.indexBuffer,c.segments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();let e=this.nextStencilID++,t=this.context.gl;return new xM({func:t.NOTEQUAL,mask:255},e,255,t.KEEP,t.KEEP,t.REPLACE)}stencilModeForClipping(e){let t=this.context.gl;return new xM({func:t.EQUAL,mask:255},this.tileClippingMaskIDs[e.key],0,t.KEEP,t.KEEP,t.REPLACE)}getStencilConfigForOverlapAndUpdateStencilID(e){let t=this.context.gl,n=e.sort((e,t)=>t.overscaledZ-e.overscaledZ),r=n[n.length-1].overscaledZ,i=n[0].overscaledZ-r+1;if(i>1){this.currentStencilSource=void 0,this.nextStencilID+i>256&&this.clearStencil();let e={};for(let n=0;n<i;n++)e[n+r]=new xM({func:t.GEQUAL,mask:255},n+this.nextStencilID,255,t.KEEP,t.KEEP,t.REPLACE);return this.nextStencilID+=i,[e,n]}return[{[r]:xM.disabled},n]}stencilConfigForOverlapTwoPass(e){let t=this.context.gl,n=e.sort((e,t)=>t.overscaledZ-e.overscaledZ),r=n[n.length-1].overscaledZ,i=n[0].overscaledZ-r+1;if(this.clearStencil(),i>1){let e={},a={};for(let n=0;n<i;n++)e[n+r]=new xM({func:t.GREATER,mask:255},i+1+n,255,t.KEEP,t.KEEP,t.REPLACE),a[n+r]=new xM({func:t.GREATER,mask:255},1+n,255,t.KEEP,t.KEEP,t.REPLACE);return this.nextStencilID=i*2+1,[e,a,n]}return this.nextStencilID=3,[{[r]:new xM({func:t.GREATER,mask:255},2,255,t.KEEP,t.KEEP,t.REPLACE)},{[r]:new xM({func:t.GREATER,mask:255},1,255,t.KEEP,t.KEEP,t.REPLACE)},n]}},XN=class e{constructor(e){this.drawFunctions=GN,this.context=new tj(e),this.programCache=new yM(this.context),this.layerOpacityFbo=null,this._tileTextures={},this._rttObjectRecyclePool=[],this._rttSharedFbo=null,this.terrainFacilitator={depthDirty:!0,matrix:A(new Float64Array(16)),renderTime:0},this.setup()}resize(e,t,n){this.width=Math.round(e*n),this.height=Math.round(t*n),this.context.viewport.set([0,0,this.width,this.height])}setup(){let e=this.context,t=new Au;t.emplaceBack(0,0),t.emplaceBack(N,0),t.emplaceBack(0,N),t.emplaceBack(N,N),this.tileExtentBuffer=e.createVertexBuffer(t,Ex.members),this.tileExtentSegments=Qu.simpleSegment(0,0,4,2);let n=new Au;n.emplaceBack(0,0),n.emplaceBack(N,0),n.emplaceBack(0,N),n.emplaceBack(N,N),this.debugBuffer=e.createVertexBuffer(n,Ex.members),this.debugSegments=Qu.simpleSegment(0,0,4,5);let r=new Mu;r.emplaceBack(0,0,0,0),r.emplaceBack(N,0,N,0),r.emplaceBack(0,N,0,N),r.emplaceBack(N,N,N,N),this.rasterBoundsBuffer=e.createVertexBuffer(r,Kk.members),this.rasterBoundsSegments=Qu.simpleSegment(0,0,4,2);let i=new Au;i.emplaceBack(0,0),i.emplaceBack(1,0),i.emplaceBack(0,1),i.emplaceBack(1,1),this.viewportBuffer=e.createVertexBuffer(i,Ex.members),this.viewportSegments=Qu.simpleSegment(0,0,4,2);let a=new Yu;a.emplaceBack(0),a.emplaceBack(1),a.emplaceBack(3),a.emplaceBack(2),a.emplaceBack(0),this.tileBorderIndexBuffer=e.createIndexBuffer(a);let o=new qu;o.emplaceBack(1,0,2),o.emplaceBack(1,2,3),this.quadTriangleIndexBuffer=e.createIndexBuffer(o),this.tileExtentMesh=new Tx(this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments);let s=new Au;s.emplaceBack(-1,-1),s.emplaceBack(1,-1),s.emplaceBack(1,1),s.emplaceBack(-1,1);let c=new qu;c.emplaceBack(0,1,2),c.emplaceBack(0,2,3),this.skyMesh=new Tx(e.createVertexBuffer(s,Ex.members),e.createIndexBuffer(c),Qu.simpleSegment(0,0,s.length,c.length))}_renderTilesDepthBuffer(e){let t=this.context,n=t.gl,r=e.transform,i=e.useProgram(`depth`),a=e.getDepthModeFor3D(),o=KE(r,{tileSize:r.tileSize});for(let r of o){let o=e.getTerrainDataForTile(r),s=e.getMeshFromTileID(r.canonical,!0,!0,`raster`),c=e.getProjectionDataForTile(r);i.draw(t,n.TRIANGLES,a,xM.disabled,ej.disabled,wM.backCCW,null,o,c,`$clipping`,s.vertexBuffer,s.indexBuffer,s.segments)}}render(e,t,n){if(this.context.gl.isContextLost())return;let r=new YN({transform:t,terrain:e.map.terrain??null,data:n,context:this.context,programCache:this.programCache,currentPass:`offscreen`,projection:e.projection});this.lineAtlas=e.lineAtlas,this.patternAtlas=e.patternAtlas,JA(this.context.frameUniformBuffer,t,n),e.imageManager.beginFrame(),UA(this.context);let i=e._order,a=e.tileManagers,o={},s={},c={};for(let e in a){let t=a[e];t.used&&t.prepare(this.context),o[e]=t.getVisibleCoordinates(!1),s[e]=o[e].slice().reverse(),c[e]=t.getVisibleCoordinates(!0).reverse()}r.opaquePassCutoff=1/0;for(let t=0;t<i.length;t++){let n=i[t];if(e._layers[n].is3D()){r.opaquePassCutoff=t;break}}this.maybeDrawDepth(r),this.renderToTexture&&(this.renderToTexture.prepareForRender(e,t.zoom,n.moving),r.opaquePassCutoff=0),r.currentPass=`offscreen`;for(let n of i){let i=e._layers[n];if(!i.hasOffscreenPass()||i.isHidden(t.zoom))continue;let o=s[i.source];(i.type===`custom`||o.length)&&this.renderLayer(this,a[i.source],i,o,r)}if(this.context.viewport.set([0,0,this.width,this.height]),this.context.bindFramebuffer.set(null),this.context.clear({color:n.showOverdrawInspector?G.black:G.transparent,depth:1}),r.clearStencil(),n.sky&&this.drawFunctions.sky(this.skyMesh,r),r.setDepthRangeFor3D(e._order.length),!this.renderToTexture)for(r.currentPass=`opaque`,r.currentLayer=i.length-1;r.currentLayer>=0;r.currentLayer--){let n=e._layers[i[r.currentLayer]];if(n.isHidden(t.zoom))continue;let s=a[n.source],c=o[n.source];r.renderTileClippingMasks(n,c),this.renderLayer(this,s,n,c,r)}r.currentPass=`translucent`;let l=!1;for(r.currentLayer=0;r.currentLayer<i.length;r.currentLayer++){let u=e._layers[i[r.currentLayer]];if(u.isHidden(t.zoom))continue;let d=a[u.source];if(this.renderToTexture?.renderLayer(u,e,r))continue;!r.opaquePassEnabledForLayer()&&!l&&(l=!0,n.isRenderingGlobe&&!r.terrain&&this._renderTilesDepthBuffer(r));let f=(u.type===`symbol`?c:s)[u.source];r.renderTileClippingMasks(u,o[u.source]),this.renderLayer(this,d,u,f,r)}if(n.isRenderingGlobe&&this.drawFunctions.atmosphere(this.skyMesh,r),n.showTileBoundaries){let n=IN(e,t.zoom);n&&this.drawFunctions.debug(this,n,n.getVisibleCoordinates(),r)}n.showPadding&&this.drawFunctions.debugPadding(r),this.renderToTexture&&!n.moving&&this.clearRTTPool(),this.context.setDefault()}markTerrainDepthDirty(){this.terrainFacilitator.depthDirty=!0}maybeDrawDepth(e){if(!e.data.projectionShaderVariant||!e.terrain)return;let t=this.terrainFacilitator.matrix,n=e.transform.modelViewProjectionMatrix,r=this.terrainFacilitator.depthDirty;r||=!fe(t,n),r||=e.terrain.tileManager.anyTilesAfterTime(this.terrainFacilitator.renderTime),r&&(k(t,n),this.terrainFacilitator.renderTime=Sn(),this.terrainFacilitator.depthDirty=!1,this.drawFunctions.terrainDepth(this,e.terrain,e))}renderLayer(e,t,n,r,i){if(n.isHidden(i.transform.zoom)||n.type!==`background`&&n.type!==`custom`&&!(r||[]).length)return;let a=this.drawFunctions;vy(n)?a.symbol(e,t,n,r,i):yf(n)?a.circle(t,n,r,i):Nf(n)?a.heatmap(e,t,n,r,i):Uh(n)?a.line(e,t,n,r,i):gm(n)?a.fill(e,t,n,r,i):yh(n)?a.fillExtrusion(t,n,r,i):Rf(n)?a.hillshade(e,t,n,r,i):qf(n)?a.colorRelief(e,t,n,r,i):Bl(n)?a.raster(t,n,r,i):wy(n)?a.background(e,t,n,r,i):Dy(n)&&a.custom(e,t,n,r,i)}static{this.MAX_TEXTURE_POOL_SIZE_PER_BUCKET=50}saveTileTexture(t){let n=this._tileTextures[t.size[0]];n?n.length<e.MAX_TEXTURE_POOL_SIZE_PER_BUCKET?n.push(t):t.destroy():this._tileTextures[t.size[0]]=[t]}getTileTexture(e){let t=this._tileTextures[e];return t&&t.length>0?t.pop():null}acquireRTT(e){let t=this.context.gl,n=this._rttObjectRecyclePool.pop();if(n)return n.size!==e&&(n.texture.update({width:e,height:e,data:null},{premultiply:!1,useMipmap:!0}),n.texture.bind(t.LINEAR,t.CLAMP_TO_EDGE,t.LINEAR_MIPMAP_LINEAR),this.context.extTextureFilterAnisotropic&&t.texParameterf(t.TEXTURE_2D,this.context.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,this.context.extTextureFilterAnisotropicMax),n.size=e),n;let r=new Wf(this.context,{width:e,height:e,data:null},t.RGBA,{premultiply:!1,useMipmap:!0});return r.bind(t.LINEAR,t.CLAMP_TO_EDGE,t.LINEAR_MIPMAP_LINEAR),this.context.extTextureFilterAnisotropic&&t.texParameterf(t.TEXTURE_2D,this.context.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,this.context.extTextureFilterAnisotropicMax),{texture:r,size:e}}bindRTT(e){let t=this.context.gl,n=e.size;if(!this._rttSharedFbo){let e=this.context.createFramebuffer(n,n,!0,!0),r=this.context.createRenderbuffer(t.DEPTH_STENCIL,n,n);e.depthAttachment.set(r),this._rttSharedFbo={fbo:e,depthRenderbuffer:r,size:n}}this._rttSharedFbo.size!==n&&(this.context.bindRenderbuffer.set(this._rttSharedFbo.depthRenderbuffer),t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_STENCIL,n,n),this.context.bindRenderbuffer.set(null),this._rttSharedFbo.fbo.width=n,this._rttSharedFbo.fbo.height=n,this._rttSharedFbo.size=n),this._rttSharedFbo.fbo.colorAttachment.set(e.texture.texture),this.context.bindFramebuffer.set(this._rttSharedFbo.fbo.framebuffer)}releaseRTT(e){this._rttObjectRecyclePool.push(e)}clearRTTPool(){for(let e of this._rttObjectRecyclePool)e.texture.destroy();this._rttObjectRecyclePool.length=0}destroyRTTResources(){if(this.clearRTTPool(),!this._rttSharedFbo)return;this._rttSharedFbo.fbo.colorAttachment.set(null),this._rttSharedFbo.fbo.depthAttachment.set(null);let e=this.context.gl;e.deleteRenderbuffer(this._rttSharedFbo.depthRenderbuffer),e.deleteFramebuffer(this._rttSharedFbo.fbo.framebuffer),this._rttSharedFbo=null}setBaseState(){let e=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(e.FUNC_ADD)}initDebugOverlayCanvas(){if(this.debugOverlayCanvas==null){this.debugOverlayCanvas=document.createElement(`canvas`),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512;let e=this.context.gl;this.debugOverlayTexture=new Wf(this.context,this.debugOverlayCanvas,e.RGBA)}}destroy(){if(this._tileTextures){for(let e in this._tileTextures){let t=this._tileTextures[e];if(t)for(let e of t)e.destroy()}this._tileTextures={}}this.destroyRTTResources(),this.layerOpacityFbo?.destroy(),this.layerOpacityFbo=null,this.tileExtentBuffer&&this.tileExtentBuffer.destroy(),this.debugBuffer&&this.debugBuffer.destroy(),this.rasterBoundsBuffer&&this.rasterBoundsBuffer.destroy(),this.viewportBuffer&&this.viewportBuffer.destroy(),this.tileBorderIndexBuffer&&this.tileBorderIndexBuffer.destroy(),this.quadTriangleIndexBuffer&&this.quadTriangleIndexBuffer.destroy(),this.tileExtentMesh&&this.tileExtentMesh.vertexBuffer?.destroy(),this.tileExtentMesh&&this.tileExtentMesh.indexBuffer?.destroy(),this.skyMesh?.destroy(),this.skyMesh=null,this.debugOverlayTexture&&this.debugOverlayTexture.destroy(),this.context.destroy(),this.programCache.destroy(),this.context&&this.context.setDefault()}overLimit(){let{drawingBufferWidth:e,drawingBufferHeight:t}=this.context.gl;return this.width!==e||this.height!==t}},ZN=class extends Error{constructor(e,t){super(`WebGL2 is required to display this map. We are sorry, but it seems that your browser does not support WebGL2, a technology for rendering 3D graphics on the web. Read more on https://wiki.openstreetmap.org/wiki/This_map_requires_WebGL`),this.name=`GPUInitializationError`,this.requestedAttributes=e,this.statusMessage=t?.statusMessage??null}};function QN(e,t){let n=!1,r=null,i,a=()=>{r=null,n&&=(e(...i),r=setTimeout(a,t),!1)};return(...e)=>(n=!0,i=e,r||a(),r)}var $N=class{constructor(e){this._getHashParams=()=>new URLSearchParams(window.location.hash.replace(`#`,``)),this._getCurrentHash=()=>{let e=this._getHashParams();return this._hashName?(e.get(this._hashName)||``).split(`/`):([...e.keys()][0]??``).split(`/`)},this._onHashChange=()=>{let e=this._getCurrentHash();if(!this._isValidHash(e))return!1;let t=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(e[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+e[2],+e[1]],zoom:+e[0],bearing:t,pitch:+(e[4]||0)}),!0},this._updateHashUnthrottled=()=>{let e=window.location.href.replace(/(#.*)?$/,this.getHashString());window.history.replaceState(window.history.state,null,e)},this._removeHash=()=>{let e=this._getHashParams();if(this._hashName)e.delete(this._hashName);else{let t=Array.from(e.keys());t.length>0&&e.delete(t[0])}let t=decodeURIComponent(e.toString()).replace(/=&/g,`&`).replace(/=$/g,``),n=t?`#${t}`:``,r=window.location.href.replace(/(#.+)?$/,n);r=r.replace(`&&`,`&`),window.history.replaceState(window.history.state,null,r)},this._updateHash=QN(this._updateHashUnthrottled,300),this._hashName=e&&encodeURIComponent(e)}addTo(e){return this._map=e,addEventListener(`hashchange`,this._onHashChange,!1),this._map.on(`moveend`,this._updateHash),this}remove(){return removeEventListener(`hashchange`,this._onHashChange,!1),this._map.off(`moveend`,this._updateHash),clearTimeout(this._updateHash()),this._removeHash(),delete this._map,this}getHashString(e){let t=this._map.getCenter(),n=Math.round(this._map.getZoom()*100)/100,r=th(this._map._camera.transform.worldCoordinateHelper,t),i=10**Math.ceil((n*Math.LN2+Math.log(512/r/.5))/Math.LN10),a=Math.round(t.lng*i)/i,o=Math.round(t.lat*i)/i,s=this._map.getBearing(),c=this._map.getPitch(),l=``;if(l+=e?`/${a}/${o}/${n}`:`${n}/${o}/${a}`,(s||c)&&(l+=`/${Math.round(s*10)/10}`),c&&(l+=`/${Math.round(c)}`),this._hashName){let e=this._getHashParams();return e.set(this._hashName,l),`#${decodeURIComponent(e.toString()).replace(/=&/g,`&`).replace(/=$/g,``)}`}return`#${l}`}_isValidHash(e){if(e.length<3||e.some(e=>isNaN(+e)))return!1;try{new Q(+e[2],+e[1])}catch{return!1}let t=+e[0],n=+(e[3]||0),r=+(e[4]||0);return t>=this._map.getMinZoom()&&t<=this._map.getMaxZoom()&&n>=-180&&n<=180&&r>=this._map.getMinPitch()&&r<=this._map.getMaxPitch()}},eP={linearity:.3,easing:Tt(0,0,.3,1)},tP=F({deceleration:2500,maxSpeed:1400},eP),nP=F({deceleration:20,maxSpeed:1400},eP),rP=F({deceleration:1e3,maxSpeed:360},eP),iP=F({deceleration:1e3,maxSpeed:90},eP),aP=F({deceleration:1e3,maxSpeed:360},eP),oP=class{constructor(e){this._map=e,this.clear()}clear(){this._inertiaBuffer=[]}record(e){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:Sn(),settings:e})}_drainInertiaBuffer(){let e=this._inertiaBuffer,t=Sn();for(;e.length>0&&t-e[0].time>160;)e.shift()}_getVelocityEntries(){let e=this._inertiaBuffer,t=Sn()-60,n=Math.max(0,e.length-2);for(;n>0&&e[n-1].time>=t;)n--;return e.slice(n)}_onMoveEnd(e){this._drainInertiaBuffer();let t=this._getVelocityEntries();if(t.length<2){this.clear();return}let n={zoom:0,bearing:0,pitch:0,roll:0,pan:new f(0,0),pinchAround:void 0,around:void 0};for(let{settings:e}of t)e.around&&(n.around=e.around),e.pinchAround&&(n.pinchAround=e.pinchAround);for(let{settings:e}of t.slice(1))n.zoom+=e.zoomDelta||0,n.bearing+=e.bearingDelta||0,n.pitch+=e.pitchDelta||0,n.roll+=e.rollDelta||0,e.panDelta&&n.pan._add(e.panDelta);if(!n.pan.mag()&&!n.zoom&&!n.bearing&&!n.pitch&&!n.roll){this.clear();return}let r=Sn()-t[0].time,i={};if(n.pan.mag()){let t=cP(n.pan.mag(),r,F({},tP,e||{})),a=n.pan.mult(t.amount/n.pan.mag()),o=this._map._camera.cameraHelper.handlePanInertia(a,this._map._camera.transform);i.center=o.easingCenter,i.offset=o.easingOffset,sP(i,t)}if(n.zoom){let e=cP(n.zoom,r,nP);i.zoom=Ft(this._map.getZoom()+e.amount,this._map.getZoomSnap(),e.amount),sP(i,e)}if(n.bearing){let e=cP(n.bearing,r,rP);i.bearing=this._map.getBearing()+P(e.amount,-179,179),sP(i,e)}if(n.pitch){let e=cP(n.pitch,r,iP);i.pitch=this._map.getPitch()+e.amount,sP(i,e)}if(n.roll){let e=cP(n.roll,r,aP);i.roll=this._map.getRoll()+P(e.amount,-179,179),sP(i,e)}if(i.zoom||i.bearing){let e=n.pinchAround===void 0?n.around:n.pinchAround;i.around=e?this._map.unproject(e):this._map.getCenter()}return this.clear(),F(i,{noMoveStart:!0})}};function sP(e,t){(!e.duration||e.duration<t.duration)&&(e.duration=t.duration,e.easing=t.easing)}function cP(e,t,n){let{maxSpeed:r,linearity:i,deceleration:a}=n,o=P(e*i/(t/1e3),-r,r),s=Math.abs(o)/(a*i);return{easing:n.easing,duration:s*1e3,amount:s/2*o}}var lP=class{constructor(e,t){this._map=e,this._clickTolerance=t.clickTolerance}reset(){delete this._mousedownPos}wheel(e){return this._firePreventable(new ar(this._map,e))}mousedown(e,t){return this._mousedownPos=t,this._firePreventable(new rr(e.type,this._map,e))}mouseup(e){this._map.fire(new rr(e.type,this._map,e))}click(e,t){this._mousedownPos&&this._mousedownPos.dist(t)>=this._clickTolerance||this._map.fire(new rr(e.type,this._map,e))}dblclick(e){return this._firePreventable(new rr(e.type,this._map,e))}mouseover(e){this._map.fire(new rr(e.type,this._map,e))}mouseout(e){this._map.fire(new rr(e.type,this._map,e))}touchstart(e){return this._firePreventable(new ir(e.type,this._map,e))}touchmove(e){this._map.fire(new ir(e.type,this._map,e))}touchend(e){this._map.fire(new ir(e.type,this._map,e))}touchcancel(e){this._map.fire(new ir(e.type,this._map,e))}_firePreventable(e){if(this._map.fire(e),e.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}},uP=class{constructor(e,t){this._map=e,this._clickTolerance=t.clickTolerance}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent,this._clearLongPress(),this._touchActive=!1}mousemove(e){this._map.fire(new rr(e.type,this._map,e))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new rr(`contextmenu`,this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}touchstart(e,t,n){if(this._clearLongPress(),this._touchActive=n.length>0,n.length!==1)return;this._longPressStart=t[0];let r=n[0];this._longPressTimer=setTimeout(()=>{this._longPressTimer=void 0;let e=new MouseEvent(`contextmenu`,{clientX:r.clientX,clientY:r.clientY,button:2,bubbles:!0,cancelable:!0});this._map.fire(new rr(`contextmenu`,this._map,e))},500)}touchmove(e,t,n){this._longPressTimer&&(n.length!==1||!this._longPressStart||t[0].dist(this._longPressStart)>this._clickTolerance)&&this._clearLongPress()}touchend(){this._touchActive=!1,this._clearLongPress()}touchcancel(){this._touchActive=!1,this._clearLongPress()}_clearLongPress(){this._longPressTimer&&=(clearTimeout(this._longPressTimer),void 0),this._longPressStart=void 0}contextmenu(e){this._touchActive?e.preventDefault():(this._delayContextMenu?this._contextMenuEvent=e:this._ignoreContextMenu||this._map.fire(new rr(e.type,this._map,e)),this._map.listens(`contextmenu`)&&e.preventDefault())}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}},dP=class{constructor(e,t,n){this._map=e,this._tr=n,this._el=e.getCanvasContainer(),this._container=e.getContainer(),this._clickTolerance=t.clickTolerance||1,t.boxZoom&&typeof t.boxZoom==`object`&&(this._boxZoomEnd=t.boxZoom.boxZoomEnd)}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(e,t){this.isEnabled()&&e.shiftKey&&e.button===0&&(L.disableDrag(),this._startPos=this._lastPos=t,this._active=!0)}mousemoveWindow(e,t){if(!this._active)return;let n=t;if(this._lastPos.equals(n)||!this._box&&n.dist(this._startPos)<this._clickTolerance)return;let r=this._startPos;this._lastPos=n,this._box||(this._box=L.create(`div`,`maplibregl-boxzoom`,this._container),this._container.classList.add(`maplibregl-crosshair`),this._fireEvent(`boxzoomstart`,e));let i=Math.min(r.x,n.x),a=Math.max(r.x,n.x),o=Math.min(r.y,n.y),s=Math.max(r.y,n.y);this._box.style.transform=`translate(${i}px,${o}px)`,this._box.style.width=`${a-i}px`,this._box.style.height=`${s-o}px`}mouseupWindow(e,t){if(!this._active||e.button!==0)return;let n=this._startPos,r=t;if(this.reset(),L.suppressClick(),n.x===r.x&&n.y===r.y)this._fireEvent(`boxzoomcancel`,e);else{if(this._map.fire(new or(`boxzoomend`,{originalEvent:e})),this._boxZoomEnd){this._boxZoomEnd(this._map,n,r,e);return}return{cameraAnimation:e=>e.fitScreenCoordinates(n,r,this._tr.bearing,{linear:!0})}}}keydown(e){this._active&&e.keyCode===27&&(this.reset(),this._fireEvent(`boxzoomcancel`,e))}reset(){this._active=!1,this._container.classList.remove(`maplibregl-crosshair`),this._box&&=(this._box.remove(),null),L.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(e,t){return this._map.fire(new or(e,{originalEvent:t}))}};function fP(e,t){if(e.length!==t.length)throw Error(`The number of touches and points are not equal - touches ${e.length}, points ${t.length}`);let n={};for(let r=0;r<e.length;r++)n[e[r].identifier]=t[r];return n}function pP(e){let t=new f(0,0);for(let n of e)t._add(n);return t.div(e.length)}var mP=class{constructor(e){this.reset(),this.numTouches=e.numTouches}reset(){delete this.centroid,delete this.startTime,delete this.touches,this.aborted=!1}touchstart(e,t,n){(this.centroid||n.length>this.numTouches)&&(this.aborted=!0),!this.aborted&&(this.startTime===void 0&&(this.startTime=e.timeStamp),n.length===this.numTouches&&(this.centroid=pP(t),this.touches=fP(n,t)))}touchmove(e,t,n){if(this.aborted||!this.centroid)return;let r=fP(n,t);for(let e in this.touches){let t=this.touches[e],n=r[e];(!n||n.dist(t)>30)&&(this.aborted=!0)}}touchend(e,t,n){if((!this.centroid||e.timeStamp-this.startTime>500)&&(this.aborted=!0),n.length===0){let e=!this.aborted&&this.centroid;if(this.reset(),e)return e}}},hP=class{constructor(e){this.singleTap=new mP(e),this.numTaps=e.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(e,t,n){this.singleTap.touchstart(e,t,n)}touchmove(e,t,n){this.singleTap.touchmove(e,t,n)}touchend(e,t,n){let r=this.singleTap.touchend(e,t,n);if(r){let t=e.timeStamp-this.lastTime<500,n=!this.lastTap||this.lastTap.dist(r)<30;if(t&&n||this.reset(),this.count++,this.lastTime=e.timeStamp,this.lastTap=r,this.count===this.numTaps)return this.reset(),r}}},gP=class{constructor(e,t){this._tr=t,this._zoomIn=new hP({numTouches:1,numTaps:2}),this._zoomOut=new hP({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(e,t,n){this._zoomIn.touchstart(e,t,n),this._zoomOut.touchstart(e,t,n)}touchmove(e,t,n){this._zoomIn.touchmove(e,t,n),this._zoomOut.touchmove(e,t,n)}touchend(e,t,n){let r=this._zoomIn.touchend(e,t,n),i=this._zoomOut.touchend(e,t,n),a=this._tr;if(r)return this._active=!0,e.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:t=>t.easeTo({duration:300,zoom:Ft(a.zoom+1,t.getZoomSnap()),around:a.transform.isPointOnMapSurface(r)?a.unproject(r):void 0},{originalEvent:e})};if(i)return this._active=!0,e.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:t=>t.easeTo({duration:300,zoom:Ft(a.zoom-1,t.getZoomSnap()),around:a.transform.isPointOnMapSurface(i)?a.unproject(i):void 0},{originalEvent:e})}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}},_P=class{constructor(e){this._enabled=!!e.enable,this._moveStateManager=e.moveStateManager,this._clickTolerance=e.clickTolerance||1,this._moveFunction=e.move,this._activateOnStart=!!e.activateOnStart,e.assignEvents(this),this.reset()}reset(e){this._active=!1,this._moved=!1,delete this._lastPoint,delete this._startPoint,this._moveStateManager.endMove(e)}_move(...e){let t=this._moveFunction(...e);if(t.bearingDelta||t.pitchDelta||t.rollDelta||t.around||t.panDelta)return this._active=!0,t}dragStart(e,t){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(e)&&(this._moveStateManager.startMove(e),this._startPoint=Array.isArray(t)?t[0]:t,this._lastPoint=this._startPoint,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(e,t){if(!this.isEnabled())return;let n=this._lastPoint;if(!n)return;if(e.preventDefault(),!this._moveStateManager.isValidMoveEvent(e)){this.reset(e);return}let r=Array.isArray(t)?t[0]:t;if(!(!this._moved&&r.dist(n)<this._clickTolerance))return this._moved=!0,this._lastPoint=r,this._move(n,r,this._startPoint)}dragEnd(e){this.isEnabled()&&this._lastPoint&&this._moveStateManager.isValidEndEvent(e)&&(this._moved&&L.suppressClick(),this.reset(e))}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}getClickTolerance(){return this._clickTolerance}},vP={0:1,2:2};function yP(e,t){let n=vP[t];return e.buttons===void 0||(e.buttons&n)!==n}var bP=class{constructor(e){this._correctEvent=e.checkCorrectEvent}startMove(e){this._eventButton=e.button}endMove(e){delete this._eventButton}isValidStartEvent(e){return this._correctEvent(e)}isValidMoveEvent(e){return!yP(e,this._eventButton)}isValidEndEvent(e){return e.button===this._eventButton}},xP=class{constructor(){this._firstTouch=void 0}_isOneFingerTouch(e){return e.targetTouches.length===1}_isSameTouchEvent(e){return e.targetTouches[0].identifier===this._firstTouch}startMove(e){this._firstTouch=e.targetTouches[0].identifier}endMove(e){delete this._firstTouch}isValidStartEvent(e){return this._isOneFingerTouch(e)}isValidMoveEvent(e){return this._isOneFingerTouch(e)&&this._isSameTouchEvent(e)}isValidEndEvent(e){return this._isOneFingerTouch(e)&&this._isSameTouchEvent(e)}},SP=class{constructor(e=new bP({checkCorrectEvent:()=>!0}),t=new xP){this.mouseMoveStateManager=e,this.oneFingerTouchMoveStateManager=t}_executeRelevantHandler(e,t,n){if(e instanceof MouseEvent)return t(e);if(typeof TouchEvent<`u`&&e instanceof TouchEvent)return n(e)}startMove(e){this._executeRelevantHandler(e,e=>{this.mouseMoveStateManager.startMove(e)},e=>{this.oneFingerTouchMoveStateManager.startMove(e)})}endMove(e){this._executeRelevantHandler(e,e=>{this.mouseMoveStateManager.endMove(e)},e=>{this.oneFingerTouchMoveStateManager.endMove(e)})}isValidStartEvent(e){return!!this._executeRelevantHandler(e,e=>this.mouseMoveStateManager.isValidStartEvent(e),e=>this.oneFingerTouchMoveStateManager.isValidStartEvent(e))}isValidMoveEvent(e){return!!this._executeRelevantHandler(e,e=>this.mouseMoveStateManager.isValidMoveEvent(e),e=>this.oneFingerTouchMoveStateManager.isValidMoveEvent(e))}isValidEndEvent(e){return!!this._executeRelevantHandler(e,e=>this.mouseMoveStateManager.isValidEndEvent(e),e=>this.oneFingerTouchMoveStateManager.isValidEndEvent(e))}};function CP(e,t,n){return t===`center`||!(e.bearingDelta||e.pitchDelta||e.rollDelta)?e:{...e,around:n}}var wP=e=>{e.mousedown=e.dragStart,e.mousemoveWindow=e.dragMove,e.mouseup=e.dragEnd,e.contextmenu=e=>{e.preventDefault()}};function TP({enable:e,clickTolerance:t}){return new _P({clickTolerance:t,move:(e,t)=>({around:t,panDelta:t.sub(e)}),activateOnStart:!0,moveStateManager:new bP({checkCorrectEvent:e=>e.button===0&&!e.ctrlKey}),enable:e,assignEvents:wP})}function EP({enable:e,clickTolerance:t,minPixelCenterThreshold:n=100,rotateSpeed:r=.8},i,a,o){return new _P({clickTolerance:t,move:(e,t,s)=>{if(a?.()===`pointer`)return CP({bearingDelta:(t.x-e.x)*r},`pointer`,s);let c=i(),l=(o?.()??`circular`)===`circular`;if(l&&Math.abs(c.y-e.y)>n)return{bearingDelta:an(new f(e.x,t.y),t,c)};let u=(t.x-e.x)*r;return l&&t.y<c.y&&(u=-u),{bearingDelta:u}},moveStateManager:new bP({checkCorrectEvent:e=>e.button===0&&e.ctrlKey||e.button===2&&!e.ctrlKey}),enable:e,assignEvents:wP})}function DP({enable:e,clickTolerance:t,pitchSpeed:n=-.5},r){return new _P({clickTolerance:t,move:(e,t,i)=>CP({pitchDelta:(t.y-e.y)*n},r?.()??`center`,i),moveStateManager:new bP({checkCorrectEvent:e=>e.button===0&&e.ctrlKey||e.button===2}),enable:e,assignEvents:wP})}function OP({enable:e,clickTolerance:t,rollDegreesPerPixelMoved:n=.3},r,i){return new _P({clickTolerance:t,move:(e,t,a)=>{let o=r(),s=(t.x-e.x)*n;return t.y<o.y&&(s=-s),CP({rollDelta:s},i?.()??`center`,a)},moveStateManager:new bP({checkCorrectEvent:e=>e.button===2&&e.ctrlKey}),enable:e,assignEvents:wP})}var kP=class{constructor(e,t){this._clickTolerance=e.clickTolerance||1,this._map=t,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new f(0,0)}_shouldBePrevented(e){return e<(this._map.cooperativeGestures.isEnabled()?2:1)}touchstart(e,t,n){return this._calculateTransform(e,t,n)}touchmove(e,t,n){if(this._active){if(this._shouldBePrevented(n.length))this._map.cooperativeGestures.notifyGestureBlocked(`touch_pan`,e);else return e.preventDefault(),this._calculateTransform(e,t,n)}}touchend(e,t,n){this._calculateTransform(e,t,n),this._active&&this._shouldBePrevented(n.length)&&this.reset()}touchcancel(){this.reset()}_calculateTransform(e,t,n){n.length>0&&(this._active=!0);let r=fP(n,t),i=new f(0,0),a=new f(0,0),o=0;for(let e in r){let t=r[e],n=this._touches[e];n&&(i._add(t),a._add(t.sub(n)),o++,r[e]=t)}if(this._touches=r,this._shouldBePrevented(o)||!a.mag())return;let s=a.div(o);if(this._sum._add(s),!(this._sum.mag()<this._clickTolerance))return{around:i.div(o),panDelta:s}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}},AP=class{constructor(){this.reset()}reset(){this._active=!1,delete this._firstTwoTouches}touchstart(e,t,n){this._firstTwoTouches||n.length<2||(this._firstTwoTouches=[n[0].identifier,n[1].identifier],this._start([t[0],t[1]]))}touchmove(e,t,n){if(!this._firstTwoTouches)return;e.preventDefault();let[r,i]=this._firstTwoTouches,a=jP(n,t,r),o=jP(n,t,i);if(!a||!o)return;let s=this._aroundCenter?null:a.add(o).div(2);return this._move([a,o],s,e)}touchend(e,t,n){if(!this._firstTwoTouches)return;let[r,i]=this._firstTwoTouches,a=jP(n,t,r),o=jP(n,t,i);a&&o||(this._active&&L.suppressClick(),this.reset())}touchcancel(){this.reset()}enable(e){this._enabled=!0,this._aroundCenter=!!e&&e.around===`center`}disable(){this._enabled=!1,this.reset()}isEnabled(){return!!this._enabled}isActive(){return!!this._active}};function jP(e,t,n){for(let r=0;r<e.length;r++)if(e[r].identifier===n)return t[r]}var MP=.1;function NP(e,t){return Math.log(e/t)/Math.LN2}var PP=class extends AP{constructor(){super(),this._zoomRate=1,this._zoomThreshold=MP}setZoomRate(e){this._zoomRate=e??1}setZoomThreshold(e){this._zoomThreshold=e??MP}reset(){super.reset(),delete this._distance,delete this._startDistance}_start(e){this._startDistance=this._distance=e[0].dist(e[1])}_move(e,t){let n=this._distance;if(this._distance=e[0].dist(e[1]),!(!this._active&&Math.abs(NP(this._distance,this._startDistance))<this._zoomThreshold))return this._active=!0,{zoomDelta:NP(this._distance,n)*this._zoomRate,pinchAround:t}}};function FP(e,t){return e.angleWith(t)*180/Math.PI}var IP=class extends AP{reset(){super.reset(),delete this._minDiameter,delete this._startVector,delete this._vector}_start(e){this._startVector=this._vector=e[0].sub(e[1]),this._minDiameter=e[0].dist(e[1])}_move(e,t,n){let r=this._vector;if(this._vector=e[0].sub(e[1]),this._active||!this._isBelowThreshold(this._vector))return this._active=!0,{bearingDelta:FP(this._vector,r),pinchAround:t}}_isBelowThreshold(e){this._minDiameter=Math.min(this._minDiameter,e.mag());let t=25/(Math.PI*this._minDiameter)*360,n=FP(e,this._startVector);return Math.abs(n)<t}};function LP(e){return Math.abs(e.y)>Math.abs(e.x)}var RP=class extends AP{constructor(e){super(),this._currentTouchCount=0,this._map=e}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(e,t,n){super.touchstart(e,t,n),this._currentTouchCount=n.length}_start(e){this._lastPoints=e,LP(e[0].sub(e[1]))&&(this._valid=!1)}_move(e,t,n){if(this._map.cooperativeGestures.isEnabled()&&this._currentTouchCount<3)return;let r=e[0].sub(this._lastPoints[0]),i=e[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(r,i,n.timeStamp),this._valid)return this._lastPoints=e,this._active=!0,{pitchDelta:(r.y+i.y)/2*-.5}}gestureBeginsVertically(e,t,n){if(this._valid!==void 0)return this._valid;let r=e.mag()>=2,i=t.mag()>=2;if(!r&&!i)return;if(!r||!i)return this._firstMove===void 0&&(this._firstMove=n),n-this._firstMove<100&&void 0;let a=e.y>0==t.y>0;return LP(e)&&LP(t)&&a}},zP={panStep:100,bearingStep:15,pitchStep:10},BP=class{constructor(e,t){this._tr=t;let n=zP;this._panStep=n.panStep,this._bearingStep=n.bearingStep,this._pitchStep=n.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(e){if(e.altKey||e.ctrlKey||e.metaKey)return;let t=0,n=0,r=0,i=0,a=0;switch(e.keyCode){case 61:case 107:case 171:case 187:t=1;break;case 189:case 109:case 173:t=-1;break;case 37:e.shiftKey?n=-1:(e.preventDefault(),i=-1);break;case 39:e.shiftKey?n=1:(e.preventDefault(),i=1);break;case 38:e.shiftKey?r=1:(e.preventDefault(),a=-1);break;case 40:e.shiftKey?r=-1:(e.preventDefault(),a=1);break;default:return}return this._rotationDisabled&&(n=0,r=0),{cameraAnimation:o=>{let s=this._tr;o.easeTo({duration:300,easeId:`keyboardHandler`,easing:VP,zoom:t?Ft(s.zoom+t*(e.shiftKey?2:1),o.getZoomSnap()):s.zoom,bearing:s.bearing+n*this._bearingStep,pitch:s.pitch+r*this._pitchStep,offset:[-i*this._panStep,-a*this._panStep],center:s.center},{originalEvent:e})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0}enableRotation(){this._rotationDisabled=!1}};function VP(e){return e*(2-e)}var HP=4.000244140625,UP=class{constructor(e,t,n){this._onTimeout=e=>{this._type=`wheel`,this._delta-=this._lastValue,this._active||this._start(e)},this._map=e,this._tr=n,this._triggerRenderFrame=t,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222}setZoomRate(e){this._defaultZoomRate=e}setWheelZoomRate(e){this._wheelZoomRate=e}isEnabled(){return!!this._enabled}isActive(){return!!this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(e){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!e&&e.around===`center`)}disable(){this.isEnabled()&&(this._enabled=!1)}_shouldBePrevented(e){return this._map.cooperativeGestures.isEnabled()?!(e.ctrlKey||this._map.cooperativeGestures.isBypassed(e)):!1}wheel(e){if(!this.isEnabled())return;if(this._shouldBePrevented(e)){this._map.cooperativeGestures.notifyGestureBlocked(`wheel_zoom`,e);return}let t=e.deltaMode===WheelEvent.DOM_DELTA_LINE?e.deltaY*40:e.deltaY,n=Sn(),r=n-(this._lastWheelEventTime||0);this._lastWheelEventTime=n,t!==0&&t%HP==0?this._type=`wheel`:t!==0&&Math.abs(t)<4?this._type=`trackpad`:r>400?(this._type=null,this._lastValue=t,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(r*t)<200?`trackpad`:`wheel`,this._timeout&&(clearTimeout(this._timeout),this._timeout=null,t+=this._lastValue)),e.shiftKey&&t&&(t/=4),this._type&&(this._lastWheelEvent=e,this._delta-=t,this._active||this._start(e)),e.preventDefault()}_start(e){if(!this._delta)return;this._needsRerender=!1,this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);let t=L.mousePos(this._map.getCanvas(),e),n=this._tr;this._aroundPoint=this._aroundCenter?n.transform.locationToScreenPoint(Q.convert(n.center)):t,this._needsRerender||(this._needsRerender=!0,this._triggerRenderFrame())}renderFrame(){if(!this._needsRerender||(this._needsRerender=!1,!this.isActive()))return;let e=this._tr.transform;if(typeof this._lastExpectedZoom==`number`){let t=e.zoom-this._lastExpectedZoom;typeof this._startZoom==`number`&&(this._startZoom+=t),typeof this._targetZoom==`number`&&(this._targetZoom+=t)}if(this._delta!==0){let t=this._type===`wheel`&&Math.abs(this._delta)>HP?this._wheelZoomRate:this._defaultZoomRate,n=2/(1+Math.exp(-Math.abs(this._delta*t)));this._delta<0&&n!==0&&(n=1/n);let r=typeof this._targetZoom==`number`?Nt(this._targetZoom):e.scale,i=e.applyConstrain(e.getCameraLngLat(),Pt(r*n)).zoom,a=this._map.getZoomSnap();if(this._type===`wheel`&&a>0){let t=Ft(e.zoom,a);this._targetZoom=Ft(i,a,i-t)}else this._targetZoom=i;this._type===`wheel`&&(this._startZoom=e.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}let t=typeof this._targetZoom==`number`?this._targetZoom:e.zoom,n=this._startZoom,r=this._easing,i=!1,a;if(this._type===`wheel`&&n&&r){let e=Sn()-this._lastWheelEventTime,o=Math.min((e+5)/200,1),s=r(o);a=Ki.number(n,t,s),o<1?this._needsRerender=!0:i=!0}else a=t,i=!0;return this._active=!0,i&&(this._active=!1,this._finishTimeout=setTimeout(()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._lastExpectedZoom,delete this._finishTimeout},200)),this._lastExpectedZoom=a,{noInertia:!0,needsRenderFrame:!i,zoomDelta:a-e.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(e){let t=Et;if(this._prevEase){let e=this._prevEase,n=(Sn()-e.start)/e.duration,r=e.easing(n+.01)-e.easing(n),i=.27/Math.sqrt(r*r+1e-4)*.01;t=Tt(i,Math.sqrt(.0729-i*i),.25,1)}return this._prevEase={start:Sn(),duration:e,easing:t},t}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,delete this._lastExpectedZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout)}},WP=class{constructor(e,t){this._clickZoom=e,this._tapZoom=t}enable(){this._clickZoom.enable(),this._tapZoom.enable()}disable(){this._clickZoom.disable(),this._tapZoom.disable()}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}},GP=class{constructor(e,t){this._tr=t,this.reset()}reset(){this._active=!1}dblclick(e,t){return e.preventDefault(),{cameraAnimation:n=>{n.easeTo({duration:300,zoom:Ft(this._tr.zoom+(e.shiftKey?-1:1),n.getZoomSnap()),around:this._tr.transform.isPointOnMapSurface(t)?this._tr.unproject(t):void 0},{originalEvent:e})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}},KP=class{constructor(){this._tap=new hP({numTouches:1,numTaps:1}),this._zoomRate=1,this.reset()}setZoomRate(e){this._zoomRate=e??1}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset()}touchstart(e,t,n){if(!this._swipePoint){if(!this._tapTime)this._tap.touchstart(e,t,n);else{let r=t[0],i=e.timeStamp-this._tapTime<500,a=this._tapPoint.dist(r)<30;!i||!a?this.reset():n.length>0&&(this._swipePoint=r,this._swipeTouch=n[0].identifier)}}}touchmove(e,t,n){if(!this._tapTime)this._tap.touchmove(e,t,n);else if(this._swipePoint){if(n[0].identifier!==this._swipeTouch)return;let r=t[0],i=r.y-this._swipePoint.y;return this._swipePoint=r,e.preventDefault(),this._active=!0,{zoomDelta:i/128*this._zoomRate}}}touchend(e,t,n){if(this._tapTime)this._swipePoint&&n.length===0&&this.reset();else{let r=this._tap.touchend(e,t,n);r&&(this._tapTime=e.timeStamp,this._tapPoint=r)}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}},qP=class{constructor(e,t,n){this._el=e,this._mousePan=t,this._touchPan=n}enable(e){this._inertiaOptions=e||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add(`maplibregl-touch-drag-pan`)}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove(`maplibregl-touch-drag-pan`)}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}},JP=class{constructor(e,t,n,r){this._pitchWithRotate=e.pitchWithRotate,this._rollEnabled=e.rollEnabled,this._mouseRotate=t,this._mousePitch=n,this._mouseRoll=r;let{aroundCenter:i=!0}=e;this._defaultMovement=i?`circular`:`linear`,this.around=`center`,this.movement=this._defaultMovement}enable(e){let t=typeof e==`object`?e:{};this.around=t.around??`center`,this.movement=t.around===`pointer`?`linear`:t.movement??this._defaultMovement,this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable(),this._rollEnabled&&this._mouseRoll.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable(),this._mouseRoll.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())&&(!this._rollEnabled||this._mouseRoll.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()||this._mouseRoll.isActive()}},YP=class{constructor(e,t,n,r){this._el=e,this._touchZoom=t,this._touchRotate=n,this._tapDragZoom=r,this._rotationDisabled=!1,this._enabled=!0}enable(e){this._touchZoom.enable(e),this._rotationDisabled||this._touchRotate.enable(e),this._tapDragZoom.enable(),this._el.classList.add(`maplibregl-touch-zoom-rotate`)}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove(`maplibregl-touch-zoom-rotate`)}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}setZoomRate(e){this._touchZoom.setZoomRate(e),this._tapDragZoom.setZoomRate(e)}setZoomThreshold(e){this._touchZoom.setZoomThreshold(e)}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable()}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()}},XP=class{constructor(e,t){this._bypassKey=navigator.userAgent.includes(`Mac`)?`metaKey`:`ctrlKey`,this._map=e,this._options=t,this._enabled=!1}isActive(){return!1}reset(){}_setupUI(){if(this._container)return;let e=this._map.getCanvasContainer();e.classList.add(`maplibregl-cooperative-gestures`),this._container=L.create(`div`,`maplibregl-cooperative-gesture-screen`,e);let t=this._map._getUIString(`CooperativeGesturesHandler.WindowsHelpText`);this._bypassKey===`metaKey`&&(t=this._map._getUIString(`CooperativeGesturesHandler.MacHelpText`));let n=this._map._getUIString(`CooperativeGesturesHandler.MobileHelpText`),r=document.createElement(`div`);r.className=`maplibregl-desktop-message`,r.textContent=t,this._container.appendChild(r);let i=document.createElement(`div`);i.className=`maplibregl-mobile-message`,i.textContent=n,this._container.appendChild(i),this._container.setAttribute(`aria-hidden`,`true`)}_destroyUI(){this._container&&(this._container.remove(),this._map.getCanvasContainer().classList.remove(`maplibregl-cooperative-gestures`)),delete this._container}enable(){this._setupUI(),this._enabled=!0}disable(){this._enabled=!1,this._destroyUI()}isEnabled(){return this._enabled}isBypassed(e){return e[this._bypassKey]}notifyGestureBlocked(e,t){this._enabled&&(this._map.fire(new $n(`cooperativegestureprevented`,{gestureType:e,originalEvent:t})),this._container.classList.add(`maplibregl-show`),setTimeout(()=>{this._container.classList.remove(`maplibregl-show`)},100))}},ZP=class{constructor(e){this._camera=e}get transform(){return this._camera._requestedCameraState||this._camera.transform}get center(){return{lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(e){return this.transform.screenPointToLocation(f.convert(e),this._camera.terrain)}},QP=e=>e.zoom||e.drag||e.roll||e.pitch||e.rotate,$P=class extends Zn{};function eF(e){return e.panDelta?.mag()||e.zoomDelta||e.bearingDelta||e.pitchDelta||e.rollDelta}var tF=class{get _ownerDocument(){return this._el?.ownerDocument||document}get _ownerWindow(){return this._el?.ownerDocument?.defaultView||window}constructor(e,t,n){this._terrainGesture={inFlight:!1,anchorElevation:null,anchorCenterElevation:null},this._rotationPivot=null,this.handleWindowEvent=e=>{this.handleEvent(e,`${e.type}Window`)},this.handleEvent=(e,t)=>{if(e.type===`blur`){this.stop(!0);return}this._updatingCamera=!0;let n=e.type===`renderFrame`?void 0:e,r={needsRenderFrame:!1},i={},a={};for(let{handlerName:o,handler:s,allowed:c}of this._handlers){if(!s.isEnabled())continue;let l;if(this._blockedByActive(a,c,o))s.reset();else if(s[t||e.type]){if(dn(e,t||e.type)){let n=L.mousePos(this._map.getCanvas(),e);l=s[t||e.type](e,n)}else if(un(e,t||e.type)){let n=e.touches,r=this._getMapTouches(n),i=L.touchPos(this._map.getCanvas(),r);l=s[t||e.type](e,i,r)}else fn(t||e.type)||(l=s[t||e.type](e));this.mergeHandlerResult(r,i,l,o,n),l?.needsRenderFrame&&this._triggerRenderFrame()}(l||s.isActive())&&(a[o]=s)}let o={};for(let e in this._previousActiveHandlers)a[e]||(o[e]=n);this._previousActiveHandlers=a,(Object.keys(o).length||eF(r))&&(this._changes.push([r,i,o]),this._triggerRenderFrame()),(Object.keys(a).length||eF(r))&&this._camera.stop(!0),this._updatingCamera=!1;let{cameraAnimation:s}=r;s&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],s(this._map))},this._map=e,this._camera=t,this._transformProvider=new ZP(this._camera),this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new oP(e),this._bearingSnap=n.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(n);let r=this._el;this._listeners=[[r,`touchstart`,{passive:!0}],[r,`touchmove`,{passive:!1}],[r,`touchend`,void 0],[r,`touchcancel`,void 0],[r,`mousedown`,void 0],[r,`mousemove`,void 0],[r,`mouseup`,void 0],[this._ownerDocument,`mousemove`,{capture:!0}],[this._ownerDocument,`mouseup`,void 0],[r,`mouseover`,void 0],[r,`mouseout`,void 0],[r,`dblclick`,void 0],[r,`click`,void 0],[r,`keydown`,{capture:!1}],[r,`keyup`,void 0],[r,`wheel`,{passive:!1}],[r,`contextmenu`,void 0],[this._ownerWindow,`blur`,void 0]];for(let[e,t,n]of this._listeners)e.addEventListener(t,e===this._ownerDocument?this.handleWindowEvent:this.handleEvent,n)}destroy(){for(let[e,t,n]of this._listeners)e.removeEventListener(t,e===this._ownerDocument?this.handleWindowEvent:this.handleEvent,n)}_addDefaultHandlers(e){let t=this._map,n=t.getCanvasContainer();this._add(`mapEvent`,new lP(t,e));let r=t.boxZoom=new dP(t,e,this._transformProvider);this._add(`boxZoom`,r),e.interactive&&e.boxZoom&&r.enable();let i=t.cooperativeGestures=new XP(t,e.cooperativeGestures);this._add(`cooperativeGestures`,i),e.cooperativeGestures&&i.enable();let a=new gP(t,this._transformProvider),o=new GP(t,this._transformProvider);t.doubleClickZoom=new WP(o,a),this._add(`tapZoom`,a),this._add(`clickZoom`,o),e.interactive&&e.doubleClickZoom&&t.doubleClickZoom.enable();let s=new KP;this._add(`tapDragZoom`,s);let c=t.touchPitch=new RP(t);this._add(`touchPitch`,c),e.interactive&&e.touchPitch&&t.touchPitch.enable(e.touchPitch);let l=()=>this._camera.transform.centerPoint,u=()=>t.dragRotate.around,d=EP(e,l,u,()=>t.dragRotate.movement),f=DP(e,u),p=OP(e,l,u);t.dragRotate=new JP(e,d,f,p),this._add(`mouseRotate`,d,[`mousePitch`]),this._add(`mousePitch`,f,[`mouseRotate`,`mouseRoll`]),this._add(`mouseRoll`,p,[`mousePitch`]),e.interactive&&e.dragRotate&&t.dragRotate.enable(e.dragRotate);let m=TP(e),h=new kP(e,t);t.dragPan=new qP(n,m,h),this._add(`mousePan`,m),this._add(`touchPan`,h,[`touchZoom`,`touchRotate`]),e.interactive&&e.dragPan&&t.dragPan.enable(e.dragPan);let g=new IP,_=new PP;t.touchZoomRotate=new YP(n,_,g,s),this._add(`touchRotate`,g,[`touchPan`,`touchZoom`]),this._add(`touchZoom`,_,[`touchPan`,`touchRotate`]),e.interactive&&e.touchZoomRotate&&t.touchZoomRotate.enable(e.touchZoomRotate),this._add(`blockableMapEvent`,new uP(t,e),[`touchPan`]);let v=t.scrollZoom=new UP(t,()=>this._triggerRenderFrame(),this._transformProvider);this._add(`scrollZoom`,v,[`mousePan`]),e.interactive&&e.scrollZoom&&t.scrollZoom.enable(e.scrollZoom);let y=t.keyboard=new BP(t,this._transformProvider);this._add(`keyboard`,y),e.interactive&&e.keyboard&&t.keyboard.enable()}_add(e,t,n){this._handlers.push({handlerName:e,handler:t,allowed:n}),this._handlersById[e]=t}stop(e){if(!this._updatingCamera){for(let{handler:e}of this._handlers)e.reset();this._inertia.clear(),this._fireEvents({},{},e),this._changes=[]}}isActive(){for(let{handler:e}of this._handlers)if(e.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!QP(this._eventsInProgress)||this.isZooming()}_blockedByActive(e,t,n){for(let r in e)if(r!==n&&!t?.includes(r))return!0;return!1}_getMapTouches(e){let t=[];for(let n of e){let e=n.target;this._el.contains(e)&&t.push(n)}return t}mergeHandlerResult(e,t,n,r,i){if(!n)return;F(e,n);let a={handlerName:r,originalEvent:n.originalEvent||i};n.zoomDelta!==void 0&&(t.zoom=a),n.panDelta!==void 0&&(t.drag=a),n.rollDelta!==void 0&&(t.roll=a),n.pitchDelta!==void 0&&(t.pitch=a),n.bearingDelta!==void 0&&(t.rotate=a)}_applyChanges(){let e={},t={},n={};for(let[r,i,a]of this._changes)r.panDelta&&(e.panDelta=(e.panDelta||new f(0,0))._add(r.panDelta)),r.zoomDelta&&(e.zoomDelta=(e.zoomDelta||0)+r.zoomDelta),r.bearingDelta&&(e.bearingDelta=(e.bearingDelta||0)+r.bearingDelta),r.pitchDelta&&(e.pitchDelta=(e.pitchDelta||0)+r.pitchDelta),r.rollDelta&&(e.rollDelta=(e.rollDelta||0)+r.rollDelta),r.around!==void 0&&(e.around=r.around),r.pinchAround!==void 0&&(e.pinchAround=r.pinchAround),r.noInertia&&(e.noInertia=r.noInertia),F(t,i),F(n,a);this._updateMapTransform(e,t,n),this._changes=[]}_updateMapTransform(e,t,n){let r=this._map.terrain;if(!eF(e)){this._fireEvents(t,n,!0);return}let i=this._camera.getTransformForUpdate();if(this._camera.stop(!0),this._turnsAroundPivot(e,t)){this._orbitRotationPivot(i,e,r),this._commitFrame(i,e,t,n);return}let{panDelta:a,zoomDelta:o,bearingDelta:s,pitchDelta:c,rollDelta:l}=e;o>0&&this._terrainGesture.inFlight&&this._camera.moveCenterOntoTerrain(i,o);let{around:u,aroundOnSurface:d}=this._resolveAround(e,r,i),f=r?this._terrainGestureElevation(r,u,d,i,t):void 0,p={panDelta:a,zoomDelta:o,rollDelta:l,pitchDelta:c,bearingDelta:s,around:u,aroundElevation:f};this._camera.cameraHelper.useGlobeControls&&!i.isPointOnMapSurface(u)&&(u=i.centerPoint);let m=this._computePreZoomAroundLoc(i,u,a,f);this._handleMapControls({terrain:r,tr:i,deltasForHelper:p,preZoomAroundLoc:m,combinedEventsInProgress:t,panDelta:a}),this._commitFrame(i,e,t,n)}_commitFrame(e,t,n,r){this._camera.applyUpdatedTransform(e),this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(n,r,!0)}_turnsAroundPivot(e,t){return e.around?!t.drag&&!t.zoom:!1}_orbitRotationPivot(e,t,n){n&&!this._terrainGesture.inFlight&&(this._terrainGesture.inFlight=!0,this._camera.holdElevation(e,`gesture`));let{panDelta:r,zoomDelta:i,bearingDelta:a,pitchDelta:o,rollDelta:s,around:c}=t;this._rotationPivot??=this._camera.captureRotationPivot(e,c),this._camera.orbitRotationPivot(e,this._rotationPivot,{panDelta:r,zoomDelta:i,bearingDelta:a,pitchDelta:o,rollDelta:s,around:c})||(this._rotationPivot=null)}_resolveAround(e,t,n){let r=e.pinchAround===void 0?e.around:e.pinchAround;return r||=this._camera.transform.centerPoint,t&&!n.isPointOnMapSurface(r)?{around:n.centerPoint,aroundOnSurface:!1}:{around:r,aroundOnSurface:!0}}_terrainGestureElevation(e,t,n,r,i){if(!n)return;if(this._terrainGesture.anchorCenterElevation!==r.elevation&&(i.drag||i.zoom)){let n=r.screenTerrainPointToMercatorCoordinate(t,e);this._terrainGesture.anchorElevation=n?n.z:void 0,this._terrainGesture.anchorCenterElevation=r.elevation}let a=this._terrainGesture.anchorElevation;if(a!=null&&!(t.distSqr(r.centerPoint)<.01)&&!(a-r.elevation>=.9*(r.getCameraAltitude()-r.elevation)))return a}_computePreZoomAroundLoc(e,t,n,r){if(t.distSqr(e.centerPoint)<.01)return e.center;let i=n?t.sub(n):t;return r===void 0?e.screenPointToLocation(i):e.screenPointToLocationAtElevation(i,r)}_handleMapControls({terrain:e,tr:t,deltasForHelper:n,preZoomAroundLoc:r,combinedEventsInProgress:i,panDelta:a}){let o=this._camera.cameraHelper;o.handleMapControlsRollPitchBearingZoom(n,t),!e&&!o.useGlobeControls&&!t.isPointOnMapSurface(n.around)?a&&t.setCenter(t.screenPointToLocation(t.centerPoint.sub(a))):e?this._terrainGesture.inFlight?!o.useGlobeControls&&n.aroundElevation===void 0&&i.drag&&a?t.setCenter(t.screenPointToLocation(t.centerPoint.sub(a))):o.handleMapControlsPan(n,t,r):(this._terrainGesture.inFlight=!0,this._camera.holdElevation(t,`gesture`),o.handleMapControlsPan(n,t,r)):o.handleMapControlsPan(n,t,r)}_fireEvents(e,t,n){let r=QP(this._eventsInProgress),i=QP(e),a={};for(let t in e){let{originalEvent:n}=e[t];this._eventsInProgress[t]||(a[`${t}start`]=n),this._eventsInProgress[t]=e[t]}!r&&i&&this._fireEvent(`movestart`,i.originalEvent);for(let e in a)this._fireEvent(e,a[e]);i&&this._fireEvent(`move`,i.originalEvent);for(let t in e){let{originalEvent:n}=e[t];this._fireEvent(t,n)}let o={},s;for(let e in this._eventsInProgress){let{handlerName:n,originalEvent:r}=this._eventsInProgress[e];this._handlersById[n].isActive()||(delete this._eventsInProgress[e],s=t[n]||r,o[`${e}end`]=s)}for(let e in o)this._fireEvent(e,o[e]);let c=QP(this._eventsInProgress),l=(r||i)&&!c;if(l&&this._terrainGesture.inFlight){let e=this._camera.releaseElevation();this._terrainGesture={inFlight:!1,anchorElevation:null,anchorCenterElevation:null},this._camera.applyTransformChange(t=>{this._map.getCenterClampedToGround()&&(this._map.terrain?this._camera.putCenterBackOnTerrain(t,this._map.terrain,e):t.setElevation(0))})}if(n&&l){this._updatingCamera=!0;let e=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),t=e=>e!==0&&-this._bearingSnap<e&&e<this._bearingSnap;e&&(e.essential||!bn.prefersReducedMotion)?(t(e.bearing||this._map.getBearing())&&(e.bearing=0),e.freezeElevation=!0,this._map.easeTo(e,{originalEvent:s})):(this._fireEvent(`moveend`,s),t(this._map.getBearing())&&this._map.resetNorth()),this._updatingCamera=!1}l&&(this._rotationPivot=null)}_fireEvent(e,t){this._camera.fire(new z(e,t?{originalEvent:t}:{}))}_requestFrame(){return this._map.triggerRepaint(),this._map._renderTaskQueue.add(e=>{delete this._frameId,this.handleEvent(new $P(`renderFrame`,{timeStamp:e})),this._applyChanges()})}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}},nF=class{constructor(e,t,n){this.holder=e,this.lift=null,this._terrainChanged=!1,this._dem=t?`awaiting`:`loaded`,this.keepsTerrainBelowMaxZoomForCenter=n}get tookDem(){return this._dem===`taken`}noteTerrainChange(){this._terrainChanged=!0}take(e,t){let n=!1;if(this._terrainChanged&&(this._terrainChanged=!1,t.getElevationAndDEMStateForLngLat(e.center,e).demState!==`loaded`&&(e.setElevation(0),this._dem=`awaiting`,n=!0)),this._dem!==`awaiting`)return n;let r=t.getDrawnElevationForLngLat(e.center,!0);if(r!==void 0)return e.setElevation(r),this._dem=`taken`,!0;let i=t.getDrawnElevationForLngLat(e.center);return i===void 0||i===e.elevation?n:(e.setElevation(i),!0)}},rF=.01,iF=class extends Qn{constructor(e){super(),this._elevationHold=null,this._renderFrameCallback=()=>{let e=Math.min((Sn()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},this.transform=BO(),this.cameraHelper=new qO,e.minZoom!==void 0&&this.transform.setMinZoom(e.minZoom),e.maxZoom!==void 0&&this.transform.setMaxZoom(e.maxZoom),e.minPitch!==void 0&&this.transform.setMinPitch(e.minPitch),e.maxPitch!==void 0&&this.transform.setMaxPitch(e.maxPitch),e.renderWorldCopies!==void 0&&this.transform.setRenderWorldCopies(e.renderWorldCopies),e.transformConstrain!==null&&this.transform.setConstrainOverride(e.transformConstrain),this._moving=!1,this._zooming=!1,this._bearingSnap=e.bearingSnap,this._zoomSnap=e.zoomSnap,this._requestRenderFrame=e.requestRenderFrame,this._cancelRenderFrame=e.cancelRenderFrame,this.terrain=e.terrain,this._centerClampedToGround=e.centerClampedToGround??!0,this.transformCameraUpdate=e.transformCameraUpdate??null,this._stopHandlers=e.stopHandlers??(()=>{}),this.on(`moveend`,()=>{delete this._requestedCameraState})}setTerrain(e){this.terrain=e,e&&this._elevationHold?.noteTerrainChange(),this.applyTerrainChange()}migrateProjection(e,t){if(e.apply(this.transform,!0),this.transform=e,this.cameraHelper=t,this._requestedCameraState){let t=e.clone();t.apply(this._requestedCameraState,!0),this._requestedCameraState=t}}getCenter(){return new Q(this.transform.center.lng,this.transform.center.lat)}setCenter(e,t){return this.jumpTo({center:e},t)}getCenterElevation(){return this.transform.elevation}setCenterElevation(e,t){return this.jumpTo({elevation:e},t),this}getCenterClampedToGround(){return this._centerClampedToGround}setCenterClampedToGround(e){this._centerClampedToGround=e}panBy(e,t,n){return e=f.convert(e).mult(-1),this.panTo(this.transform.center,F({offset:e},t),n)}panTo(e,t,n){return this.easeTo(F({center:e},t),n)}getZoom(){return this.transform.zoom}setZoom(e,t){return this.jumpTo({zoom:e},t),this}zoomTo(e,t,n){return this.easeTo(F({zoom:e},t),n)}zoomIn(e,t){return this.zoomTo(Ft(this.getZoom()+1,this._zoomSnap),e,t),this}zoomOut(e,t){return this.zoomTo(Ft(this.getZoom()-1,this._zoomSnap),e,t),this}getVerticalFieldOfView(){return this.transform.fov}setVerticalFieldOfView(e,t){return e!=this.transform.fov&&(this.applyTransformChange(t=>t.setFov(e)),this.fire(new z(`movestart`,t)).fire(new z(`move`,t)).fire(new z(`moveend`,t))),this}getBearing(){return this.transform.bearing}setZoomSnap(e){return this._zoomSnap=e,this}getZoomSnap(){return this._zoomSnap}setBearing(e,t){return this.jumpTo({bearing:e},t),this}getPadding(){return this.transform.padding}setPadding(e,t){return this.jumpTo({padding:e},t),this}rotateTo(e,t,n){return this.easeTo(F({bearing:e},t),n)}resetNorth(e,t){return this.rotateTo(0,F({duration:1e3},e),t),this}resetNorthPitch(e,t){return this.easeTo(F({bearing:0,pitch:0,roll:0,duration:1e3},e),t),this}snapToNorth(e,t){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(e,t):this}getPitch(){return this.transform.pitch}setPitch(e,t){return this.jumpTo({pitch:e},t),this}getRoll(){return this.transform.roll}setRoll(e,t){return this.jumpTo({roll:e},t),this}cameraForBounds(e,t){e=Rb.convert(e).adjustAntiMeridian();let n=t?.bearing||0;return this._cameraForBoxAndBearing(e.getNorthWest(),e.getSouthEast(),n,t)}_cameraForBoxAndBearing(e,t,n,r){let i={top:0,bottom:0,right:0,left:0};if(r=F({padding:i,offset:[0,0],maxZoom:this.transform.maxZoom},r),typeof r.padding==`number`){let e=r.padding;r.padding={top:e,bottom:e,right:e,left:e}}let a=F(i,r.padding);r.padding=a;let o=this.transform,s=new Rb(e,t),c={top:0,bottom:0,right:0,left:0},l=r.absolutePadding?c:a,u=r.absolutePadding?a:F(c,o.padding),d=this.cameraHelper.cameraForBoxAndBearing(r,l,u,s,n,o);if(d)return this._zoomSnap&&(d.zoom=Ft(d.zoom,this._zoomSnap,-1)),r.absolutePadding?{...d,padding:a}:d}fitBounds(e,t,n){return this._fitInternal(this.cameraForBounds(e,t),t,n)}fitScreenCoordinates(e,t,n,r,i){return this._fitInternal(this._cameraForBoxAndBearing(this.transform.screenPointToLocation(f.convert(e)),this.transform.screenPointToLocation(f.convert(t)),n,r),r,i)}_fitInternal(e,t,n){return e?(t=F(e,t),t.absolutePadding?(t.padding=e.padding,delete t.absolutePadding):delete t.padding,t.linear?this.easeTo(t,n):this.flyTo(t,n)):this}jumpTo(e,t){this.stop(),e.zoom!==void 0&&this._zoomSnap&&(e.zoom=Ft(e.zoom,this._zoomSnap));let n=this.getTransformForUpdate(),r=!1,i=!1,a=!1,o=n.zoom;if(this.terrain&&this.getCenterClampedToGround()){let{elevation:t,demState:r}=this.terrain.getElevationAndDEMStateForLngLat(e.center?Q.convert(e.center):n.center,n);r!==`loading`&&n.setElevation(t)}this.cameraHelper.handleJumpToCenterZoom(n,e);let s=n.zoom!==o;return e.elevation!==void 0&&n.elevation!==+e.elevation&&n.setElevation(+e.elevation),e.bearing!==void 0&&n.bearing!==+e.bearing&&(r=!0,n.setBearing(+e.bearing)),e.pitch!==void 0&&n.pitch!==+e.pitch&&(i=!0,n.setPitch(+e.pitch)),e.roll!==void 0&&n.roll!==+e.roll&&(a=!0,n.setRoll(+e.roll)),e.padding!=null&&!n.isPaddingEqual(e.padding)&&n.setPadding(e.padding),this.applyUpdatedTransform(n),this.fire(new z(`movestart`,t)).fire(new z(`move`,t)),s&&this.fire(new z(`zoomstart`,t)).fire(new z(`zoom`,t)).fire(new z(`zoomend`,t)),r&&this.fire(new z(`rotatestart`,t)).fire(new z(`rotate`,t)).fire(new z(`rotateend`,t)),i&&this.fire(new z(`pitchstart`,t)).fire(new z(`pitch`,t)).fire(new z(`pitchend`,t)),a&&this.fire(new z(`rollstart`,t)).fire(new z(`roll`,t)).fire(new z(`rollend`,t)),this.fire(new z(`moveend`,t))}calculateAnchoredCameraOptions(e){let t=this.transform.clone(),n=Q.convert(e.anchorLocation),r=f.convert(e.anchorScreenPoint),i={panDelta:r.sub(this.transform.locationToScreenPoint(n,this.terrain)),zoomDelta:e.zoom===void 0?0:e.zoom-t.zoom,bearingDelta:0,pitchDelta:0,rollDelta:0,around:r,aroundElevation:this.terrain?.getElevationForLngLat(n,t)};return this.cameraHelper.handleMapControlsRollPitchBearingZoom(i,t),this.cameraHelper.handleMapControlsPan(i,t,n),{center:t.center,zoom:t.zoom}}calculateCameraOptionsFromCameraLngLatAltRotation(e,t,n,r,i){let a=this.transform.calculateCenterFromCameraLngLatAlt(e,t,n,r);return{center:a.center,elevation:a.elevation,zoom:a.zoom,bearing:n,pitch:r,roll:i}}easeTo(e,t){this._stop(!1,e.easeId),e=F({offset:[0,0],duration:500,easing:Et},e),e.zoom!==void 0&&this._zoomSnap&&(e.zoom=Ft(e.zoom,this._zoomSnap)),(e.animate===!1||!e.essential&&bn.prefersReducedMotion)&&(e.duration=0);let n=this.getTransformForUpdate(),r=this.getBearing(),i=n.pitch,a=n.roll,o=e.bearing===void 0?r:this._normalizeBearing(e.bearing,r),s=e.pitch===void 0?i:+e.pitch,c=e.roll===void 0?a:this._normalizeBearing(e.roll,a),l=e.padding===void 0?n.padding:e.padding,u=f.convert(e.offset),d,p;e.around&&(d=Q.convert(e.around),p=n.locationToScreenPoint(d));let m={moving:this._moving,zooming:this._zooming,rotating:this._rotating,pitching:this._pitching,rolling:this._rolling},h=this.cameraHelper.handleEaseTo(n,{bearing:o,pitch:s,roll:c,padding:l,around:d,aroundPoint:p,offsetAsPoint:u,offset:e.offset,zoom:e.zoom,center:e.center});return this._rotating||=r!==o,this._pitching||=s!==i,this._rolling||=c!==a,this._padding=!n.isPaddingEqual(l),this._zooming||=h.isZooming,this._easeId=e.easeId,this._prepareEase(t,e.noMoveStart,m,{tr:n,center:h.elevationCenter,freeze:e.freezeElevation}),this._ease(r=>{h.easeFunc(r),this.terrain&&!e.freezeElevation&&this._updateElevation(r,n),this.applyUpdatedTransform(n),this._fireMoveEvents(t)},n=>{this._afterEase(t,n,e.freezeElevation)},e),this}_prepareEase(e,t,n={},r){this._moving=!0,this.terrain&&r&&(this._prepareElevation(r.center,r.tr),r.freeze&&this.holdElevation(r.tr,`animation`)),!t&&!n.moving&&this.fire(new z(`movestart`,e)),this._zooming&&!n.zooming&&this.fire(new z(`zoomstart`,e)),this._rotating&&!n.rotating&&this.fire(new z(`rotatestart`,e)),this._pitching&&!n.pitching&&this.fire(new z(`pitchstart`,e)),this._rolling&&!n.rolling&&this.fire(new z(`rollstart`,e))}_prepareElevation(e,t){this._elevationCenter=e,this._elevationStart=t.elevation;let{elevation:n,demState:r}=this.terrain.getElevationAndDEMStateForLngLat(e,t);this._elevationTarget=r===`loading`?t.elevation:n,this.elevationFreeze=!0}_updateElevation(e,t){(this._elevationStart===void 0||this._elevationCenter===void 0)&&this._prepareElevation(t.center,t),t.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,t.tileZoom));let{elevation:n,demState:r}=this.terrain.getElevationAndDEMStateForLngLat(this._elevationCenter,t),i=r===`loading`?this._elevationTarget:n;if(e<1&&i!==this._elevationTarget){let t=this._elevationTarget-this._elevationStart,n=(i-(t*e+this._elevationStart))/(1-e);this._elevationStart+=e*(t-n),this._elevationTarget=i}this.getCenterClampedToGround()&&t.setElevation(Ki.number(this._elevationStart,this._elevationTarget,e))}holdElevation(e,t){this.elevationFreeze=!0;let n=!!this.terrain&&this.getCenterClampedToGround()&&this.terrain.getElevationAndDEMStateForLngLat(e.center,e).demState!==`loaded`,r=this.terrain?this._terrainHeightAboveMaxZoomForCenter(e):void 0;this._elevationHold=new nF(t,n,r!==void 0&&r<=rF)}releaseElevation(){let e=this._elevationHold?.tookDem??!1;return this.elevationFreeze=!1,this._elevationHold=null,e}putCenterBackOnTerrain(e,t,n){if(n&&t.getDrawnElevationForLngLat(e.center,!0)===void 0){e.setElevation(t.getElevationForLngLat(e.center,e));let n=this._raiseCameraByPitchAndZoom(e);n!==e&&e.apply(n,!1)}else e.recalculateZoomAndCenter(t)}_takeLandedElevation(e){return!this._elevationHold||!this.terrain||!this.getCenterClampedToGround()?!1:this._elevationHold.take(e,this.terrain)}applyTerrainChange(){if(this.elevationFreeze){let e=this._requestedCameraState;this._elevationHold?.holder===`gesture`&&e&&this._takeLandedElevation(e)&&this.applyUpdatedTransform(e);return}let e=this.transform;if(e.setMinElevationForCurrentTile(this.terrain?this.terrain.getMinTileElevationForLngLatZoom(e.center,e.tileZoom):0),!this.getCenterClampedToGround())return;if(!this.terrain){e.setElevation(0);return}let{elevation:t,demState:n}=this.terrain.getElevationAndDEMStateForLngLat(e.center,e);n!==`loading`&&e.setElevation(t)}getTransformForUpdate(){return!this.transformCameraUpdate&&!this.terrain?this.transform:(this._requestedCameraState||=this.transform.clone(),this._requestedCameraState)}_keepCameraAboveTerrain(e){let t=this._elevationHold;if(!this.terrain||!t||e.pitch>=90||!this.getCenterClampedToGround()||e.getClippingPlane())return this._raiseCameraByPitchAndZoom(e);let n=t.holder===`gesture`,r=t.lift&&t.lift.heldElevation+t.lift.height===e.elevation?t.lift:{heldElevation:e.elevation,height:0},i=this._terrainHeightAboveMaxZoomForCenter(e);i!==void 0&&i<=rF&&(t.keepsTerrainBelowMaxZoomForCenter=!0);let a=t.keepsTerrainBelowMaxZoomForCenter&&i!==void 0?i:-1/0,o=n?this._terrainHeightAboveCamera(e):-1/0,s=Math.max(0,Math.max(o,a)+r.height);return s!==r.height&&e.setElevation(r.heldElevation+s),t.lift=s>0?{heldElevation:r.heldElevation,height:s}:null,n?e:this._raiseCameraByPitchAndZoom(e)}_raiseCameraByPitchAndZoom(e){if(!this.terrain&&e.elevation>=0&&e.pitch<=90||e.getClippingPlane())return e;let t=e.getCameraLngLat(),n=this.terrain?this._terrainHeightAboveCamera(e):-e.getCameraAltitude();if(n<=0)return e;let r=e.clone();for(let e=0;e<3&&n>0;e++){let{zoom:e,pitch:i}=r.calculateCameraOptionsFromTo(t,r.getCameraAltitude()+n,r.center,r.elevation);r.setZoom(e),r.setPitch(i),n=this.terrain?this._terrainHeightAboveCamera(r):-r.getCameraAltitude()}return r}_terrainHeightAboveCamera(e){let t=this.terrain.getElevationForLngLat(e.getCameraLngLat(),e)-e.getCameraAltitude(),n=e.getClippingPlane()?null:this.terrain.getCoverageIndex();if(!n)return t;let[r,i,a,o]=e.getCameraFrustum().points;for(let s=0;s<=2;s++){let c=s/2;for(let s=0;s<=2;s++){let l=s/2,u=(1-l)*(1-c),d=l*(1-c),f=l*c,p=(1-l)*c,m=u*r[0]+d*i[0]+f*a[0]+p*o[0],h=u*r[1]+d*i[1]+f*a[1]+p*o[1],g=u*r[2]+d*i[2]+f*a[2]+p*o[2],_=IO(n,this.terrain.exaggeration,m,h,e.worldCoordinateHelper.wraps);_.covered&&(t=Math.max(t,_.elevation-g))}}return t}_terrainHeightAboveMaxZoomForCenter(e){let t=this.terrain.getCoverageIndex();if(!t)return;let n=e.worldCoordinateHelper,r=e.getCameraLngLat(),i=n.worldFromLngLat(r.lng,r.lat),a=n.worldFromLngLat(e.center.lng,e.center.lat),o=Nt(e.zoom-e.maxZoom),s=IO(t,this.terrain.exaggeration,xt(i.x,a.x,o),xt(i.y,a.y,o),n.wraps);return s.covered?s.elevation-xt(e.getCameraAltitude(),e.elevation,o):void 0}moveCenterOntoTerrain(e,t){if(!this.terrain||!this.getCenterClampedToGround()||e.getClippingPlane())return;let{center:n,elevation:r,zoom:i}=e;e.recalculateZoomAndCenter(this.terrain),(!(e.zoom>i-t&&e.zoom<e.maxZoom)||Math.abs(this.terrain.getElevationForLngLat(e.center,e)-e.elevation)>=1)&&(e.setZoom(i),e.setCenter(n),e.setElevation(r))}captureRotationPivot(e,t){if(!lF(e,t))return{point:e.centerPoint,location:e.center,distance:uF(e,e.center)};let n=this.terrain?e.screenTerrainPointToMercatorCoordinate(t,this.terrain):null,r=n?n.toLngLat():e.screenPointToLocation(t);return n&&this.cameraHelper.useGlobeControls?{point:e.locationToScreenPoint(r),location:r,distance:uF(e,r)}:{point:t,location:r,elevation:n?.z,distance:uF(e,r,n?.z)}}orbitRotationPivot(e,t,n){if(t.point.equals(e.centerPoint))return this.cameraHelper.handleMapControlsRollPitchBearingZoom(n,e),!0;let r=this._turnAroundPivot(e,t,n)??this._turnAroundPivot(e,t,{...n,pitchDelta:0,rollDelta:0});return r?(e.apply(r,!1),!0):(this.cameraHelper.handleMapControlsRollPitchBearingZoom(n,e),!1)}_turnAroundPivot(e,t,n){let r=e.clone();return this.cameraHelper.handleMapControlsRollPitchBearingZoom(n,r),r.pitch>=90||!lF(r,t.point)?null:aF(r,t)&&cF(r,t)?r:null}applyUpdatedTransform(e){this._takeLandedElevation(e);let t=this._keepCameraAboveTerrain(e);if(!this.transformCameraUpdate){t!==this.transform&&this.transform.apply(t,!1);return}let n=t.clone(),{center:r,zoom:i,roll:a,pitch:o,bearing:s,elevation:c}=this.transformCameraUpdate(n);r&&n.setCenter(r),c!==void 0&&n.setElevation(c),i!==void 0&&n.setZoom(i),a!==void 0&&n.setRoll(a),o!==void 0&&n.setPitch(o),s!==void 0&&n.setBearing(s),this.transform.apply(c===void 0?n:this._raiseCameraByPitchAndZoom(n),!1)}applyTransformChange(e){let t=this._requestedCameraState!==void 0,n=this.getTransformForUpdate();e(n),this.applyUpdatedTransform(n),t||delete this._requestedCameraState}_fireMoveEvents(e){this.fire(new z(`move`,e)),this._zooming&&this.fire(new z(`zoom`,e)),this._rotating&&this.fire(new z(`rotate`,e)),this._pitching&&this.fire(new z(`pitch`,e)),this._rolling&&this.fire(new z(`roll`,e))}_afterEase(e,t,n=!1){this._takeLandedElevation(this.transform);let r=this.releaseElevation();if(this.terrain&&n&&this.getCenterClampedToGround()&&this.putCenterBackOnTerrain(this.transform,this.terrain,r),this._easeId&&t&&this._easeId===t)return;delete this._easeId;let i=this._zooming,a=this._rotating,o=this._pitching,s=this._rolling;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._rolling=!1,this._padding=!1,i&&this.fire(new z(`zoomend`,e)),a&&this.fire(new z(`rotateend`,e)),o&&this.fire(new z(`pitchend`,e)),s&&this.fire(new z(`rollend`,e)),this.fire(new z(`moveend`,e))}flyTo(e,t){if(!e.essential&&bn.prefersReducedMotion)return this.easeTo(e,t);this.stop(),e=F({offset:[0,0],speed:1.2,curve:1.42,easing:Et},e),e.zoom!==void 0&&this._zoomSnap&&(e.zoom=Ft(e.zoom,this._zoomSnap));let n=this.getTransformForUpdate(),r=n.bearing,i=n.pitch,a=n.roll,o=n.padding,s=e.bearing===void 0?r:this._normalizeBearing(e.bearing,r),c=e.pitch===void 0?i:+e.pitch,l=e.roll===void 0?a:this._normalizeBearing(e.roll,a),u=e.padding===void 0?n.padding:e.padding,d=f.convert(e.offset),p=n.centerPoint.add(d),m=n.screenPointToLocation(p),h=this.cameraHelper.handleFlyTo(n,{bearing:s,pitch:c,roll:l,padding:u,locationAtOffset:m,offsetAsPoint:d,center:e.center,minZoom:e.minZoom,zoom:e.zoom}),g=e.curve,_=Math.max(n.width,n.height),v=_/h.scaleOfZoom,y=h.pixelPathLength,b=_/h.scaleOfMinZoom;g=Math.min(g,Math.sqrt(b/y*2));let x=g*g;function S(e){let t=(v*v-_*_+(e?-1:1)*x*x*y*y)/(2*(e?v:_)*x*y);return Math.log(Math.sqrt(t*t+1)-t)}function C(e){return(Math.exp(e)-Math.exp(-e))/2}function w(e){return(Math.exp(e)+Math.exp(-e))/2}function T(e){return C(e)/w(e)}let E=S(!1),D=function(e){return w(E)/w(E+g*e)},O=function(e){return _*((w(E)*T(E+g*e)-C(E))/x)/y},k=(S(!0)-E)/g;if(Math.abs(y)<2e-6||!isFinite(k)){if(Math.abs(_-v)<1e-6)return this.easeTo(e,t);let n=v<_?-1:1;k=Math.abs(Math.log(v/_))/g,O=()=>0,D=e=>Math.exp(n*g*e)}if(e.duration!==void 0)e.duration=+e.duration;else{let t=e.screenSpeed===void 0?+e.speed:+e.screenSpeed/g;e.duration=1e3*k/t}return e.maxDuration&&e.duration>e.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=r!==s,this._pitching=c!==i,this._rolling=l!==a,this._padding=!n.isPaddingEqual(u),this._prepareEase(t,!1,{},{tr:n,center:h.targetCenter,freeze:e.freezeElevation}),this._ease(f=>{let m=f*k,g=1/D(m),_=O(m);this._rotating&&n.setBearing(Ki.number(r,s,f)),this._pitching&&n.setPitch(Ki.number(i,c,f)),this._rolling&&n.setRoll(Ki.number(a,l,f)),this._padding&&(n.interpolatePadding(o,u,f),p=n.centerPoint.add(d)),h.easeFunc(f,g,_,p),this.terrain&&!e.freezeElevation&&this._updateElevation(f,n),this.applyUpdatedTransform(n),this._fireMoveEvents(t)},()=>{this._afterEase(t,void 0,e.freezeElevation)},e),this}isEasing(){return!!this._easeFrameId}stop(e){return this._stop(e)}_stop(e,t){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){let e=this._onEaseEnd;delete this._onEaseEnd,e.call(this,t)}return e||this._stopHandlers(),this}_ease(e,t,n){n.animate===!1||n.duration===0?(e(1),t()):(this._easeStart=Sn(),this._easeOptions=n,this._onEaseFrame=e,this._onEaseEnd=t,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_normalizeBearing(e,t){e=Dt(e,-180,180);let n=Math.abs(e-t);return Math.abs(e-360-t)<n&&(e-=360),Math.abs(e+360-t)<n&&(e+=360),e}isMoving(){return this._moving}isZooming(){return this._zooming}isRotating(){return this._rotating}};function aF(e,t){let n=1,r=oF(e,t),i=t.distance/r;for(let a=0;a<5&&!sF(r,t);a++){if(!Number.isFinite(i)||i<=0)return!1;let a=e.zoom;e.setZoom(a+Pt(n/i));let o=n*Nt(a-e.zoom);if(o===n)return!0;let s=oF(e,t);i=o+(t.distance-s)*(o-n)/(s-r),n=o,r=s}return sF(r,t)}function oF(e,t){return e.setLocationAtPoint(t.location,t.point,t.elevation),uF(e,t.location,t.elevation)}function sF(e,t){return Math.abs(e/t.distance-1)<1e-7}function cF(e,t){return t.elevation!==void 0||xe(dF(e.screenPointToLocation(t.point),0),dF(t.location,0))<t.distance*1e-4}function lF(e,t){return e.isPointOnMapSurface(new f(t.x,t.y-16))}function uF(e,t,n=e.elevation){return xe(dF(e.getCameraLngLat(),e.getCameraAltitude()),dF(t,n))}function dF(e,t){let n=ik(e);return ye(n,n,Dm+t)}var fF={compact:!0,customAttribution:`<a href="https://maplibre.org/" target="_blank">MapLibre</a>`},pF=class{constructor(e=fF){this._toggleAttribution=()=>{this._container.classList.contains(`maplibregl-compact`)&&(this._container.classList.contains(`maplibregl-compact-show`)?(this._container.setAttribute(`open`,``),this._container.classList.remove(`maplibregl-compact-show`)):(this._container.classList.add(`maplibregl-compact-show`),this._container.removeAttribute(`open`)))},this._updateData=e=>{e&&(e.type===`terrain`||e.dataType===`style`||e.dataType===`source`&&(e.sourceDataType===`metadata`||e.sourceDataType===`visibility`))&&this._updateAttributions()},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact===!1?this._container.setAttribute(`open`,``):!this._container.classList.contains(`maplibregl-compact`)&&!this._container.classList.contains(`maplibregl-attrib-empty`)&&(this._container.setAttribute(`open`,``),this._container.classList.add(`maplibregl-compact`,`maplibregl-compact-show`)):(this._container.setAttribute(`open`,``),this._container.classList.contains(`maplibregl-compact`)&&this._container.classList.remove(`maplibregl-compact`,`maplibregl-compact-show`))},this._updateCompactMinimize=()=>{this._container.classList.contains(`maplibregl-compact`)&&this._container.classList.contains(`maplibregl-compact-show`)&&this._container.classList.remove(`maplibregl-compact-show`)},this.options=e}getDefaultPosition(){return`bottom-right`}onAdd(e){return this._map=e,this._compact=this.options.compact,this._container=L.create(`details`,`maplibregl-ctrl maplibregl-ctrl-attrib`),this._compactButton=L.create(`summary`,`maplibregl-ctrl-attrib-button`,this._container),this._compactButton.addEventListener(`click`,this._toggleAttribution),this._setElementTitle(this._compactButton,`ToggleAttribution`),this._innerContainer=L.create(`div`,`maplibregl-ctrl-attrib-inner`,this._container),this._updateAttributions(),this._updateCompact(),this._map.on(`styledata`,this._updateData),this._map.on(`sourcedata`,this._updateData),this._map.on(`terrain`,this._updateData),this._map.on(`resize`,this._updateCompact),this._map.on(`drag`,this._updateCompactMinimize),this._container}onRemove(){this._container.remove(),this._map.off(`styledata`,this._updateData),this._map.off(`sourcedata`,this._updateData),this._map.off(`terrain`,this._updateData),this._map.off(`resize`,this._updateCompact),this._map.off(`drag`,this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0}_setElementTitle(e,t){let n=this._map._getUIString(`AttributionControl.${t}`);e.title=n,e.setAttribute(`aria-label`,n)}_updateAttributions(){if(!this._map.style)return;let e=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?e=e.concat(this.options.customAttribution.map(e=>typeof e==`string`?e:``)):typeof this.options.customAttribution==`string`&&e.push(this.options.customAttribution)),this._map.style.stylesheet){let e=this._map.style.stylesheet;this.styleOwner=e.owner,this.styleId=e.id}let t=this._map.style.tileManagers;for(let n in t){let r=t[n];if(r.used||r.usedForTerrain){let t=r.getSource();t.attribution&&!e.includes(t.attribution)&&e.push(t.attribution)}}e=e.filter(e=>String(e).trim()),e.sort((e,t)=>e.length-t.length),e=e.filter((t,n)=>{for(let r=n+1;r<e.length;r++)if(e[r].includes(t))return!1;return!0});let n=e.join(` | `);if(n!==this._attribHTML){if(this._attribHTML=n,e.length){let t=document.createDocumentFragment(),n=!0;for(let r of e){let e=L.sanitize(r);e.hasChildNodes()&&(n||t.append(` | `),t.append(e),n=!1)}this._innerContainer.replaceChildren(t),this._container.classList.remove(`maplibregl-attrib-empty`)}else this._container.classList.add(`maplibregl-attrib-empty`);this._updateCompact(),this._editLink=null}}},mF=class{constructor(e={}){this._updateCompact=()=>{let e=this._container.children;if(e.length){let t=e[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact!==!1&&t.classList.add(`maplibregl-compact`):t.classList.remove(`maplibregl-compact`)}},this.options=e}getDefaultPosition(){return`bottom-left`}onAdd(e){this._map=e,this._compact=this.options?.compact,this._container=L.create(`div`,`maplibregl-ctrl`);let t=L.create(`a`,`maplibregl-ctrl-logo`);return t.target=`_blank`,t.rel=`noopener nofollow`,t.href=`https://maplibre.org/`,t.setAttribute(`aria-label`,this._map._getUIString(`LogoControl.Title`)),t.setAttribute(`rel`,`noopener nofollow`),this._container.appendChild(t),this._container.style.display=`block`,this._map.on(`resize`,this._updateCompact),this._updateCompact(),this._container}onRemove(){this._container.remove(),this._map.off(`resize`,this._updateCompact),this._map=void 0,this._compact=void 0}},hF=class{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(e){let t=++this._id;return this._queue.push({callback:e,id:t,cancelled:!1}),t}remove(e){let t=this._currentlyRunning,n=t?this._queue.concat(t):this._queue;for(let t of n)if(t.id===e){t.cancelled=!0;return}}run(e=0){if(this._currentlyRunning)throw Error(`Attempting to run(), but is already running.`);let t=this._currentlyRunning=this._queue;this._queue=[];let n=!1,r;for(let i of t)if(!i.cancelled){try{i.callback(e)}catch(e){n||(n=!0,r=e)}if(this._cleared)break}if(this._cleared=!1,this._currentlyRunning=!1,n)throw r}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}},gF=Gl([{name:`a_pos3d`,type:`Int16`,components:3}]),_F=class extends Qn{constructor(e){super(),this._lastTilesetChange=Sn(),this.tileManager=e,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.deltaZoom=1,this.tileSize=e._source.tileSize*2**this.deltaZoom,e.usedForTerrain=!0,e.tileSize=this.tileSize}destruct(){this.tileManager.usedForTerrain=!1,this.tileManager.tileSize=null,this.releaseAllRTT()}getSource(){return this.tileManager._source}update(e,t){this.tileManager.update(e,t),this._renderableTilesKeys=[];let n={},r=!1;for(let i of KE(e,{tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:t}))n[i.key]=!0,this._renderableTilesKeys.push(i.key),this._tiles[i.key]||(i.terrainRttPosMatrix32f=new Float32Array(16),ue(i.terrainRttPosMatrix32f,0,8192,8192,0,0,1),this._tiles[i.key]=new OE(i,this.tileSize),this._lastTilesetChange=Sn(),r=!0);for(let e in this._tiles)n[e]||(this._tiles[e].releaseRTT(this.tileManager.map.painter),delete this._tiles[e],r=!0);return r}releaseRTT(e){for(let t in this._tiles){let n=this._tiles[t];(n.tileID.equals(e)||n.tileID.isChildOf(e)||e.isChildOf(n.tileID))&&n.releaseRTT(this.tileManager.map.painter)}}releaseAllRTT(){for(let e in this._tiles)this._tiles[e].releaseRTT(this.tileManager.map.painter)}getRenderableTiles(){return this._renderableTilesKeys.map(e=>this.getTileByID(e))}getTileByID(e){return this._tiles[e]}getTerrainCoords(e,t){return t?this._getTerrainCoordsForTileRanges(e,t):this._getTerrainCoordsForRegularTile(e)}_getTerrainCoordsForRegularTile(e){let t={};for(let n of this._renderableTilesKeys){let r=this._tiles[n].tileID,i=e.clone(),a=lt();if(r.canonical.equals(e.canonical))ue(a,0,N,N,0,0,1);else if(r.canonical.isChildOf(e.canonical)){let t=r.canonical.z-e.canonical.z,n=r.canonical.x-(r.canonical.x>>t<<t),i=r.canonical.y-(r.canonical.y>>t<<t),o=N>>t;ue(a,0,o,o,0,0,1),te(a,a,[-n*o,-i*o,0])}else if(e.canonical.isChildOf(r.canonical)){let t=e.canonical.z-r.canonical.z,n=e.canonical.x-(e.canonical.x>>t<<t),i=e.canonical.y-(e.canonical.y>>t<<t),o=N>>t;ue(a,0,N,N,0,0,1),te(a,a,[n*o,i*o,0]),ne(a,a,[1/2**t,1/2**t,0])}else continue;i.terrainRttPosMatrix32f=new Float32Array(a),t[n]=i}return t}_getTerrainCoordsForTileRanges(e,t){let n={};for(let r of this._renderableTilesKeys){let i=this._tiles[r].tileID;if(!this._isWithinTileRanges(i,t))continue;let a=e.clone(),o=lt();if(i.canonical.z===e.canonical.z){let t=e.canonical.x-i.canonical.x+e.wrap*(1<<e.canonical.z),n=e.canonical.y-i.canonical.y;ue(o,0,N,N,0,0,1),te(o,o,[t*N,n*N,0])}else if(i.canonical.z>e.canonical.z){let t=i.canonical.z-e.canonical.z,n=i.canonical.x-(i.canonical.x>>t<<t)+e.wrap*(1<<i.canonical.z),r=i.canonical.y-(i.canonical.y>>t<<t),a=e.canonical.x-(i.canonical.x>>t),s=e.canonical.y-(i.canonical.y>>t),c=N>>t;ue(o,0,c,c,0,0,1),te(o,o,[-n*c+a*N,-r*c+s*N,0])}else{let t=e.canonical.z-i.canonical.z,n=e.canonical.x-(e.canonical.x>>t<<t)+e.wrap*(1<<e.canonical.z),r=e.canonical.y-(e.canonical.y>>t<<t),a=(e.canonical.x>>t)-i.canonical.x,s=(e.canonical.y>>t)-i.canonical.y,c=N<<t;ue(o,0,c,c,0,0,1),te(o,o,[n*N+a*c,r*N+s*c,0])}a.terrainRttPosMatrix32f=new Float32Array(o),n[r]=a}return n}getSourceTile(e,t){let n=this.tileManager._source,r=e.overscaledZ-this.deltaZoom;if(r>n.maxzoom&&(r=n.maxzoom),r<n.minzoom)return;this._sourceTileCache[e.key]?.zoom!==r&&(this._sourceTileCache[e.key]={zoom:r,key:e.scaledTo(r).key});let i=this.findTileInCaches(this._sourceTileCache[e.key].key);if(!i?.dem&&t)for(;r>=n.minzoom&&!i?.dem;)i=this.findTileInCaches(e.scaledTo(r--).key);return i}isStillWaitingForDEM(e){let t=this.tileManager._source,n=Math.min(e.overscaledZ-this.deltaZoom,t.maxzoom);if(n<t.minzoom)return!1;let r=e.scaledTo(n);return t.hasTile&&!t.hasTile(r)?!1:this.findTileInCaches(r.key)?.state!==`errored`}findTileInCaches(e){let t=this.tileManager.getTileByID(e);return t||(t=this.tileManager._outOfViewCache.getByKey(e),t)}anyTilesAfterTime(e=Sn()){return this._lastTilesetChange>=e}_isWithinTileRanges(e,t){let n=t[e.canonical.z];return!!n&&(e.wrap>n.minWrap||e.wrap<n.maxWrap||e.canonical.x>=n.minTileXWrapped&&e.canonical.x<=n.maxTileXWrapped&&e.canonical.y>=n.minTileY&&e.canonical.y<=n.maxTileY)}},vF=class{constructor(e,t,n,r=`auto`,i=()=>Bm){this._meshCache={},this.painter=e,this._getWorldCoordinateHelper=i,this.tileManager=new _F(t),this.options=n,this.exaggeration=typeof n.exaggeration==`number`?n.exaggeration:1,this._terrainSkirtLength=r,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache=new Map,this.coverage=new FO(this.tileManager,this.exaggeration,()=>this._worldCoordinateHelper)}destroy(){this._fbo&&=(this._fbo.destroy(),null),this._heightMapFbo&&=(this._heightMapFbo.destroy(),null),this._fboDepthTexture&&=(this._fboDepthTexture.destroy(),null),this._emptyDemTexture&&=(this._emptyDemTexture.destroy(),null),this._emptyDepthTexture&&=(this._emptyDepthTexture.destroy(),null);for(let e in this._meshCache)this._meshCache[e].destroy();this._meshCache={},this.tileManager.destruct()}getDEMElevation(e,t,n,r=N){let i=e.normalizeCoordinates(t,n,r);if(!i)return 0;let a=this.coverage.getSampler(i.tileID);return a?a(i.x,i.y,r):0}getElevationForLngLatZoom(e,t){let n=this._worldCoordinateHelper;if(!Ub(t,n.wraps?e.wrap():e,n))return 0;let{tileID:r,worldX:i,worldY:a}=this._getOverscaledTileIDFromLngLatZoom(e,t);return this.getElevation(r,i%N,a%N,N)}getElevationForLngLat(e,t){let n=this.getDrawnElevationForLngLat(e);return n===void 0?this.getElevationForLngLatZoom(e,this._getFallbackZoom(t)):n}getDrawnElevationForLngLat(e,t=!1){return this.coverage.sample(e,t)}getElevationAndDEMStateForLngLat(e,t){let n=this.getElevationForLngLat(e,t);if(n!==0||this.getDrawnElevationForLngLat(e)!==void 0)return{elevation:n,demState:`loaded`};let r=this._getFallbackZoom(t),i=this._worldCoordinateHelper;if(!Ub(r,i.wraps?e.wrap():e,i))return{elevation:n,demState:`none`};let{tileID:a}=this._getOverscaledTileIDFromLngLatZoom(e,r);return this.tileManager.getSourceTile(a,!0)?.dem?{elevation:n,demState:`loaded`}:{elevation:n,demState:this.tileManager.isStillWaitingForDEM(a)?`loading`:`none`}}_getFallbackZoom(e){return Math.min(e.tileZoom,this.tileManager.maxzoom)}getElevation(e,t,n,r=N){return this.getDEMElevation(e,t,n,r)*this.exaggeration}resetElevationCache(){this.coverage.reset()}getCoverageIndex(){return this.coverage.getIndex()}_getDEMTileMatrix(e,t){let n=`${t.tileID.key}/${e.key}`,r=this._demMatrixCache.get(n);if(r)return r;let i=e.canonical.z-t.tileID.canonical.z,a=e.canonical.x-(e.canonical.x>>i<<i),o=e.canonical.y-(e.canonical.y>>i<<i),s=oe(new Float64Array(16),[1/(N<<i),1/(N<<i),0]);return te(s,s,[a*N,o*N,0]),this._demMatrixCache.set(n,s),s}getTerrainData(e){if(!this._emptyDemTexture){let e=this.painter.context,t=new kf({width:1,height:1},new Uint8Array(4));this._emptyDepthTexture=new Wf(e,t,e.gl.RGBA,{premultiply:!1}),this._emptyDemUnpack=[0,0,0,0],this._emptyDemTexture=new Wf(e,new kf({width:1,height:1}),e.gl.RGBA,{premultiply:!1}),this._emptyDemTexture.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),this._emptyDemMatrix=A([])}let t=this.tileManager.getSourceTile(e,!0);if(t?.dem&&(!t.demTexture||t.needsTerrainPrepare)){let e=this.painter.context;t.demTexture||=this.painter.getTileTexture(t.dem.stride),t.demTexture?t.demTexture.update(t.dem.getPixels(),{premultiply:!1}):t.demTexture=new Wf(e,t.dem.getPixels(),e.gl.RGBA,{premultiply:!1}),t.demTexture.bind(e.gl.NEAREST,e.gl.CLAMP_TO_EDGE),t.needsTerrainPrepare=!1}let n=t?this._getDEMTileMatrix(e,t):this._emptyDemMatrix;return{u_depth:2,u_terrain:3,u_terrain_dim:t?.dem?.dim||1,u_terrain_matrix:n,u_terrain_unpack:t?.dem?.getUnpackVector()||this._emptyDemUnpack,u_terrain_exaggeration:this.exaggeration,texture:(t?.demTexture||this._emptyDemTexture).texture,depthTexture:(this._fboDepthTexture||this._emptyDepthTexture).texture,tile:t}}getFramebuffer(){let e=this.painter,t=e.width/devicePixelRatio,n=e.height/devicePixelRatio;return this._fbo&&(this._fbo.width!==t||this._fbo.height!==n)&&(this._fbo.destroy(),this._fboDepthTexture.destroy(),delete this._fbo,delete this._fboDepthTexture),this._fboDepthTexture||(this._fboDepthTexture=new Wf(e.context,{width:t,height:n,data:null},e.context.gl.RGBA,{premultiply:!1}),this._fboDepthTexture.bind(e.context.gl.NEAREST,e.context.gl.CLAMP_TO_EDGE)),this._fbo||(this._fbo=e.context.createFramebuffer(t,n,!0,!1),this._fbo.depthAttachment.set(e.context.createRenderbuffer(e.context.gl.DEPTH_COMPONENT16,t,n))),this._fbo.colorAttachment.set(this._fboDepthTexture.texture),this._fbo}getHeightMapFramebuffer(e){return this._heightMapFbo||=this.painter.context.createFramebuffer(1,1,!1,!1),this._heightMapFbo.colorAttachment.set(e),this._heightMapFbo}getTerrainMesh(e,t){let n=t&&e.canonical.y===0,r=t&&e.canonical.y===(1<<e.canonical.z)-1,i=`m_${n?`n`:``}_${r?`s`:``}`;if(this._meshCache[i])return this._meshCache[i];let a=this.painter.context,o=new ju,s=new qu,c=this.meshSize,l=N/c,u=c*c;for(let e=0;e<=c;e++)for(let t=0;t<=c;t++)o.emplaceBack(t*l,e*l,0);for(let e=0;e<u;e+=c+1)for(let t=0;t<c;t++)s.emplaceBack(t+e,c+t+e+1,c+t+e+2),s.emplaceBack(t+e,c+t+e+2,t+e+1);this._terrainSkirtLength!==`none`&&this._buildSkirts(o,s,c,l,n,r);let d=new Tx(a.createVertexBuffer(o,gF.members),a.createIndexBuffer(s),Qu.simpleSegment(0,0,o.length,s.length));return this._meshCache[i]=d,d}getSkirtLength(e){return this._worldCoordinateHelper.metersPerWorldUnit(.5,.5)/2**Math.max(e,0)/5}getMinTileElevationForLngLatZoom(e,t){let n=this._worldCoordinateHelper;if(!Ub(t,n.wraps?e.wrap():e,n))return 0;let{tileID:r}=this._getOverscaledTileIDFromLngLatZoom(e,t);return this.getMinMaxElevation(r).minElevation??0}getMinMaxElevation(e){let t=this.tileManager.getSourceTile(e,!0),n={minElevation:null,maxElevation:null};return t?.dem&&(n.minElevation=t.dem.min*this.exaggeration,n.maxElevation=t.dem.max*this.exaggeration),n}get _worldCoordinateHelper(){return this._getWorldCoordinateHelper()}_getOverscaledTileIDFromLngLatZoom(e,t){let n=this._worldCoordinateHelper,r=n.wraps?e.wrap():e,i=n.worldFromLngLat(r.lng,r.lat),a=(1<<t)*N,o=i.x*a,s=i.y*a;return{tileID:new Kb(t,0,t,Math.floor(o/N),Math.floor(s/N)),worldX:o,worldY:s}}_buildSkirts(e,t,n,r,i,a){let o=e.length,s=o+(n+1),c=(n+1)*n,l=i?Xp:0,u=+!i,d=a?Zp:N,f=+!a;for(let t=0;t<=n;t++)e.emplaceBack(t*r,l,u);for(let t=0;t<=n;t++)e.emplaceBack(t*r,d,f);for(let e=0;e<n;e++)t.emplaceBack(c+e,s+e,s+e+1),t.emplaceBack(c+e,s+e+1,c+e+1),t.emplaceBack(0+e,o+e+1,o+e),t.emplaceBack(0+e,0+e+1,o+e+1);let p=e.length,m=p+(n+1)*2;for(let t of[0,1])for(let i=0;i<=n;i++)for(let n of[0,1])e.emplaceBack(t*N,i*r,n);for(let e=0;e<n*2;e+=2)t.emplaceBack(p+e,p+e+1,p+e+3),t.emplaceBack(p+e,p+e+3,p+e+2),t.emplaceBack(m+e,m+e+3,m+e+1),t.emplaceBack(m+e,m+e+2,m+e+3)}},yF=[`none`,`zoom`,`sourceTiles`,`visibleLayers`,`revision`],bF=class{constructor(e,t,n,r){this._tileKeys=e.map(e=>e.key).sort().join(),this._revision=t,this._zoom=n,this._visibleLayerIds=r}difference(e){return this._revision===e?._revision?this._visibleLayerIds===e._visibleLayerIds?this._tileKeys===e._tileKeys?this._zoom===e._zoom?`none`:`zoom`:`sourceTiles`:`visibleLayers`:`revision`}},xF={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0,"color-relief":!0};function SF(e){return Dy(e)?`custom-layer:${e.id}`:e.source}function CF(e){return Dy(e)?e.implementation.renderToTerrainTile!==void 0:xF[e.type]===!0}function wF(e,t){let n=[],r=!1;for(let i of t){let t=CF(e._layers[i]);t&&!r&&n.push([]),t&&n[n.length-1].push(i),r=t}return n}var TF=class{constructor(e,t){this.needsFollowUpFrame=!1,this.painter=e,this.terrain=t,this.rttSize=t.tileManager.tileSize*t.qualityFactor}getTexture(e){return e.getRTT(this._stacks.length-1).texture}prepareForRender(e,t,n){let r=t!==this._lastPrepareZoom;this._lastPrepareZoom=t,this._stacks=[],this._prevRenderedToTexture=!1,this._rttTiles=[],this._renderableTiles=this.terrain.tileManager.getRenderableTiles(),this._renderableLayerIds=e._order.filter(n=>!e._layers[n].isHidden(t));let i=wF(e,this._renderableLayerIds),a=this._renderableLayerIds.join(),o=new Set;for(let t of this._renderableLayerIds){let n=e._layers[t],r=n.source;r&&xF[n.type]&&o.add(r)}this._coordsAscending={},this._rttFingerprints={};for(let n of o){let r=e.tileManagers[n];if(!r)continue;this._coordsAscending[n]={};let i=this._coordsAscending[n],o=r.getSource(),s=o instanceof kx?o.terrainTileRanges:null;for(let e of r.getVisibleCoordinates()){let t=this.terrain.tileManager.getTerrainCoords(e,s);for(let e in t)i[e]||=[],i[e].push(t[e])}this._rttFingerprints[n]={};let c=this._rttFingerprints[n],l=r.getState().revision;for(let e in i)c[e]=new bF(i[e],l,t,a)}for(let n of this._renderableLayerIds){let r=e._layers[n];if(!Dy(r)||!CF(r))continue;let i=r.implementation.terrainTileRevision??0,o={};for(let e of this._renderableTiles)o[e.tileID.key]=new bF([e.tileID],i,t,a);this._rttFingerprints[SF(r)]=o}this.needsFollowUpFrame=!1;let s=r||n,c=!1;for(let t of this._renderableTiles){let n=this._textureDifference(t);n!==`none`&&(n===`zoom`&&s||n===`visibleLayers`&&r?this.needsFollowUpFrame=!0:n===`zoom`||n===`sourceTiles`?(c?this.needsFollowUpFrame=!0:this._releaseChangedTextures(t,e,i),c=!0):this._releaseChangedTextures(t,e,i))}}_releaseChangedTextures(e,t,n){let r=n.map(n=>this._hasStackChanged(e,t,n));if(!r.includes(!1))e.releaseRTT(this.painter);else for(let[t,n]of r.entries())n&&e.releaseRTTStack(this.painter,t)}_hasStackChanged(e,t,n){let r=!1;for(let i of n){let n=SF(t._layers[i]),a=this._rttFingerprints[n]?.[e.tileID.key],o=e.rttFingerprint[n];if(a||o){if(a?.difference(o)!==`none`)return!0;r=!0}}return!r}_textureDifference(e){let t=`none`;for(let n in this._rttFingerprints){let r=this._rttFingerprints[n][e.tileID.key];if(!r)continue;let i=r.difference(e.rttFingerprint[n]);yF.indexOf(i)>yF.indexOf(t)&&(t=i)}return t}renderLayer(e,t,n){if(e.isHidden(n.transform.zoom))return!1;let r=CF(e),i=this.painter,a=this._renderableLayerIds[this._renderableLayerIds.length-1]===e.id;if(r&&(this._prevRenderedToTexture||this._stacks.push([]),this._prevRenderedToTexture=!0,this._stacks[this._stacks.length-1].push(e.id),!a))return!0;if(this._prevRenderedToTexture||r&&a){this._prevRenderedToTexture=r;let e=this._stacks.length-1,a=this._stacks[e]||[];n.isRenderingToTexture=!0,YA(i.context.frameUniformBuffer,this.rttSize,this.rttSize);for(let r of this._renderableTiles){if(this._rttTiles.push(r),r.getRTT(e))continue;let o=r.acquireRTT(i,e,this.rttSize);i.bindRTT(o),i.context.clear({color:G.transparent,stencil:0}),n.invalidateTileClippingMasks();for(let e of a){let a=t._layers[e],o=a.source?this._coordsAscending[a.source][r.tileID.key]:[r.tileID];i.context.viewport.set([0,0,this.rttSize,this.rttSize]),n.renderTileClippingMasks(a,o),i.renderLayer(i,t.tileManagers[a.source],a,o,n);let s=SF(a);s&&(r.rttFingerprint[s]=this._rttFingerprints[s][r.tileID.key])}o.texture.generateMipmap()}return n.isRenderingToTexture=!1,YA(i.context.frameUniformBuffer,i.context.gl.drawingBufferWidth,i.context.gl.drawingBufferHeight),RN(this.painter,this.terrain,this._rttTiles,n),this._rttTiles=[],r}return!1}},EF={"AttributionControl.ToggleAttribution":`Toggle attribution`,"AttributionControl.MapFeedback":`Map feedback`,"FullscreenControl.Enter":`Enter fullscreen`,"FullscreenControl.Exit":`Exit fullscreen`,"GeolocateControl.FindMyLocation":`Find my location`,"GeolocateControl.LocationNotAvailable":`Location not available`,"LogoControl.Title":`MapLibre logo`,"Map.Title":`Map`,"Marker.Title":`Map marker`,"NavigationControl.ResetBearing":`Drag to rotate map, click to reset north`,"NavigationControl.ZoomIn":`Zoom in`,"NavigationControl.ZoomOut":`Zoom out`,"Popup.Close":`Close popup`,"ScaleControl.Feet":`ft`,"ScaleControl.Meters":`m`,"ScaleControl.Kilometers":`km`,"ScaleControl.Miles":`mi`,"ScaleControl.NauticalMiles":`nm`,"GlobeControl.Enable":`Enable globe`,"GlobeControl.Disable":`Disable globe`,"TerrainControl.Enable":`Enable terrain`,"TerrainControl.Disable":`Disable terrain`,"CooperativeGesturesHandler.WindowsHelpText":`Use Ctrl + scroll to zoom the map`,"CooperativeGesturesHandler.MacHelpText":`Use ⌘ + scroll to zoom the map`,"CooperativeGesturesHandler.MobileHelpText":`Use two fingers to move the map`},DF=d,OF={hash:!1,interactive:!0,bearingSnap:7,zoomSnap:0,attributionControl:fF,maplibreLogo:!1,refreshExpiredTiles:!0,canvasContextAttributes:{antialias:!1,preserveDrawingBuffer:!1,powerPreference:`high-performance`,failIfMajorPerformanceCaveat:!1,desynchronized:!1,contextType:void 0},scrollZoom:!0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:60,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,cooperativeGestures:!1,trackResize:!0,center:[0,0],elevation:0,zoom:0,bearing:0,pitch:0,roll:0,renderWorldCopies:!0,maxTileCacheSize:null,maxTileCacheZoomLevels:Mn.MAX_TILE_CACHE_ZOOM_LEVELS,transformRequest:null,transformCameraUpdate:null,transformConstrain:null,fadeDuration:300,crossSourceCollisions:!0,clickTolerance:3,localIdeographFontFamily:`sans-serif`,pitchWithRotate:!0,rollEnabled:!1,rotateSpeed:.8,pitchSpeed:-.5,reduceMotion:void 0,validateStyle:!0,globalState:void 0,maxCanvasSize:[4096,4096],cancelPendingTileRequestsWhileZooming:!0,centerClampedToGround:!0,terrainSkirtLength:`auto`,zoomLevelsToOverscale:4,anisotropicFilterPitch:20},kF=class extends Qn{get _ownerWindow(){return this._container?.ownerDocument?.defaultView||window}constructor(e){super(),this._idleTriggered=!1,this._crossFadingFactor=1,this._renderTaskQueue=new hF,this._controls=[],this._mapId=At(),this._styleUrl=null,this._missingStyleImageResolver=null,this._lostContextStyle={style:null,images:null},this._contextLost=e=>{if(e.preventDefault(),this._frameRequest&&=(this._frameRequest.abort(),null),this.painter.destroy(),this._lostContextStyle=this._getStyleAndImages(),!this.style)this.fire(new lr(`webglcontextlost`,{originalEvent:e}));else{for(let e of Object.values(this.style._layers))if(e.type===`custom`&&console.warn(`Custom layer with id '${e.id}' cannot be restored after WebGL context loss. You will need to re-add it manually after context restoration.`),e._listeners)for(let[t]of Object.entries(e._listeners))console.warn(`Custom layer with id '${e.id}' had event listeners for event '${t}' which cannot be restored after WebGL context loss. You will need to re-add them manually after context restoration.`);this.style.off(`error`,this._onStyleError),this.style.destroy(),this.style=null,this.fire(new lr(`webglcontextlost`,{originalEvent:e}))}},this._contextRestored=e=>{if(this._lostContextStyle.style&&this.setStyle(this._lostContextStyle.style,{diff:!1}),this._lostContextStyle.images&&this.style){this.style.imageManager.images=this._lostContextStyle.images;for(let e in this._lostContextStyle.images){let t=this._lostContextStyle.images[e];t.isWebGLImage&&this.style.imageManager.updateImage(e,t,!1)}}this._lostContextStyle={style:null,images:null};try{this._setupPainter()}catch(e){this.fire(new R(e));return}this.resize(),this._update(),this._resizeInternal(),this.fire(new lr(`webglcontextrestored`,{originalEvent:e}))},this._onMapScroll=e=>{if(e.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onStyleError=e=>{e.tile&&this.triggerRepaint()},this._onWindowOnline=()=>{this._update()};let t={...OF,...e,canvasContextAttributes:{...OF.canvasContextAttributes,...e.canvasContextAttributes}};if(t.minZoom!=null&&t.maxZoom!=null&&t.minZoom>t.maxZoom)throw Error(`maxZoom must be greater than or equal to minZoom`);if(t.minPitch!=null&&t.maxPitch!=null&&t.minPitch>t.maxPitch)throw Error(`maxPitch must be greater than or equal to minPitch`);if(t.minPitch!=null&&t.minPitch<0)throw Error(`minPitch must be greater than or equal to 0`);if(t.maxPitch!=null&&t.maxPitch>180)throw Error(`maxPitch must be less than or equal to 180`);this._camera=new iF({minZoom:t.minZoom,maxZoom:t.maxZoom,minPitch:t.minPitch,maxPitch:t.maxPitch,bearingSnap:t.bearingSnap,zoomSnap:t.zoomSnap,renderWorldCopies:t.renderWorldCopies,centerClampedToGround:t.centerClampedToGround,terrain:this.terrain,transformConstrain:t.transformConstrain,requestRenderFrame:e=>this._requestRenderFrame(e),cancelRenderFrame:e=>this._cancelRenderFrame(e),transformCameraUpdate:t.transformCameraUpdate,stopHandlers:()=>this._handlers?.stop(!1)}),this._camera.setEventedParent(this),this._interactive=t.interactive,this._maxTileCacheSize=t.maxTileCacheSize,this._maxTileCacheZoomLevels=t.maxTileCacheZoomLevels,this._canvasContextAttributes={...t.canvasContextAttributes},this._trackResize=t.trackResize===!0,this._terrainSkirtLength=t.terrainSkirtLength,this._refreshExpiredTiles=t.refreshExpiredTiles===!0,this._fadeDuration=t.fadeDuration,this._crossSourceCollisions=t.crossSourceCollisions===!0,this._collectResourceTiming=t.collectResourceTiming===!0,this._locale={...EF,...t.locale},this._clickTolerance=t.clickTolerance,this._overridePixelRatio=t.pixelRatio,this._maxCanvasSize=t.maxCanvasSize,this._zoomLevelsToOverscale=t.zoomLevelsToOverscale,this.cancelPendingTileRequestsWhileZooming=t.cancelPendingTileRequestsWhileZooming===!0,this.setAnisotropicFilterPitch(t.anisotropicFilterPitch),t.reduceMotion!==void 0&&(bn.prefersReducedMotion=t.reduceMotion),this._requestManager=new Jn(t.transformRequest),this._container=this._resolveContainer(t.container),t.maxBounds&&this.setMaxBounds(t.maxBounds),this._setupContainer();try{this._setupPainter()}catch(e){throw this._cleanupContainer(),e}this._imageQueueHandle=qn.addThrottleControl(()=>this.isMoving()),this.on(`move`,()=>this._update(!1)),this.on(`moveend`,()=>this._update(!1)),this.on(`zoom`,()=>this._update(!0)),this.on(`terrain`,()=>{this.painter.markTerrainDepthDirty(),this._update(!0)}),this.once(`idle`,()=>this._idleTriggered=!0),this._handlers=new tF(this,this._camera,t),typeof window<`u`&&(this._ownerWindow.addEventListener(`online`,this._onWindowOnline,!1),this._setupResizeObserver());let n=typeof t.hash==`string`&&t.hash||void 0;this._hash=t.hash?new $N(n).addTo(this):void 0,this._hash?._onHashChange()||(this.jumpTo({center:t.center,elevation:t.elevation,zoom:t.zoom,bearing:t.bearing,pitch:t.pitch,roll:t.roll}),t.bounds&&(this.resize(),this.fitBounds(t.bounds,F({},t.fitBoundsOptions,{duration:0}))));let r=typeof t.style==`string`?void 0:t.style?.projection?.type,i=r!==`globe`&&!hx(r);this.resize(null,i),this._localIdeographFontFamily=t.localIdeographFontFamily,this._validateStyle=t.validateStyle,this._initialGlobalState=t.globalState,t.style&&this.setStyle(t.style,{localIdeographFontFamily:t.localIdeographFontFamily}),t.attributionControl&&this.addControl(new pF(typeof t.attributionControl==`boolean`?void 0:t.attributionControl)),t.maplibreLogo&&this.addControl(new mF,t.logoPosition),this.on(`style.load`,()=>{if(i||this._resizeTransform(),this._camera.transform.unmodified){let e=Ot(this.style.stylesheet,[`center`,`zoom`,`bearing`,`pitch`,`roll`]);this.jumpTo(e)}}),this.on(`data`,e=>{this._update(e.dataType===`style`),this.fire(e.dataType===`style`?new tr(`styledata`,e):new nr(`sourcedata`,e))}),this.on(`dataloading`,e=>{this.fire(e.dataType===`style`?new tr(`styledataloading`,e):new nr(`sourcedataloading`,e))}),this.on(`dataabort`,e=>{this.fire(new nr(`sourcedataabort`,e))})}_getMapId(){return this._mapId}setGlobalStateProperty(e,t){return this.style.setGlobalStateProperty(e,t),this._update(!0)}getGlobalState(){return this.style.getGlobalState()}addControl(e,t){if(t===void 0&&(t=e.getDefaultPosition?e.getDefaultPosition():`top-right`),!e?.onAdd)return this.fire(new R(Error(`Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.`)));let n=e.onAdd(this);this._controls.push(e);let r=this._controlPositions[t];return t.includes(`bottom`)?r.insertBefore(n,r.firstChild):r.appendChild(n),this}removeControl(e){if(!e?.onRemove)return this.fire(new R(Error(`Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.`)));let t=this._controls.indexOf(e);return t>-1&&this._controls.splice(t,1),e.onRemove(this),this}hasControl(e){return this._controls.includes(e)}coveringTiles(e){return KE(this._camera.transform,e)}setTransformCameraUpdate(e){this._camera.transformCameraUpdate=e}getCenter(){return new Q(this._camera.transform.center.lng,this._camera.transform.center.lat)}setCenter(e,t){return this._camera.setCenter(e,t),this}getCenterElevation(){return this._camera.transform.elevation}setCenterElevation(e,t){return this._camera.setCenterElevation(e,t),this}setCenterClampedToGround(e){this._camera.setCenterClampedToGround(e)}panBy(e,t,n){return this._camera.panBy(e,t,n),this}panTo(e,t,n){return this._camera.panTo(e,t,n),this}getZoom(){return this._camera.transform.zoom}setZoom(e,t){return this._camera.setZoom(e,t),this}zoomTo(e,t,n){return this._camera.zoomTo(e,t,n),this}zoomIn(e,t){return this._camera.zoomIn(e,t),this}zoomOut(e,t){return this._camera.zoomOut(e,t),this}getVerticalFieldOfView(){return this._camera.transform.fov}setVerticalFieldOfView(e,t){return this._camera.setVerticalFieldOfView(e,t),this}getBearing(){return this._camera.transform.bearing}setBearing(e,t){return this._camera.setBearing(e,t),this}getZoomSnap(){return this._camera.getZoomSnap()}setZoomSnap(e){return this._camera.setZoomSnap(e),this}getPadding(){return this._camera.transform.padding}setPadding(e,t){return this._camera.setPadding(e,t),this}rotateTo(e,t,n){return this._camera.rotateTo(e,t,n),this}resetNorth(e,t){return this._camera.resetNorth(e,t),this}resetNorthPitch(e,t){return this._camera.resetNorthPitch(e,t),this}snapToNorth(e,t){return this._camera.snapToNorth(e,t),this}getPitch(){return this._camera.transform.pitch}setPitch(e,t){return this._camera.setPitch(e,t),this}getRoll(){return this._camera.transform.roll}setRoll(e,t){return this._camera.setRoll(e,t),this}cameraForBounds(e,t){return this._camera.cameraForBounds(e,t)}fitBounds(e,t,n){return this._camera.fitBounds(e,t,n),this}fitScreenCoordinates(e,t,n,r,i){return this._camera.fitScreenCoordinates(e,t,n,r,i),this}jumpTo(e,t){return this._camera.jumpTo(e,t),this}calculateAnchoredCameraOptions(e){return this._camera.calculateAnchoredCameraOptions(e)}calculateCameraOptionsFromCameraLngLatAltRotation(e,t,n,r,i){return this._camera.calculateCameraOptionsFromCameraLngLatAltRotation(e,t,n,r,i)}easeTo(e,t){return this._camera.easeTo(e,t),this}flyTo(e,t){return this._camera.flyTo(e,t),this}stop(){return this._camera.stop(),this}queryTerrainElevation(e){return this.terrain?this.terrain.getElevationForLngLat(Q.convert(e),this._camera.transform):null}getCenterClampedToGround(){return this._camera.getCenterClampedToGround()}calculateCameraOptionsFromTo(e,t,n,r){return r==null&&this.terrain&&(r=this.terrain.getElevationForLngLat(n,this._camera.transform)),this._camera.transform.calculateCameraOptionsFromTo(e,t,n,r??0)}resize(e,t=!0){if(this._lostContextStyle.style!==null)return this;this._resizeInternal(t);let n=!this._camera._moving;return n&&(this.stop(),this.fire(new z(`movestart`,e)).fire(new z(`move`,e))),this.fire(new $n(`resize`,e)),n&&this.fire(new z(`moveend`,e)),this}_resizeInternal(e=!0){let[t,n]=this._containerDimensions();if(this._clampedPixelRatio=this._getClampedPixelRatio(t,n),this._resizeCanvas(t,n,this._clampedPixelRatio),this.painter.resize(t,n,this._clampedPixelRatio),this.painter.overLimit()){let e=this.painter.context.gl;this._maxCanvasSize=[e.drawingBufferWidth,e.drawingBufferHeight],this._clampedPixelRatio=this._getClampedPixelRatio(t,n),this._resizeCanvas(t,n,this._clampedPixelRatio),this.painter.resize(t,n,this._clampedPixelRatio)}this.style?.resize(),this._resizeTransform(e)}_resizeTransform(e=!0){let[t,n]=this._containerDimensions();this._camera.transform.resize(t,n,e),this._camera._requestedCameraState?.resize(t,n,e)}_getClampedPixelRatio(e,t){let{0:n,1:r}=this._maxCanvasSize,i=this.getPixelRatio(),a=e*i,o=t*i,s=a>n?n/a:1,c=o>r?r/o:1,l=Math.min(s,c);return l<1&&I(`The canvas is larger than maxCanvasSize and is rendered at a lower pixel ratio to fit. Increase maxCanvasSize, within MAX_TEXTURE_SIZE, to render at full resolution.`),l*i}getPixelRatio(){return this._overridePixelRatio??devicePixelRatio}setPixelRatio(e){this._overridePixelRatio=e,this.resize()}getBounds(){return this._camera.transform.getBounds()}getMaxBounds(){return this._camera.transform.getMaxBounds()}setMaxBounds(e){return this._camera.applyTransformChange(t=>t.setMaxBounds(Rb.convert(e))),this._update()}setMinZoom(e){if(e??=-2,e>=-2&&e<=this._camera.transform.maxZoom){let t=this._camera.transform.zoom;return this._camera.applyTransformChange(t=>t.setMinZoom(e)),this._update(),t!==this._camera.transform.zoom&&this.fire(new z(`zoomstart`)).fire(new z(`zoom`)).fire(new z(`zoomend`)).fire(new z(`movestart`)).fire(new z(`move`)).fire(new z(`moveend`)),this}throw Error(`minZoom must be between -2 and the current maxZoom, inclusive`)}getMinZoom(e=!1){let t=this._camera.transform;return e?t.applyConstrain(t.center,t.minZoom).zoom:t.minZoom}setMaxZoom(e){if(e??=22,e>=this._camera.transform.minZoom){let t=this._camera.transform.zoom;return this._camera.applyTransformChange(t=>t.setMaxZoom(e)),this._update(),t!==this._camera.transform.zoom&&this.fire(new z(`zoomstart`)).fire(new z(`zoom`)).fire(new z(`zoomend`)).fire(new z(`movestart`)).fire(new z(`move`)).fire(new z(`moveend`)),this}throw Error(`maxZoom must be greater than the current minZoom`)}getMaxZoom(){return this._camera.transform.maxZoom}setMinPitch(e){if(e??=0,e<0)throw Error(`minPitch must be greater than or equal to 0`);if(e>=0&&e<=this._camera.transform.maxPitch){let t=this._camera.transform.pitch;return this._camera.applyTransformChange(t=>t.setMinPitch(e)),this._update(),t!==this._camera.transform.pitch&&this.fire(new z(`pitchstart`)).fire(new z(`pitch`)).fire(new z(`pitchend`)).fire(new z(`movestart`)).fire(new z(`move`)).fire(new z(`moveend`)),this}throw Error(`minPitch must be between 0 and the current maxPitch, inclusive`)}getMinPitch(){return this._camera.transform.minPitch}setMaxPitch(e){if(e??=60,e>180)throw Error(`maxPitch must be less than or equal to 180`);if(e>=this._camera.transform.minPitch){let t=this._camera.transform.pitch;return this._camera.applyTransformChange(t=>t.setMaxPitch(e)),this._update(),t!==this._camera.transform.pitch&&this.fire(new z(`pitchstart`)).fire(new z(`pitch`)).fire(new z(`pitchend`)).fire(new z(`movestart`)).fire(new z(`move`)).fire(new z(`moveend`)),this}throw Error(`maxPitch must be greater than the current minPitch`)}getMaxPitch(){return this._camera.transform.maxPitch}getAnisotropicFilterPitch(){return this._anisotropicFilterPitch}setAnisotropicFilterPitch(e){if(e??=20,e>180)throw Error(`anisotropicFilterPitch must be less than or equal to 180`);if(e<0)throw Error(`anisotropicFilterPitch must be greater than or equal to 0`);return this._anisotropicFilterPitch=e,this._update()}getRenderWorldCopies(){return this._camera.transform.renderWorldCopies}setRenderWorldCopies(e){return this._camera.applyTransformChange(t=>t.setRenderWorldCopies(e)),this._update()}setTransformConstrain(e){return this._camera.applyTransformChange(t=>t.setConstrainOverride(e)),this._update()}project(e){return this._camera.transform.locationToScreenPoint(Q.convert(e),this.style&&this.terrain)}unproject(e){return this._camera.transform.screenPointToLocation(f.convert(e),this.terrain)}isMoving(){return this._camera.isMoving()||this._handlers?.isMoving()||!1}isZooming(){return this._camera.isZooming()||this._handlers?.isZooming()||!1}isRotating(){return this._camera.isRotating()||this._handlers?.isRotating()||!1}_createDelegates(e,t,n){if(e===`mouseenter`||e===`mouseover`){let r=!1;return{mousemove:i=>{let a=t.filter(e=>this.getLayer(e)),o=a.length===0?[]:this.queryRenderedFeatures(i.point,{layers:a});o.length?r||(r=!0,n.call(this,new rr(e,this,i.originalEvent,{features:o}))):r=!1},mouseout:()=>{r=!1}}}if(e===`mouseleave`||e===`mouseout`){let r=!1;return{mousemove:i=>{let a=t.filter(e=>this.getLayer(e));(a.length===0?[]:this.queryRenderedFeatures(i.point,{layers:a})).length?r=!0:r&&(r=!1,n.call(this,new rr(e,this,i.originalEvent)))},mouseout:t=>{r&&(r=!1,n.call(this,new rr(e,this,t.originalEvent)))}}}{let r=e=>{let r=t.filter(e=>this.getLayer(e)),i=r.length===0?[]:this.queryRenderedFeatures(e.point,{layers:r});i.length&&(e.features=i,n.call(this,e),delete e.features)};return{[e]:r}}}_addDelegatedListener(e,t){this._delegatedListeners||={},this._delegatedListeners[e]||=[],this._delegatedListeners[e].push(t);for(let e in t.delegates)this.on(e,t.delegates[e])}_removeDelegatedListener(e,t,n){if(!this._delegatedListeners?.[e])return;let r=this._delegatedListeners[e];for(let e=0;e<r.length;e++){let i=r[e];if(i.listener===n&&i.layers.length===t.length&&i.layers.every(e=>t.includes(e))){for(let e in i.delegates)this.off(e,i.delegates[e]);r.splice(e,1);return}}}on(e,t,n){if(n===void 0)return super.on(e,t);let r=typeof t==`string`?[t]:t,i={layers:r,listener:n,delegates:this._createDelegates(e,r,n)};return this._addDelegatedListener(e,i),{unsubscribe:()=>{this._removeDelegatedListener(e,r,n)}}}once(e,t,n){if(n===void 0)return super.once(e,t);let r=typeof t==`string`?[t]:t,i={layers:r,listener:n,delegates:this._createDelegates(e,r,t=>{this._removeDelegatedListener(e,r,n),n.call(this,t)})};return this._addDelegatedListener(e,i),this}off(e,t,n){if(n===void 0)return super.off(e,t);let r=typeof t==`string`?[t]:t;return this._removeDelegatedListener(e,r,n),this}queryRenderedFeatures(e,t){if(!this.style)return[];let n,r=e instanceof f||Array.isArray(e),i=r?e:[[0,0],[this._camera.transform.width,this._camera.transform.height]];if(t||=(r?{}:e)||{},i instanceof f||typeof i[0]==`number`)n=[f.convert(i)];else{let e=f.convert(i[0]),t=f.convert(i[1]);n=[e,new f(t.x,e.y),t,new f(e.x,t.y),e]}return this.style.queryRenderedFeatures(n,t,this._camera.transform)}querySourceFeatures(e,t){return this.style.querySourceFeatures(e,t)}setStyle(e,t){return t=F({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._validateStyle,globalState:this._initialGlobalState},t),this._styleUrl=typeof e==`string`?e:null,t.diff!==!1&&t.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&e?(this._diffStyle(e,t),this):(this._localIdeographFontFamily=t.localIdeographFontFamily,this._updateStyle(e,t))}setTransformRequest(e){return this._requestManager.setTransformRequest(e),this}_getUIString(e){let t=this._locale[e];if(t==null)throw Error(`Missing UI string '${e}'`);return t}_updateStyle(e,t){if(this._diffStyleRequest?.abort(),this._diffStyleRequest=null,t.transformStyle&&this.style&&!this.style._loaded){this.style.once(`style.load`,()=>this._updateStyle(e,t));return}let n=this.style&&t.transformStyle?this.style.serialize():void 0;if(this.style&&(this.style.off(`error`,this._onStyleError),this.style.setEventedParent(null),this.style._remove(!e)),e)this.style=new Gk(this,t||{});else return this._frameRequest&&=(this._frameRequest.abort(),null),this.style?.projection?.destroy(),delete this.style,this;return this.style.setEventedParent(this,{style:this.style}),this.style.on(`error`,this._onStyleError),typeof e==`string`?this.style.loadURL(e,t,n):this.style.loadJSON(e,t,n),this}_lazyInitEmptyStyle(){this.style||(this.style=new Gk(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.on(`error`,this._onStyleError),this.style.loadEmpty())}async _diffStyle(e,t){if(this._diffStyleRequest?.abort(),typeof e==`string`){let n=e;this._diffStyleRequest=new AbortController;let r=this._diffStyleRequest;try{let e=await this._requestManager.transformRequest(n,`Style`);if(r.signal.aborted){this._diffStyleRequest=null;return}let i=await Un(e,r);this._diffStyleRequest=null,this._updateDiff(i.data,t)}catch(e){this._diffStyleRequest=null,hn(e)||this.fire(new R(ot(e)))}}else typeof e==`object`&&(this._diffStyleRequest=null,this._updateDiff(e,t))}_updateDiff(e,t){try{this.style.setState(e,t)&&this._update(!0)}catch(n){I(`Unable to perform style diff: ${ot(n).message}. Rebuilding the style from scratch.`),this._updateStyle(e,t)}}getStyle(){if(this.style)return this.style.serialize()}getStyleUrl(){return this._styleUrl}_getStyleAndImages(){return this.style?{style:this.style.serialize(),images:this.style.imageManager.cloneImages()}:{style:null,images:{}}}isStyleLoaded(){if(!this.style)I(`There is no style added to the map.`);else return this.style.loaded()}addSource(e,t){return this._lazyInitEmptyStyle(),this.style.addSource(e,t),this._update(!0)}isSourceLoaded(e){let t=this.style?.tileManagers[e];if(t===void 0)this.fire(new R(Error(`There is no tile manager with ID '${e}'`)));else return t.loaded()}setTerrain(e,t={}){if(this.style._checkLoaded(),e&&ll(this,il.terrain,{value:e},t))return this;if(this._terrainDataCallback&&this.style.off(`data`,this._terrainDataCallback),!e)this.terrain&&this.terrain.destroy(),this.terrain=null,this.painter.renderToTexture=null,this.painter.destroyRTTResources(),this._camera.setTerrain(null);else{let t=this.style.tileManagers[e.source];if(!t)throw Error(`cannot load terrain, because there exists no source with ID: ${e.source}`);this.terrain===null&&t.reload();for(let t in this.style._layers){let n=this.style._layers[t];n.type===`hillshade`&&n.source===e.source&&I(`You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.`),n.type===`color-relief`&&n.source===e.source&&I(`You are using the same source for a color-relief layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.`)}this.terrain&&this.terrain.destroy(),this.terrain=new vF(this.painter,t,e,this._terrainSkirtLength,()=>this._camera.transform.worldCoordinateHelper),this.painter.renderToTexture=new TF(this.painter,this.terrain),this._camera.setTerrain(this.terrain),this._terrainDataCallback=t=>this._handleTerrainDataEvent(t,e.source),this.style.on(`data`,this._terrainDataCallback)}return this.style.triggerSymbolPlacement(),this.fire(new sr({terrain:e})),this}_handleTerrainDataEvent(e,t){if(e.dataType===`style`){this.terrain.tileManager.releaseAllRTT();return}let n=e.sourceId===t;n&&(this.terrain.resetElevationCache(),this.style.triggerSymbolPlacement()),n&&e.tile&&(this.painter.markTerrainDepthDirty(),this._camera.applyTerrainChange()),e.tile&&(e.source?.type===`image`?this.terrain.tileManager.releaseAllRTT():this.terrain.tileManager.releaseRTT(e.tile.tileID))}getTerrain(){return this.terrain?.options??null}areTilesLoaded(){let e=this.style?.tileManagers;for(let t of Object.values(e))if(!t.areTilesLoaded())return!1;return!0}removeSource(e){return this.style.removeSource(e),this._update(!0)}getSource(e){return this.style?.getSource(e)}setSourceTileLodParams(e,t,n){if(n){let r=this.getSource(n);if(!r)throw Error(`There is no source with ID "${n}", cannot set LOD parameters`);r.calculateTileZoom=BE(Math.max(1,e),Math.max(1,t))}else for(let n in this.style.tileManagers)this.style.tileManagers[n].getSource().calculateTileZoom=BE(Math.max(1,e),Math.max(1,t));return this._update(!0),this}refreshTiles(e,t){let n=this.style.tileManagers[e];if(!n)throw Error(`There is no tile manager with ID "${e}", cannot refresh tile`);t===void 0?n.reload(!0):n.refreshTiles(t.map(e=>new Wb(e.z,e.x,e.y)))}addImage(e,t,n={}){this._lazyInitEmptyStyle();let r=this._createStyleImage(t,n);return r&&(this.style.addImage(e,r),r.userImage?.onAdd&&r.userImage.onAdd(this,e)),this}setMissingStyleImageResolver(e){return this._missingStyleImageResolver=e,this.style?.setMissingImageResolver(e),this}_createStyleImage(e,t={}){let{pixelRatio:n=1,sdf:r=!1,stretchX:i,stretchY:a,content:o,textFitWidth:s,textFitHeight:c}=t;if(e instanceof HTMLImageElement||Jt(e)){let{width:t,height:l,data:u}=bn.getImageData(e);return{data:new kf({width:t,height:l},u),pixelRatio:n,stretchX:i,stretchY:a,content:o,textFitWidth:s,textFitHeight:c,sdf:r,version:0}}if(e.width===void 0||e.height===void 0)return this.fire(new R(Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`"))),null;{let{width:t,height:l,data:u}=e,d=e,f=A_(d.data);return{data:f?new kf({width:t,height:l}):new kf({width:t,height:l},new Uint8Array(u)),pixelRatio:n,stretchX:i,stretchY:a,content:o,textFitWidth:s,textFitHeight:c,sdf:r,version:0,isWebGLImage:f,userImage:d}}}updateImage(e,t){let n=this.style.getImage(e);if(!n)return this.fire(new R(Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));let{width:r,height:i,data:a}=t instanceof HTMLImageElement||Jt(t)?bn.getImageData(t):t;if(r===void 0||i===void 0)return this.fire(new R(Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));if(r!==n.data.width||i!==n.data.height)return this.fire(new R(Error(`The width and height of the updated image must be that same as the previous version of the image`)));if(n.isWebGLImage=A_(a),n.isWebGLImage)n.userImage=t;else{let e=!(t instanceof HTMLImageElement||Jt(t));n.data.replace(a,e)}return this.style.updateImage(e,n),this}getImage(e){return this.style.getImage(e)}hasImage(e){return e?!!this.style.getImage(e):(this.fire(new R(Error(`Missing required image id`))),!1)}removeImage(e){this.style.removeImage(e)}async loadImage(e){let t=await qn.getImage(await this._requestManager.transformRequest(e,`Image`),new AbortController);if(!t.data)throw Error(`Could not load image ${e}: the response is empty`);return t}listImages(){return this.style?.listImages()??[]}addLayer(e,t){return this._lazyInitEmptyStyle(),this.style.addLayer(e,t),this._update(!0)}moveLayer(e,t){return this.style.moveLayer(e,t),this._update(!0)}removeLayer(e){return this.style.removeLayer(e),this._update(!0)}getLayer(e){return this.style?.getLayer(e)}getLayersOrder(){return this.style?.getLayersOrder()??[]}setLayerZoomRange(e,t,n){return this.style.setLayerZoomRange(e,t,n),this._update(!0)}setFilter(e,t,n={}){return this.style?.setFilter(e,t,n),this._update(!0)}getFilter(e){return this.style.getFilter(e)}setPaintProperty(e,t,n,r={}){return this.style?.setPaintProperty(e,t,n,r),this._update(!0)}getPaintProperty(e,t){return this.style.getPaintProperty(e,t)}setLayoutProperty(e,t,n,r={}){return this.style.setLayoutProperty(e,t,n,r),this._update(!0)}getLayoutProperty(e,t){return this.style.getLayoutProperty(e,t)}setGlyphs(e,t={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(e,t),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}setFontFaces(e){return this._lazyInitEmptyStyle(),this.style.setFontFaces(e),this._update(!0)}getFontFaces(){return this.style.getFontFaces()}addSprite(e,t,n={}){return this._lazyInitEmptyStyle(),this.style.addSprite(e,t,n,e=>{e||this._update(!0)}),this}removeSprite(e){return this._lazyInitEmptyStyle(),this.style.removeSprite(e),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(e,t={}){return this._lazyInitEmptyStyle(),this.style.setSprite(e,t,e=>{e||this._update(!0)}),this}setLight(e,t={}){return this._lazyInitEmptyStyle(),this.style.setLight(e,t),this._update(!0)}getLight(){return this.style.getLight()}setSky(e,t={}){return this._lazyInitEmptyStyle(),this.style.setSky(e,t),this._update(!0)}getSky(){return this.style.getSky()}setFeatureState(e,t){return this.style.setFeatureState(e,t),this._update()}removeFeatureState(e,t){return this.style.removeFeatureState(e,t),this._update()}getFeatureState(e){return this.style.getFeatureState(e)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let e=0,t=0;return this._container&&(e=Math.floor(this._container.clientWidth)||400,t=Math.floor(this._container.clientHeight)||300),[e,t]}_shouldHandleInitialResize(){if(!this._container?.clientWidth||!this._container.clientHeight)return!1;let[e,t]=this._containerDimensions();return e!==this._camera.transform.width||t!==this._camera.transform.height}_setupResizeObserver(){let e=!1,t=QN(e=>{this._trackResize&&!this._removed&&(this.resize(e),this.redraw())},50),n=this._ownerWindow.ResizeObserver??ResizeObserver;this._resizeObserver=new n(n=>{!e&&(e=!0,!this._shouldHandleInitialResize())||t(n)}),this._resizeObserver.observe(this._container)}_resolveContainer(e){if(typeof e==`string`){let t=document.getElementById(e);if(!t)throw Error(`Container '${e}' not found.`);return t}if(e instanceof HTMLElement||e&&typeof e==`object`&&e.nodeType===1)return e;throw Error(`Invalid type: 'container' must be a String or HTMLElement.`)}_setupContainer(){let e=this._containerDimensions(),t=this._getClampedPixelRatio(e[0],e[1]),n=this._container;n.classList.add(`maplibregl-map`);let r=this._canvasContainer=L.create(`div`,`maplibregl-canvas-container`,n);this._interactive&&r.classList.add(`maplibregl-interactive`),this._canvas=L.create(`canvas`,`maplibregl-canvas`,r),this._canvas.addEventListener(`webglcontextlost`,this._contextLost,!1),this._canvas.addEventListener(`webglcontextrestored`,this._contextRestored,!1),this._canvas.setAttribute(`tabindex`,this._interactive?`0`:`-1`),this._canvas.setAttribute(`aria-label`,this._getUIString(`Map.Title`)),this._canvas.setAttribute(`role`,`region`),this._resizeCanvas(e[0],e[1],t);let i=this._controlContainer=L.create(`div`,`maplibregl-control-container`,n),a=this._controlPositions={};for(let e of[`top-left`,`top-right`,`bottom-left`,`bottom-right`])a[e]=L.create(`div`,`maplibregl-ctrl-${e} `,i);this._container.addEventListener(`scroll`,this._onMapScroll,!1)}_cleanupContainer(){this._canvas.removeEventListener(`webglcontextrestored`,this._contextRestored,!1),this._canvas.removeEventListener(`webglcontextlost`,this._contextLost,!1),this._canvasContainer.remove(),this._controlContainer.remove(),this._container.removeEventListener(`scroll`,this._onMapScroll,!1),this._container.classList.remove(`maplibregl-map`)}_resizeCanvas(e,t,n){let r=Math.round(n*e),i=Math.round(n*t);this._canvas.width=r,this._canvas.height=i,this._canvas.style.width=`${r/n}px`,this._canvas.style.height=`${i/n}px`}_setupPainter(){let e={...this._canvasContextAttributes,alpha:!0,depth:!0,stencil:!0,premultipliedAlpha:!0},t=null;this._canvas.addEventListener(`webglcontextcreationerror`,e=>{t=e},{once:!0});let n=this._canvas.getContext(`webgl2`,e);if(!n)throw new ZN(e,t);this.painter=new XN(n)}migrateProjection(e,t){this._camera.migrateProjection(e,t),this.fire(new cr({newProjection:this.style.projection.name}))}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(e){return this.style?._loaded&&(this._styleDirty||=e,this._sourcesDirty=!0,this.triggerRepaint()),this}_requestRenderFrame(e){return this._update(),this._renderTaskQueue.add(e)}_cancelRenderFrame(e){this._renderTaskQueue.remove(e)}_render(e){let t=this._idleTriggered?this._fadeDuration:0,n=this.style.projection?.transitionState>0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(e),this._removed)return;let r=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;let e=this._camera.transform.zoom,n=Sn();this.style.zoomHistory.update(e,n);let i=new yl(e,{now:n,fadeDuration:t,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),a=i.crossFadingFactor();(a!==1||a!==this._crossFadingFactor)&&(r=!0,this._crossFadingFactor=a),this.style.update(i)}let i=this.style.projection?.transitionState>0!==n;if(this._camera.transform.setTransitionState(this.style.projection?.transitionState),this.style&&(this._sourcesDirty||i)&&(this._sourcesDirty=!1,this.style._updateSources(this._camera.transform)),this.terrain){if(this.terrain.tileManager.update(this._camera.transform,this.terrain)&&this.terrain.resetElevationCache(),this._camera.transform.setMinElevationForCurrentTile(this.terrain.getMinTileElevationForLngLatZoom(this._camera.transform.center,this._camera.transform.tileZoom)),!this._camera.elevationFreeze&&this.getCenterClampedToGround()){let{elevation:e,demState:t}=this.terrain.getElevationAndDEMStateForLngLat(this._camera.transform.center,this._camera.transform);t!==`loading`&&this._camera.transform.setElevation(e)}}else this._camera.transform.setMinElevationForCurrentTile(0),this.getCenterClampedToGround()&&this._camera.transform.setElevation(0);this._placementDirty=this.style?._updatePlacement(this._camera.transform,this.showCollisionBoxes,t,this._crossSourceCollisions,i);let a=this.style.projection,o=a?.transitionState??0;this.painter.render(this.style,this._camera.transform,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:t,symbolFadeChange:this.style.placement.symbolFadeChange(Sn()),variableOffsets:this.style.placement.variableOffsets,showPadding:this.showPadding,anisotropicFilterPitch:this.getAnisotropicFilterPitch(),projectionTransition:o,isRenderingGlobe:o>0,projectionShaderVariant:a?{name:a.shaderVariantName,define:a.shaderDefine,prelude:a.shaderPreludeCode}:void 0,useSubdivision:a?.useSubdivision??!1,pixelRatio:this._clampedPixelRatio,light:this.style.light?.getEvaluated(),sky:this.style.sky?.getEvaluated()}),this.fire(new $n(`render`)),this.loaded()&&!this._loaded&&(this._loaded=!0,this.fire(new $n(`load`))),this.style&&(this.style.hasTransitions()||r)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();let s=this._sourcesDirty||this._styleDirty||this._placementDirty||this.painter.renderToTexture?.needsFollowUpFrame;return s||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new $n(`idle`)),this._loaded&&!this._fullyLoaded&&!s&&(this._fullyLoaded=!0),this}redraw(){return this.style&&(this._frameRequest&&=(this._frameRequest.abort(),null),this._render(0)),this}remove(){this._hash&&this._hash.remove();for(let e of this._controls)e.onRemove(this);this._controls=[],this._frameRequest&&=(this._frameRequest.abort(),null),this._renderTaskQueue.clear(),this._diffStyleRequest?.abort(),this.painter.destroy(),this._handlers.destroy(),this.setStyle(null),typeof window<`u`&&this._ownerWindow.removeEventListener(`online`,this._onWindowOnline,!1),qn.removeThrottleControl(this._imageQueueHandle),this._resizeObserver?.disconnect();let e=this.painter.context.gl.getExtension(`WEBGL_lose_context`);e?.loseContext&&e.loseContext(),this._cleanupContainer(),this._removed=!0,this.fire(new $n(`remove`))}triggerRepaint(){this.style&&!this._frameRequest&&(this._frameRequest=new AbortController,bn.frame(this._frameRequest,e=>{this._frameRequest=null;try{this._render(e)}catch(e){if(!hn(e))throw e}},()=>{},this._ownerWindow))}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(e){this._showTileBoundaries!==e&&(this._showTileBoundaries=e,this._update())}get showPadding(){return!!this._showPadding}set showPadding(e){this._showPadding!==e&&(this._showPadding=e,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(e){this._showCollisionBoxes!==e&&(this._showCollisionBoxes=e,e?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(e){this._showOverdrawInspector!==e&&(this._showOverdrawInspector=e,this._update())}get repaint(){return!!this._repaint}set repaint(e){this._repaint!==e&&(this._repaint=e,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(e){this._vertices=e,this._update()}get version(){return DF}getCameraTargetElevation(){return this._camera.transform.elevation}getProjection(){return this.style.getProjection()}setProjection(e){return this._lazyInitEmptyStyle(),this.style.setProjection(e),this._update(!0)}},AF={showCompass:!0,showZoom:!0,visualizePitch:!1,visualizeRoll:!0},jF=class{constructor(e){this._updateZoomButtons=()=>{let e=this._map.getZoom(),t=e===this._map.getMaxZoom(),n=e===this._map.getMinZoom(!0);this._zoomInButton.disabled=t,this._zoomOutButton.disabled=n,this._zoomInButton.setAttribute(`aria-disabled`,t.toString()),this._zoomOutButton.setAttribute(`aria-disabled`,n.toString())},this._rotateCompassArrow=()=>{let e=this._map.getPitch(),t=this._map.getRoll(),n=this._map.getBearing(),r=1/Math.cos(en(e))**.5;this.options.visualizePitch&&this.options.visualizeRoll?this._compassIcon.style.transform=`scale(${r}) rotateZ(${-t}deg) rotateX(${e}deg) rotateZ(${-n}deg)`:this.options.visualizePitch?this._compassIcon.style.transform=`scale(${r}) rotateX(${e}deg) rotateZ(${-n}deg)`:this.options.visualizeRoll?this._compassIcon.style.transform=`rotate(${-n-t}deg)`:this._compassIcon.style.transform=`rotate(${-n}deg)`},this._setButtonTitle=(e,t)=>{let n=this._map._getUIString(`NavigationControl.${t}`);e.title=n,e.setAttribute(`aria-label`,n)},this.options=F({},AF,e),this._container=L.create(`div`,`maplibregl-ctrl maplibregl-ctrl-group`),this._container.addEventListener(`contextmenu`,e=>e.preventDefault()),this.options.showZoom&&(this._zoomInButton=this._createButton(`maplibregl-ctrl-zoom-in`,e=>this._map.zoomIn({},{originalEvent:e})),L.create(`span`,`maplibregl-ctrl-icon`,this._zoomInButton).setAttribute(`aria-hidden`,`true`),this._zoomOutButton=this._createButton(`maplibregl-ctrl-zoom-out`,e=>this._map.zoomOut({},{originalEvent:e})),L.create(`span`,`maplibregl-ctrl-icon`,this._zoomOutButton).setAttribute(`aria-hidden`,`true`)),this.options.showCompass&&(this._compass=this._createButton(`maplibregl-ctrl-compass`,e=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:e}):this._map.resetNorth({},{originalEvent:e})}),this._compassIcon=L.create(`span`,`maplibregl-ctrl-icon`,this._compass),this._compassIcon.setAttribute(`aria-hidden`,`true`))}onAdd(e){return this._map=e,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,`ZoomIn`),this._setButtonTitle(this._zoomOutButton,`ZoomOut`),this._map.on(`move`,this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,`ResetBearing`),this.options.visualizePitch&&this._map.on(`pitch`,this._rotateCompassArrow),this.options.visualizeRoll&&this._map.on(`roll`,this._rotateCompassArrow),this._map.on(`rotate`,this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new MF(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){this._container.remove(),this.options.showZoom&&this._map.off(`move`,this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off(`pitch`,this._rotateCompassArrow),this.options.visualizeRoll&&this._map.off(`roll`,this._rotateCompassArrow),this._map.off(`rotate`,this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(e,t){let n=L.create(`button`,e,this._container);return n.type=`button`,n.addEventListener(`click`,t),n}},MF=class{constructor(e,t,n=!1){this.mousedown=e=>{this.startMove(e,L.mousePos(this.element,e)),window.addEventListener(`mousemove`,this.mousemove),window.addEventListener(`mouseup`,this.mouseup)},this.mousemove=e=>{this.move(e,L.mousePos(this.element,e))},this.mouseup=e=>{this._rotatePitchHandler.dragEnd(e),this.offTemp()},this.touchstart=e=>{e.targetTouches.length===1?(this._startPos=this._lastPos=L.touchPos(this.element,e.targetTouches)[0],this.startMove(e,this._startPos),window.addEventListener(`touchmove`,this.touchmove,{passive:!1}),window.addEventListener(`touchend`,this.touchend)):this.reset()},this.touchmove=e=>{e.targetTouches.length===1?(this._lastPos=L.touchPos(this.element,e.targetTouches)[0],this.move(e,this._lastPos)):this.reset()},this.touchend=e=>{e.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)<this._clickTolerance&&this.element.click(),delete this._startPos,delete this._lastPos,this.offTemp()},this.reset=()=>{this._rotatePitchHandler.reset(),delete this._startPos,delete this._lastPos,this.offTemp()},this._clickTolerance=10,this.element=t;let r=new SP;this._rotatePitchHandler=new _P({clickTolerance:3,move:(e,r)=>{let i=t.getBoundingClientRect(),a=new f((i.bottom-i.top)/2,(i.right-i.left)/2);return{bearingDelta:an(new f(e.x,r.y),r,a),pitchDelta:n?(r.y-e.y)*-.5:void 0}},moveStateManager:r,enable:!0,assignEvents:()=>{}}),this.map=e,t.addEventListener(`mousedown`,this.mousedown),t.addEventListener(`touchstart`,this.touchstart,{passive:!1}),t.addEventListener(`touchcancel`,this.reset)}startMove(e,t){this._rotatePitchHandler.dragStart(e,t),L.disableDrag()}move(e,t){let n=this.map,{bearingDelta:r,pitchDelta:i}=this._rotatePitchHandler.dragMove(e,t)||{};r&&n.setBearing(n.getBearing()+r),i&&n.setPitch(n.getPitch()+i)}off(){let e=this.element;e.removeEventListener(`mousedown`,this.mousedown),e.removeEventListener(`touchstart`,this.touchstart),window.removeEventListener(`touchmove`,this.touchmove),window.removeEventListener(`touchend`,this.touchend),e.removeEventListener(`touchcancel`,this.reset),this.offTemp()}offTemp(){L.enableDrag(),window.removeEventListener(`mousemove`,this.mousemove),window.removeEventListener(`mouseup`,this.mouseup),window.removeEventListener(`touchmove`,this.touchmove),window.removeEventListener(`touchend`,this.touchend)}},NF;async function PF(e=!1){if(NF!==void 0&&!e)return NF;if(window.navigator.permissions===void 0)return NF=!!window.navigator.geolocation,NF;try{NF=(await window.navigator.permissions.query({name:`geolocation`})).state!==`denied`}catch{NF=!!window.navigator.geolocation}return NF}function FF(e,t,n,r=!1){if(r||!n.getCoveringTilesDetailsProvider().allowWorldCopies())return e?.wrap();let i=new Q(e.lng,e.lat);if(e=new Q(e.lng,e.lat),t){let r=new Q(e.lng-360,e.lat),i=new Q(e.lng+360,e.lat),a=n.locationToScreenPoint(e).distSqr(t);n.locationToScreenPoint(r).distSqr(t)<a?e=r:n.locationToScreenPoint(i).distSqr(t)<a&&(e=i)}for(;Math.abs(e.lng-n.center.lng)>180;){let t=n.locationToScreenPoint(e);if(t.x>=0&&t.y>=0&&t.x<=n.width&&t.y<=n.height)break;e.lng>n.center.lng?e.lng-=360:e.lng+=360}return e.lng!==i.lng&&n.isPointOnMapSurface(n.locationToScreenPoint(e))?e:i}var IF={center:`translate(-50%,-50%)`,top:`translate(-50%,0)`,"top-left":`translate(0,0)`,"top-right":`translate(-100%,0)`,bottom:`translate(-50%,-100%)`,"bottom-left":`translate(0,-100%)`,"bottom-right":`translate(-100%,-100%)`,left:`translate(0,-50%)`,right:`translate(-100%,-50%)`};function LF(e,t,n){let r=e.classList;for(let e in IF)r.remove(`maplibregl-${n}-anchor-${e}`);r.add(`maplibregl-${n}-anchor-${t}`)}var RF={ArrowLeft:[-1,0],ArrowRight:[1,0],ArrowUp:[0,-1],ArrowDown:[0,1]},zF=`#3FB1CE`;function BF(e,t,n=[]){let r=L.createNS(`http://www.w3.org/2000/svg`,e);for(let e in t)r.setAttributeNS(null,e,t[e]);for(let e of n)r.appendChild(e);return r}var VF;function HF(){return VF||(VF=BF(`svg`,{display:`block`,height:`41px`,width:`27px`,viewBox:`0 0 27 41`},[BF(`g`,{"fill-rule":`nonzero`},[BF(`g`,{transform:`translate(3.0, 29.0)`,fill:`#000000`},[[`10.5`,`5.25002273`],[`10.5`,`5.25002273`],[`9.5`,`4.77275007`],[`8.5`,`4.29549936`],[`7.5`,`3.81822308`],[`6.5`,`3.34094679`],[`5.5`,`2.86367051`],[`4.5`,`2.38636864`]].map(([e,t])=>BF(`ellipse`,{opacity:`0.04`,cx:`10.5`,cy:`5.80029008`,rx:e,ry:t}))),BF(`g`,{fill:zF},[BF(`path`,{d:`M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z`})]),BF(`g`,{opacity:`0.25`,fill:`#000000`},[BF(`path`,{d:`M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z`})]),BF(`g`,{transform:`translate(6.0, 7.0)`,fill:`#FFFFFF`}),BF(`g`,{transform:`translate(8.0, 8.0)`},[BF(`circle`,{fill:`#000000`,opacity:`0.25`,cx:`5.5`,cy:`5.5`,r:`5.4999962`}),BF(`circle`,{fill:`#FFFFFF`,cx:`5.5`,cy:`5.5`,r:`5.4999962`})])])]),VF)}function UF(e){return e.firstElementChild.children[1]}var WF=class extends Zn{},GF=class extends Zn{},KF=class extends Qn{constructor(e){if(super(),this._onClick=e=>{this.fire(new GF(`click`,{originalEvent:e}))},this._onKeyPress=e=>{(e.code===`Space`||e.code===`Enter`)&&this.togglePopup()},this._onKeyDown=e=>{if(!this._defaultMarker||!this._draggable||!this._map||!this._lngLat||e.composedPath()[0]!==this._element||e.altKey||e.ctrlKey||e.metaKey)return;let t=RF[e.key];if(!t)return;e.preventDefault(),e.stopPropagation();let n=e.shiftKey?10:1,r=this._map.project(this._lngLat);this.setLngLat(this._map.unproject(new f(r.x+t[0]*n,r.y+t[1]*n))),this._keyboardDragActive||(this._keyboardDragActive=!0,this.fire(new WF(`dragstart`))),this.fire(new WF(`drag`))},this._onKeyUp=e=>{RF[e.key]&&this._endKeyboardDrag()},this._onBlur=()=>{this._endKeyboardDrag()},this._onMapClick=e=>{let t=e.originalEvent.target,n=this._element;this._popup&&(t===n||n.contains(t))&&this.togglePopup()},this._updateCoveredUnthrottled=()=>{let e=this._map?.terrain;if(!e||!this._isInViewport())return;let t=this._isCovered(e);t&&this._popup?.isOpen()&&this._popup.remove(),this._element.style.opacity=t?this._opacityWhenCovered:this._opacity,this._element.classList.toggle(`maplibregl-marker-covered`,t)},this._updateCovered=QN(this._updateCoveredUnthrottled,100),this._update=e=>{if(!this._map)return;this._lngLat=FF(this._lngLat,this._flatPos,this._map._camera.transform),this._flatPos=this._pos=this._map.project(this._lngLat)._add(this._offset),this._map.terrain&&(this._flatPos=this._map._camera.transform.locationToScreenPoint(this._lngLat)._add(this._offset));let t=``;this._rotationAlignment===`viewport`||this._rotationAlignment===`auto`?t=`rotateZ(${this._rotation}deg)`:this._rotationAlignment===`map`&&(t=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let n=``;this._pitchAlignment===`viewport`||this._pitchAlignment===`auto`?n=`rotateX(0deg)`:this._pitchAlignment===`map`&&(n=`rotateX(${this._map.getPitch()}deg)`),!this._subpixelPositioning&&e?.type!==`move`&&(this._pos=this._pos.round()),this._element.style.transform=`${IF[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${n} ${t}`,this._updateOpacity()},this._onMove=e=>{if(!this._isDragging){let t=this._clickTolerance||this._map._clickTolerance;this._isDragging=e.point.dist(this._pointerdownPos)>=t}this._isDragging&&(this._pos=e.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents=`none`,this._state===`pending`&&(this._state=`active`,this.fire(new WF(`dragstart`))),this.fire(new WF(`drag`)))},this._onUp=()=>{this._element.style.pointerEvents=`auto`,this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off(`mousemove`,this._onMove),this._map.off(`touchmove`,this._onMove),this._state===`active`&&this.fire(new WF(`dragend`)),this._state=`inactive`},this._addDragHandler=e=>{this._element.contains(e.originalEvent.target)&&(e.preventDefault(),this._positionDelta=e.point.sub(this._pos).add(this._offset),this._pointerdownPos=e.point,this._state=`pending`,this._map.on(`mousemove`,this._onMove),this._map.on(`touchmove`,this._onMove),this._map.once(`mouseup`,this._onUp),this._map.once(`touchend`,this._onUp))},this._anchor=e?.anchor||`center`,this._color=e?.color||zF,this._scale=e?.scale||1,this._draggable=e?.draggable||!1,this._clickTolerance=e?.clickTolerance||0,this._subpixelPositioning=e?.subpixelPositioning||!1,this._isDragging=!1,this._roleManaged=!1,this._tabIndexManaged=!1,this._keyboardDragActive=!1,this._state=`inactive`,this._rotation=e?.rotation||0,this._rotationAlignment=e?.rotationAlignment||`auto`,this._pitchAlignment=e?.pitchAlignment&&e.pitchAlignment!==`auto`?e.pitchAlignment:this._rotationAlignment,this.setOpacity(e?.opacity,e?.opacityWhenCovered),e?.element)this._element=e.element,this._offset=f.convert(e?.offset||[0,0]);else{this._defaultMarker=!0,this._element=L.create(`div`);let t=HF().cloneNode(!0);t.setAttributeNS(null,`height`,`${41*this._scale}px`),t.setAttributeNS(null,`width`,`${27*this._scale}px`),UF(t).setAttributeNS(null,`fill`,this._color),this._element.appendChild(t),this._offset=f.convert(e?.offset||[0,-14])}if(this._element.classList.add(`maplibregl-marker`),this._element.addEventListener(`dragstart`,e=>{e.preventDefault()}),this._element.addEventListener(`mousedown`,e=>{e.preventDefault()}),LF(this._element,this._anchor,`marker`),e?.className)for(let t of e.className.split(` `))this._element.classList.add(t);this._popup=null}addTo(e){return this.remove(),this._map=e,this._defaultMarker&&!this._element.hasAttribute(`aria-label`)&&this._element.setAttribute(`aria-label`,e._getUIString(`Marker.Title`)),this._updateAccessibilityRole(),e.getCanvasContainer().appendChild(this._element),e.on(`move`,this._update),e.on(`moveend`,this._update),e.on(`terrain`,this._update),e.on(`projectiontransition`,this._update),e.on(`idle`,this._update),this._element.addEventListener(`click`,this._onClick),this.setDraggable(this._draggable),this._update(),this._map.on(`click`,this._onMapClick),this}remove(){return this._map&&(this._map.off(`click`,this._onMapClick),this._map.off(`move`,this._update),this._map.off(`moveend`,this._update),this._map.off(`terrain`,this._update),this._map.off(`projectiontransition`,this._update),this._map.off(`idle`,this._update),this._map.off(`mousedown`,this._addDragHandler),this._map.off(`touchstart`,this._addDragHandler),this._map.off(`mouseup`,this._onUp),this._map.off(`touchend`,this._onUp),this._map.off(`mousemove`,this._onMove),this._map.off(`touchmove`,this._onMove),delete this._map),this._element.removeEventListener(`click`,this._onClick),this._element.removeEventListener(`keydown`,this._onKeyDown),this._element.removeEventListener(`keyup`,this._onKeyUp),this._element.removeEventListener(`blur`,this._onBlur),this._element.removeEventListener(`keypress`,this._onKeyPress),this._keyboardDragActive=!1,this._element.remove(),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(e){return this._lngLat=Q.convert(e),this._pos=null,this._update(),this._popup&&this._popup.setLngLat(this._lngLat),this}getElement(){return this._element}setPopup(e){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener(`keypress`,this._onKeyPress)),e){if(!(`offset`in e.options)){let t=13.5/Math.SQRT2;e.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[t,(24.6+t)*-1],"bottom-right":[-t,(24.6+t)*-1],left:[13.5,-24.6],right:[-13.5,-24.6]}:this._offset}this._popup=e,this._element.addEventListener(`keypress`,this._onKeyPress)}return this._updateTabIndex(),this._updateAccessibilityRole(),this}setSubpixelPositioning(e){return this._subpixelPositioning=e,this}_endKeyboardDrag(){this._keyboardDragActive&&(this._keyboardDragActive=!1,this.fire(new WF(`dragend`)))}getPopup(){return this._popup}togglePopup(){let e=this._popup;if(this._element.style.opacity===this._opacityWhenCovered)return this;if(e)e.isOpen()?e.remove():(e.setLngLat(this._lngLat),e.addTo(this._map));else return this;return this}_updateOpacity(){if(!this._isInViewport())return;let e=this._map?.terrain,t=this._map._camera.transform.isLocationOccluded(this._lngLat);if(!e||t){let e=t?this._opacityWhenCovered:this._opacity;this._element.style.opacity!==e&&(this._element.style.opacity=e,this._element.classList.toggle(`maplibregl-marker-covered`,t))}else this._updateCovered()}_isInViewport(){let{width:e,height:t}=this._map._camera.transform;return!!this._pos&&this._pos.x>=0&&this._pos.y>=0&&this._pos.x<=e&&this._pos.y<=t}_isCovered(e){let t=this._map._camera.transform,n=e.getElevationForLngLat(this._lngLat,t),r=Math.max(0,-this._offset.y)/t.pixelsPerMeter,i=Math.sin(this._map.getPitch()*Math.PI/180)*r;return t.isLocationOccluded(this._lngLat,e,n+i)}getOffset(){return this._offset}setOffset(e){return this._offset=f.convert(e),this._update(),this}addClassName(e){this._element.classList.add(e)}removeClassName(e){this._element.classList.remove(e)}toggleClassName(e){return this._element.classList.toggle(e)}setDraggable(e){return this._draggable=!!e,this._element.classList.toggle(`maplibregl-marker-draggable`,this._draggable),this._map&&(e?(this._map.on(`mousedown`,this._addDragHandler),this._map.on(`touchstart`,this._addDragHandler)):(this._map.off(`mousedown`,this._addDragHandler),this._map.off(`touchstart`,this._addDragHandler))),this._defaultMarker&&(this._draggable?(this._element.addEventListener(`keydown`,this._onKeyDown),this._element.addEventListener(`keyup`,this._onKeyUp),this._element.addEventListener(`blur`,this._onBlur)):(this._element.removeEventListener(`keydown`,this._onKeyDown),this._element.removeEventListener(`keyup`,this._onKeyUp),this._element.removeEventListener(`blur`,this._onBlur),this._endKeyboardDrag())),this._updateTabIndex(),this._updateAccessibilityRole(),this}isDraggable(){return this._draggable}_updateTabIndex(){this._popup||this._defaultMarker&&this._draggable?this._element.hasAttribute(`tabindex`)||(this._element.setAttribute(`tabindex`,`0`),this._tabIndexManaged=!0):this._tabIndexManaged&&=(this._element.getAttribute(`tabindex`)===`0`&&this._element.removeAttribute(`tabindex`),!1)}_updateAccessibilityRole(){if(!this._defaultMarker||this._element.hasAttribute(`role`)&&!this._roleManaged)return;let e=this._draggable||this._popup?`button`:`img`;this._element.setAttribute(`role`,e),this._roleManaged=!0}setRotation(e){return this._rotation=e||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(e){return this._rotationAlignment=e||`auto`,this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(e){return this._pitchAlignment=e&&e!==`auto`?e:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}setOpacity(e,t){return(this._opacity===void 0||e===void 0&&t===void 0)&&(this._opacity=`1`,this._opacityWhenCovered=`0.2`),e!==void 0&&(this._opacity=String(e)),t!==void 0&&(this._opacityWhenCovered=String(t)),this._map&&this._updateOpacity(),this}},qF={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0,zoomToUserAccuracy:!0},JF=0,YF=!1,XF=class extends Zn{},ZF=class extends Zn{},QF=class extends Zn{},$F=class extends Qn{constructor(e){super(),this._onSuccess=e=>{if(this._map){if(this._isOutOfMapMaxBounds(e))this._setErrorState(),this.fire(new ZF(`outofmaxbounds`,e)),this._updateMarker(),this._finish();else{if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case`WAITING_ACTIVE`:case`ACTIVE_LOCK`:case`ACTIVE_ERROR`:this._watchState=`ACTIVE_LOCK`,this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-waiting`),this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-active-error`),this._geolocateButton.classList.add(`maplibregl-ctrl-geolocate-active`);break;case`BACKGROUND`:case`BACKGROUND_ERROR`:this._watchState=`BACKGROUND`,this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-waiting`),this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-background-error`),this._geolocateButton.classList.add(`maplibregl-ctrl-geolocate-background`);break;default:throw Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&this._watchState!==`OFF`&&this._updateMarker(e),this.options.trackUserLocation&&this._watchState!==`ACTIVE_LOCK`||this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove(`maplibregl-user-location-dot-stale`),this.fire(new ZF(`geolocate`,e)),this._finish()}}},this._updateCamera=e=>{let t=new Q(e.coords.longitude,e.coords.latitude),n=this._map.getBearing(),r={geolocateSource:!0};if(!this.options.zoomToUserAccuracy){let e=F({},this.options.fitBoundsOptions,{center:t,bearing:n,zoom:this._map.getZoom()});e.linear?this._map.easeTo(e,r):this._map.flyTo(e,r);return}let i=e.coords.accuracy,a=F({bearing:n},this.options.fitBoundsOptions),o=Rb.fromLngLat(t,i);this._map.fitBounds(o,a,r)},this._updateMarker=e=>{if(e){let t=new Q(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(t).addTo(this._map),this._userLocationDotMarker.setLngLat(t).addTo(this._map),this._accuracy=e.coords.accuracy,this._updateCircleRadiusIfNeeded()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},this._onUpdate=()=>{this._updateCircleRadiusIfNeeded()},this._onError=e=>{if(this._map){if(e.code===1){this._watchState=`OFF`,this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-waiting`),this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-active`),this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-active-error`),this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-background`),this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-background-error`),this._geolocateButton.disabled=!0;let e=this._map._getUIString(`GeolocateControl.LocationNotAvailable`);this._geolocateButton.title=e,this._geolocateButton.setAttribute(`aria-label`,e),this._geolocationWatchID!==void 0&&this._clearWatch()}else if(e.code===3&&YF)return;else this._setErrorState();this._watchState!==`OFF`&&this.options.showUserLocation&&this._dotElement.classList.add(`maplibregl-user-location-dot-stale`),this.fire(new QF(`error`,e)),this._finish()}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},this._onMoveStart=e=>{if(!this._map)return;let t=e?.[0]instanceof ResizeObserverEntry;e.geolocateSource||this._watchState!==`ACTIVE_LOCK`||t||this._map.isZooming()||(this._watchState=`BACKGROUND`,this._geolocateButton.classList.add(`maplibregl-ctrl-geolocate-background`),this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-active`),this.fire(new XF(`trackuserlocationend`)),this.fire(new XF(`userlocationlostfocus`)))},this._setupUI=()=>{this._map&&(this._container.addEventListener(`contextmenu`,e=>{e.preventDefault()}),this._geolocateButton=L.create(`button`,`maplibregl-ctrl-geolocate`,this._container),L.create(`span`,`maplibregl-ctrl-icon`,this._geolocateButton).setAttribute(`aria-hidden`,`true`),this._geolocateButton.type=`button`,this._geolocateButton.disabled=!0)},this._finishSetupUI=e=>{if(this._map){if(e===!1){I(`Geolocation support is not available so the GeolocateControl will be disabled.`);let e=this._map._getUIString(`GeolocateControl.LocationNotAvailable`);this._geolocateButton.disabled=!0,this._geolocateButton.title=e,this._geolocateButton.setAttribute(`aria-label`,e)}else{let e=this._map._getUIString(`GeolocateControl.FindMyLocation`);this._geolocateButton.disabled=!1,this._geolocateButton.title=e,this._geolocateButton.setAttribute(`aria-label`,e)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute(`aria-pressed`,`false`),this._watchState=`OFF`),this.options.showUserLocation&&(this._dotElement=L.create(`div`,`maplibregl-user-location-dot`),this._userLocationDotMarker=new KF({element:this._dotElement}),this._circleElement=L.create(`div`,`maplibregl-user-location-accuracy-circle`),this._accuracyCircleMarker=new KF({element:this._circleElement,pitchAlignment:`map`}),this.options.trackUserLocation&&(this._watchState=`OFF`),this._map.on(`zoom`,this._onUpdate),this._map.on(`move`,this._onUpdate),this._map.on(`rotate`,this._onUpdate),this._map.on(`pitch`,this._onUpdate)),this._geolocateButton.addEventListener(`click`,()=>this.trigger()),this._setup=!0,this.options.trackUserLocation&&this._map.on(`movestart`,this._onMoveStart)}},this.options=F({},qF,e)}onAdd(e){return this._map=e,this._container=L.create(`div`,`maplibregl-ctrl maplibregl-ctrl-group`),this._setupUI(),PF().then(e=>this._finishSetupUI(e)),this._container}onRemove(){this._geolocationWatchID!==void 0&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),this._container.remove(),this._map.off(`movestart`,this._onMoveStart),this._map.off(`zoom`,this._onUpdate),this._map.off(`move`,this._onUpdate),this._map.off(`rotate`,this._onUpdate),this._map.off(`pitch`,this._onUpdate),this._map=void 0,JF=0,YF=!1}_isOutOfMapMaxBounds(e){let t=this._map.getMaxBounds(),n=e.coords;return t&&(n.longitude<t.getWest()||n.longitude>t.getEast()||n.latitude<t.getSouth()||n.latitude>t.getNorth())}_setErrorState(){switch(this._watchState){case`WAITING_ACTIVE`:this._watchState=`ACTIVE_ERROR`,this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-active`),this._geolocateButton.classList.add(`maplibregl-ctrl-geolocate-active-error`);break;case`ACTIVE_LOCK`:this._watchState=`ACTIVE_ERROR`,this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-active`),this._geolocateButton.classList.add(`maplibregl-ctrl-geolocate-active-error`),this._geolocateButton.classList.add(`maplibregl-ctrl-geolocate-waiting`);break;case`BACKGROUND`:this._watchState=`BACKGROUND_ERROR`,this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-background`),this._geolocateButton.classList.add(`maplibregl-ctrl-geolocate-background-error`),this._geolocateButton.classList.add(`maplibregl-ctrl-geolocate-waiting`);break;case`ACTIVE_ERROR`:case`BACKGROUND_ERROR`:break;case`OFF`:case void 0:break;default:throw Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadiusIfNeeded(){let e=this._userLocationDotMarker.getLngLat();if(!this.options.showUserLocation||!this.options.showAccuracyCircle||!this._accuracy||!e)return;let t=this._map.project(e),n=this._map.unproject([t.x+100,t.y]),r=e.distanceTo(n)/100,i=2*this._accuracy/r;this._circleElement.style.width=`${i.toFixed(2)}px`,this._circleElement.style.height=`${i.toFixed(2)}px`}trigger(){if(!this._setup)return I(`Geolocate control triggered before added to a map`),!1;if(this.options.trackUserLocation){switch(this._watchState){case`OFF`:this._watchState=`WAITING_ACTIVE`,this.fire(new XF(`trackuserlocationstart`));break;case`WAITING_ACTIVE`:case`ACTIVE_LOCK`:case`ACTIVE_ERROR`:case`BACKGROUND_ERROR`:JF--,YF=!1,this._watchState=`OFF`,this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-waiting`),this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-active`),this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-active-error`),this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-background`),this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-background-error`),this.fire(new XF(`trackuserlocationend`));break;case`BACKGROUND`:this._watchState=`ACTIVE_LOCK`,this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-background`),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new XF(`trackuserlocationstart`)),this.fire(new XF(`userlocationfocus`));break;default:throw Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case`WAITING_ACTIVE`:this._geolocateButton.classList.add(`maplibregl-ctrl-geolocate-waiting`),this._geolocateButton.classList.add(`maplibregl-ctrl-geolocate-active`);break;case`ACTIVE_LOCK`:this._geolocateButton.classList.add(`maplibregl-ctrl-geolocate-active`);break;case`OFF`:break;default:throw Error(`Unexpected watchState ${this._watchState}`)}if(this._watchState===`OFF`&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){this._geolocateButton.classList.add(`maplibregl-ctrl-geolocate-waiting`),this._geolocateButton.setAttribute(`aria-pressed`,`true`),JF++;let e;JF>1?(e={maximumAge:6e5,timeout:0},YF=!0):(e=this.options.positionOptions,YF=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,e)}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove(`maplibregl-ctrl-geolocate-waiting`),this._geolocateButton.setAttribute(`aria-pressed`,`false`),this.options.showUserLocation&&this._updateMarker(null)}},eI={maxWidth:100,unit:`metric`},tI=class{constructor(e){this._onMove=()=>{nI(this._map,this._container,this.options)},this.setUnit=e=>{this.options.unit=e,this._map&&nI(this._map,this._container,this.options)},this.options={...eI,...e}}getDefaultPosition(){return`bottom-left`}onAdd(e){return this._map=e,this._container=L.create(`div`,`maplibregl-ctrl maplibregl-ctrl-scale`,e.getContainer()),this._map.on(`move`,this._onMove),this._map.on(`projectiontransition`,this._onMove),this._onMove(),this._container}onRemove(){this._container.remove(),this._map.off(`move`,this._onMove),this._map.off(`projectiontransition`,this._onMove),this._map=void 0}};function nI(e,t,n){let r=n?.maxWidth||100,{width:i,height:a}=e._camera.transform,o=a/2,s=i/2,c=e.unproject([s-r/2,o]),l=e.unproject([s+r/2,o]);if(!c||!l)return;let u=Math.round(e.project(l).x-e.project(c).x),d=Math.min(r,u,i),f=c.distanceTo(l);if(n?.unit===`imperial`){let n=3.2808*f;n>5280?rI(t,d,n/5280,e._getUIString(`ScaleControl.Miles`)):rI(t,d,n,e._getUIString(`ScaleControl.Feet`))}else n?.unit===`nautical`?rI(t,d,f/1852,e._getUIString(`ScaleControl.NauticalMiles`)):f>=1e3?rI(t,d,f/1e3,e._getUIString(`ScaleControl.Kilometers`)):rI(t,d,f,e._getUIString(`ScaleControl.Meters`))}function rI(e,t,n,r){let i=aI(n),a=i/n;e.style.width=`${t*a}px`;let o=`${i}\u00a0${r}`;e.textContent!==o&&(e.textContent=o)}function iI(e){let t=10**Math.ceil(-Math.log(e)/Math.LN10);return Math.round(e*t)/t}function aI(e){let t=10**(`${Math.floor(e)}`.length-1),n=e/t;return n=n>=10?10:n>=5?5:n>=3?3:n>=2?2:n>=1?1:iI(n),t*n}var oI=class extends Zn{},sI=class extends Qn{constructor(e={}){super(),this._onFullscreenChange=()=>{let e=window.document.fullscreenElement||window.document.webkitFullscreenElement;for(;e?.shadowRoot?.fullscreenElement;)e=e.shadowRoot.fullscreenElement;e===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,this._pseudo=e.pseudo??!1,e?.container&&(e.container instanceof HTMLElement?this._container=e.container:I(`Full screen control 'container' must be a DOM element.`)),`onfullscreenchange`in document?this._fullscreenchange=`fullscreenchange`:`onmozfullscreenchange`in document?this._fullscreenchange=`mozfullscreenchange`:`onwebkitfullscreenchange`in document?this._fullscreenchange=`webkitfullscreenchange`:`onmsfullscreenchange`in document&&(this._fullscreenchange=`MSFullscreenChange`)}onAdd(e){return this._map=e,this._container||=this._map.getContainer(),this._controlContainer=L.create(`div`,`maplibregl-ctrl maplibregl-ctrl-group`),this._setupUI(),this._controlContainer}onRemove(){this._controlContainer.remove(),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){let e=this._fullscreenButton=L.create(`button`,`maplibregl-ctrl-fullscreen`,this._controlContainer);L.create(`span`,`maplibregl-ctrl-icon`,e).setAttribute(`aria-hidden`,`true`),e.type=`button`,this._updateTitle(),this._fullscreenButton.addEventListener(`click`,this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){let e=this._getTitle();this._fullscreenButton.setAttribute(`aria-label`,e),this._fullscreenButton.title=e}_getTitle(){return this._map._getUIString(this._isFullscreen()?`FullscreenControl.Exit`:`FullscreenControl.Enter`)}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle(`maplibregl-ctrl-shrink`),this._fullscreenButton.classList.toggle(`maplibregl-ctrl-fullscreen`),this._updateTitle(),this._fullscreen?(this.fire(new oI(`fullscreenstart`)),this._prevCooperativeGesturesEnabled=this._map.cooperativeGestures.isEnabled(),this._map.cooperativeGestures.disable()):(this.fire(new oI(`fullscreenend`)),this._prevCooperativeGesturesEnabled&&this._map.cooperativeGestures.enable())}_exitFullscreen(){this._pseudo?this._togglePseudoFullScreen():window.document.exitFullscreen?window.document.exitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen()}_requestFullscreen(){this._pseudo?this._togglePseudoFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen()}_togglePseudoFullScreen(){this._container.classList.toggle(`maplibregl-pseudo-fullscreen`),this._handleFullscreenChange(),this._map.resize()}},cI=class{constructor(e){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove(`maplibregl-ctrl-terrain`),this._terrainButton.classList.remove(`maplibregl-ctrl-terrain-enabled`),this._map.terrain?(this._terrainButton.classList.add(`maplibregl-ctrl-terrain-enabled`),this._terrainButton.title=this._map._getUIString(`TerrainControl.Disable`)):(this._terrainButton.classList.add(`maplibregl-ctrl-terrain`),this._terrainButton.title=this._map._getUIString(`TerrainControl.Enable`))},this.options=e}onAdd(e){return this._map=e,this._container=L.create(`div`,`maplibregl-ctrl maplibregl-ctrl-group`),this._terrainButton=L.create(`button`,`maplibregl-ctrl-terrain`,this._container),L.create(`span`,`maplibregl-ctrl-icon`,this._terrainButton).setAttribute(`aria-hidden`,`true`),this._terrainButton.type=`button`,this._terrainButton.addEventListener(`click`,this._toggleTerrain),this._updateTerrainIcon(),this._map.on(`terrain`,this._updateTerrainIcon),this._container}onRemove(){this._container.remove(),this._map.off(`terrain`,this._updateTerrainIcon),this._map=void 0}},lI=class{constructor(){this._toggleProjection=()=>{let e=this._map.getProjection()?.type;e===`mercator`||!e?this._map.setProjection({type:`globe`}):this._map.setProjection({type:`mercator`}),this._updateGlobeIcon()},this._updateGlobeIcon=()=>{this._globeButton.classList.remove(`maplibregl-ctrl-globe`),this._globeButton.classList.remove(`maplibregl-ctrl-globe-enabled`),this._map.getProjection()?.type===`globe`?(this._globeButton.classList.add(`maplibregl-ctrl-globe-enabled`),this._globeButton.title=this._map._getUIString(`GlobeControl.Disable`)):(this._globeButton.classList.add(`maplibregl-ctrl-globe`),this._globeButton.title=this._map._getUIString(`GlobeControl.Enable`))}}onAdd(e){return this._map=e,this._container=L.create(`div`,`maplibregl-ctrl maplibregl-ctrl-group`),this._globeButton=L.create(`button`,`maplibregl-ctrl-globe`,this._container),L.create(`span`,`maplibregl-ctrl-icon`,this._globeButton).setAttribute(`aria-hidden`,`true`),this._globeButton.type=`button`,this._globeButton.addEventListener(`click`,this._toggleProjection),this._updateGlobeIcon(),this._map.on(`styledata`,this._updateGlobeIcon),this._map.on(`projectiontransition`,this._updateGlobeIcon),this._container}onRemove(){this._container.remove(),this._map.off(`styledata`,this._updateGlobeIcon),this._map.off(`projectiontransition`,this._updateGlobeIcon),this._globeButton.removeEventListener(`click`,this._toggleProjection),this._map=void 0}},uI={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:``,maxWidth:`240px`,subpixelPositioning:!1,locationOccludedOpacity:void 0,padding:void 0},dI=`a[href], [tabindex]:not([tabindex='-1']), [contenteditable]:not([contenteditable='false']), button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled])`,fI=class extends Zn{},pI=class extends Qn{constructor(e){super(),this._updateOpacity=()=>{this.options.locationOccludedOpacity!==void 0&&(this._map._camera.transform.isLocationOccluded(this.getLngLat())?this._container.style.opacity=`${this.options.locationOccludedOpacity}`:this._container.style.opacity=``)},this.remove=()=>(this._content&&this._content.remove(),this._container&&(this._container.remove(),delete this._container),this._map&&(this._map.off(`move`,this._update),this._map.off(`move`,this._onClose),this._map.off(`click`,this._onClose),this._map.off(`remove`,this.remove),this._map.off(`terrain`,this._update),this._map.off(`projectiontransition`,this._update),this._map.off(`idle`,this._update),this._map.off(`mousemove`,this._update),this._map.off(`mouseup`,this._update),this._map.off(`drag`,this._update),this._map._canvasContainer.classList.remove(`maplibregl-track-pointer`),delete this._map,this.fire(new fI(`close`))),this),this._update=e=>{let t=this._lngLat||this._trackPointer;if(!this._map||!t||!this._content)return;if(!this._container){if(this._container=L.create(`div`,`maplibregl-popup`,this._map.getContainer()),this._tip=L.create(`div`,`maplibregl-popup-tip`,this._container),this._container.appendChild(this._content),this.options.className)for(let e of this.options.className.split(` `))this._container.classList.add(e);this._closeButton&&this._closeButton.setAttribute(`aria-label`,this._map._getUIString(`Popup.Close`)),this._trackPointer&&this._container.classList.add(`maplibregl-popup-track-pointer`)}this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._lngLat=FF(this._lngLat,this._flatPos,this._map._camera.transform,this._trackPointer);let n;if(e&&`point`in e&&e.point&&(n=e.point),this._trackPointer&&!n)return;let r=this._flatPos=this._pos=this._trackPointer&&n?n:this._map.project(this._lngLat);this._map.terrain&&(this._flatPos=this._trackPointer&&n?n:this._map._camera.transform.locationToScreenPoint(this._lngLat));let i=this.options.anchor,a=mI(this.options.offset);if(!i){let e=this._container.offsetWidth,t=this._container.offsetHeight,n=hI(this.options.padding),o;o=r.y+a.bottom.y<t+n.top?[`top`]:r.y>this._map._camera.transform.height-t-n.bottom?[`bottom`]:[],r.x<e/2+n.left?o.push(`left`):r.x>this._map._camera.transform.width-e/2-n.right&&o.push(`right`),i=o.length===0?`bottom`:o.join(`-`)}let o=r.add(a[i]);this.options.subpixelPositioning||(o=o.round()),this._container.style.transform=`${IF[i]} translate(${o.x}px,${o.y}px)`,LF(this._container,i,`popup`),this._updateOpacity()},this._onClose=()=>{this.remove()},this.options=F(Object.create(uI),e)}addTo(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on(`click`,this._onClose),this.options.closeOnMove&&this._map.on(`move`,this._onClose),this._map.on(`remove`,this.remove),this._map.on(`terrain`,this._update),this._map.on(`projectiontransition`,this._update),this._map.on(`idle`,this._update),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on(`mousemove`,this._update),this._map.on(`mouseup`,this._update),this._container&&this._container.classList.add(`maplibregl-popup-track-pointer`),this._map._canvasContainer.classList.add(`maplibregl-track-pointer`)):this._map.on(`move`,this._update),this.fire(new fI(`open`)),this}isOpen(){return!!this._map}getLngLat(){return this._lngLat}setLngLat(e){return this._lngLat=Q.convert(e),this._pos=null,this._flatPos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on(`move`,this._update),this._map.off(`mousemove`,this._update),this._container&&this._container.classList.remove(`maplibregl-popup-track-pointer`),this._map._canvasContainer.classList.remove(`maplibregl-track-pointer`)),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._flatPos=null,this._update(),this._map&&(this._map.off(`move`,this._update),this._map.on(`mousemove`,this._update),this._map.on(`drag`,this._update),this._container&&this._container.classList.add(`maplibregl-popup-track-pointer`),this._map._canvasContainer.classList.add(`maplibregl-track-pointer`)),this}getElement(){return this._container}setText(e){return this.setDOMContent(document.createTextNode(e))}setHTML(e){let t=document.createDocumentFragment(),n=document.createElement(`body`),r;for(n.innerHTML=e;r=n.firstChild,r;)t.appendChild(r);return this.setDOMContent(t)}getMaxWidth(){return this._container?.style.maxWidth}setMaxWidth(e){return this.options.maxWidth=e,this._update(),this}setDOMContent(e){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=L.create(`div`,`maplibregl-popup-content`,this._container);return this._content.appendChild(e),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(e){return this._container&&this._container.classList.add(e),this}removeClassName(e){return this._container&&this._container.classList.remove(e),this}setOffset(e){return this.options.offset=e,this._update(),this}toggleClassName(e){if(this._container)return this._container.classList.toggle(e)}setSubpixelPositioning(e){this.options.subpixelPositioning=e}setPadding(e){this.options.padding=e,this._update()}_createCloseButton(){this.options.closeButton&&(this._closeButton=L.create(`button`,`maplibregl-popup-close-button`,this._content),this._closeButton.type=`button`,this._closeButton.textContent=`×`,this._closeButton.addEventListener(`click`,this._onClose))}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;let e=this._container.querySelector(dI);e&&e.focus()}};function mI(e){if(!e)return mI(new f(0,0));if(typeof e==`number`){let t=Math.round(Math.abs(e)/Math.SQRT2);return{center:new f(0,0),top:new f(0,e),"top-left":new f(t,t),"top-right":new f(-t,t),bottom:new f(0,-e),"bottom-left":new f(t,-t),"bottom-right":new f(-t,-t),left:new f(e,0),right:new f(-e,0)}}if(e instanceof f||Array.isArray(e)){let t=f.convert(e);return{center:t,top:t,"top-left":t,"top-right":t,bottom:t,"bottom-left":t,"bottom-right":t,left:t,right:t}}return{center:f.convert(e.center||[0,0]),top:f.convert(e.top||[0,0]),"top-left":f.convert(e[`top-left`]||[0,0]),"top-right":f.convert(e[`top-right`]||[0,0]),bottom:f.convert(e.bottom||[0,0]),"bottom-left":f.convert(e[`bottom-left`]||[0,0]),"bottom-right":f.convert(e[`bottom-right`]||[0,0]),left:f.convert(e.left||[0,0]),right:f.convert(e.right||[0,0])}}function hI(e){return e?{top:e.top??0,right:e.right??0,bottom:e.bottom??0,left:e.left??0}:{top:0,right:0,bottom:0,left:0}}var gI=d;function _I(e,t){return DE().setRTLTextPlugin(e,t)}function vI(){return DE().getRTLTextPluginStatus()}function yI(){return gI}function bI(){return vb.workerCount}function xI(e){vb.workerCount=e}function SI(){return Mn.MAX_PARALLEL_IMAGE_REQUESTS}function CI(e){Mn.MAX_PARALLEL_IMAGE_REQUESTS=e}function wI(){return Mn.WORKER_URL}function TI(e){Mn.WORKER_URL=e}async function EI(e){await Eb().broadcast(`IS`,e)}export{t as n,Pn as t};
|