geoproject-app/public/site/plugins/map-editor/index.js
isUnknown 2b0f4f8742
All checks were successful
Deploy / Build and Deploy to Production (push) Successful in 18s
refactor: comprehensive map-editor plugin refactoring (phases 1-3)
This commit implements a complete refactoring of the map-editor plugin to
improve code organization, reusability, and maintainability.

## Phase 1: Extraction of composables and factory functions

**New composables:**
- `useMarkers.js`: Centralized marker state and CRUD operations
  - Exports: markers, selectedMarkerId, editingMarker refs
  - Computed: canAddMarker, hasMarkers, selectedMarker
  - Methods: addMarker, updateMarker, deleteMarker, selectMarker, etc.
  - Includes createMarker() factory to eliminate code duplication

- `useMapData.js`: Map data persistence (YAML load/save)
  - Exports: center, zoom refs
  - Methods: loadMapData, saveMapData, debouncedSave
  - Handles lifecycle cleanup of debounce timeouts

**Benefits:**
- Eliminated code duplication (2 identical marker creation blocks)
- Separated business logic from UI concerns
- Improved testability with pure functions
- Added JSDoc documentation throughout

## Phase 2: Component extraction

**New components:**
- `MarkerList.vue`: Extracted sidebar UI from MapEditor.vue
  - Props: markers, selectedMarkerId, maxMarkers
  - Emits: add-marker, select-marker, edit-marker, delete-marker, select-location
  - Includes integrated GeocodeSearch component
  - Self-contained styles with scoped CSS

**Benefits:**
- MapEditor.vue reduced from 370 → 230 lines (-40%)
- Clear separation of concerns (orchestration vs presentation)
- Reusable component for potential future use
- Easier to test and maintain

## Phase 3: Utils restructuring with JSDoc

**New structure:**
```
utils/
├── constants.js           # NOMINATIM_API, MAP_DEFAULTS, DEBOUNCE_DELAYS
├── api/
│   └── nominatim.js      # geocode() with full JSDoc typedefs
└── helpers/
    └── debounce.js       # Generic debounce utility
```

**Removed:**
- `utils/geocoding.js` (replaced by modular structure)

**Benefits:**
- Constants centralized for easy configuration
- API layer separated from helpers
- Complete JSDoc type annotations for better IDE support
- Better organization following standard patterns

## Updated components

**MapEditor.vue:**
- Now uses useMarkers and useMapData composables
- Uses MarkerList component instead of inline template
- Cleaner setup function with better separation
- Reduced from 537 → 256 lines (CSS moved to MarkerList)

**GeocodeSearch.vue:**
- Updated imports to use new utils structure
- Uses DEBOUNCE_DELAYS constant instead of hardcoded value

## Build verification

-  npm run build successful
-  Bundle size unchanged (806.10 kB / 223.46 KiB gzipped)
-  All functionality preserved
-  No breaking changes

## Documentation

- Added comprehensive README.md with:
  - Architecture overview
  - Composables usage examples
  - Component API documentation
  - Data flow diagrams
  - Development guide

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-28 16:29:15 +01:00

611 lines
806 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(function(){"use strict";function od(d){return d&&d.__esModule&&Object.prototype.hasOwnProperty.call(d,"default")?d.default:d}var No={exports:{}},ld=No.exports,vu;function cd(){return vu||(vu=1,(function(d,b){(function(k,z){d.exports=z()})(ld,(function(){var k,z,R;function J(l,le){if(!k)k=le;else if(!z)z=le;else{var X="var sharedChunk = {}; ("+k+")(sharedChunk); ("+z+")(sharedChunk);",Ee={};k(Ee),R=le(Ee),typeof window<"u"&&(R.workerUrl=window.URL.createObjectURL(new Blob([X],{type:"text/javascript"})))}}J(["exports"],(function(l){function le(i,e,r,a){return new(r||(r=Promise))((function(o,p){function f(v){try{y(a.next(v))}catch(S){p(S)}}function m(v){try{y(a.throw(v))}catch(S){p(S)}}function y(v){var S;v.done?o(v.value):(S=v.value,S instanceof r?S:new r((function(A){A(S)}))).then(f,m)}y((a=a.apply(i,e||[])).next())}))}function X(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}typeof SuppressedError=="function"&&SuppressedError;var Ee=ye;function ye(i,e){this.x=i,this.y=e}ye.prototype={clone:function(){return new ye(this.x,this.y)},add:function(i){return this.clone()._add(i)},sub:function(i){return this.clone()._sub(i)},multByPoint:function(i){return this.clone()._multByPoint(i)},divByPoint:function(i){return this.clone()._divByPoint(i)},mult:function(i){return this.clone()._mult(i)},div:function(i){return this.clone()._div(i)},rotate:function(i){return this.clone()._rotate(i)},rotateAround:function(i,e){return this.clone()._rotateAround(i,e)},matMult:function(i){return this.clone()._matMult(i)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(i){return this.x===i.x&&this.y===i.y},dist:function(i){return Math.sqrt(this.distSqr(i))},distSqr:function(i){var e=i.x-this.x,r=i.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(i){return Math.atan2(this.y-i.y,this.x-i.x)},angleWith:function(i){return this.angleWithSep(i.x,i.y)},angleWithSep:function(i,e){return Math.atan2(this.x*e-this.y*i,this.x*i+this.y*e)},_matMult:function(i){var e=i[2]*this.x+i[3]*this.y;return this.x=i[0]*this.x+i[1]*this.y,this.y=e,this},_add:function(i){return this.x+=i.x,this.y+=i.y,this},_sub:function(i){return this.x-=i.x,this.y-=i.y,this},_mult:function(i){return this.x*=i,this.y*=i,this},_div:function(i){return this.x/=i,this.y/=i,this},_multByPoint:function(i){return this.x*=i.x,this.y*=i.y,this},_divByPoint:function(i){return this.x/=i.x,this.y/=i.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var i=this.y;return this.y=this.x,this.x=-i,this},_rotate:function(i){var e=Math.cos(i),r=Math.sin(i),a=r*this.x+e*this.y;return this.x=e*this.x-r*this.y,this.y=a,this},_rotateAround:function(i,e){var r=Math.cos(i),a=Math.sin(i),o=e.y+a*(this.x-e.x)+r*(this.y-e.y);return this.x=e.x+r*(this.x-e.x)-a*(this.y-e.y),this.y=o,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},ye.convert=function(i){return i instanceof ye?i:Array.isArray(i)?new ye(i[0],i[1]):i};var _e=X(Ee),we=Le;function Le(i,e,r,a){this.cx=3*i,this.bx=3*(r-i)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(a-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=i,this.p1y=e,this.p2x=r,this.p2y=a}Le.prototype={sampleCurveX:function(i){return((this.ax*i+this.bx)*i+this.cx)*i},sampleCurveY:function(i){return((this.ay*i+this.by)*i+this.cy)*i},sampleCurveDerivativeX:function(i){return(3*this.ax*i+2*this.bx)*i+this.cx},solveCurveX:function(i,e){if(e===void 0&&(e=1e-6),i<0)return 0;if(i>1)return 1;for(var r=i,a=0;a<8;a++){var o=this.sampleCurveX(r)-i;if(Math.abs(o)<e)return r;var p=this.sampleCurveDerivativeX(r);if(Math.abs(p)<1e-6)break;r-=o/p}var f=0,m=1;for(r=i,a=0;a<20&&(o=this.sampleCurveX(r),!(Math.abs(o-i)<e));a++)i>o?f=r:m=r,r=.5*(m-f)+f;return r},solve:function(i,e){return this.sampleCurveY(this.solveCurveX(i,e))}};var We=X(we);let qe,Be;function Ze(){return qe==null&&(qe=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")&&typeof createImageBitmap=="function"),qe}function fi(){if(Be==null&&(Be=!1,Ze())){const e=new OffscreenCanvas(5,5).getContext("2d",{willReadFrequently:!0});if(e){for(let a=0;a<25;a++){const o=4*a;e.fillStyle=`rgb(${o},${o+1},${o+2})`,e.fillRect(a%5,Math.floor(a/5),1,1)}const r=e.getImageData(0,0,5,5).data;for(let a=0;a<100;a++)if(a%4!=3&&r[a]!==a){Be=!0;break}}}return Be||!1}function cn(i,e,r,a){const o=new We(i,e,r,a);return function(p){return o.solve(p)}}const qr=cn(.25,.1,.25,1);function er(i,e,r){return Math.min(r,Math.max(e,i))}function un(i,e,r){const a=r-e,o=((i-e)%a+a)%a+e;return o===e?r:o}function Yt(i,...e){for(const r of e)for(const a in r)i[a]=r[a];return i}let Rn=1;function kt(i,e,r){const a={};for(const o in i)a[o]=e.call(r||this,i[o],o,i);return a}function Zr(i,e,r){const a={};for(const o in i)e.call(r||this,i[o],o,i)&&(a[o]=i[o]);return a}function xt(i){return Array.isArray(i)?i.map(xt):typeof i=="object"&&i?kt(i,xt):i}const wi={};function li(i){wi[i]||(typeof console<"u"&&console.warn(i),wi[i]=!0)}function $i(i,e,r){return(r.y-i.y)*(e.x-i.x)>(e.y-i.y)*(r.x-i.x)}function Mr(i){let e=0;for(let r,a,o=0,p=i.length,f=p-1;o<p;f=o++)r=i[o],a=i[f],e+=(a.x-r.x)*(r.y+a.y);return e}function tr(){return typeof WorkerGlobalScope<"u"&&typeof self<"u"&&self instanceof WorkerGlobalScope}let hn=null;function la(i){return typeof ImageBitmap<"u"&&i instanceof ImageBitmap}const Oa="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function ca(i,e,r,a,o){return le(this,void 0,void 0,(function*(){if(typeof VideoFrame>"u")throw new Error("VideoFrame not supported");const p=new VideoFrame(i,{timestamp:0});try{const f=p==null?void 0:p.format;if(!f||!f.startsWith("BGR")&&!f.startsWith("RGB"))throw new Error(`Unrecognized format ${f}`);const m=f.startsWith("BGR"),y=new Uint8ClampedArray(a*o*4);if(yield p.copyTo(y,(function(v,S,A,M,D){const L=4*Math.max(-S,0),O=(Math.max(0,A)-A)*M*4+L,q=4*M,H=Math.max(0,S),re=Math.max(0,A);return{rect:{x:H,y:re,width:Math.min(v.width,S+M)-H,height:Math.min(v.height,A+D)-re},layout:[{offset:O,stride:q}]}})(i,e,r,a,o)),m)for(let v=0;v<y.length;v+=4){const S=y[v];y[v]=y[v+2],y[v+2]=S}return y}finally{p.close()}}))}let _r,Ct,Pi,pn;const Fn={now:typeof performance<"u"&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),frame(i){const e=requestAnimationFrame(i);return{cancel:()=>cancelAnimationFrame(e)}},getImageData(i,e=0){return this.getImageCanvasContext(i).getImageData(-e,-e,i.width+2*e,i.height+2*e)},getImageCanvasContext(i){const e=window.document.createElement("canvas"),r=e.getContext("2d",{willReadFrequently:!0});if(!r)throw new Error("failed to create canvas 2d context");return e.width=i.width,e.height=i.height,r.drawImage(i,0,0,i.width,i.height),r},resolveURL:i=>(Pi||(Pi=document.createElement("a")),Pi.href=i,Pi.href),hardwareConcurrency:typeof navigator<"u"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return!!matchMedia&&(pn==null&&(pn=matchMedia("(prefers-reduced-motion: reduce)")),pn.matches)}},Bn={MAX_PARALLEL_IMAGE_REQUESTS:16,MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:8,MAX_TILE_CACHE_ZOOM_LEVELS:5,REGISTERED_PROTOCOLS:{},WORKER_URL:""};class Gr extends Error{constructor(e,r,a,o){super(`AJAXError: ${r} (${e}): ${a}`),this.status=e,this.statusText=r,this.url=a,this.body=o}}const pr=tr()?()=>self.worker&&self.worker.referrer:()=>(window.location.protocol==="blob:"?window.parent:window).location.href,ir=i=>Bn.REGISTERED_PROTOCOLS[i.substring(0,i.indexOf("://"))];function ua(i,e){const r=new AbortController,a=new Request(i.url,{method:i.method||"GET",body:i.body,credentials:i.credentials,headers:i.headers,cache:i.cache,referrer:pr(),signal:r.signal});let o=!1,p=!1;return i.type==="json"&&a.headers.set("Accept","application/json"),p||fetch(a).then((f=>f.ok?(m=>{(i.type==="arrayBuffer"||i.type==="image"?m.arrayBuffer():i.type==="json"?m.json():m.text()).then((y=>{p||(o=!0,e(null,y,m.headers.get("Cache-Control"),m.headers.get("Expires")))})).catch((y=>{p||e(new Error(y.message))}))})(f):f.blob().then((m=>e(new Gr(f.status,f.statusText,i.url,m)))))).catch((f=>{f.code!==20&&e(new Error(f.message))})),{cancel:()=>{p=!0,o||r.abort()}}}const Hr=function(i,e){if(/:\/\//.test(i.url)&&!/^https?:|^file:/.test(i.url)){if(tr()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",i,e);if(!tr())return(ir(i.url)||ua)(i,e)}if(!(/^file:/.test(r=i.url)||/^file:/.test(pr())&&!/^\w+:/.test(r))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return ua(i,e);if(tr()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",i,e,void 0,!0)}var r;return(function(a,o){const p=new XMLHttpRequest;p.open(a.method||"GET",a.url,!0),a.type!=="arrayBuffer"&&a.type!=="image"||(p.responseType="arraybuffer");for(const f in a.headers)p.setRequestHeader(f,a.headers[f]);return a.type==="json"&&(p.responseType="text",p.setRequestHeader("Accept","application/json")),p.withCredentials=a.credentials==="include",p.onerror=()=>{o(new Error(p.statusText))},p.onload=()=>{if((p.status>=200&&p.status<300||p.status===0)&&p.response!==null){let f=p.response;if(a.type==="json")try{f=JSON.parse(p.response)}catch(m){return o(m)}o(null,f,p.getResponseHeader("Cache-Control"),p.getResponseHeader("Expires"))}else{const f=new Blob([p.response],{type:p.getResponseHeader("Content-Type")});o(new Gr(p.status,p.statusText,a.url,f))}},p.send(a.body),{cancel:()=>p.abort()}})(i,e)},ha=function(i,e){return Hr(Yt(i,{type:"arrayBuffer"}),e)};function Er(i){if(!i||i.indexOf("://")<=0||i.indexOf("data:image/")===0||i.indexOf("blob:")===0)return!0;const e=new URL(i),r=window.location;return e.protocol===r.protocol&&e.host===r.host}function On(i,e,r){r[i]&&r[i].indexOf(e)!==-1||(r[i]=r[i]||[],r[i].push(e))}function dn(i,e,r){if(r&&r[i]){const a=r[i].indexOf(e);a!==-1&&r[i].splice(a,1)}}class Wr{constructor(e,r={}){Yt(this,r),this.type=e}}class Xr extends Wr{constructor(e,r={}){super("error",Yt({error:e},r))}}class fn{on(e,r){return this._listeners=this._listeners||{},On(e,r,this._listeners),this}off(e,r){return dn(e,r,this._listeners),dn(e,r,this._oneTimeListeners),this}once(e,r){return r?(this._oneTimeListeners=this._oneTimeListeners||{},On(e,r,this._oneTimeListeners),this):new Promise((a=>this.once(e,a)))}fire(e,r){typeof e=="string"&&(e=new Wr(e,r||{}));const a=e.type;if(this.listens(a)){e.target=this;const o=this._listeners&&this._listeners[a]?this._listeners[a].slice():[];for(const m of o)m.call(this,e);const p=this._oneTimeListeners&&this._oneTimeListeners[a]?this._oneTimeListeners[a].slice():[];for(const m of p)dn(a,m,this._oneTimeListeners),m.call(this,e);const f=this._eventedParent;f&&(Yt(e,typeof this._eventedParentData=="function"?this._eventedParentData():this._eventedParentData),f.fire(e))}else e instanceof Xr&&console.error(e.error);return this}listens(e){return this._listeners&&this._listeners[e]&&this._listeners[e].length>0||this._oneTimeListeners&&this._oneTimeListeners[e]&&this._oneTimeListeners[e].length>0||this._eventedParent&&this._eventedParent.listens(e)}setEventedParent(e,r){return this._eventedParent=e,this._eventedParentData=r,this}}var he={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},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},"*":{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:"*"},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:{required:!0,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:{},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_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"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","property-type":"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","property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"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"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"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"]},"property-type":"data-constant"},"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"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{},within:{}}},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:"*",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}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number",minimum:0,default:1}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","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-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],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,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum: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-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"]},"property-type":"cross-faded"},"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"},"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:"number",default:335,minimum:0,maximum:359,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:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",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"}},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"}}};const zi=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function rr(i,e){const r={};for(const a in i)a!=="ref"&&(r[a]=i[a]);return zi.forEach((a=>{a in e&&(r[a]=e[a])})),r}function Tt(i,e){if(Array.isArray(i)){if(!Array.isArray(e)||i.length!==e.length)return!1;for(let r=0;r<i.length;r++)if(!Tt(i[r],e[r]))return!1;return!0}if(typeof i=="object"&&i!==null&&e!==null){if(typeof e!="object"||Object.keys(i).length!==Object.keys(e).length)return!1;for(const r in i)if(!Tt(i[r],e[r]))return!1;return!0}return i===e}const ft={setStyle:"setStyle",addLayer:"addLayer",removeLayer:"removeLayer",setPaintProperty:"setPaintProperty",setLayoutProperty:"setLayoutProperty",setFilter:"setFilter",addSource:"addSource",removeSource:"removeSource",setGeoJSONSourceData:"setGeoJSONSourceData",setLayerZoomRange:"setLayerZoomRange",setLayerProperty:"setLayerProperty",setCenter:"setCenter",setZoom:"setZoom",setBearing:"setBearing",setPitch:"setPitch",setSprite:"setSprite",setGlyphs:"setGlyphs",setTransition:"setTransition",setLight:"setLight"};function yr(i,e,r){r.push({command:ft.addSource,args:[i,e[i]]})}function Nn(i,e,r){e.push({command:ft.removeSource,args:[i]}),r[i]=!0}function Pr(i,e,r,a){Nn(i,r,a),yr(i,e,r)}function Na(i,e,r){let a;for(a in i[r])if(Object.prototype.hasOwnProperty.call(i[r],a)&&a!=="data"&&!Tt(i[r][a],e[r][a]))return!1;for(a in e[r])if(Object.prototype.hasOwnProperty.call(e[r],a)&&a!=="data"&&!Tt(i[r][a],e[r][a]))return!1;return!0}function Vn(i,e,r,a,o,p){let f;for(f in e=e||{},i=i||{})Object.prototype.hasOwnProperty.call(i,f)&&(Tt(i[f],e[f])||r.push({command:p,args:[a,f,e[f],o]}));for(f in e)Object.prototype.hasOwnProperty.call(e,f)&&!Object.prototype.hasOwnProperty.call(i,f)&&(Tt(i[f],e[f])||r.push({command:p,args:[a,f,e[f],o]}))}function Kr(i){return i.id}function mn(i,e){return i[e.id]=e,i}class Ie{constructor(e,r,a,o){this.message=(e?`${e}: `:"")+a,o&&(this.identifier=o),r!=null&&r.__line__&&(this.line=r.__line__)}}function xr(i,...e){for(const r of e)for(const a in r)i[a]=r[a];return i}class Ot extends Error{constructor(e,r){super(r),this.message=r,this.key=e}}class gn{constructor(e,r=[]){this.parent=e,this.bindings={};for(const[a,o]of r)this.bindings[a]=o}concat(e){return new gn(this,e)}get(e){if(this.bindings[e])return this.bindings[e];if(this.parent)return this.parent.get(e);throw new Error(`${e} not found in scope.`)}has(e){return!!this.bindings[e]||!!this.parent&&this.parent.has(e)}}const zr={kind:"null"},ke={kind:"number"},nt={kind:"string"},et={kind:"boolean"},Si={kind:"color"},vr={kind:"object"},it={kind:"value"},Dr={kind:"collator"},U={kind:"formatted"},C={kind:"padding"},E={kind:"resolvedImage"},F={kind:"variableAnchorOffsetCollection"};function j(i,e){return{kind:"array",itemType:i,N:e}}function Z(i){if(i.kind==="array"){const e=Z(i.itemType);return typeof i.N=="number"?`array<${e}, ${i.N}>`:i.itemType.kind==="value"?"array":`array<${e}>`}return i.kind}const ne=[zr,ke,nt,et,Si,U,vr,j(it),C,E,F];function Q(i,e){if(e.kind==="error")return null;if(i.kind==="array"){if(e.kind==="array"&&(e.N===0&&e.itemType.kind==="value"||!Q(i.itemType,e.itemType))&&(typeof i.N!="number"||i.N===e.N))return null}else{if(i.kind===e.kind)return null;if(i.kind==="value"){for(const r of ne)if(!Q(r,e))return null}}return`Expected ${Z(i)} but found ${Z(e)} instead.`}function W(i,e){return e.some((r=>r.kind===i.kind))}function ie(i,e){return e.some((r=>r==="null"?i===null:r==="array"?Array.isArray(i):r==="object"?i&&!Array.isArray(i)&&typeof i=="object":r===typeof i))}function pe(i,e){return i.kind==="array"&&e.kind==="array"?i.itemType.kind===e.itemType.kind&&typeof i.N=="number":i.kind===e.kind}const de=.96422,ge=.82521,Ge=4/29,Qe=6/29,Oe=3*Qe*Qe,Xe=Qe*Qe*Qe,tt=Math.PI/180,yt=180/Math.PI;function wt(i){return(i%=360)<0&&(i+=360),i}function dt([i,e,r,a]){let o,p;const f=mi((.2225045*(i=pt(i))+.7168786*(e=pt(e))+.0606169*(r=pt(r)))/1);i===e&&e===r?o=p=f:(o=mi((.4360747*i+.3850649*e+.1430804*r)/de),p=mi((.0139322*i+.0971045*e+.7141733*r)/ge));const m=116*f-16;return[m<0?0:m,500*(o-f),200*(f-p),a]}function pt(i){return i<=.04045?i/12.92:Math.pow((i+.055)/1.055,2.4)}function mi(i){return i>Xe?Math.pow(i,1/3):i/Oe+Ge}function It([i,e,r,a]){let o=(i+16)/116,p=isNaN(e)?o:o+e/500,f=isNaN(r)?o:o-r/200;return o=1*ci(o),p=de*ci(p),f=ge*ci(f),[Wt(3.1338561*p-1.6168667*o-.4906146*f),Wt(-.9787684*p+1.9161415*o+.033454*f),Wt(.0719453*p-.2289914*o+1.4052427*f),a]}function Wt(i){return(i=i<=.00304?12.92*i:1.055*Math.pow(i,1/2.4)-.055)<0?0:i>1?1:i}function ci(i){return i>Qe?i*i*i:Oe*(i-Ge)}function nr(i){return parseInt(i.padEnd(2,i),16)/255}function Go(i,e){return Un(e?i/100:i,0,1)}function Un(i,e,r){return Math.min(Math.max(e,i),r)}function $n(i){return!i.some(Number.isNaN)}const dc={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]};class vt{constructor(e,r,a,o=1,p=!0){this.r=e,this.g=r,this.b=a,this.a=o,p||(this.r*=o,this.g*=o,this.b*=o,o||this.overwriteGetter("rgb",[e,r,a,o]))}static parse(e){if(e instanceof vt)return e;if(typeof e!="string")return;const r=(function(a){if((a=a.toLowerCase().trim())==="transparent")return[0,0,0,0];const o=dc[a];if(o){const[f,m,y]=o;return[f/255,m/255,y/255,1]}if(a.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(a)){const f=a.length<6?1:2;let m=1;return[nr(a.slice(m,m+=f)),nr(a.slice(m,m+=f)),nr(a.slice(m,m+=f)),nr(a.slice(m,m+f)||"ff")]}if(a.startsWith("rgb")){const f=a.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(f){const[m,y,v,S,A,M,D,L,O,q,H,re]=f,Y=[S||" ",D||" ",q].join("");if(Y===" "||Y===" /"||Y===",,"||Y===",,,"){const ae=[v,M,O].join(""),oe=ae==="%%%"?100:ae===""?255:0;if(oe){const me=[Un(+y/oe,0,1),Un(+A/oe,0,1),Un(+L/oe,0,1),H?Go(+H,re):1];if($n(me))return me}}return}}const p=a.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(p){const[f,m,y,v,S,A,M,D,L]=p,O=[y||" ",S||" ",M].join("");if(O===" "||O===" /"||O===",,"||O===",,,"){const q=[+m,Un(+v,0,100),Un(+A,0,100),D?Go(+D,L):1];if($n(q))return(function([H,re,Y,ae]){function oe(me){const De=(me+H/30)%12,Ve=re*Math.min(Y,1-Y);return Y-Ve*Math.max(-1,Math.min(De-3,9-De,1))}return H=wt(H),re/=100,Y/=100,[oe(0),oe(8),oe(4),ae]})(q)}}})(e);return r?new vt(...r,!1):void 0}get rgb(){const{r:e,g:r,b:a,a:o}=this,p=o||1/0;return this.overwriteGetter("rgb",[e/p,r/p,a/p,o])}get hcl(){return this.overwriteGetter("hcl",(function(e){const[r,a,o,p]=dt(e),f=Math.sqrt(a*a+o*o);return[Math.round(1e4*f)?wt(Math.atan2(o,a)*yt):NaN,f,r,p]})(this.rgb))}get lab(){return this.overwriteGetter("lab",dt(this.rgb))}overwriteGetter(e,r){return Object.defineProperty(this,e,{value:r}),r}toString(){const[e,r,a,o]=this.rgb;return`rgba(${[e,r,a].map((p=>Math.round(255*p))).join(",")},${o})`}}vt.black=new vt(0,0,0,1),vt.white=new vt(1,1,1,1),vt.transparent=new vt(0,0,0,0),vt.red=new vt(1,0,0,1);class zs{constructor(e,r,a){this.sensitivity=e?r?"variant":"case":r?"accent":"base",this.locale=a,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(e,r){return this.collator.compare(e,r)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Va{constructor(e,r,a,o,p){this.text=e,this.image=r,this.scale=a,this.fontStack=o,this.textColor=p}}class gi{constructor(e){this.sections=e}static fromString(e){return new gi([new Va(e,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(e){return e instanceof gi?e:gi.fromString(e)}toString(){return this.sections.length===0?"":this.sections.map((e=>e.text)).join("")}}class ji{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof ji)return e;if(typeof e=="number")return new ji([e,e,e,e]);if(Array.isArray(e)&&!(e.length<1||e.length>4)){for(const r of e)if(typeof r!="number")return;switch(e.length){case 1:e=[e[0],e[0],e[0],e[0]];break;case 2:e=[e[0],e[1],e[0],e[1]];break;case 3:e=[e[0],e[1],e[2],e[1]]}return new ji(e)}}toString(){return JSON.stringify(this.values)}}const fc=new Set(["center","left","right","top","bottom","top-left","top-right","bottom-left","bottom-right"]);class ar{constructor(e){this.values=e.slice()}static parse(e){if(e instanceof ar)return e;if(Array.isArray(e)&&!(e.length<1)&&e.length%2==0){for(let r=0;r<e.length;r+=2){const a=e[r],o=e[r+1];if(typeof a!="string"||!fc.has(a)||!Array.isArray(o)||o.length!==2||typeof o[0]!="number"||typeof o[1]!="number")return}return new ar(e)}}toString(){return JSON.stringify(this.values)}}class ui{constructor(e){this.name=e.name,this.available=e.available}toString(){return this.name}static fromString(e){return e?new ui({name:e,available:!1}):null}}function Ua(i,e,r,a){return typeof i=="number"&&i>=0&&i<=255&&typeof e=="number"&&e>=0&&e<=255&&typeof r=="number"&&r>=0&&r<=255?a===void 0||typeof a=="number"&&a>=0&&a<=1?null:`Invalid rgba value [${[i,e,r,a].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof a=="number"?[i,e,r,a]:[i,e,r]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function jn(i){if(i===null||typeof i=="string"||typeof i=="boolean"||typeof i=="number"||i instanceof vt||i instanceof zs||i instanceof gi||i instanceof ji||i instanceof ar||i instanceof ui)return!0;if(Array.isArray(i)){for(const e of i)if(!jn(e))return!1;return!0}if(typeof i=="object"){for(const e in i)if(!jn(i[e]))return!1;return!0}return!1}function Lt(i){if(i===null)return zr;if(typeof i=="string")return nt;if(typeof i=="boolean")return et;if(typeof i=="number")return ke;if(i instanceof vt)return Si;if(i instanceof zs)return Dr;if(i instanceof gi)return U;if(i instanceof ji)return C;if(i instanceof ar)return F;if(i instanceof ui)return E;if(Array.isArray(i)){const e=i.length;let r;for(const a of i){const o=Lt(a);if(r){if(r===o)continue;r=it;break}r=o}return j(r||it,e)}return vr}function mt(i){const e=typeof i;return i===null?"":e==="string"||e==="number"||e==="boolean"?String(i):i instanceof vt||i instanceof gi||i instanceof ji||i instanceof ar||i instanceof ui?i.toString():JSON.stringify(i)}class _n{constructor(e,r){this.type=e,this.value=r}static parse(e,r){if(e.length!==2)return r.error(`'literal' expression requires exactly one argument, but found ${e.length-1} instead.`);if(!jn(e[1]))return r.error("invalid value");const a=e[1];let o=Lt(a);const p=r.expectedType;return o.kind!=="array"||o.N!==0||!p||p.kind!=="array"||typeof p.N=="number"&&p.N!==0||(o=p),new _n(o,a)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}class Nt{constructor(e){this.name="ExpressionEvaluationError",this.message=e}toJSON(){return this.message}}const $a={string:nt,number:ke,boolean:et,object:vr};class sr{constructor(e,r){this.type=e,this.args=r}static parse(e,r){if(e.length<2)return r.error("Expected at least one argument.");let a,o=1;const p=e[0];if(p==="array"){let m,y;if(e.length>2){const v=e[1];if(typeof v!="string"||!(v in $a)||v==="object")return r.error('The item type argument of "array" must be one of string, number, boolean',1);m=$a[v],o++}else m=it;if(e.length>3){if(e[2]!==null&&(typeof e[2]!="number"||e[2]<0||e[2]!==Math.floor(e[2])))return r.error('The length argument to "array" must be a positive integer literal',2);y=e[2],o++}a=j(m,y)}else{if(!$a[p])throw new Error(`Types doesn't contain name = ${p}`);a=$a[p]}const f=[];for(;o<e.length;o++){const m=r.parse(e[o],o,it);if(!m)return null;f.push(m)}return new sr(a,f)}evaluate(e){for(let r=0;r<this.args.length;r++){const a=this.args[r].evaluate(e);if(!Q(this.type,Lt(a)))return a;if(r===this.args.length-1)throw new Nt(`Expected value to be of type ${Z(this.type)}, but found ${Z(Lt(a))} instead.`)}throw new Error}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every((e=>e.outputDefined()))}}const Ds={"to-boolean":et,"to-color":Si,"to-number":ke,"to-string":nt};class Yr{constructor(e,r){this.type=e,this.args=r}static parse(e,r){if(e.length<2)return r.error("Expected at least one argument.");const a=e[0];if(!Ds[a])throw new Error(`Can't parse ${a} as it is not part of the known types`);if((a==="to-boolean"||a==="to-string")&&e.length!==2)return r.error("Expected one argument.");const o=Ds[a],p=[];for(let f=1;f<e.length;f++){const m=r.parse(e[f],f,it);if(!m)return null;p.push(m)}return new Yr(o,p)}evaluate(e){switch(this.type.kind){case"boolean":return!!this.args[0].evaluate(e);case"color":{let r,a;for(const o of this.args){if(r=o.evaluate(e),a=null,r instanceof vt)return r;if(typeof r=="string"){const p=e.parseColor(r);if(p)return p}else if(Array.isArray(r)&&(a=r.length<3||r.length>4?`Invalid rbga value ${JSON.stringify(r)}: expected an array containing either three or four numeric values.`:Ua(r[0],r[1],r[2],r[3]),!a))return new vt(r[0]/255,r[1]/255,r[2]/255,r[3])}throw new Nt(a||`Could not parse color from value '${typeof r=="string"?r:JSON.stringify(r)}'`)}case"padding":{let r;for(const a of this.args){r=a.evaluate(e);const o=ji.parse(r);if(o)return o}throw new Nt(`Could not parse padding from value '${typeof r=="string"?r:JSON.stringify(r)}'`)}case"variableAnchorOffsetCollection":{let r;for(const a of this.args){r=a.evaluate(e);const o=ar.parse(r);if(o)return o}throw new Nt(`Could not parse variableAnchorOffsetCollection from value '${typeof r=="string"?r:JSON.stringify(r)}'`)}case"number":{let r=null;for(const a of this.args){if(r=a.evaluate(e),r===null)return 0;const o=Number(r);if(!isNaN(o))return o}throw new Nt(`Could not convert ${JSON.stringify(r)} to number.`)}case"formatted":return gi.fromString(mt(this.args[0].evaluate(e)));case"resolvedImage":return ui.fromString(mt(this.args[0].evaluate(e)));default:return mt(this.args[0].evaluate(e))}}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every((e=>e.outputDefined()))}}const Ho=["Unknown","Point","LineString","Polygon"];class Ls{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},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"?Ho[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 r=this._parseColorCache[e];return r||(r=this._parseColorCache[e]=vt.parse(e)),r}}class ja{constructor(e,r,a=[],o,p=new gn,f=[]){this.registry=e,this.path=a,this.key=a.map((m=>`[${m}]`)).join(""),this.scope=p,this.errors=f,this.expectedType=o,this._isConstant=r}parse(e,r,a,o,p={}){return r?this.concat(r,a,o)._parse(e,p):this._parse(e,p)}_parse(e,r){function a(o,p,f){return f==="assert"?new sr(p,[o]):f==="coerce"?new Yr(p,[o]):o}if(e!==null&&typeof e!="string"&&typeof e!="boolean"&&typeof e!="number"||(e=["literal",e]),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", []].');const o=e[0];if(typeof o!="string")return this.error(`Expression name must be a string, but found ${typeof o} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;const p=this.registry[o];if(p){let f=p.parse(e,this);if(!f)return null;if(this.expectedType){const m=this.expectedType,y=f.type;if(m.kind!=="string"&&m.kind!=="number"&&m.kind!=="boolean"&&m.kind!=="object"&&m.kind!=="array"||y.kind!=="value")if(m.kind!=="color"&&m.kind!=="formatted"&&m.kind!=="resolvedImage"||y.kind!=="value"&&y.kind!=="string")if(m.kind!=="padding"||y.kind!=="value"&&y.kind!=="number"&&y.kind!=="array")if(m.kind!=="variableAnchorOffsetCollection"||y.kind!=="value"&&y.kind!=="array"){if(this.checkSubtype(m,y))return null}else f=a(f,m,r.typeAnnotation||"coerce");else f=a(f,m,r.typeAnnotation||"coerce");else f=a(f,m,r.typeAnnotation||"coerce");else f=a(f,m,r.typeAnnotation||"assert")}if(!(f instanceof _n)&&f.type.kind!=="resolvedImage"&&this._isConstant(f)){const m=new Ls;try{f=new _n(f.type,f.evaluate(m))}catch(y){return this.error(y.message),null}}return f}return this.error(`Unknown expression "${o}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(e===void 0?"'undefined' value invalid. Use null instead.":typeof e=="object"?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof e} instead.`)}concat(e,r,a){const o=typeof e=="number"?this.path.concat(e):this.path,p=a?this.scope.concat(a):this.scope;return new ja(this.registry,this._isConstant,o,r||null,p,this.errors)}error(e,...r){const a=`${this.key}${r.map((o=>`[${o}]`)).join("")}`;this.errors.push(new Ot(a,e))}checkSubtype(e,r){const a=Q(e,r);return a&&this.error(a),a}}class qa{constructor(e,r,a){this.type=Dr,this.locale=a,this.caseSensitive=e,this.diacriticSensitive=r}static parse(e,r){if(e.length!==2)return r.error("Expected one argument.");const a=e[1];if(typeof a!="object"||Array.isArray(a))return r.error("Collator options argument must be an object.");const o=r.parse(a["case-sensitive"]!==void 0&&a["case-sensitive"],1,et);if(!o)return null;const p=r.parse(a["diacritic-sensitive"]!==void 0&&a["diacritic-sensitive"],1,et);if(!p)return null;let f=null;return a.locale&&(f=r.parse(a.locale,1,nt),!f)?null:new qa(o,p,f)}evaluate(e){return new zs(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}}const Jr=8192;function Rs(i,e){i[0]=Math.min(i[0],e[0]),i[1]=Math.min(i[1],e[1]),i[2]=Math.max(i[2],e[0]),i[3]=Math.max(i[3],e[1])}function pa(i,e){return!(i[0]<=e[0]||i[2]>=e[2]||i[1]<=e[1]||i[3]>=e[3])}function Wo(i,e){const r=(180+i[0])/360,a=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+i[1]*Math.PI/360)))/360,o=Math.pow(2,e.z);return[Math.round(r*o*Jr),Math.round(a*o*Jr)]}function mc(i,e,r){const a=i[0]-e[0],o=i[1]-e[1],p=i[0]-r[0],f=i[1]-r[1];return a*f-p*o==0&&a*p<=0&&o*f<=0}function Fs(i,e){let r=!1;for(let f=0,m=e.length;f<m;f++){const y=e[f];for(let v=0,S=y.length;v<S-1;v++){if(mc(i,y[v],y[v+1]))return!1;(o=y[v])[1]>(a=i)[1]!=(p=y[v+1])[1]>a[1]&&a[0]<(p[0]-o[0])*(a[1]-o[1])/(p[1]-o[1])+o[0]&&(r=!r)}}var a,o,p;return r}function Bs(i,e){for(let r=0;r<e.length;r++)if(Fs(i,e[r]))return!0;return!1}function Xo(i,e,r,a){const o=a[0]-r[0],p=a[1]-r[1],f=(i[0]-r[0])*p-o*(i[1]-r[1]),m=(e[0]-r[0])*p-o*(e[1]-r[1]);return f>0&&m<0||f<0&&m>0}function gc(i,e,r){for(const v of r)for(let S=0;S<v.length-1;++S)if((m=[(f=v[S+1])[0]-(p=v[S])[0],f[1]-p[1]])[0]*(y=[(o=e)[0]-(a=i)[0],o[1]-a[1]])[1]-m[1]*y[0]!=0&&Xo(a,o,p,f)&&Xo(p,f,a,o))return!0;var a,o,p,f,m,y;return!1}function Ko(i,e){for(let r=0;r<i.length;++r)if(!Fs(i[r],e))return!1;for(let r=0;r<i.length-1;++r)if(gc(i[r],i[r+1],e))return!1;return!0}function Yo(i,e){for(let r=0;r<e.length;r++)if(Ko(i,e[r]))return!0;return!1}function Za(i,e,r){const a=[];for(let o=0;o<i.length;o++){const p=[];for(let f=0;f<i[o].length;f++){const m=Wo(i[o][f],r);Rs(e,m),p.push(m)}a.push(p)}return a}function Jo(i,e,r){const a=[];for(let o=0;o<i.length;o++){const p=Za(i[o],e,r);a.push(p)}return a}function Qo(i,e,r,a){if(i[0]<r[0]||i[0]>r[2]){const o=.5*a;let p=i[0]-r[0]>o?-a:r[0]-i[0]>o?a:0;p===0&&(p=i[0]-r[2]>o?-a:r[2]-i[0]>o?a:0),i[0]+=p}Rs(e,i)}function Os(i,e,r,a){const o=Math.pow(2,a.z)*Jr,p=[a.x*Jr,a.y*Jr],f=[];for(const m of i)for(const y of m){const v=[y.x+p[0],y.y+p[1]];Qo(v,e,r,o),f.push(v)}return f}function Ns(i,e,r,a){const o=Math.pow(2,a.z)*Jr,p=[a.x*Jr,a.y*Jr],f=[];for(const y of i){const v=[];for(const S of y){const A=[S.x+p[0],S.y+p[1]];Rs(e,A),v.push(A)}f.push(v)}if(e[2]-e[0]<=o/2){(m=e)[0]=m[1]=1/0,m[2]=m[3]=-1/0;for(const y of f)for(const v of y)Qo(v,e,r,o)}var m;return f}class yn{constructor(e,r){this.type=et,this.geojson=e,this.geometries=r}static parse(e,r){if(e.length!==2)return r.error(`'within' expression requires exactly one argument, but found ${e.length-1} instead.`);if(jn(e[1])){const a=e[1];if(a.type==="FeatureCollection")for(let o=0;o<a.features.length;++o){const p=a.features[o].geometry.type;if(p==="Polygon"||p==="MultiPolygon")return new yn(a,a.features[o].geometry)}else if(a.type==="Feature"){const o=a.geometry.type;if(o==="Polygon"||o==="MultiPolygon")return new yn(a,a.geometry)}else if(a.type==="Polygon"||a.type==="MultiPolygon")return new yn(a,a)}return r.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(function(r,a){const o=[1/0,1/0,-1/0,-1/0],p=[1/0,1/0,-1/0,-1/0],f=r.canonicalID();if(a.type==="Polygon"){const m=Za(a.coordinates,p,f),y=Os(r.geometry(),o,p,f);if(!pa(o,p))return!1;for(const v of y)if(!Fs(v,m))return!1}if(a.type==="MultiPolygon"){const m=Jo(a.coordinates,p,f),y=Os(r.geometry(),o,p,f);if(!pa(o,p))return!1;for(const v of y)if(!Bs(v,m))return!1}return!0})(e,this.geometries);if(e.geometryType()==="LineString")return(function(r,a){const o=[1/0,1/0,-1/0,-1/0],p=[1/0,1/0,-1/0,-1/0],f=r.canonicalID();if(a.type==="Polygon"){const m=Za(a.coordinates,p,f),y=Ns(r.geometry(),o,p,f);if(!pa(o,p))return!1;for(const v of y)if(!Ko(v,m))return!1}if(a.type==="MultiPolygon"){const m=Jo(a.coordinates,p,f),y=Ns(r.geometry(),o,p,f);if(!pa(o,p))return!1;for(const v of y)if(!Yo(v,m))return!1}return!0})(e,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}}class Ga{constructor(e,r){this.type=r.type,this.name=e,this.boundExpression=r}static parse(e,r){if(e.length!==2||typeof e[1]!="string")return r.error("'var' expression requires exactly one string literal argument.");const a=e[1];return r.scope.has(a)?new Ga(a,r.scope.get(a)):r.error(`Unknown variable "${a}". Make sure "${a}" has been bound in an enclosing "let" expression before using it.`,1)}evaluate(e){return this.boundExpression.evaluate(e)}eachChild(){}outputDefined(){return!1}}class or{constructor(e,r,a,o){this.name=e,this.type=r,this._evaluate=a,this.args=o}evaluate(e){return this._evaluate(e,this.args)}eachChild(e){this.args.forEach(e)}outputDefined(){return!1}static parse(e,r){const a=e[0],o=or.definitions[a];if(!o)return r.error(`Unknown expression "${a}". If you wanted a literal array, use ["literal", [...]].`,0);const p=Array.isArray(o)?o[0]:o.type,f=Array.isArray(o)?[[o[1],o[2]]]:o.overloads,m=f.filter((([v])=>!Array.isArray(v)||v.length===e.length-1));let y=null;for(const[v,S]of m){y=new ja(r.registry,Ha,r.path,null,r.scope);const A=[];let M=!1;for(let D=1;D<e.length;D++){const L=e[D],O=Array.isArray(v)?v[D-1]:v.type,q=y.parse(L,1+A.length,O);if(!q){M=!0;break}A.push(q)}if(!M)if(Array.isArray(v)&&v.length!==A.length)y.error(`Expected ${v.length} arguments, but found ${A.length} instead.`);else{for(let D=0;D<A.length;D++){const L=Array.isArray(v)?v[D]:v.type,O=A[D];y.concat(D+1).checkSubtype(L,O.type)}if(y.errors.length===0)return new or(a,p,S,A)}}if(m.length===1)r.errors.push(...y.errors);else{const v=(m.length?m:f).map((([A])=>{return M=A,Array.isArray(M)?`(${M.map(Z).join(", ")})`:`(${Z(M.type)}...)`;var M})).join(" | "),S=[];for(let A=1;A<e.length;A++){const M=r.parse(e[A],1+S.length);if(!M)return null;S.push(Z(M.type))}r.error(`Expected arguments of type ${v}, but found (${S.join(", ")}) instead.`)}return null}static register(e,r){or.definitions=r;for(const a in r)e[a]=or}}function Ha(i){if(i instanceof Ga)return Ha(i.boundExpression);if(i instanceof or&&i.name==="error"||i instanceof qa||i instanceof yn)return!1;const e=i instanceof Yr||i instanceof sr;let r=!0;return i.eachChild((a=>{r=e?r&&Ha(a):r&&a instanceof _n})),!!r&&Wa(i)&&Xa(i,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"])}function Wa(i){if(i instanceof or&&(i.name==="get"&&i.args.length===1||i.name==="feature-state"||i.name==="has"&&i.args.length===1||i.name==="properties"||i.name==="geometry-type"||i.name==="id"||/^filter-/.test(i.name))||i instanceof yn)return!1;let e=!0;return i.eachChild((r=>{e&&!Wa(r)&&(e=!1)})),e}function da(i){if(i instanceof or&&i.name==="feature-state")return!1;let e=!0;return i.eachChild((r=>{e&&!da(r)&&(e=!1)})),e}function Xa(i,e){if(i instanceof or&&e.indexOf(i.name)>=0)return!1;let r=!0;return i.eachChild((a=>{r&&!Xa(a,e)&&(r=!1)})),r}function qn(i,e){const r=i.length-1;let a,o,p=0,f=r,m=0;for(;p<=f;)if(m=Math.floor((p+f)/2),a=i[m],o=i[m+1],a<=e){if(m===r||e<o)return m;p=m+1}else{if(!(a>e))throw new Nt("Input is not a number.");f=m-1}return 0}class Qr{constructor(e,r,a){this.type=e,this.input=r,this.labels=[],this.outputs=[];for(const[o,p]of a)this.labels.push(o),this.outputs.push(p)}static parse(e,r){if(e.length-1<4)return r.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return r.error("Expected an even number of arguments.");const a=r.parse(e[1],1,ke);if(!a)return null;const o=[];let p=null;r.expectedType&&r.expectedType.kind!=="value"&&(p=r.expectedType);for(let f=1;f<e.length;f+=2){const m=f===1?-1/0:e[f],y=e[f+1],v=f,S=f+1;if(typeof m!="number")return r.error('Input/output pairs for "step" expressions must be defined using literal numeric values (not computed expressions) for the input values.',v);if(o.length&&o[o.length-1][0]>=m)return r.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',v);const A=r.parse(y,S,p);if(!A)return null;p=p||A.type,o.push([m,A])}return new Qr(p,a,o)}evaluate(e){const r=this.labels,a=this.outputs;if(r.length===1)return a[0].evaluate(e);const o=this.input.evaluate(e);if(o<=r[0])return a[0].evaluate(e);const p=r.length;return o>=r[p-1]?a[p-1].evaluate(e):a[qn(r,o)].evaluate(e)}eachChild(e){e(this.input);for(const r of this.outputs)e(r)}outputDefined(){return this.outputs.every((e=>e.outputDefined()))}}function ut(i,e,r){return i+r*(e-i)}function Ka(i,e,r){return i.map(((a,o)=>ut(a,e[o],r)))}const qi={number:ut,color:function(i,e,r,a="rgb"){switch(a){case"rgb":{const[o,p,f,m]=Ka(i.rgb,e.rgb,r);return new vt(o,p,f,m,!1)}case"hcl":{const[o,p,f,m]=i.hcl,[y,v,S,A]=e.hcl;let M,D;if(isNaN(o)||isNaN(y))isNaN(o)?isNaN(y)?M=NaN:(M=y,f!==1&&f!==0||(D=v)):(M=o,S!==1&&S!==0||(D=p));else{let re=y-o;y>o&&re>180?re-=360:y<o&&o-y>180&&(re+=360),M=o+r*re}const[L,O,q,H]=(function([re,Y,ae,oe]){return re=isNaN(re)?0:re*tt,It([ae,Math.cos(re)*Y,Math.sin(re)*Y,oe])})([M,D??ut(p,v,r),ut(f,S,r),ut(m,A,r)]);return new vt(L,O,q,H,!1)}case"lab":{const[o,p,f,m]=It(Ka(i.lab,e.lab,r));return new vt(o,p,f,m,!1)}}},array:Ka,padding:function(i,e,r){return new ji(Ka(i.values,e.values,r))},variableAnchorOffsetCollection:function(i,e,r){const a=i.values,o=e.values;if(a.length!==o.length)throw new Nt(`Cannot interpolate values of different length. from: ${i.toString()}, to: ${e.toString()}`);const p=[];for(let f=0;f<a.length;f+=2){if(a[f]!==o[f])throw new Nt(`Cannot interpolate values containing mismatched anchors. from[${f}]: ${a[f]}, to[${f}]: ${o[f]}`);p.push(a[f]);const[m,y]=a[f+1],[v,S]=o[f+1];p.push([ut(m,v,r),ut(y,S,r)])}return new ar(p)}};class Zi{constructor(e,r,a,o,p){this.type=e,this.operator=r,this.interpolation=a,this.input=o,this.labels=[],this.outputs=[];for(const[f,m]of p)this.labels.push(f),this.outputs.push(m)}static interpolationFactor(e,r,a,o){let p=0;if(e.name==="exponential")p=Vs(r,e.base,a,o);else if(e.name==="linear")p=Vs(r,1,a,o);else if(e.name==="cubic-bezier"){const f=e.controlPoints;p=new We(f[0],f[1],f[2],f[3]).solve(Vs(r,1,a,o))}return p}static parse(e,r){let[a,o,p,...f]=e;if(!Array.isArray(o)||o.length===0)return r.error("Expected an interpolation type expression.",1);if(o[0]==="linear")o={name:"linear"};else if(o[0]==="exponential"){const v=o[1];if(typeof v!="number")return r.error("Exponential interpolation requires a numeric base.",1,1);o={name:"exponential",base:v}}else{if(o[0]!=="cubic-bezier")return r.error(`Unknown interpolation type ${String(o[0])}`,1,0);{const v=o.slice(1);if(v.length!==4||v.some((S=>typeof S!="number"||S<0||S>1)))return r.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);o={name:"cubic-bezier",controlPoints:v}}}if(e.length-1<4)return r.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if((e.length-1)%2!=0)return r.error("Expected an even number of arguments.");if(p=r.parse(p,2,ke),!p)return null;const m=[];let y=null;a==="interpolate-hcl"||a==="interpolate-lab"?y=Si:r.expectedType&&r.expectedType.kind!=="value"&&(y=r.expectedType);for(let v=0;v<f.length;v+=2){const S=f[v],A=f[v+1],M=v+3,D=v+4;if(typeof S!="number")return r.error('Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not computed expressions) for the input values.',M);if(m.length&&m[m.length-1][0]>=S)return r.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',M);const L=r.parse(A,D,y);if(!L)return null;y=y||L.type,m.push([S,L])}return pe(y,ke)||pe(y,Si)||pe(y,C)||pe(y,F)||pe(y,j(ke))?new Zi(y,a,o,p,m):r.error(`Type ${Z(y)} is not interpolatable.`)}evaluate(e){const r=this.labels,a=this.outputs;if(r.length===1)return a[0].evaluate(e);const o=this.input.evaluate(e);if(o<=r[0])return a[0].evaluate(e);const p=r.length;if(o>=r[p-1])return a[p-1].evaluate(e);const f=qn(r,o),m=Zi.interpolationFactor(this.interpolation,o,r[f],r[f+1]),y=a[f].evaluate(e),v=a[f+1].evaluate(e);switch(this.operator){case"interpolate":return qi[this.type.kind](y,v,m);case"interpolate-hcl":return qi.color(y,v,m,"hcl");case"interpolate-lab":return qi.color(y,v,m,"lab")}}eachChild(e){e(this.input);for(const r of this.outputs)e(r)}outputDefined(){return this.outputs.every((e=>e.outputDefined()))}}function Vs(i,e,r,a){const o=a-r,p=i-r;return o===0?0:e===1?p/o:(Math.pow(e,p)-1)/(Math.pow(e,o)-1)}class Ya{constructor(e,r){this.type=e,this.args=r}static parse(e,r){if(e.length<2)return r.error("Expectected at least one argument.");let a=null;const o=r.expectedType;o&&o.kind!=="value"&&(a=o);const p=[];for(const m of e.slice(1)){const y=r.parse(m,1+p.length,a,void 0,{typeAnnotation:"omit"});if(!y)return null;a=a||y.type,p.push(y)}if(!a)throw new Error("No output type");const f=o&&p.some((m=>Q(o,m.type)));return new Ya(f?it:a,p)}evaluate(e){let r,a=null,o=0;for(const p of this.args)if(o++,a=p.evaluate(e),a&&a instanceof ui&&!a.available&&(r||(r=a.name),a=null,o===this.args.length&&(a=r)),a!==null)break;return a}eachChild(e){this.args.forEach(e)}outputDefined(){return this.args.every((e=>e.outputDefined()))}}class Ja{constructor(e,r){this.type=r.type,this.bindings=[].concat(e),this.result=r}evaluate(e){return this.result.evaluate(e)}eachChild(e){for(const r of this.bindings)e(r[1]);e(this.result)}static parse(e,r){if(e.length<4)return r.error(`Expected at least 3 arguments, but found ${e.length-1} instead.`);const a=[];for(let p=1;p<e.length-1;p+=2){const f=e[p];if(typeof f!="string")return r.error(`Expected string, but found ${typeof f} instead.`,p);if(/[^a-zA-Z0-9_]/.test(f))return r.error("Variable names must contain only alphanumeric characters or '_'.",p);const m=r.parse(e[p+1],p+1);if(!m)return null;a.push([f,m])}const o=r.parse(e[e.length-1],e.length-1,r.expectedType,a);return o?new Ja(a,o):null}outputDefined(){return this.result.outputDefined()}}class Us{constructor(e,r,a){this.type=e,this.index=r,this.input=a}static parse(e,r){if(e.length!==3)return r.error(`Expected 2 arguments, but found ${e.length-1} instead.`);const a=r.parse(e[1],1,ke),o=r.parse(e[2],2,j(r.expectedType||it));return a&&o?new Us(o.type.itemType,a,o):null}evaluate(e){const r=this.index.evaluate(e),a=this.input.evaluate(e);if(r<0)throw new Nt(`Array index out of bounds: ${r} < 0.`);if(r>=a.length)throw new Nt(`Array index out of bounds: ${r} > ${a.length-1}.`);if(r!==Math.floor(r))throw new Nt(`Array index must be an integer, but found ${r} instead.`);return a[r]}eachChild(e){e(this.index),e(this.input)}outputDefined(){return!1}}class $s{constructor(e,r){this.type=et,this.needle=e,this.haystack=r}static parse(e,r){if(e.length!==3)return r.error(`Expected 2 arguments, but found ${e.length-1} instead.`);const a=r.parse(e[1],1,it),o=r.parse(e[2],2,it);return a&&o?W(a.type,[et,nt,ke,zr,it])?new $s(a,o):r.error(`Expected first argument to be of type boolean, string, number or null, but found ${Z(a.type)} instead`):null}evaluate(e){const r=this.needle.evaluate(e),a=this.haystack.evaluate(e);if(!a)return!1;if(!ie(r,["boolean","string","number","null"]))throw new Nt(`Expected first argument to be of type boolean, string, number or null, but found ${Z(Lt(r))} instead.`);if(!ie(a,["string","array"]))throw new Nt(`Expected second argument to be of type array or string, but found ${Z(Lt(a))} instead.`);return a.indexOf(r)>=0}eachChild(e){e(this.needle),e(this.haystack)}outputDefined(){return!0}}class Qa{constructor(e,r,a){this.type=ke,this.needle=e,this.haystack=r,this.fromIndex=a}static parse(e,r){if(e.length<=2||e.length>=5)return r.error(`Expected 3 or 4 arguments, but found ${e.length-1} instead.`);const a=r.parse(e[1],1,it),o=r.parse(e[2],2,it);if(!a||!o)return null;if(!W(a.type,[et,nt,ke,zr,it]))return r.error(`Expected first argument to be of type boolean, string, number or null, but found ${Z(a.type)} instead`);if(e.length===4){const p=r.parse(e[3],3,ke);return p?new Qa(a,o,p):null}return new Qa(a,o)}evaluate(e){const r=this.needle.evaluate(e),a=this.haystack.evaluate(e);if(!ie(r,["boolean","string","number","null"]))throw new Nt(`Expected first argument to be of type boolean, string, number or null, but found ${Z(Lt(r))} instead.`);if(!ie(a,["string","array"]))throw new Nt(`Expected second argument to be of type array or string, but found ${Z(Lt(a))} instead.`);if(this.fromIndex){const o=this.fromIndex.evaluate(e);return a.indexOf(r,o)}return a.indexOf(r)}eachChild(e){e(this.needle),e(this.haystack),this.fromIndex&&e(this.fromIndex)}outputDefined(){return!1}}class js{constructor(e,r,a,o,p,f){this.inputType=e,this.type=r,this.input=a,this.cases=o,this.outputs=p,this.otherwise=f}static parse(e,r){if(e.length<5)return r.error(`Expected at least 4 arguments, but found only ${e.length-1}.`);if(e.length%2!=1)return r.error("Expected an even number of arguments.");let a,o;r.expectedType&&r.expectedType.kind!=="value"&&(o=r.expectedType);const p={},f=[];for(let v=2;v<e.length-1;v+=2){let S=e[v];const A=e[v+1];Array.isArray(S)||(S=[S]);const M=r.concat(v);if(S.length===0)return M.error("Expected at least one branch label.");for(const L of S){if(typeof L!="number"&&typeof L!="string")return M.error("Branch labels must be numbers or strings.");if(typeof L=="number"&&Math.abs(L)>Number.MAX_SAFE_INTEGER)return M.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof L=="number"&&Math.floor(L)!==L)return M.error("Numeric branch labels must be integer values.");if(a){if(M.checkSubtype(a,Lt(L)))return null}else a=Lt(L);if(p[String(L)]!==void 0)return M.error("Branch labels must be unique.");p[String(L)]=f.length}const D=r.parse(A,v,o);if(!D)return null;o=o||D.type,f.push(D)}const m=r.parse(e[1],1,it);if(!m)return null;const y=r.parse(e[e.length-1],e.length-1,o);return y?m.type.kind!=="value"&&r.concat(1).checkSubtype(a,m.type)?null:new js(a,o,m,p,f,y):null}evaluate(e){const r=this.input.evaluate(e);return(Lt(r)===this.inputType&&this.outputs[this.cases[r]]||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()}}class qs{constructor(e,r,a){this.type=e,this.branches=r,this.otherwise=a}static parse(e,r){if(e.length<4)return r.error(`Expected at least 3 arguments, but found only ${e.length-1}.`);if(e.length%2!=0)return r.error("Expected an odd number of arguments.");let a;r.expectedType&&r.expectedType.kind!=="value"&&(a=r.expectedType);const o=[];for(let f=1;f<e.length-1;f+=2){const m=r.parse(e[f],f,et);if(!m)return null;const y=r.parse(e[f+1],f+1,a);if(!y)return null;o.push([m,y]),a=a||y.type}const p=r.parse(e[e.length-1],e.length-1,a);if(!p)return null;if(!a)throw new Error("Can't infer output type");return new qs(a,o,p)}evaluate(e){for(const[r,a]of this.branches)if(r.evaluate(e))return a.evaluate(e);return this.otherwise.evaluate(e)}eachChild(e){for(const[r,a]of this.branches)e(r),e(a);e(this.otherwise)}outputDefined(){return this.branches.every((([e,r])=>r.outputDefined()))&&this.otherwise.outputDefined()}}class es{constructor(e,r,a,o){this.type=e,this.input=r,this.beginIndex=a,this.endIndex=o}static parse(e,r){if(e.length<=2||e.length>=5)return r.error(`Expected 3 or 4 arguments, but found ${e.length-1} instead.`);const a=r.parse(e[1],1,it),o=r.parse(e[2],2,ke);if(!a||!o)return null;if(!W(a.type,[j(it),nt,it]))return r.error(`Expected first argument to be of type array or string, but found ${Z(a.type)} instead`);if(e.length===4){const p=r.parse(e[3],3,ke);return p?new es(a.type,a,o,p):null}return new es(a.type,a,o)}evaluate(e){const r=this.input.evaluate(e),a=this.beginIndex.evaluate(e);if(!ie(r,["string","array"]))throw new Nt(`Expected first argument to be of type array or string, but found ${Z(Lt(r))} instead.`);if(this.endIndex){const o=this.endIndex.evaluate(e);return r.slice(a,o)}return r.slice(a)}eachChild(e){e(this.input),e(this.beginIndex),this.endIndex&&e(this.endIndex)}outputDefined(){return!1}}function el(i,e){return i==="=="||i==="!="?e.kind==="boolean"||e.kind==="string"||e.kind==="number"||e.kind==="null"||e.kind==="value":e.kind==="string"||e.kind==="number"||e.kind==="value"}function tl(i,e,r,a){return a.compare(e,r)===0}function Zn(i,e,r){const a=i!=="=="&&i!=="!=";return class sd{constructor(p,f,m){this.type=et,this.lhs=p,this.rhs=f,this.collator=m,this.hasUntypedArgument=p.type.kind==="value"||f.type.kind==="value"}static parse(p,f){if(p.length!==3&&p.length!==4)return f.error("Expected two or three arguments.");const m=p[0];let y=f.parse(p[1],1,it);if(!y)return null;if(!el(m,y.type))return f.concat(1).error(`"${m}" comparisons are not supported for type '${Z(y.type)}'.`);let v=f.parse(p[2],2,it);if(!v)return null;if(!el(m,v.type))return f.concat(2).error(`"${m}" comparisons are not supported for type '${Z(v.type)}'.`);if(y.type.kind!==v.type.kind&&y.type.kind!=="value"&&v.type.kind!=="value")return f.error(`Cannot compare types '${Z(y.type)}' and '${Z(v.type)}'.`);a&&(y.type.kind==="value"&&v.type.kind!=="value"?y=new sr(v.type,[y]):y.type.kind!=="value"&&v.type.kind==="value"&&(v=new sr(y.type,[v])));let S=null;if(p.length===4){if(y.type.kind!=="string"&&v.type.kind!=="string"&&y.type.kind!=="value"&&v.type.kind!=="value")return f.error("Cannot use collator to compare non-string types.");if(S=f.parse(p[3],3,Dr),!S)return null}return new sd(y,v,S)}evaluate(p){const f=this.lhs.evaluate(p),m=this.rhs.evaluate(p);if(a&&this.hasUntypedArgument){const y=Lt(f),v=Lt(m);if(y.kind!==v.kind||y.kind!=="string"&&y.kind!=="number")throw new Nt(`Expected arguments for "${i}" to be (string, string) or (number, number), but found (${y.kind}, ${v.kind}) instead.`)}if(this.collator&&!a&&this.hasUntypedArgument){const y=Lt(f),v=Lt(m);if(y.kind!=="string"||v.kind!=="string")return e(p,f,m)}return this.collator?r(p,f,m,this.collator.evaluate(p)):e(p,f,m)}eachChild(p){p(this.lhs),p(this.rhs),this.collator&&p(this.collator)}outputDefined(){return!0}}}const _c=Zn("==",(function(i,e,r){return e===r}),tl),yc=Zn("!=",(function(i,e,r){return e!==r}),(function(i,e,r,a){return!tl(0,e,r,a)})),xc=Zn("<",(function(i,e,r){return e<r}),(function(i,e,r,a){return a.compare(e,r)<0})),vc=Zn(">",(function(i,e,r){return e>r}),(function(i,e,r,a){return a.compare(e,r)>0})),bc=Zn("<=",(function(i,e,r){return e<=r}),(function(i,e,r,a){return a.compare(e,r)<=0})),wc=Zn(">=",(function(i,e,r){return e>=r}),(function(i,e,r,a){return a.compare(e,r)>=0}));class Zs{constructor(e,r,a,o,p){this.type=nt,this.number=e,this.locale=r,this.currency=a,this.minFractionDigits=o,this.maxFractionDigits=p}static parse(e,r){if(e.length!==3)return r.error("Expected two arguments.");const a=r.parse(e[1],1,ke);if(!a)return null;const o=e[2];if(typeof o!="object"||Array.isArray(o))return r.error("NumberFormat options argument must be an object.");let p=null;if(o.locale&&(p=r.parse(o.locale,1,nt),!p))return null;let f=null;if(o.currency&&(f=r.parse(o.currency,1,nt),!f))return null;let m=null;if(o["min-fraction-digits"]&&(m=r.parse(o["min-fraction-digits"],1,ke),!m))return null;let y=null;return o["max-fraction-digits"]&&(y=r.parse(o["max-fraction-digits"],1,ke),!y)?null:new Zs(a,p,f,m,y)}evaluate(e){return new Intl.NumberFormat(this.locale?this.locale.evaluate(e):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.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.minFractionDigits&&e(this.minFractionDigits),this.maxFractionDigits&&e(this.maxFractionDigits)}outputDefined(){return!1}}class ts{constructor(e){this.type=U,this.sections=e}static parse(e,r){if(e.length<2)return r.error("Expected at least one argument.");const a=e[1];if(!Array.isArray(a)&&typeof a=="object")return r.error("First argument must be an image or text section.");const o=[];let p=!1;for(let f=1;f<=e.length-1;++f){const m=e[f];if(p&&typeof m=="object"&&!Array.isArray(m)){p=!1;let y=null;if(m["font-scale"]&&(y=r.parse(m["font-scale"],1,ke),!y))return null;let v=null;if(m["text-font"]&&(v=r.parse(m["text-font"],1,j(nt)),!v))return null;let S=null;if(m["text-color"]&&(S=r.parse(m["text-color"],1,Si),!S))return null;const A=o[o.length-1];A.scale=y,A.font=v,A.textColor=S}else{const y=r.parse(e[f],1,it);if(!y)return null;const v=y.type.kind;if(v!=="string"&&v!=="value"&&v!=="null"&&v!=="resolvedImage")return r.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");p=!0,o.push({content:y,scale:null,font:null,textColor:null})}}return new ts(o)}evaluate(e){return new gi(this.sections.map((r=>{const a=r.content.evaluate(e);return Lt(a)===E?new Va("",a,null,null,null):new Va(mt(a),null,r.scale?r.scale.evaluate(e):null,r.font?r.font.evaluate(e).join(","):null,r.textColor?r.textColor.evaluate(e):null)})))}eachChild(e){for(const r of this.sections)e(r.content),r.scale&&e(r.scale),r.font&&e(r.font),r.textColor&&e(r.textColor)}outputDefined(){return!1}}class Gs{constructor(e){this.type=E,this.input=e}static parse(e,r){if(e.length!==2)return r.error("Expected two arguments.");const a=r.parse(e[1],1,nt);return a?new Gs(a):r.error("No image name provided.")}evaluate(e){const r=this.input.evaluate(e),a=ui.fromString(r);return a&&e.availableImages&&(a.available=e.availableImages.indexOf(r)>-1),a}eachChild(e){e(this.input)}outputDefined(){return!1}}class Hs{constructor(e){this.type=ke,this.input=e}static parse(e,r){if(e.length!==2)return r.error(`Expected 1 argument, but found ${e.length-1} instead.`);const a=r.parse(e[1],1);return a?a.type.kind!=="array"&&a.type.kind!=="string"&&a.type.kind!=="value"?r.error(`Expected argument of type string or array, but found ${Z(a.type)} instead.`):new Hs(a):null}evaluate(e){const r=this.input.evaluate(e);if(typeof r=="string"||Array.isArray(r))return r.length;throw new Nt(`Expected value to be of type string or array, but found ${Z(Lt(r))} instead.`)}eachChild(e){e(this.input)}outputDefined(){return!1}}const Gn={"==":_c,"!=":yc,">":vc,"<":xc,">=":wc,"<=":bc,array:sr,at:Us,boolean:sr,case:qs,coalesce:Ya,collator:qa,format:ts,image:Gs,in:$s,"index-of":Qa,interpolate:Zi,"interpolate-hcl":Zi,"interpolate-lab":Zi,length:Hs,let:Ja,literal:_n,match:js,number:sr,"number-format":Zs,object:sr,slice:es,step:Qr,string:sr,"to-boolean":Yr,"to-color":Yr,"to-number":Yr,"to-string":Yr,var:Ga,within:yn};function il(i,[e,r,a,o]){e=e.evaluate(i),r=r.evaluate(i),a=a.evaluate(i);const p=o?o.evaluate(i):1,f=Ua(e,r,a,p);if(f)throw new Nt(f);return new vt(e/255,r/255,a/255,p,!1)}function rl(i,e){return i in e}function Ws(i,e){const r=e[i];return r===void 0?null:r}function xn(i){return{type:i}}function nl(i){return{result:"success",value:i}}function en(i){return{result:"error",value:i}}function Hn(i){return i["property-type"]==="data-driven"||i["property-type"]==="cross-faded-data-driven"}function al(i){return!!i.expression&&i.expression.parameters.indexOf("zoom")>-1}function Xs(i){return!!i.expression&&i.expression.interpolated}function gt(i){return i instanceof Number?"number":i instanceof String?"string":i instanceof Boolean?"boolean":Array.isArray(i)?"array":i===null?"null":typeof i}function Rt(i){return typeof i=="object"&&i!==null&&!Array.isArray(i)}function Sc(i){return i}function ht(i,e){const r=e.type==="color",a=i.stops&&typeof i.stops[0][0]=="object",o=a||!(a||i.property!==void 0),p=i.type||(Xs(e)?"exponential":"interval");if(r||e.type==="padding"){const S=r?vt.parse:ji.parse;(i=xr({},i)).stops&&(i.stops=i.stops.map((A=>[A[0],S(A[1])]))),i.default=S(i.default?i.default:e.default)}if(i.colorSpace&&(f=i.colorSpace)!=="rgb"&&f!=="hcl"&&f!=="lab")throw new Error(`Unknown color space: "${i.colorSpace}"`);var f;let m,y,v;if(p==="exponential")m=fa;else if(p==="interval")m=zt;else if(p==="categorical"){m=Ft,y=Object.create(null);for(const S of i.stops)y[S[0]]=S[1];v=typeof i.stops[0][0]}else{if(p!=="identity")throw new Error(`Unknown function type "${p}"`);m=sl}if(a){const S={},A=[];for(let L=0;L<i.stops.length;L++){const O=i.stops[L],q=O[0].zoom;S[q]===void 0&&(S[q]={zoom:q,type:i.type,property:i.property,default:i.default,stops:[]},A.push(q)),S[q].stops.push([O[0].value,O[1]])}const M=[];for(const L of A)M.push([S[L].zoom,ht(S[L],e)]);const D={name:"linear"};return{kind:"composite",interpolationType:D,interpolationFactor:Zi.interpolationFactor.bind(void 0,D),zoomStops:M.map((L=>L[0])),evaluate:({zoom:L},O)=>fa({stops:M,base:i.base},e,L).evaluate(L,O)}}if(o){const S=p==="exponential"?{name:"exponential",base:i.base!==void 0?i.base:1}:null;return{kind:"camera",interpolationType:S,interpolationFactor:Zi.interpolationFactor.bind(void 0,S),zoomStops:i.stops.map((A=>A[0])),evaluate:({zoom:A})=>m(i,e,A,y,v)}}return{kind:"source",evaluate(S,A){const M=A&&A.properties?A.properties[i.property]:void 0;return M===void 0?vn(i.default,e.default):m(i,e,M,y,v)}}}function vn(i,e,r){return i!==void 0?i:e!==void 0?e:r!==void 0?r:void 0}function Ft(i,e,r,a,o){return vn(typeof r===o?a[r]:void 0,i.default,e.default)}function zt(i,e,r){if(gt(r)!=="number")return vn(i.default,e.default);const a=i.stops.length;if(a===1||r<=i.stops[0][0])return i.stops[0][1];if(r>=i.stops[a-1][0])return i.stops[a-1][1];const o=qn(i.stops.map((p=>p[0])),r);return i.stops[o][1]}function fa(i,e,r){const a=i.base!==void 0?i.base:1;if(gt(r)!=="number")return vn(i.default,e.default);const o=i.stops.length;if(o===1||r<=i.stops[0][0])return i.stops[0][1];if(r>=i.stops[o-1][0])return i.stops[o-1][1];const p=qn(i.stops.map((S=>S[0])),r),f=(function(S,A,M,D){const L=D-M,O=S-M;return L===0?0:A===1?O/L:(Math.pow(A,O)-1)/(Math.pow(A,L)-1)})(r,a,i.stops[p][0],i.stops[p+1][0]),m=i.stops[p][1],y=i.stops[p+1][1],v=qi[e.type]||Sc;return typeof m.evaluate=="function"?{evaluate(...S){const A=m.evaluate.apply(void 0,S),M=y.evaluate.apply(void 0,S);if(A!==void 0&&M!==void 0)return v(A,M,f,i.colorSpace)}}:v(m,y,f,i.colorSpace)}function sl(i,e,r){switch(e.type){case"color":r=vt.parse(r);break;case"formatted":r=gi.fromString(r.toString());break;case"resolvedImage":r=ui.fromString(r.toString());break;case"padding":r=ji.parse(r);break;default:gt(r)===e.type||e.type==="enum"&&e.values[r]||(r=void 0)}return vn(r,i.default,e.default)}or.register(Gn,{error:[{kind:"error"},[nt],(i,[e])=>{throw new Nt(e.evaluate(i))}],typeof:[nt,[it],(i,[e])=>Z(Lt(e.evaluate(i)))],"to-rgba":[j(ke,4),[Si],(i,[e])=>{const[r,a,o,p]=e.evaluate(i).rgb;return[255*r,255*a,255*o,p]}],rgb:[Si,[ke,ke,ke],il],rgba:[Si,[ke,ke,ke,ke],il],has:{type:et,overloads:[[[nt],(i,[e])=>rl(e.evaluate(i),i.properties())],[[nt,vr],(i,[e,r])=>rl(e.evaluate(i),r.evaluate(i))]]},get:{type:it,overloads:[[[nt],(i,[e])=>Ws(e.evaluate(i),i.properties())],[[nt,vr],(i,[e,r])=>Ws(e.evaluate(i),r.evaluate(i))]]},"feature-state":[it,[nt],(i,[e])=>Ws(e.evaluate(i),i.featureState||{})],properties:[vr,[],i=>i.properties()],"geometry-type":[nt,[],i=>i.geometryType()],id:[it,[],i=>i.id()],zoom:[ke,[],i=>i.globals.zoom],"heatmap-density":[ke,[],i=>i.globals.heatmapDensity||0],"line-progress":[ke,[],i=>i.globals.lineProgress||0],accumulated:[it,[],i=>i.globals.accumulated===void 0?null:i.globals.accumulated],"+":[ke,xn(ke),(i,e)=>{let r=0;for(const a of e)r+=a.evaluate(i);return r}],"*":[ke,xn(ke),(i,e)=>{let r=1;for(const a of e)r*=a.evaluate(i);return r}],"-":{type:ke,overloads:[[[ke,ke],(i,[e,r])=>e.evaluate(i)-r.evaluate(i)],[[ke],(i,[e])=>-e.evaluate(i)]]},"/":[ke,[ke,ke],(i,[e,r])=>e.evaluate(i)/r.evaluate(i)],"%":[ke,[ke,ke],(i,[e,r])=>e.evaluate(i)%r.evaluate(i)],ln2:[ke,[],()=>Math.LN2],pi:[ke,[],()=>Math.PI],e:[ke,[],()=>Math.E],"^":[ke,[ke,ke],(i,[e,r])=>Math.pow(e.evaluate(i),r.evaluate(i))],sqrt:[ke,[ke],(i,[e])=>Math.sqrt(e.evaluate(i))],log10:[ke,[ke],(i,[e])=>Math.log(e.evaluate(i))/Math.LN10],ln:[ke,[ke],(i,[e])=>Math.log(e.evaluate(i))],log2:[ke,[ke],(i,[e])=>Math.log(e.evaluate(i))/Math.LN2],sin:[ke,[ke],(i,[e])=>Math.sin(e.evaluate(i))],cos:[ke,[ke],(i,[e])=>Math.cos(e.evaluate(i))],tan:[ke,[ke],(i,[e])=>Math.tan(e.evaluate(i))],asin:[ke,[ke],(i,[e])=>Math.asin(e.evaluate(i))],acos:[ke,[ke],(i,[e])=>Math.acos(e.evaluate(i))],atan:[ke,[ke],(i,[e])=>Math.atan(e.evaluate(i))],min:[ke,xn(ke),(i,e)=>Math.min(...e.map((r=>r.evaluate(i))))],max:[ke,xn(ke),(i,e)=>Math.max(...e.map((r=>r.evaluate(i))))],abs:[ke,[ke],(i,[e])=>Math.abs(e.evaluate(i))],round:[ke,[ke],(i,[e])=>{const r=e.evaluate(i);return r<0?-Math.round(-r):Math.round(r)}],floor:[ke,[ke],(i,[e])=>Math.floor(e.evaluate(i))],ceil:[ke,[ke],(i,[e])=>Math.ceil(e.evaluate(i))],"filter-==":[et,[nt,it],(i,[e,r])=>i.properties()[e.value]===r.value],"filter-id-==":[et,[it],(i,[e])=>i.id()===e.value],"filter-type-==":[et,[nt],(i,[e])=>i.geometryType()===e.value],"filter-<":[et,[nt,it],(i,[e,r])=>{const a=i.properties()[e.value],o=r.value;return typeof a==typeof o&&a<o}],"filter-id-<":[et,[it],(i,[e])=>{const r=i.id(),a=e.value;return typeof r==typeof a&&r<a}],"filter->":[et,[nt,it],(i,[e,r])=>{const a=i.properties()[e.value],o=r.value;return typeof a==typeof o&&a>o}],"filter-id->":[et,[it],(i,[e])=>{const r=i.id(),a=e.value;return typeof r==typeof a&&r>a}],"filter-<=":[et,[nt,it],(i,[e,r])=>{const a=i.properties()[e.value],o=r.value;return typeof a==typeof o&&a<=o}],"filter-id-<=":[et,[it],(i,[e])=>{const r=i.id(),a=e.value;return typeof r==typeof a&&r<=a}],"filter->=":[et,[nt,it],(i,[e,r])=>{const a=i.properties()[e.value],o=r.value;return typeof a==typeof o&&a>=o}],"filter-id->=":[et,[it],(i,[e])=>{const r=i.id(),a=e.value;return typeof r==typeof a&&r>=a}],"filter-has":[et,[it],(i,[e])=>e.value in i.properties()],"filter-has-id":[et,[],i=>i.id()!==null&&i.id()!==void 0],"filter-type-in":[et,[j(nt)],(i,[e])=>e.value.indexOf(i.geometryType())>=0],"filter-id-in":[et,[j(it)],(i,[e])=>e.value.indexOf(i.id())>=0],"filter-in-small":[et,[nt,j(it)],(i,[e,r])=>r.value.indexOf(i.properties()[e.value])>=0],"filter-in-large":[et,[nt,j(it)],(i,[e,r])=>(function(a,o,p,f){for(;p<=f;){const m=p+f>>1;if(o[m]===a)return!0;o[m]>a?f=m-1:p=m+1}return!1})(i.properties()[e.value],r.value,0,r.value.length-1)],all:{type:et,overloads:[[[et,et],(i,[e,r])=>e.evaluate(i)&&r.evaluate(i)],[xn(et),(i,e)=>{for(const r of e)if(!r.evaluate(i))return!1;return!0}]]},any:{type:et,overloads:[[[et,et],(i,[e,r])=>e.evaluate(i)||r.evaluate(i)],[xn(et),(i,e)=>{for(const r of e)if(r.evaluate(i))return!0;return!1}]]},"!":[et,[et],(i,[e])=>!e.evaluate(i)],"is-supported-script":[et,[nt],(i,[e])=>{const r=i.globals&&i.globals.isSupportedScript;return!r||r(e.evaluate(i))}],upcase:[nt,[nt],(i,[e])=>e.evaluate(i).toUpperCase()],downcase:[nt,[nt],(i,[e])=>e.evaluate(i).toLowerCase()],concat:[nt,xn(it),(i,e)=>e.map((r=>mt(r.evaluate(i)))).join("")],"resolved-locale":[nt,[Dr],(i,[e])=>e.evaluate(i).resolvedLocale()]});class Ks{constructor(e,r){var a;this.expression=e,this._warningHistory={},this._evaluator=new Ls,this._defaultValue=r?(a=r).type==="color"&&Rt(a.default)?new vt(0,0,0,0):a.type==="color"?vt.parse(a.default)||null:a.type==="padding"?ji.parse(a.default)||null:a.type==="variableAnchorOffsetCollection"?ar.parse(a.default)||null:a.default===void 0?null:a.default:null,this._enumValues=r&&r.type==="enum"?r.values:null}evaluateWithoutErrorHandling(e,r,a,o,p,f){return this._evaluator.globals=e,this._evaluator.feature=r,this._evaluator.featureState=a,this._evaluator.canonical=o,this._evaluator.availableImages=p||null,this._evaluator.formattedSection=f,this.expression.evaluate(this._evaluator)}evaluate(e,r,a,o,p,f){this._evaluator.globals=e,this._evaluator.feature=r||null,this._evaluator.featureState=a||null,this._evaluator.canonical=o,this._evaluator.availableImages=p||null,this._evaluator.formattedSection=f||null;try{const m=this.expression.evaluate(this._evaluator);if(m==null||typeof m=="number"&&m!=m)return this._defaultValue;if(this._enumValues&&!(m in this._enumValues))throw new Nt(`Expected value to be one of ${Object.keys(this._enumValues).map((y=>JSON.stringify(y))).join(", ")}, but found ${JSON.stringify(m)} instead.`);return m}catch(m){return this._warningHistory[m.message]||(this._warningHistory[m.message]=!0,typeof console<"u"&&console.warn(m.message)),this._defaultValue}}}function is(i){return Array.isArray(i)&&i.length>0&&typeof i[0]=="string"&&i[0]in Gn}function rs(i,e){const r=new ja(Gn,Ha,[],e?(function(o){const p={color:Si,string:nt,number:ke,enum:nt,boolean:et,formatted:U,padding:C,resolvedImage:E,variableAnchorOffsetCollection:F};return o.type==="array"?j(p[o.value]||it,o.length):p[o.type]})(e):void 0),a=r.parse(i,void 0,void 0,void 0,e&&e.type==="string"?{typeAnnotation:"coerce"}:void 0);return a?nl(new Ks(a,e)):en(r.errors)}class Ys{constructor(e,r){this.kind=e,this._styleExpression=r,this.isStateDependent=e!=="constant"&&!da(r.expression)}evaluateWithoutErrorHandling(e,r,a,o,p,f){return this._styleExpression.evaluateWithoutErrorHandling(e,r,a,o,p,f)}evaluate(e,r,a,o,p,f){return this._styleExpression.evaluate(e,r,a,o,p,f)}}class ns{constructor(e,r,a,o){this.kind=e,this.zoomStops=a,this._styleExpression=r,this.isStateDependent=e!=="camera"&&!da(r.expression),this.interpolationType=o}evaluateWithoutErrorHandling(e,r,a,o,p,f){return this._styleExpression.evaluateWithoutErrorHandling(e,r,a,o,p,f)}evaluate(e,r,a,o,p,f){return this._styleExpression.evaluate(e,r,a,o,p,f)}interpolationFactor(e,r,a){return this.interpolationType?Zi.interpolationFactor(this.interpolationType,e,r,a):0}}function Js(i,e){const r=rs(i,e);if(r.result==="error")return r;const a=r.value.expression,o=Wa(a);if(!o&&!Hn(e))return en([new Ot("","data expressions not supported")]);const p=Xa(a,["zoom"]);if(!p&&!al(e))return en([new Ot("","zoom expressions not supported")]);const f=ga(a);return f||p?f instanceof Ot?en([f]):f instanceof Zi&&!Xs(e)?en([new Ot("",'"interpolate" expressions cannot be used with this property')]):nl(f?new ns(o?"camera":"composite",r.value,f.labels,f instanceof Zi?f.interpolation:void 0):new Ys(o?"constant":"source",r.value)):en([new Ot("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class ma{constructor(e,r){this._parameters=e,this._specification=r,xr(this,ht(this._parameters,this._specification))}static deserialize(e){return new ma(e._parameters,e._specification)}static serialize(e){return{_parameters:e._parameters,_specification:e._specification}}}function ga(i){let e=null;if(i instanceof Ja)e=ga(i.result);else if(i instanceof Ya){for(const r of i.args)if(e=ga(r),e)break}else(i instanceof Qr||i instanceof Zi)&&i.input instanceof or&&i.input.name==="zoom"&&(e=i);return e instanceof Ot||i.eachChild((r=>{const a=ga(r);a instanceof Ot?e=a:!e&&a?e=new Ot("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):e&&a&&e!==a&&(e=new Ot("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))})),e}function _a(i){if(i===!0||i===!1)return!0;if(!Array.isArray(i)||i.length===0)return!1;switch(i[0]){case"has":return i.length>=2&&i[1]!=="$id"&&i[1]!=="$type";case"in":return i.length>=3&&(typeof i[1]!="string"||Array.isArray(i[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return i.length!==3||Array.isArray(i[1])||Array.isArray(i[2]);case"any":case"all":for(const e of i.slice(1))if(!_a(e)&&typeof e!="boolean")return!1;return!0;default:return!0}}const Tc={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function Qs(i){if(i==null)return{filter:()=>!0,needGeometry:!1};_a(i)||(i=as(i));const e=rs(i,Tc);if(e.result==="error")throw new Error(e.value.map((r=>`${r.key}: ${r.message}`)).join(", "));return{filter:(r,a,o)=>e.value.evaluate(r,a,{},o),needGeometry:ol(i)}}function Ic(i,e){return i<e?-1:i>e?1:0}function ol(i){if(!Array.isArray(i))return!1;if(i[0]==="within")return!0;for(let e=1;e<i.length;e++)if(ol(i[e]))return!0;return!1}function as(i){if(!i)return!0;const e=i[0];return i.length<=1?e!=="any":e==="=="?eo(i[1],i[2],"=="):e==="!="?ya(eo(i[1],i[2],"==")):e==="<"||e===">"||e==="<="||e===">="?eo(i[1],i[2],e):e==="any"?(r=i.slice(1),["any"].concat(r.map(as))):e==="all"?["all"].concat(i.slice(1).map(as)):e==="none"?["all"].concat(i.slice(1).map(as).map(ya)):e==="in"?ll(i[1],i.slice(2)):e==="!in"?ya(ll(i[1],i.slice(2))):e==="has"?cl(i[1]):e==="!has"?ya(cl(i[1])):e!=="within"||i;var r}function eo(i,e,r){switch(i){case"$type":return[`filter-type-${r}`,e];case"$id":return[`filter-id-${r}`,e];default:return[`filter-${r}`,i,e]}}function ll(i,e){if(e.length===0)return!1;switch(i){case"$type":return["filter-type-in",["literal",e]];case"$id":return["filter-id-in",["literal",e]];default:return e.length>200&&!e.some((r=>typeof r!=typeof e[0]))?["filter-in-large",i,["literal",e.sort(Ic)]]:["filter-in-small",i,["literal",e]]}}function cl(i){switch(i){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",i]}}function ya(i){return["!",i]}function ss(i){const e=typeof i;if(e==="number"||e==="boolean"||e==="string"||i==null)return JSON.stringify(i);if(Array.isArray(i)){let o="[";for(const p of i)o+=`${ss(p)},`;return`${o}]`}const r=Object.keys(i).sort();let a="{";for(let o=0;o<r.length;o++)a+=`${JSON.stringify(r[o])}:${ss(i[r[o]])},`;return`${a}}`}function os(i){let e="";for(const r of zi)e+=`/${ss(i[r])}`;return e}function ul(i){const e=i.value;return e?[new Ie(i.key,e,"constants have been deprecated as of v8")]:[]}function Vt(i){return i instanceof Number||i instanceof String||i instanceof Boolean?i.valueOf():i}function bn(i){if(Array.isArray(i))return i.map(bn);if(i instanceof Object&&!(i instanceof Number||i instanceof String||i instanceof Boolean)){const e={};for(const r in i)e[r]=bn(i[r]);return e}return Vt(i)}function Di(i){const e=i.key,r=i.value,a=i.valueSpec||{},o=i.objectElementValidators||{},p=i.style,f=i.styleSpec,m=i.validateSpec;let y=[];const v=gt(r);if(v!=="object")return[new Ie(e,r,`object expected, ${v} found`)];for(const S in r){const A=S.split(".")[0],M=a[A]||a["*"];let D;if(o[A])D=o[A];else if(a[A])D=m;else if(o["*"])D=o["*"];else{if(!a["*"]){y.push(new Ie(e,r[S],`unknown property "${S}"`));continue}D=m}y=y.concat(D({key:(e&&`${e}.`)+S,value:r[S],valueSpec:M,style:p,styleSpec:f,object:r,objectKey:S,validateSpec:m},r))}for(const S in a)o[S]||a[S].required&&a[S].default===void 0&&r[S]===void 0&&y.push(new Ie(e,r,`missing required property "${S}"`));return y}function Wn(i){const e=i.value,r=i.valueSpec,a=i.style,o=i.styleSpec,p=i.key,f=i.arrayElementValidator||i.validateSpec;if(gt(e)!=="array")return[new Ie(p,e,`array expected, ${gt(e)} found`)];if(r.length&&e.length!==r.length)return[new Ie(p,e,`array length ${r.length} expected, length ${e.length} found`)];if(r["min-length"]&&e.length<r["min-length"])return[new Ie(p,e,`array length at least ${r["min-length"]} expected, length ${e.length} found`)];let m={type:r.value,values:r.values};o.$version<7&&(m.function=r.function),gt(r.value)==="object"&&(m=r.value);let y=[];for(let v=0;v<e.length;v++)y=y.concat(f({array:e,arrayIndex:v,value:e[v],valueSpec:m,validateSpec:i.validateSpec,style:a,styleSpec:o,key:`${p}[${v}]`}));return y}function xa(i){const e=i.key,r=i.value,a=i.valueSpec;let o=gt(r);return o==="number"&&r!=r&&(o="NaN"),o!=="number"?[new Ie(e,r,`number expected, ${o} found`)]:"minimum"in a&&r<a.minimum?[new Ie(e,r,`${r} is less than the minimum value ${a.minimum}`)]:"maximum"in a&&r>a.maximum?[new Ie(e,r,`${r} is greater than the maximum value ${a.maximum}`)]:[]}function ls(i){const e=i.valueSpec,r=Vt(i.value.type);let a,o,p,f={};const m=r!=="categorical"&&i.value.property===void 0,y=!m,v=gt(i.value.stops)==="array"&&gt(i.value.stops[0])==="array"&&gt(i.value.stops[0][0])==="object",S=Di({key:i.key,value:i.value,valueSpec:i.styleSpec.function,validateSpec:i.validateSpec,style:i.style,styleSpec:i.styleSpec,objectElementValidators:{stops:function(D){if(r==="identity")return[new Ie(D.key,D.value,'identity function may not have a "stops" property')];let L=[];const O=D.value;return L=L.concat(Wn({key:D.key,value:O,valueSpec:D.valueSpec,validateSpec:D.validateSpec,style:D.style,styleSpec:D.styleSpec,arrayElementValidator:A})),gt(O)==="array"&&O.length===0&&L.push(new Ie(D.key,O,"array must have at least one stop")),L},default:function(D){return D.validateSpec({key:D.key,value:D.value,valueSpec:e,validateSpec:D.validateSpec,style:D.style,styleSpec:D.styleSpec})}}});return r==="identity"&&m&&S.push(new Ie(i.key,i.value,'missing required property "property"')),r==="identity"||i.value.stops||S.push(new Ie(i.key,i.value,'missing required property "stops"')),r==="exponential"&&i.valueSpec.expression&&!Xs(i.valueSpec)&&S.push(new Ie(i.key,i.value,"exponential functions not supported")),i.styleSpec.$version>=8&&(y&&!Hn(i.valueSpec)?S.push(new Ie(i.key,i.value,"property functions not supported")):m&&!al(i.valueSpec)&&S.push(new Ie(i.key,i.value,"zoom functions not supported"))),r!=="categorical"&&!v||i.value.property!==void 0||S.push(new Ie(i.key,i.value,'"property" property is required')),S;function A(D){let L=[];const O=D.value,q=D.key;if(gt(O)!=="array")return[new Ie(q,O,`array expected, ${gt(O)} found`)];if(O.length!==2)return[new Ie(q,O,`array length 2 expected, length ${O.length} found`)];if(v){if(gt(O[0])!=="object")return[new Ie(q,O,`object expected, ${gt(O[0])} found`)];if(O[0].zoom===void 0)return[new Ie(q,O,"object stop key must have zoom")];if(O[0].value===void 0)return[new Ie(q,O,"object stop key must have value")];if(p&&p>Vt(O[0].zoom))return[new Ie(q,O[0].zoom,"stop zoom values must appear in ascending order")];Vt(O[0].zoom)!==p&&(p=Vt(O[0].zoom),o=void 0,f={}),L=L.concat(Di({key:`${q}[0]`,value:O[0],valueSpec:{zoom:{}},validateSpec:D.validateSpec,style:D.style,styleSpec:D.styleSpec,objectElementValidators:{zoom:xa,value:M}}))}else L=L.concat(M({key:`${q}[0]`,value:O[0],validateSpec:D.validateSpec,style:D.style,styleSpec:D.styleSpec},O));return is(bn(O[1]))?L.concat([new Ie(`${q}[1]`,O[1],"expressions are not allowed in function stops.")]):L.concat(D.validateSpec({key:`${q}[1]`,value:O[1],valueSpec:e,validateSpec:D.validateSpec,style:D.style,styleSpec:D.styleSpec}))}function M(D,L){const O=gt(D.value),q=Vt(D.value),H=D.value!==null?D.value:L;if(a){if(O!==a)return[new Ie(D.key,H,`${O} stop domain type must match previous stop domain type ${a}`)]}else a=O;if(O!=="number"&&O!=="string"&&O!=="boolean")return[new Ie(D.key,H,"stop domain value must be a number, string, or boolean")];if(O!=="number"&&r!=="categorical"){let re=`number expected, ${O} found`;return Hn(e)&&r===void 0&&(re+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new Ie(D.key,H,re)]}return r!=="categorical"||O!=="number"||isFinite(q)&&Math.floor(q)===q?r!=="categorical"&&O==="number"&&o!==void 0&&q<o?[new Ie(D.key,H,"stop domain values must appear in ascending order")]:(o=q,r==="categorical"&&q in f?[new Ie(D.key,H,"stop domain values must be unique")]:(f[q]=!0,[])):[new Ie(D.key,H,`integer expected, found ${q}`)]}}function wn(i){const e=(i.expressionContext==="property"?Js:rs)(bn(i.value),i.valueSpec);if(e.result==="error")return e.value.map((a=>new Ie(`${i.key}${a.key}`,i.value,a.message)));const r=e.value.expression||e.value._styleExpression.expression;if(i.expressionContext==="property"&&i.propertyKey==="text-font"&&!r.outputDefined())return[new Ie(i.key,i.value,`Invalid data expression for "${i.propertyKey}". Output values must be contained as literals within the expression.`)];if(i.expressionContext==="property"&&i.propertyType==="layout"&&!da(r))return[new Ie(i.key,i.value,'"feature-state" data expressions are not supported with layout properties.')];if(i.expressionContext==="filter"&&!da(r))return[new Ie(i.key,i.value,'"feature-state" data expressions are not supported with filters.')];if(i.expressionContext&&i.expressionContext.indexOf("cluster")===0){if(!Xa(r,["zoom","feature-state"]))return[new Ie(i.key,i.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if(i.expressionContext==="cluster-initial"&&!Wa(r))return[new Ie(i.key,i.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function va(i){const e=i.key,r=i.value,a=i.valueSpec,o=[];return Array.isArray(a.values)?a.values.indexOf(Vt(r))===-1&&o.push(new Ie(e,r,`expected one of [${a.values.join(", ")}], ${JSON.stringify(r)} found`)):Object.keys(a.values).indexOf(Vt(r))===-1&&o.push(new Ie(e,r,`expected one of [${Object.keys(a.values).join(", ")}], ${JSON.stringify(r)} found`)),o}function Xn(i){return _a(bn(i.value))?wn(xr({},i,{expressionContext:"filter",valueSpec:{value:"boolean"}})):hl(i)}function hl(i){const e=i.value,r=i.key;if(gt(e)!=="array")return[new Ie(r,e,`array expected, ${gt(e)} found`)];const a=i.styleSpec;let o,p=[];if(e.length<1)return[new Ie(r,e,"filter array must have at least 1 element")];switch(p=p.concat(va({key:`${r}[0]`,value:e[0],valueSpec:a.filter_operator,style:i.style,styleSpec:i.styleSpec})),Vt(e[0])){case"<":case"<=":case">":case">=":e.length>=2&&Vt(e[1])==="$type"&&p.push(new Ie(r,e,`"$type" cannot be use with operator "${e[0]}"`));case"==":case"!=":e.length!==3&&p.push(new Ie(r,e,`filter array for operator "${e[0]}" must have 3 elements`));case"in":case"!in":e.length>=2&&(o=gt(e[1]),o!=="string"&&p.push(new Ie(`${r}[1]`,e[1],`string expected, ${o} found`)));for(let f=2;f<e.length;f++)o=gt(e[f]),Vt(e[1])==="$type"?p=p.concat(va({key:`${r}[${f}]`,value:e[f],valueSpec:a.geometry_type,style:i.style,styleSpec:i.styleSpec})):o!=="string"&&o!=="number"&&o!=="boolean"&&p.push(new Ie(`${r}[${f}]`,e[f],`string, number, or boolean expected, ${o} found`));break;case"any":case"all":case"none":for(let f=1;f<e.length;f++)p=p.concat(hl({key:`${r}[${f}]`,value:e[f],style:i.style,styleSpec:i.styleSpec}));break;case"has":case"!has":o=gt(e[1]),e.length!==2?p.push(new Ie(r,e,`filter array for "${e[0]}" operator must have 2 elements`)):o!=="string"&&p.push(new Ie(`${r}[1]`,e[1],`string expected, ${o} found`));break;case"within":o=gt(e[1]),e.length!==2?p.push(new Ie(r,e,`filter array for "${e[0]}" operator must have 2 elements`)):o!=="object"&&p.push(new Ie(`${r}[1]`,e[1],`object expected, ${o} found`))}return p}function pl(i,e){const r=i.key,a=i.validateSpec,o=i.style,p=i.styleSpec,f=i.value,m=i.objectKey,y=p[`${e}_${i.layerType}`];if(!y)return[];const v=m.match(/^(.*)-transition$/);if(e==="paint"&&v&&y[v[1]]&&y[v[1]].transition)return a({key:r,value:f,valueSpec:p.transition,style:o,styleSpec:p});const S=i.valueSpec||y[m];if(!S)return[new Ie(r,f,`unknown property "${m}"`)];let A;if(gt(f)==="string"&&Hn(S)&&!S.tokens&&(A=/^{([^}]+)}$/.exec(f)))return[new Ie(r,f,`"${m}" does not support interpolation syntax
Use an identity property function instead: \`{ "type": "identity", "property": ${JSON.stringify(A[1])} }\`.`)];const M=[];return i.layerType==="symbol"&&(m==="text-field"&&o&&!o.glyphs&&M.push(new Ie(r,f,'use of "text-field" requires a style "glyphs" property')),m==="text-font"&&Rt(bn(f))&&Vt(f.type)==="identity"&&M.push(new Ie(r,f,'"text-font" does not support identity functions'))),M.concat(a({key:i.key,value:f,valueSpec:S,style:o,styleSpec:p,expressionContext:"property",propertyType:e,propertyKey:m}))}function dl(i){return pl(i,"paint")}function fl(i){return pl(i,"layout")}function ml(i){let e=[];const r=i.value,a=i.key,o=i.style,p=i.styleSpec;r.type||r.ref||e.push(new Ie(a,r,'either "type" or "ref" is required'));let f=Vt(r.type);const m=Vt(r.ref);if(r.id){const y=Vt(r.id);for(let v=0;v<i.arrayIndex;v++){const S=o.layers[v];Vt(S.id)===y&&e.push(new Ie(a,r.id,`duplicate layer id "${r.id}", previously used at line ${S.id.__line__}`))}}if("ref"in r){let y;["type","source","source-layer","filter","layout"].forEach((v=>{v in r&&e.push(new Ie(a,r[v],`"${v}" is prohibited for ref layers`))})),o.layers.forEach((v=>{Vt(v.id)===m&&(y=v)})),y?y.ref?e.push(new Ie(a,r.ref,"ref cannot reference another ref layer")):f=Vt(y.type):e.push(new Ie(a,r.ref,`ref layer "${m}" not found`))}else if(f!=="background")if(r.source){const y=o.sources&&o.sources[r.source],v=y&&Vt(y.type);y?v==="vector"&&f==="raster"?e.push(new Ie(a,r.source,`layer "${r.id}" requires a raster source`)):v!=="raster-dem"&&f==="hillshade"?e.push(new Ie(a,r.source,`layer "${r.id}" requires a raster-dem source`)):v==="raster"&&f!=="raster"?e.push(new Ie(a,r.source,`layer "${r.id}" requires a vector source`)):v!=="vector"||r["source-layer"]?v==="raster-dem"&&f!=="hillshade"?e.push(new Ie(a,r.source,"raster-dem source can only be used with layer type 'hillshade'.")):f!=="line"||!r.paint||!r.paint["line-gradient"]||v==="geojson"&&y.lineMetrics||e.push(new Ie(a,r,`layer "${r.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):e.push(new Ie(a,r,`layer "${r.id}" must specify a "source-layer"`)):e.push(new Ie(a,r.source,`source "${r.source}" not found`))}else e.push(new Ie(a,r,'missing required property "source"'));return e=e.concat(Di({key:a,value:r,valueSpec:p.layer,style:i.style,styleSpec:i.styleSpec,validateSpec:i.validateSpec,objectElementValidators:{"*":()=>[],type:()=>i.validateSpec({key:`${a}.type`,value:r.type,valueSpec:p.layer.type,style:i.style,styleSpec:i.styleSpec,validateSpec:i.validateSpec,object:r,objectKey:"type"}),filter:Xn,layout:y=>Di({layer:r,key:y.key,value:y.value,style:y.style,styleSpec:y.styleSpec,validateSpec:y.validateSpec,objectElementValidators:{"*":v=>fl(xr({layerType:f},v))}}),paint:y=>Di({layer:r,key:y.key,value:y.value,style:y.style,styleSpec:y.styleSpec,validateSpec:y.validateSpec,objectElementValidators:{"*":v=>dl(xr({layerType:f},v))}})}})),e}function br(i){const e=i.value,r=i.key,a=gt(e);return a!=="string"?[new Ie(r,e,`string expected, ${a} found`)]:[]}const ba={promoteId:function({key:i,value:e}){if(gt(e)==="string")return br({key:i,value:e});{const r=[];for(const a in e)r.push(...br({key:`${i}.${a}`,value:e[a]}));return r}}};function Gi(i){const e=i.value,r=i.key,a=i.styleSpec,o=i.style,p=i.validateSpec;if(!e.type)return[new Ie(r,e,'"type" is required')];const f=Vt(e.type);let m;switch(f){case"vector":case"raster":return m=Di({key:r,value:e,valueSpec:a[`source_${f.replace("-","_")}`],style:i.style,styleSpec:a,objectElementValidators:ba,validateSpec:p}),m;case"raster-dem":return m=(function(y){var v;const S=(v=y.sourceName)!==null&&v!==void 0?v:"",A=y.value,M=y.styleSpec,D=M.source_raster_dem,L=y.style;let O=[];const q=gt(A);if(A===void 0)return O;if(q!=="object")return O.push(new Ie("source_raster_dem",A,`object expected, ${q} found`)),O;const H=Vt(A.encoding)==="custom",re=["redFactor","greenFactor","blueFactor","baseShift"],Y=y.value.encoding?`"${y.value.encoding}"`:"Default";for(const ae in A)!H&&re.includes(ae)?O.push(new Ie(ae,A[ae],`In "${S}": "${ae}" is only valid when "encoding" is set to "custom". ${Y} encoding found`)):D[ae]?O=O.concat(y.validateSpec({key:ae,value:A[ae],valueSpec:D[ae],validateSpec:y.validateSpec,style:L,styleSpec:M})):O.push(new Ie(ae,A[ae],`unknown property "${ae}"`));return O})({sourceName:r,value:e,style:i.style,styleSpec:a,validateSpec:p}),m;case"geojson":if(m=Di({key:r,value:e,valueSpec:a.source_geojson,style:o,styleSpec:a,validateSpec:p,objectElementValidators:ba}),e.cluster)for(const y in e.clusterProperties){const[v,S]=e.clusterProperties[y],A=typeof v=="string"?[v,["accumulated"],["get",y]]:v;m.push(...wn({key:`${r}.${y}.map`,value:S,expressionContext:"cluster-map"})),m.push(...wn({key:`${r}.${y}.reduce`,value:A,expressionContext:"cluster-reduce"}))}return m;case"video":return Di({key:r,value:e,valueSpec:a.source_video,style:o,validateSpec:p,styleSpec:a});case"image":return Di({key:r,value:e,valueSpec:a.source_image,style:o,validateSpec:p,styleSpec:a});case"canvas":return[new Ie(r,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return va({key:`${r}.type`,value:e.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]}})}}function wa(i){const e=i.value,r=i.styleSpec,a=r.light,o=i.style;let p=[];const f=gt(e);if(e===void 0)return p;if(f!=="object")return p=p.concat([new Ie("light",e,`object expected, ${f} found`)]),p;for(const m in e){const y=m.match(/^(.*)-transition$/);p=p.concat(y&&a[y[1]]&&a[y[1]].transition?i.validateSpec({key:m,value:e[m],valueSpec:r.transition,validateSpec:i.validateSpec,style:o,styleSpec:r}):a[m]?i.validateSpec({key:m,value:e[m],valueSpec:a[m],validateSpec:i.validateSpec,style:o,styleSpec:r}):[new Ie(m,e[m],`unknown property "${m}"`)])}return p}function gl(i){const e=i.value,r=i.styleSpec,a=r.terrain,o=i.style;let p=[];const f=gt(e);if(e===void 0)return p;if(f!=="object")return p=p.concat([new Ie("terrain",e,`object expected, ${f} found`)]),p;for(const m in e)p=p.concat(a[m]?i.validateSpec({key:m,value:e[m],valueSpec:a[m],validateSpec:i.validateSpec,style:o,styleSpec:r}):[new Ie(m,e[m],`unknown property "${m}"`)]);return p}function _l(i){let e=[];const r=i.value,a=i.key;if(Array.isArray(r)){const o=[],p=[];for(const f in r)r[f].id&&o.includes(r[f].id)&&e.push(new Ie(a,r,`all the sprites' ids must be unique, but ${r[f].id} is duplicated`)),o.push(r[f].id),r[f].url&&p.includes(r[f].url)&&e.push(new Ie(a,r,`all the sprites' URLs must be unique, but ${r[f].url} is duplicated`)),p.push(r[f].url),e=e.concat(Di({key:`${a}[${f}]`,value:r[f],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:i.validateSpec}));return e}return br({key:a,value:r})}const yl={"*":()=>[],array:Wn,boolean:function(i){const e=i.value,r=i.key,a=gt(e);return a!=="boolean"?[new Ie(r,e,`boolean expected, ${a} found`)]:[]},number:xa,color:function(i){const e=i.key,r=i.value,a=gt(r);return a!=="string"?[new Ie(e,r,`color expected, ${a} found`)]:vt.parse(String(r))?[]:[new Ie(e,r,`color expected, "${r}" found`)]},constants:ul,enum:va,filter:Xn,function:ls,layer:ml,object:Di,source:Gi,light:wa,terrain:gl,string:br,formatted:function(i){return br(i).length===0?[]:wn(i)},resolvedImage:function(i){return br(i).length===0?[]:wn(i)},padding:function(i){const e=i.key,r=i.value;if(gt(r)==="array"){if(r.length<1||r.length>4)return[new Ie(e,r,`padding requires 1 to 4 values; ${r.length} values found`)];const a={type:"number"};let o=[];for(let p=0;p<r.length;p++)o=o.concat(i.validateSpec({key:`${e}[${p}]`,value:r[p],validateSpec:i.validateSpec,valueSpec:a}));return o}return xa({key:e,value:r,valueSpec:{}})},variableAnchorOffsetCollection:function(i){const e=i.key,r=i.value,a=gt(r),o=i.styleSpec;if(a!=="array"||r.length<1||r.length%2!=0)return[new Ie(e,r,"variableAnchorOffsetCollection requires a non-empty array of even length")];let p=[];for(let f=0;f<r.length;f+=2)p=p.concat(va({key:`${e}[${f}]`,value:r[f],valueSpec:o.layout_symbol["text-anchor"]})),p=p.concat(Wn({key:`${e}[${f+1}]`,value:r[f+1],valueSpec:{length:2,value:"number"},validateSpec:i.validateSpec,style:i.style,styleSpec:o}));return p},sprite:_l};function tn(i){const e=i.value,r=i.valueSpec,a=i.styleSpec;return i.validateSpec=tn,r.expression&&Rt(Vt(e))?ls(i):r.expression&&is(bn(e))?wn(i):r.type&&yl[r.type]?yl[r.type](i):Di(xr({},i,{valueSpec:r.type?a[r.type]:r}))}function xl(i){const e=i.value,r=i.key,a=br(i);return a.length||(e.indexOf("{fontstack}")===-1&&a.push(new Ie(r,e,'"glyphs" url must include a "{fontstack}" token')),e.indexOf("{range}")===-1&&a.push(new Ie(r,e,'"glyphs" url must include a "{range}" token'))),a}function lr(i,e=he){let r=[];return r=r.concat(tn({key:"",value:i,valueSpec:e.$root,styleSpec:e,style:i,validateSpec:tn,objectElementValidators:{glyphs:xl,"*":()=>[]}})),i.constants&&(r=r.concat(ul({key:"constants",value:i.constants}))),cs(r)}function Lr(i){return function(e){return i({...e,validateSpec:tn})}}function cs(i){return[].concat(i).sort(((e,r)=>e.line-r.line))}function Rr(i){return function(...e){return cs(i.apply(this,e))}}lr.source=Rr(Lr(Gi)),lr.sprite=Rr(Lr(_l)),lr.glyphs=Rr(Lr(xl)),lr.light=Rr(Lr(wa)),lr.terrain=Rr(Lr(gl)),lr.layer=Rr(Lr(ml)),lr.filter=Rr(Lr(Xn)),lr.paintProperty=Rr(Lr(dl)),lr.layoutProperty=Rr(Lr(fl));const Fr=lr,Ac=Fr.light,to=Fr.paintProperty,vl=Fr.layoutProperty;function us(i,e){let r=!1;if(e&&e.length)for(const a of e)i.fire(new Xr(new Error(a.message))),r=!0;return r}class Kn{constructor(e,r,a){const o=this.cells=[];if(e instanceof ArrayBuffer){this.arrayBuffer=e;const f=new Int32Array(this.arrayBuffer);e=f[0],this.d=(r=f[1])+2*(a=f[2]);for(let y=0;y<this.d*this.d;y++){const v=f[3+y],S=f[3+y+1];o.push(v===S?null:f.subarray(v,S))}const m=f[3+o.length+1];this.keys=f.subarray(f[3+o.length],m),this.bboxes=f.subarray(m),this.insert=this._insertReadonly}else{this.d=r+2*a;for(let f=0;f<this.d*this.d;f++)o.push([]);this.keys=[],this.bboxes=[]}this.n=r,this.extent=e,this.padding=a,this.scale=r/e,this.uid=0;const p=a/r*e;this.min=-p,this.max=e+p}insert(e,r,a,o,p){this._forEachCell(r,a,o,p,this._insertCell,this.uid++,void 0,void 0),this.keys.push(e),this.bboxes.push(r),this.bboxes.push(a),this.bboxes.push(o),this.bboxes.push(p)}_insertReadonly(){throw new Error("Cannot insert into a GridIndex created from an ArrayBuffer.")}_insertCell(e,r,a,o,p,f){this.cells[p].push(f)}query(e,r,a,o,p){const f=this.min,m=this.max;if(e<=f&&r<=f&&m<=a&&m<=o&&!p)return Array.prototype.slice.call(this.keys);{const y=[];return this._forEachCell(e,r,a,o,this._queryCell,y,{},p),y}}_queryCell(e,r,a,o,p,f,m,y){const v=this.cells[p];if(v!==null){const S=this.keys,A=this.bboxes;for(let M=0;M<v.length;M++){const D=v[M];if(m[D]===void 0){const L=4*D;(y?y(A[L+0],A[L+1],A[L+2],A[L+3]):e<=A[L+2]&&r<=A[L+3]&&a>=A[L+0]&&o>=A[L+1])?(m[D]=!0,f.push(S[D])):m[D]=!1}}}}_forEachCell(e,r,a,o,p,f,m,y){const v=this._convertToCellCoord(e),S=this._convertToCellCoord(r),A=this._convertToCellCoord(a),M=this._convertToCellCoord(o);for(let D=v;D<=A;D++)for(let L=S;L<=M;L++){const O=this.d*L+D;if((!y||y(this._convertFromCellCoord(D),this._convertFromCellCoord(L),this._convertFromCellCoord(D+1),this._convertFromCellCoord(L+1)))&&p.call(this,e,r,a,o,O,f,m,y))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;const e=this.cells,r=3+this.cells.length+1+1;let a=0;for(let f=0;f<this.cells.length;f++)a+=this.cells[f].length;const o=new Int32Array(r+a+this.keys.length+this.bboxes.length);o[0]=this.extent,o[1]=this.n,o[2]=this.padding;let p=r;for(let f=0;f<e.length;f++){const m=e[f];o[3+f]=p,o.set(m,p),p+=m.length}return o[3+e.length]=p,o.set(this.keys,p),p+=this.keys.length,o[3+e.length+1]=p,o.set(this.bboxes,p),p+=this.bboxes.length,o.buffer}static serialize(e,r){const a=e.toArrayBuffer();return r&&r.push(a),{buffer:a}}static deserialize(e){return new Kn(e.buffer)}}const Br={};function Re(i,e,r={}){if(Br[i])throw new Error(`${i} is already registered.`);Object.defineProperty(e,"_classRegistryKey",{value:i,writeable:!1}),Br[i]={klass:e,omit:r.omit||[],shallow:r.shallow||[]}}Re("Object",Object),Re("TransferableGridIndex",Kn),Re("Color",vt),Re("Error",Error),Re("AJAXError",Gr),Re("ResolvedImage",ui),Re("StylePropertyFunction",ma),Re("StyleExpression",Ks,{omit:["_evaluator"]}),Re("ZoomDependentExpression",ns),Re("ZoomConstantExpression",Ys),Re("CompoundExpression",or,{omit:["_evaluate"]});for(const i in Gn)Gn[i]._classRegistryKey||Re(`Expression_${i}`,Gn[i]);function hs(i){return i&&typeof ArrayBuffer<"u"&&(i instanceof ArrayBuffer||i.constructor&&i.constructor.name==="ArrayBuffer")}function rn(i,e){if(i==null||typeof i=="boolean"||typeof i=="number"||typeof i=="string"||i instanceof Boolean||i instanceof Number||i instanceof String||i instanceof Date||i instanceof RegExp||i instanceof Blob)return i;if(hs(i)||la(i))return e&&e.push(i),i;if(ArrayBuffer.isView(i)){const r=i;return e&&e.push(r.buffer),r}if(i instanceof ImageData)return e&&e.push(i.data.buffer),i;if(Array.isArray(i)){const r=[];for(const a of i)r.push(rn(a,e));return r}if(typeof i=="object"){const r=i.constructor,a=r._classRegistryKey;if(!a)throw new Error("can't serialize object of unregistered class");if(!Br[a])throw new Error(`${a} is not registered.`);const o=r.serialize?r.serialize(i,e):{};if(r.serialize){if(e&&o===e[e.length-1])throw new Error("statically serialized object won't survive transfer of $name property")}else{for(const p in i){if(!i.hasOwnProperty(p)||Br[a].omit.indexOf(p)>=0)continue;const f=i[p];o[p]=Br[a].shallow.indexOf(p)>=0?f:rn(f,e)}i instanceof Error&&(o.message=i.message)}if(o.$name)throw new Error("$name property is reserved for worker serialization logic.");return a!=="Object"&&(o.$name=a),o}throw new Error("can't serialize object of type "+typeof i)}function Yn(i){if(i==null||typeof i=="boolean"||typeof i=="number"||typeof i=="string"||i instanceof Boolean||i instanceof Number||i instanceof String||i instanceof Date||i instanceof RegExp||i instanceof Blob||hs(i)||la(i)||ArrayBuffer.isView(i)||i instanceof ImageData)return i;if(Array.isArray(i))return i.map(Yn);if(typeof i=="object"){const e=i.$name||"Object";if(!Br[e])throw new Error(`can't deserialize unregistered class ${e}`);const{klass:r}=Br[e];if(!r)throw new Error(`can't deserialize unregistered class ${e}`);if(r.deserialize)return r.deserialize(i);const a=Object.create(r.prototype);for(const o of Object.keys(i)){if(o==="$name")continue;const p=i[o];a[o]=Br[e].shallow.indexOf(o)>=0?p:Yn(p)}return a}throw new Error("can't deserialize object of type "+typeof i)}class bl{constructor(){this.first=!0}update(e,r){const a=Math.floor(e);return this.first?(this.first=!1,this.lastIntegerZoom=a,this.lastIntegerZoomTime=0,this.lastZoom=e,this.lastFloorZoom=a,!0):(this.lastFloorZoom>a?(this.lastIntegerZoom=a+1,this.lastIntegerZoomTime=r):this.lastFloorZoom<a&&(this.lastIntegerZoom=a,this.lastIntegerZoomTime=r),e!==this.lastZoom&&(this.lastZoom=e,this.lastFloorZoom=a,!0))}}const ze={"Latin-1 Supplement":i=>i>=128&&i<=255,Arabic:i=>i>=1536&&i<=1791,"Arabic Supplement":i=>i>=1872&&i<=1919,"Arabic Extended-A":i=>i>=2208&&i<=2303,"Hangul Jamo":i=>i>=4352&&i<=4607,"Unified Canadian Aboriginal Syllabics":i=>i>=5120&&i<=5759,Khmer:i=>i>=6016&&i<=6143,"Unified Canadian Aboriginal Syllabics Extended":i=>i>=6320&&i<=6399,"General Punctuation":i=>i>=8192&&i<=8303,"Letterlike Symbols":i=>i>=8448&&i<=8527,"Number Forms":i=>i>=8528&&i<=8591,"Miscellaneous Technical":i=>i>=8960&&i<=9215,"Control Pictures":i=>i>=9216&&i<=9279,"Optical Character Recognition":i=>i>=9280&&i<=9311,"Enclosed Alphanumerics":i=>i>=9312&&i<=9471,"Geometric Shapes":i=>i>=9632&&i<=9727,"Miscellaneous Symbols":i=>i>=9728&&i<=9983,"Miscellaneous Symbols and Arrows":i=>i>=11008&&i<=11263,"CJK Radicals Supplement":i=>i>=11904&&i<=12031,"Kangxi Radicals":i=>i>=12032&&i<=12255,"Ideographic Description Characters":i=>i>=12272&&i<=12287,"CJK Symbols and Punctuation":i=>i>=12288&&i<=12351,Hiragana:i=>i>=12352&&i<=12447,Katakana:i=>i>=12448&&i<=12543,Bopomofo:i=>i>=12544&&i<=12591,"Hangul Compatibility Jamo":i=>i>=12592&&i<=12687,Kanbun:i=>i>=12688&&i<=12703,"Bopomofo Extended":i=>i>=12704&&i<=12735,"CJK Strokes":i=>i>=12736&&i<=12783,"Katakana Phonetic Extensions":i=>i>=12784&&i<=12799,"Enclosed CJK Letters and Months":i=>i>=12800&&i<=13055,"CJK Compatibility":i=>i>=13056&&i<=13311,"CJK Unified Ideographs Extension A":i=>i>=13312&&i<=19903,"Yijing Hexagram Symbols":i=>i>=19904&&i<=19967,"CJK Unified Ideographs":i=>i>=19968&&i<=40959,"Yi Syllables":i=>i>=40960&&i<=42127,"Yi Radicals":i=>i>=42128&&i<=42191,"Hangul Jamo Extended-A":i=>i>=43360&&i<=43391,"Hangul Syllables":i=>i>=44032&&i<=55215,"Hangul Jamo Extended-B":i=>i>=55216&&i<=55295,"Private Use Area":i=>i>=57344&&i<=63743,"CJK Compatibility Ideographs":i=>i>=63744&&i<=64255,"Arabic Presentation Forms-A":i=>i>=64336&&i<=65023,"Vertical Forms":i=>i>=65040&&i<=65055,"CJK Compatibility Forms":i=>i>=65072&&i<=65103,"Small Form Variants":i=>i>=65104&&i<=65135,"Arabic Presentation Forms-B":i=>i>=65136&&i<=65279,"Halfwidth and Fullwidth Forms":i=>i>=65280&&i<=65519};function io(i){for(const e of i)if(no(e.charCodeAt(0)))return!0;return!1}function ro(i){for(const e of i)if(!kc(e.charCodeAt(0)))return!1;return!0}function kc(i){return!(ze.Arabic(i)||ze["Arabic Supplement"](i)||ze["Arabic Extended-A"](i)||ze["Arabic Presentation Forms-A"](i)||ze["Arabic Presentation Forms-B"](i))}function no(i){return!(i!==746&&i!==747&&(i<4352||!(ze["Bopomofo Extended"](i)||ze.Bopomofo(i)||ze["CJK Compatibility Forms"](i)&&!(i>=65097&&i<=65103)||ze["CJK Compatibility Ideographs"](i)||ze["CJK Compatibility"](i)||ze["CJK Radicals Supplement"](i)||ze["CJK Strokes"](i)||!(!ze["CJK Symbols and Punctuation"](i)||i>=12296&&i<=12305||i>=12308&&i<=12319||i===12336)||ze["CJK Unified Ideographs Extension A"](i)||ze["CJK Unified Ideographs"](i)||ze["Enclosed CJK Letters and Months"](i)||ze["Hangul Compatibility Jamo"](i)||ze["Hangul Jamo Extended-A"](i)||ze["Hangul Jamo Extended-B"](i)||ze["Hangul Jamo"](i)||ze["Hangul Syllables"](i)||ze.Hiragana(i)||ze["Ideographic Description Characters"](i)||ze.Kanbun(i)||ze["Kangxi Radicals"](i)||ze["Katakana Phonetic Extensions"](i)||ze.Katakana(i)&&i!==12540||!(!ze["Halfwidth and Fullwidth Forms"](i)||i===65288||i===65289||i===65293||i>=65306&&i<=65310||i===65339||i===65341||i===65343||i>=65371&&i<=65503||i===65507||i>=65512&&i<=65519)||!(!ze["Small Form Variants"](i)||i>=65112&&i<=65118||i>=65123&&i<=65126)||ze["Unified Canadian Aboriginal Syllabics"](i)||ze["Unified Canadian Aboriginal Syllabics Extended"](i)||ze["Vertical Forms"](i)||ze["Yijing Hexagram Symbols"](i)||ze["Yi Syllables"](i)||ze["Yi Radicals"](i))))}function wl(i){return!(no(i)||(function(e){return!!(ze["Latin-1 Supplement"](e)&&(e===167||e===169||e===174||e===177||e===188||e===189||e===190||e===215||e===247)||ze["General Punctuation"](e)&&(e===8214||e===8224||e===8225||e===8240||e===8241||e===8251||e===8252||e===8258||e===8263||e===8264||e===8265||e===8273)||ze["Letterlike Symbols"](e)||ze["Number Forms"](e)||ze["Miscellaneous Technical"](e)&&(e>=8960&&e<=8967||e>=8972&&e<=8991||e>=8996&&e<=9e3||e===9003||e>=9085&&e<=9114||e>=9150&&e<=9165||e===9167||e>=9169&&e<=9179||e>=9186&&e<=9215)||ze["Control Pictures"](e)&&e!==9251||ze["Optical Character Recognition"](e)||ze["Enclosed Alphanumerics"](e)||ze["Geometric Shapes"](e)||ze["Miscellaneous Symbols"](e)&&!(e>=9754&&e<=9759)||ze["Miscellaneous Symbols and Arrows"](e)&&(e>=11026&&e<=11055||e>=11088&&e<=11097||e>=11192&&e<=11243)||ze["CJK Symbols and Punctuation"](e)||ze.Katakana(e)||ze["Private Use Area"](e)||ze["CJK Compatibility Forms"](e)||ze["Small Form Variants"](e)||ze["Halfwidth and Fullwidth Forms"](e)||e===8734||e===8756||e===8757||e>=9984&&e<=10087||e>=10102&&e<=10131||e===65532||e===65533)})(i))}function Sl(i){return i>=1424&&i<=2303||ze["Arabic Presentation Forms-A"](i)||ze["Arabic Presentation Forms-B"](i)}function Tl(i,e){return!(!e&&Sl(i)||i>=2304&&i<=3583||i>=3840&&i<=4255||ze.Khmer(i))}function Cc(i){for(const e of i)if(Sl(e.charCodeAt(0)))return!0;return!1}const ao="deferred",so="loading",oo="loaded";let lo=null,Li="unavailable",nn=null;const Sa=function(i){i&&typeof i=="string"&&i.indexOf("NetworkError")>-1&&(Li="error"),lo&&lo(i)};function co(){Ta.fire(new Wr("pluginStateChange",{pluginStatus:Li,pluginURL:nn}))}const Ta=new fn,uo=function(){return Li},Il=function(){if(Li!==ao||!nn)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");Li=so,co(),nn&&ha({url:nn},(i=>{i?Sa(i):(Li=oo,co())}))},Hi={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:()=>Li===oo||Hi.applyArabicShaping!=null,isLoading:()=>Li===so,setState(i){if(!tr())throw new Error("Cannot set the state of the rtl-text-plugin when not in the web-worker context");Li=i.pluginStatus,nn=i.pluginURL},isParsed(){if(!tr())throw new Error("rtl-text-plugin is only parsed on the worker-threads");return Hi.applyArabicShaping!=null&&Hi.processBidirectionalText!=null&&Hi.processStyledBidirectionalText!=null},getPluginURL(){if(!tr())throw new Error("rtl-text-plugin url can only be queried from the worker threads");return nn}};class Mt{constructor(e,r){this.zoom=e,r?(this.now=r.now,this.fadeDuration=r.fadeDuration,this.zoomHistory=r.zoomHistory,this.transition=r.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new bl,this.transition={})}isSupportedScript(e){return(function(r,a){for(const o of r)if(!Tl(o.charCodeAt(0),a))return!1;return!0})(e,Hi.isLoaded())}crossFadingFactor(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){const e=this.zoom,r=e-Math.floor(e),a=this.crossFadingFactor();return e>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:r+(1-r)*a}:{fromScale:.5,toScale:1,t:1-(1-a)*r}}}class ps{constructor(e,r){this.property=e,this.value=r,this.expression=(function(a,o){if(Rt(a))return new ma(a,o);if(is(a)){const p=Js(a,o);if(p.result==="error")throw new Error(p.value.map((f=>`${f.key}: ${f.message}`)).join(", "));return p.value}{let p=a;return o.type==="color"&&typeof a=="string"?p=vt.parse(a):o.type!=="padding"||typeof a!="number"&&!Array.isArray(a)?o.type==="variableAnchorOffsetCollection"&&Array.isArray(a)&&(p=ar.parse(a)):p=ji.parse(a),{kind:"constant",evaluate:()=>p}}})(r===void 0?e.specification.default:r,e.specification)}isDataDriven(){return this.expression.kind==="source"||this.expression.kind==="composite"}possiblyEvaluate(e,r,a){return this.property.possiblyEvaluate(this,e,r,a)}}class ho{constructor(e){this.property=e,this.value=new ps(e,void 0)}transitioned(e,r){return new kl(this.property,this.value,r,Yt({},e.transition,this.transition),e.now)}untransitioned(){return new kl(this.property,this.value,null,{},0)}}class Al{constructor(e){this._properties=e,this._values=Object.create(e.defaultTransitionablePropertyValues)}getValue(e){return xt(this._values[e].value.value)}setValue(e,r){Object.prototype.hasOwnProperty.call(this._values,e)||(this._values[e]=new ho(this._values[e].property)),this._values[e].value=new ps(this._values[e].property,r===null?void 0:xt(r))}getTransition(e){return xt(this._values[e].transition)}setTransition(e,r){Object.prototype.hasOwnProperty.call(this._values,e)||(this._values[e]=new ho(this._values[e].property)),this._values[e].transition=xt(r)||void 0}serialize(){const e={};for(const r of Object.keys(this._values)){const a=this.getValue(r);a!==void 0&&(e[r]=a);const o=this.getTransition(r);o!==void 0&&(e[`${r}-transition`]=o)}return e}transitioned(e,r){const a=new Cl(this._properties);for(const o of Object.keys(this._values))a._values[o]=this._values[o].transitioned(e,r._values[o]);return a}untransitioned(){const e=new Cl(this._properties);for(const r of Object.keys(this._values))e._values[r]=this._values[r].untransitioned();return e}}class kl{constructor(e,r,a,o,p){this.property=e,this.value=r,this.begin=p+o.delay||0,this.end=this.begin+o.duration||0,e.specification.transition&&(o.delay||o.duration)&&(this.prior=a)}possiblyEvaluate(e,r,a){const o=e.now||0,p=this.value.possiblyEvaluate(e,r,a),f=this.prior;if(f){if(o>this.end)return this.prior=null,p;if(this.value.isDataDriven())return this.prior=null,p;if(o<this.begin)return f.possiblyEvaluate(e,r,a);{const m=(o-this.begin)/(this.end-this.begin);return this.property.interpolate(f.possiblyEvaluate(e,r,a),p,(function(y){if(y<=0)return 0;if(y>=1)return 1;const v=y*y,S=v*y;return 4*(y<.5?S:3*(y-v)+S-.75)})(m))}}return p}}class Cl{constructor(e){this._properties=e,this._values=Object.create(e.defaultTransitioningPropertyValues)}possiblyEvaluate(e,r,a){const o=new ds(this._properties);for(const p of Object.keys(this._values))o._values[p]=this._values[p].possiblyEvaluate(e,r,a);return o}hasTransition(){for(const e of Object.keys(this._values))if(this._values[e].prior)return!0;return!1}}class Mc{constructor(e){this._properties=e,this._values=Object.create(e.defaultPropertyValues)}hasValue(e){return this._values[e].value!==void 0}getValue(e){return xt(this._values[e].value)}setValue(e,r){this._values[e]=new ps(this._values[e].property,r===null?void 0:xt(r))}serialize(){const e={};for(const r of Object.keys(this._values)){const a=this.getValue(r);a!==void 0&&(e[r]=a)}return e}possiblyEvaluate(e,r,a){const o=new ds(this._properties);for(const p of Object.keys(this._values))o._values[p]=this._values[p].possiblyEvaluate(e,r,a);return o}}class Ti{constructor(e,r,a){this.property=e,this.value=r,this.parameters=a}isConstant(){return this.value.kind==="constant"}constantOr(e){return this.value.kind==="constant"?this.value.value:e}evaluate(e,r,a,o){return this.property.evaluate(this.value,this.parameters,e,r,a,o)}}class ds{constructor(e){this._properties=e,this._values=Object.create(e.defaultPossiblyEvaluatedValues)}get(e){return this._values[e]}}class je{constructor(e){this.specification=e}possiblyEvaluate(e,r){if(e.isDataDriven())throw new Error("Value should not be data driven");return e.expression.evaluate(r)}interpolate(e,r,a){const o=qi[this.specification.type];return o?o(e,r,a):e}}class Ke{constructor(e,r){this.specification=e,this.overrides=r}possiblyEvaluate(e,r,a,o){return new Ti(this,e.expression.kind==="constant"||e.expression.kind==="camera"?{kind:"constant",value:e.expression.evaluate(r,null,{},a,o)}:e.expression,r)}interpolate(e,r,a){if(e.value.kind!=="constant"||r.value.kind!=="constant")return e;if(e.value.value===void 0||r.value.value===void 0)return new Ti(this,{kind:"constant",value:void 0},e.parameters);const o=qi[this.specification.type];if(o){const p=o(e.value.value,r.value.value,a);return new Ti(this,{kind:"constant",value:p},e.parameters)}return e}evaluate(e,r,a,o,p,f){return e.kind==="constant"?e.value:e.evaluate(r,a,o,p,f)}}class Ia extends Ke{possiblyEvaluate(e,r,a,o){if(e.value===void 0)return new Ti(this,{kind:"constant",value:void 0},r);if(e.expression.kind==="constant"){const p=e.expression.evaluate(r,null,{},a,o),f=e.property.specification.type==="resolvedImage"&&typeof p!="string"?p.name:p,m=this._calculate(f,f,f,r);return new Ti(this,{kind:"constant",value:m},r)}if(e.expression.kind==="camera"){const p=this._calculate(e.expression.evaluate({zoom:r.zoom-1}),e.expression.evaluate({zoom:r.zoom}),e.expression.evaluate({zoom:r.zoom+1}),r);return new Ti(this,{kind:"constant",value:p},r)}return new Ti(this,e.expression,r)}evaluate(e,r,a,o,p,f){if(e.kind==="source"){const m=e.evaluate(r,a,o,p,f);return this._calculate(m,m,m,r)}return e.kind==="composite"?this._calculate(e.evaluate({zoom:Math.floor(r.zoom)-1},a,o),e.evaluate({zoom:Math.floor(r.zoom)},a,o),e.evaluate({zoom:Math.floor(r.zoom)+1},a,o),r):e.value}_calculate(e,r,a,o){return o.zoom>o.zoomHistory.lastIntegerZoom?{from:e,to:r}:{from:a,to:r}}interpolate(e){return e}}class po{constructor(e){this.specification=e}possiblyEvaluate(e,r,a,o){if(e.value!==void 0){if(e.expression.kind==="constant"){const p=e.expression.evaluate(r,null,{},a,o);return this._calculate(p,p,p,r)}return this._calculate(e.expression.evaluate(new Mt(Math.floor(r.zoom-1),r)),e.expression.evaluate(new Mt(Math.floor(r.zoom),r)),e.expression.evaluate(new Mt(Math.floor(r.zoom+1),r)),r)}}_calculate(e,r,a,o){return o.zoom>o.zoomHistory.lastIntegerZoom?{from:e,to:r}:{from:a,to:r}}interpolate(e){return e}}class fo{constructor(e){this.specification=e}possiblyEvaluate(e,r,a,o){return!!e.expression.evaluate(r,null,{},a,o)}interpolate(){return!1}}class Zt{constructor(e){this.properties=e,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(const r in e){const a=e[r];a.specification.overridable&&this.overridableProperties.push(r);const o=this.defaultPropertyValues[r]=new ps(a,void 0),p=this.defaultTransitionablePropertyValues[r]=new ho(a);this.defaultTransitioningPropertyValues[r]=p.untransitioned(),this.defaultPossiblyEvaluatedValues[r]=o.possiblyEvaluate({})}}}Re("DataDrivenProperty",Ke),Re("DataConstantProperty",je),Re("CrossFadedDataDrivenProperty",Ia),Re("CrossFadedProperty",po),Re("ColorRampProperty",fo);const mo="-transition";class cr extends fn{constructor(e,r){if(super(),this.id=e.id,this.type=e.type,this._featureFilter={filter:()=>!0,needGeometry:!1},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),r.layout&&(this._unevaluatedLayout=new Mc(r.layout)),r.paint)){this._transitionablePaint=new Al(r.paint);for(const a in e.paint)this.setPaintProperty(a,e.paint[a],{validate:!1});for(const a in e.layout)this.setLayoutProperty(a,e.layout[a],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new ds(r.paint)}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(e){return e==="visibility"?this.visibility:this._unevaluatedLayout.getValue(e)}setLayoutProperty(e,r,a={}){r!=null&&this._validate(vl,`layers.${this.id}.layout.${e}`,e,r,a)||(e!=="visibility"?this._unevaluatedLayout.setValue(e,r):this.visibility=r)}getPaintProperty(e){return e.endsWith(mo)?this._transitionablePaint.getTransition(e.slice(0,-11)):this._transitionablePaint.getValue(e)}setPaintProperty(e,r,a={}){if(r!=null&&this._validate(to,`layers.${this.id}.paint.${e}`,e,r,a))return!1;if(e.endsWith(mo))return this._transitionablePaint.setTransition(e.slice(0,-11),r||void 0),!1;{const o=this._transitionablePaint._values[e],p=o.property.specification["property-type"]==="cross-faded-data-driven",f=o.value.isDataDriven(),m=o.value;this._transitionablePaint.setValue(e,r),this._handleSpecialPaintPropertyUpdate(e);const y=this._transitionablePaint._values[e].value;return y.isDataDriven()||f||p||this._handleOverridablePaintPropertyUpdate(e,m,y)}}_handleSpecialPaintPropertyUpdate(e){}_handleOverridablePaintPropertyUpdate(e,r,a){return!1}isHidden(e){return!!(this.minzoom&&e<this.minzoom)||!!(this.maxzoom&&e>=this.maxzoom)||this.visibility==="none"}updateTransitions(e){this._transitioningPaint=this._transitionablePaint.transitioned(e,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(e,r){e.getCrossfadeParameters&&(this._crossfadeParameters=e.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(e,void 0,r)),this.paint=this._transitioningPaint.possiblyEvaluate(e,void 0,r)}serialize(){const 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&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(e.layout=e.layout||{},e.layout.visibility=this.visibility),Zr(e,((r,a)=>!(r===void 0||a==="layout"&&!Object.keys(r).length||a==="paint"&&!Object.keys(r).length)))}_validate(e,r,a,o,p={}){return(!p||p.validate!==!1)&&us(this,e.call(Fr,{key:r,layerType:this.type,objectKey:a,value:o,styleSpec:he,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(const e in this.paint._values){const r=this.paint.get(e);if(r instanceof Ti&&Hn(r.property.specification)&&(r.value.kind==="source"||r.value.kind==="composite")&&r.value.isStateDependent)return!0}return!1}}const Ml={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class Sn{constructor(e,r){this._structArray=e,this._pos1=r*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class Ut{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(e,r){return e._trim(),r&&(e.isTransferred=!0,r.push(e.arrayBuffer)),{length:e.length,arrayBuffer:e.arrayBuffer}}static deserialize(e){const r=Object.create(this.prototype);return r.arrayBuffer=e.arrayBuffer,r.length=e.length,r.capacity=e.arrayBuffer.byteLength/r.bytesPerElement,r._refreshViews(),r}_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(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const r=this.uint8;this._refreshViews(),r&&this.uint8.set(r)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}}function Bt(i,e=1){let r=0,a=0;return{members:i.map((o=>{const p=Ml[o.type].BYTES_PER_ELEMENT,f=r=Jn(r,Math.max(e,p)),m=o.components||1;return a=Math.max(a,p),r+=p*m,{name:o.name,type:o.type,components:m,offset:f}})),size:Jn(r,Math.max(a,e)),alignment:e}}function Jn(i,e){return Math.ceil(i/e)*e}class Aa extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r){const a=this.length;return this.resize(a+1),this.emplace(a,e,r)}emplace(e,r,a){const o=2*e;return this.int16[o+0]=r,this.int16[o+1]=a,e}}Aa.prototype.bytesPerElement=4,Re("StructArrayLayout2i4",Aa);class ka extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r,a){const o=this.length;return this.resize(o+1),this.emplace(o,e,r,a)}emplace(e,r,a,o){const p=3*e;return this.int16[p+0]=r,this.int16[p+1]=a,this.int16[p+2]=o,e}}ka.prototype.bytesPerElement=6,Re("StructArrayLayout3i6",ka);class Tn extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r,a,o){const p=this.length;return this.resize(p+1),this.emplace(p,e,r,a,o)}emplace(e,r,a,o,p){const f=4*e;return this.int16[f+0]=r,this.int16[f+1]=a,this.int16[f+2]=o,this.int16[f+3]=p,e}}Tn.prototype.bytesPerElement=8,Re("StructArrayLayout4i8",Tn);class go extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r,a,o,p,f){const m=this.length;return this.resize(m+1),this.emplace(m,e,r,a,o,p,f)}emplace(e,r,a,o,p,f,m){const y=6*e;return this.int16[y+0]=r,this.int16[y+1]=a,this.int16[y+2]=o,this.int16[y+3]=p,this.int16[y+4]=f,this.int16[y+5]=m,e}}go.prototype.bytesPerElement=12,Re("StructArrayLayout2i4i12",go);class _o extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r,a,o,p,f){const m=this.length;return this.resize(m+1),this.emplace(m,e,r,a,o,p,f)}emplace(e,r,a,o,p,f,m){const y=4*e,v=8*e;return this.int16[y+0]=r,this.int16[y+1]=a,this.uint8[v+4]=o,this.uint8[v+5]=p,this.uint8[v+6]=f,this.uint8[v+7]=m,e}}_o.prototype.bytesPerElement=8,Re("StructArrayLayout2i4ub8",_o);class Qn extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,r){const a=this.length;return this.resize(a+1),this.emplace(a,e,r)}emplace(e,r,a){const o=2*e;return this.float32[o+0]=r,this.float32[o+1]=a,e}}Qn.prototype.bytesPerElement=8,Re("StructArrayLayout2f8",Qn);class yo extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,r,a,o,p,f,m,y,v,S){const A=this.length;return this.resize(A+1),this.emplace(A,e,r,a,o,p,f,m,y,v,S)}emplace(e,r,a,o,p,f,m,y,v,S,A){const M=10*e;return this.uint16[M+0]=r,this.uint16[M+1]=a,this.uint16[M+2]=o,this.uint16[M+3]=p,this.uint16[M+4]=f,this.uint16[M+5]=m,this.uint16[M+6]=y,this.uint16[M+7]=v,this.uint16[M+8]=S,this.uint16[M+9]=A,e}}yo.prototype.bytesPerElement=20,Re("StructArrayLayout10ui20",yo);class xo extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,r,a,o,p,f,m,y,v,S,A,M){const D=this.length;return this.resize(D+1),this.emplace(D,e,r,a,o,p,f,m,y,v,S,A,M)}emplace(e,r,a,o,p,f,m,y,v,S,A,M,D){const L=12*e;return this.int16[L+0]=r,this.int16[L+1]=a,this.int16[L+2]=o,this.int16[L+3]=p,this.uint16[L+4]=f,this.uint16[L+5]=m,this.uint16[L+6]=y,this.uint16[L+7]=v,this.int16[L+8]=S,this.int16[L+9]=A,this.int16[L+10]=M,this.int16[L+11]=D,e}}xo.prototype.bytesPerElement=24,Re("StructArrayLayout4i4ui4i24",xo);class _t extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,r,a){const o=this.length;return this.resize(o+1),this.emplace(o,e,r,a)}emplace(e,r,a,o){const p=3*e;return this.float32[p+0]=r,this.float32[p+1]=a,this.float32[p+2]=o,e}}_t.prototype.bytesPerElement=12,Re("StructArrayLayout3f12",_t);class u extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(e){const r=this.length;return this.resize(r+1),this.emplace(r,e)}emplace(e,r){return this.uint32[1*e+0]=r,e}}u.prototype.bytesPerElement=4,Re("StructArrayLayout1ul4",u);class t extends Ut{_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,r,a,o,p,f,m,y,v){const S=this.length;return this.resize(S+1),this.emplace(S,e,r,a,o,p,f,m,y,v)}emplace(e,r,a,o,p,f,m,y,v,S){const A=10*e,M=5*e;return this.int16[A+0]=r,this.int16[A+1]=a,this.int16[A+2]=o,this.int16[A+3]=p,this.int16[A+4]=f,this.int16[A+5]=m,this.uint32[M+3]=y,this.uint16[A+8]=v,this.uint16[A+9]=S,e}}t.prototype.bytesPerElement=20,Re("StructArrayLayout6i1ul2ui20",t);class n extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r,a,o,p,f){const m=this.length;return this.resize(m+1),this.emplace(m,e,r,a,o,p,f)}emplace(e,r,a,o,p,f,m){const y=6*e;return this.int16[y+0]=r,this.int16[y+1]=a,this.int16[y+2]=o,this.int16[y+3]=p,this.int16[y+4]=f,this.int16[y+5]=m,e}}n.prototype.bytesPerElement=12,Re("StructArrayLayout2i2i2i12",n);class s extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(e,r,a,o,p){const f=this.length;return this.resize(f+1),this.emplace(f,e,r,a,o,p)}emplace(e,r,a,o,p,f){const m=4*e,y=8*e;return this.float32[m+0]=r,this.float32[m+1]=a,this.float32[m+2]=o,this.int16[y+6]=p,this.int16[y+7]=f,e}}s.prototype.bytesPerElement=16,Re("StructArrayLayout2f1f2i16",s);class c extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,r,a,o){const p=this.length;return this.resize(p+1),this.emplace(p,e,r,a,o)}emplace(e,r,a,o,p){const f=12*e,m=3*e;return this.uint8[f+0]=r,this.uint8[f+1]=a,this.float32[m+1]=o,this.float32[m+2]=p,e}}c.prototype.bytesPerElement=12,Re("StructArrayLayout2ub2f12",c);class h extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,r,a){const o=this.length;return this.resize(o+1),this.emplace(o,e,r,a)}emplace(e,r,a,o){const p=3*e;return this.uint16[p+0]=r,this.uint16[p+1]=a,this.uint16[p+2]=o,e}}h.prototype.bytesPerElement=6,Re("StructArrayLayout3ui6",h);class g extends Ut{_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,r,a,o,p,f,m,y,v,S,A,M,D,L,O,q,H){const re=this.length;return this.resize(re+1),this.emplace(re,e,r,a,o,p,f,m,y,v,S,A,M,D,L,O,q,H)}emplace(e,r,a,o,p,f,m,y,v,S,A,M,D,L,O,q,H,re){const Y=24*e,ae=12*e,oe=48*e;return this.int16[Y+0]=r,this.int16[Y+1]=a,this.uint16[Y+2]=o,this.uint16[Y+3]=p,this.uint32[ae+2]=f,this.uint32[ae+3]=m,this.uint32[ae+4]=y,this.uint16[Y+10]=v,this.uint16[Y+11]=S,this.uint16[Y+12]=A,this.float32[ae+7]=M,this.float32[ae+8]=D,this.uint8[oe+36]=L,this.uint8[oe+37]=O,this.uint8[oe+38]=q,this.uint32[ae+10]=H,this.int16[Y+22]=re,e}}g.prototype.bytesPerElement=48,Re("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",g);class _ extends Ut{_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,r,a,o,p,f,m,y,v,S,A,M,D,L,O,q,H,re,Y,ae,oe,me,De,Ve,Pe,Me,Te,Fe){const Ae=this.length;return this.resize(Ae+1),this.emplace(Ae,e,r,a,o,p,f,m,y,v,S,A,M,D,L,O,q,H,re,Y,ae,oe,me,De,Ve,Pe,Me,Te,Fe)}emplace(e,r,a,o,p,f,m,y,v,S,A,M,D,L,O,q,H,re,Y,ae,oe,me,De,Ve,Pe,Me,Te,Fe,Ae){const be=32*e,He=16*e;return this.int16[be+0]=r,this.int16[be+1]=a,this.int16[be+2]=o,this.int16[be+3]=p,this.int16[be+4]=f,this.int16[be+5]=m,this.int16[be+6]=y,this.int16[be+7]=v,this.uint16[be+8]=S,this.uint16[be+9]=A,this.uint16[be+10]=M,this.uint16[be+11]=D,this.uint16[be+12]=L,this.uint16[be+13]=O,this.uint16[be+14]=q,this.uint16[be+15]=H,this.uint16[be+16]=re,this.uint16[be+17]=Y,this.uint16[be+18]=ae,this.uint16[be+19]=oe,this.uint16[be+20]=me,this.uint16[be+21]=De,this.uint16[be+22]=Ve,this.uint32[He+12]=Pe,this.float32[He+13]=Me,this.float32[He+14]=Te,this.uint16[be+30]=Fe,this.uint16[be+31]=Ae,e}}_.prototype.bytesPerElement=64,Re("StructArrayLayout8i15ui1ul2f2ui64",_);class x extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e){const r=this.length;return this.resize(r+1),this.emplace(r,e)}emplace(e,r){return this.float32[1*e+0]=r,e}}x.prototype.bytesPerElement=4,Re("StructArrayLayout1f4",x);class w extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,r,a){const o=this.length;return this.resize(o+1),this.emplace(o,e,r,a)}emplace(e,r,a,o){const p=3*e;return this.uint16[6*e+0]=r,this.float32[p+1]=a,this.float32[p+2]=o,e}}w.prototype.bytesPerElement=12,Re("StructArrayLayout1ui2f12",w);class T extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,r,a){const o=this.length;return this.resize(o+1),this.emplace(o,e,r,a)}emplace(e,r,a,o){const p=4*e;return this.uint32[2*e+0]=r,this.uint16[p+2]=a,this.uint16[p+3]=o,e}}T.prototype.bytesPerElement=8,Re("StructArrayLayout1ul2ui8",T);class I extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e,r){const a=this.length;return this.resize(a+1),this.emplace(a,e,r)}emplace(e,r,a){const o=2*e;return this.uint16[o+0]=r,this.uint16[o+1]=a,e}}I.prototype.bytesPerElement=4,Re("StructArrayLayout2ui4",I);class P extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(e){const r=this.length;return this.resize(r+1),this.emplace(r,e)}emplace(e,r){return this.uint16[1*e+0]=r,e}}P.prototype.bytesPerElement=2,Re("StructArrayLayout1ui2",P);class V extends Ut{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(e,r,a,o){const p=this.length;return this.resize(p+1),this.emplace(p,e,r,a,o)}emplace(e,r,a,o,p){const f=4*e;return this.float32[f+0]=r,this.float32[f+1]=a,this.float32[f+2]=o,this.float32[f+3]=p,e}}V.prototype.bytesPerElement=16,Re("StructArrayLayout4f16",V);class N extends Sn{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 _e(this.anchorPointX,this.anchorPointY)}}N.prototype.size=20;class $ extends t{get(e){return new N(this,e)}}Re("CollisionBoxArray",$);class B extends Sn{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]}}B.prototype.size=48;class ee extends g{get(e){return new B(this,e)}}Re("PlacedSymbolArray",ee);class se extends Sn{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]}}se.prototype.size=64;class G extends _{get(e){return new se(this,e)}}Re("SymbolInstanceArray",G);class te extends x{getoffsetX(e){return this.float32[1*e+0]}}Re("GlyphOffsetArray",te);class ce extends ka{getx(e){return this.int16[3*e+0]}gety(e){return this.int16[3*e+1]}gettileUnitDistanceFromAnchor(e){return this.int16[3*e+2]}}Re("SymbolLineVertexArray",ce);class ue extends Sn{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]}}ue.prototype.size=12;class fe extends w{get(e){return new ue(this,e)}}Re("TextAnchorOffsetArray",fe);class ve extends Sn{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]}}ve.prototype.size=8;class xe extends T{get(e){return new ve(this,e)}}Re("FeatureIndexArray",xe);class Se extends Aa{}class Ne extends Aa{}class ot extends Aa{}class Ce extends go{}class Ye extends _o{}class Ue extends Qn{}class bt extends yo{}class st extends xo{}class rt extends _t{}class lt extends u{}class $t extends n{}class At extends c{}class hi extends h{}class Jt extends I{}const Gt=Bt([{name:"a_pos",components:2,type:"Int16"}],4),{members:Wi}=Gt;class Et{constructor(e=[]){this.segments=e}prepareSegment(e,r,a,o){let p=this.segments[this.segments.length-1];return e>Et.MAX_VERTEX_ARRAY_LENGTH&&li(`Max vertices per segment is ${Et.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${e}`),(!p||p.vertexLength+e>Et.MAX_VERTEX_ARRAY_LENGTH||p.sortKey!==o)&&(p={vertexOffset:r.length,primitiveOffset:a.length,vertexLength:0,primitiveLength:0},o!==void 0&&(p.sortKey=o),this.segments.push(p)),p}get(){return this.segments}destroy(){for(const e of this.segments)for(const r in e.vaos)e.vaos[r].destroy()}static simpleSegment(e,r,a,o){return new Et([{vertexOffset:e,primitiveOffset:r,vertexLength:a,primitiveLength:o,vaos:{},sortKey:0}])}}function wr(i,e){return 256*(i=er(Math.floor(i),0,255))+er(Math.floor(e),0,255)}Et.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,Re("SegmentVector",Et);const Sr=Bt([{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"}]);var an={exports:{}},In={exports:{}};In.exports=function(i,e){var r,a,o,p,f,m,y,v;for(a=i.length-(r=3&i.length),o=e,f=3432918353,m=461845907,v=0;v<a;)y=255&i.charCodeAt(v)|(255&i.charCodeAt(++v))<<8|(255&i.charCodeAt(++v))<<16|(255&i.charCodeAt(++v))<<24,++v,o=27492+(65535&(p=5*(65535&(o=(o^=y=(65535&(y=(y=(65535&y)*f+(((y>>>16)*f&65535)<<16)&4294967295)<<15|y>>>17))*m+(((y>>>16)*m&65535)<<16)&4294967295)<<13|o>>>19))+((5*(o>>>16)&65535)<<16)&4294967295))+((58964+(p>>>16)&65535)<<16);switch(y=0,r){case 3:y^=(255&i.charCodeAt(v+2))<<16;case 2:y^=(255&i.charCodeAt(v+1))<<8;case 1:o^=y=(65535&(y=(y=(65535&(y^=255&i.charCodeAt(v)))*f+(((y>>>16)*f&65535)<<16)&4294967295)<<15|y>>>17))*m+(((y>>>16)*m&65535)<<16)&4294967295}return o^=i.length,o=2246822507*(65535&(o^=o>>>16))+((2246822507*(o>>>16)&65535)<<16)&4294967295,o=3266489909*(65535&(o^=o>>>13))+((3266489909*(o>>>16)&65535)<<16)&4294967295,(o^=o>>>16)>>>0};var ea=In.exports,_i={exports:{}};_i.exports=function(i,e){for(var r,a=i.length,o=e^a,p=0;a>=4;)r=1540483477*(65535&(r=255&i.charCodeAt(p)|(255&i.charCodeAt(++p))<<8|(255&i.charCodeAt(++p))<<16|(255&i.charCodeAt(++p))<<24))+((1540483477*(r>>>16)&65535)<<16),o=1540483477*(65535&o)+((1540483477*(o>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),a-=4,++p;switch(a){case 3:o^=(255&i.charCodeAt(p+2))<<16;case 2:o^=(255&i.charCodeAt(p+1))<<8;case 1:o=1540483477*(65535&(o^=255&i.charCodeAt(p)))+((1540483477*(o>>>16)&65535)<<16)}return o=1540483477*(65535&(o^=o>>>13))+((1540483477*(o>>>16)&65535)<<16),(o^=o>>>15)>>>0};var pi=ea,Ii=_i.exports;an.exports=pi,an.exports.murmur3=pi,an.exports.murmur2=Ii;var An=X(an.exports);class jt{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(e,r,a,o){this.ids.push(Qt(e)),this.positions.push(r,a,o)}getPositions(e){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");const r=Qt(e);let a=0,o=this.ids.length-1;for(;a<o;){const f=a+o>>1;this.ids[f]>=r?o=f:a=f+1}const p=[];for(;this.ids[a]===r;)p.push({index:this.positions[3*a],start:this.positions[3*a+1],end:this.positions[3*a+2]}),a++;return p}static serialize(e,r){const a=new Float64Array(e.ids),o=new Uint32Array(e.positions);return Ri(a,o,0,a.length-1),r&&r.push(a.buffer,o.buffer),{ids:a,positions:o}}static deserialize(e){const r=new jt;return r.ids=e.ids,r.positions=e.positions,r.indexed=!0,r}}function Qt(i){const e=+i;return!isNaN(e)&&e<=Number.MAX_SAFE_INTEGER?e:An(String(i))}function Ri(i,e,r,a){for(;r<a;){const o=i[r+a>>1];let p=r-1,f=a+1;for(;;){do p++;while(i[p]<o);do f--;while(i[f]>o);if(p>=f)break;qt(i,p,f),qt(e,3*p,3*f),qt(e,3*p+1,3*f+1),qt(e,3*p+2,3*f+2)}f-r<a-f?(Ri(i,e,r,f),r=f+1):(Ri(i,e,f+1,a),a=f)}}function qt(i,e,r){const a=i[e];i[e]=i[r],i[r]=a}Re("FeaturePositionMap",jt);class kn{constructor(e,r){this.gl=e.gl,this.location=r}}class fs extends kn{constructor(e,r){super(e,r),this.current=0}set(e){this.current!==e&&(this.current=e,this.gl.uniform1f(this.location,e))}}class El extends kn{constructor(e,r){super(e,r),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]))}}class Pl extends kn{constructor(e,r){super(e,r),this.current=vt.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))}}const Ec=new Float32Array(16);function vo(i){return[wr(255*i.r,255*i.g),wr(255*i.b,255*i.a)]}class Tr{constructor(e,r,a){this.value=e,this.uniformNames=r.map((o=>`u_${o}`)),this.type=a}setUniform(e,r,a){e.set(a.constantOr(this.value))}getBinding(e,r,a){return this.type==="color"?new Pl(e,r):new fs(e,r)}}class Cn{constructor(e,r){this.uniformNames=r.map((a=>`u_${a}`)),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(e,r){this.pixelRatioFrom=r.pixelRatio,this.pixelRatioTo=e.pixelRatio,this.patternFrom=r.tlbr,this.patternTo=e.tlbr}setUniform(e,r,a,o){const p=o==="u_pattern_to"?this.patternTo:o==="u_pattern_from"?this.patternFrom:o==="u_pixel_ratio_to"?this.pixelRatioTo:o==="u_pixel_ratio_from"?this.pixelRatioFrom:null;p&&e.set(p)}getBinding(e,r,a){return a.substr(0,9)==="u_pattern"?new El(e,r):new fs(e,r)}}class Ir{constructor(e,r,a,o){this.expression=e,this.type=a,this.maxValue=0,this.paintVertexAttributes=r.map((p=>({name:`a_${p}`,type:"Float32",components:a==="color"?2:1,offset:0}))),this.paintVertexArray=new o}populatePaintArray(e,r,a,o,p){const f=this.paintVertexArray.length,m=this.expression.evaluate(new Mt(0),r,{},o,[],p);this.paintVertexArray.resize(e),this._setPaintValue(f,e,m)}updatePaintArray(e,r,a,o){const p=this.expression.evaluate({zoom:0},a,o);this._setPaintValue(e,r,p)}_setPaintValue(e,r,a){if(this.type==="color"){const o=vo(a);for(let p=e;p<r;p++)this.paintVertexArray.emplace(p,o[0],o[1])}else{for(let o=e;o<r;o++)this.paintVertexArray.emplace(o,a);this.maxValue=Math.max(this.maxValue,Math.abs(a))}}upload(e){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&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()}}class ur{constructor(e,r,a,o,p,f){this.expression=e,this.uniformNames=r.map((m=>`u_${m}_t`)),this.type=a,this.useIntegerZoom=o,this.zoom=p,this.maxValue=0,this.paintVertexAttributes=r.map((m=>({name:`a_${m}`,type:"Float32",components:a==="color"?4:2,offset:0}))),this.paintVertexArray=new f}populatePaintArray(e,r,a,o,p){const f=this.expression.evaluate(new Mt(this.zoom),r,{},o,[],p),m=this.expression.evaluate(new Mt(this.zoom+1),r,{},o,[],p),y=this.paintVertexArray.length;this.paintVertexArray.resize(e),this._setPaintValue(y,e,f,m)}updatePaintArray(e,r,a,o){const p=this.expression.evaluate({zoom:this.zoom},a,o),f=this.expression.evaluate({zoom:this.zoom+1},a,o);this._setPaintValue(e,r,p,f)}_setPaintValue(e,r,a,o){if(this.type==="color"){const p=vo(a),f=vo(o);for(let m=e;m<r;m++)this.paintVertexArray.emplace(m,p[0],p[1],f[0],f[1])}else{for(let p=e;p<r;p++)this.paintVertexArray.emplace(p,a,o);this.maxValue=Math.max(this.maxValue,Math.abs(a),Math.abs(o))}}upload(e){this.paintVertexArray&&this.paintVertexArray.arrayBuffer&&(this.paintVertexBuffer&&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,r){const a=this.useIntegerZoom?Math.floor(r.zoom):r.zoom,o=er(this.expression.interpolationFactor(a,this.zoom,this.zoom+1),0,1);e.set(o)}getBinding(e,r,a){return new fs(e,r)}}class Ar{constructor(e,r,a,o,p,f){this.expression=e,this.type=r,this.useIntegerZoom=a,this.zoom=o,this.layerId=f,this.zoomInPaintVertexArray=new p,this.zoomOutPaintVertexArray=new p}populatePaintArray(e,r,a){const o=this.zoomInPaintVertexArray.length;this.zoomInPaintVertexArray.resize(e),this.zoomOutPaintVertexArray.resize(e),this._setPaintValues(o,e,r.patterns&&r.patterns[this.layerId],a)}updatePaintArray(e,r,a,o,p){this._setPaintValues(e,r,a.patterns&&a.patterns[this.layerId],p)}_setPaintValues(e,r,a,o){if(!o||!a)return;const{min:p,mid:f,max:m}=a,y=o[p],v=o[f],S=o[m];if(y&&v&&S)for(let A=e;A<r;A++)this.zoomInPaintVertexArray.emplace(A,v.tl[0],v.tl[1],v.br[0],v.br[1],y.tl[0],y.tl[1],y.br[0],y.br[1],v.pixelRatio,y.pixelRatio),this.zoomOutPaintVertexArray.emplace(A,v.tl[0],v.tl[1],v.br[0],v.br[1],S.tl[0],S.tl[1],S.br[0],S.br[1],v.pixelRatio,S.pixelRatio)}upload(e){this.zoomInPaintVertexArray&&this.zoomInPaintVertexArray.arrayBuffer&&this.zoomOutPaintVertexArray&&this.zoomOutPaintVertexArray.arrayBuffer&&(this.zoomInPaintVertexBuffer=e.createVertexBuffer(this.zoomInPaintVertexArray,Sr.members,this.expression.isStateDependent),this.zoomOutPaintVertexBuffer=e.createVertexBuffer(this.zoomOutPaintVertexArray,Sr.members,this.expression.isStateDependent))}destroy(){this.zoomOutPaintVertexBuffer&&this.zoomOutPaintVertexBuffer.destroy(),this.zoomInPaintVertexBuffer&&this.zoomInPaintVertexBuffer.destroy()}}class bo{constructor(e,r,a){this.binders={},this._buffers=[];const o=[];for(const p in e.paint._values){if(!a(p))continue;const f=e.paint.get(p);if(!(f instanceof Ti&&Hn(f.property.specification)))continue;const m=og(p,e.type),y=f.value,v=f.property.specification.type,S=f.property.useIntegerZoom,A=f.property.specification["property-type"],M=A==="cross-faded"||A==="cross-faded-data-driven";if(y.kind==="constant")this.binders[p]=M?new Cn(y.value,m):new Tr(y.value,m,v),o.push(`/u_${p}`);else if(y.kind==="source"||M){const D=Ah(p,v,"source");this.binders[p]=M?new Ar(y,v,S,r,D,e.id):new Ir(y,m,v,D),o.push(`/a_${p}`)}else{const D=Ah(p,v,"composite");this.binders[p]=new ur(y,m,v,S,r,D),o.push(`/z_${p}`)}}this.cacheKey=o.sort().join("")}getMaxValue(e){const r=this.binders[e];return r instanceof Ir||r instanceof ur?r.maxValue:0}populatePaintArrays(e,r,a,o,p){for(const f in this.binders){const m=this.binders[f];(m instanceof Ir||m instanceof ur||m instanceof Ar)&&m.populatePaintArray(e,r,a,o,p)}}setConstantPatternPositions(e,r){for(const a in this.binders){const o=this.binders[a];o instanceof Cn&&o.setConstantPatternPositions(e,r)}}updatePaintArrays(e,r,a,o,p){let f=!1;for(const m in e){const y=r.getPositions(m);for(const v of y){const S=a.feature(v.index);for(const A in this.binders){const M=this.binders[A];if((M instanceof Ir||M instanceof ur||M instanceof Ar)&&M.expression.isStateDependent===!0){const D=o.paint.get(A);M.expression=D.value,M.updatePaintArray(v.start,v.end,S,e[m],p),f=!0}}}}return f}defines(){const e=[];for(const r in this.binders){const a=this.binders[r];(a instanceof Tr||a instanceof Cn)&&e.push(...a.uniformNames.map((o=>`#define HAS_UNIFORM_${o}`)))}return e}getBinderAttributes(){const e=[];for(const r in this.binders){const a=this.binders[r];if(a instanceof Ir||a instanceof ur)for(let o=0;o<a.paintVertexAttributes.length;o++)e.push(a.paintVertexAttributes[o].name);else if(a instanceof Ar)for(let o=0;o<Sr.members.length;o++)e.push(Sr.members[o].name)}return e}getBinderUniforms(){const e=[];for(const r in this.binders){const a=this.binders[r];if(a instanceof Tr||a instanceof Cn||a instanceof ur)for(const o of a.uniformNames)e.push(o)}return e}getPaintVertexBuffers(){return this._buffers}getUniforms(e,r){const a=[];for(const o in this.binders){const p=this.binders[o];if(p instanceof Tr||p instanceof Cn||p instanceof ur){for(const f of p.uniformNames)if(r[f]){const m=p.getBinding(e,r[f],f);a.push({name:f,property:o,binding:m})}}}return a}setUniforms(e,r,a,o){for(const{name:p,property:f,binding:m}of r)this.binders[f].setUniform(m,o,a.get(f),p)}updatePaintBuffers(e){this._buffers=[];for(const r in this.binders){const a=this.binders[r];if(e&&a instanceof Ar){const o=e.fromScale===2?a.zoomInPaintVertexBuffer:a.zoomOutPaintVertexBuffer;o&&this._buffers.push(o)}else(a instanceof Ir||a instanceof ur)&&a.paintVertexBuffer&&this._buffers.push(a.paintVertexBuffer)}}upload(e){for(const r in this.binders){const a=this.binders[r];(a instanceof Ir||a instanceof ur||a instanceof Ar)&&a.upload(e)}this.updatePaintBuffers()}destroy(){for(const e in this.binders){const r=this.binders[e];(r instanceof Ir||r instanceof ur||r instanceof Ar)&&r.destroy()}}}class Or{constructor(e,r,a=(()=>!0)){this.programConfigurations={};for(const o of e)this.programConfigurations[o.id]=new bo(o,r,a);this.needsUpload=!1,this._featureMap=new jt,this._bufferOffset=0}populatePaintArrays(e,r,a,o,p,f){for(const m in this.programConfigurations)this.programConfigurations[m].populatePaintArrays(e,r,o,p,f);r.id!==void 0&&this._featureMap.add(r.id,a,this._bufferOffset,e),this._bufferOffset=e,this.needsUpload=!0}updatePaintArrays(e,r,a,o){for(const p of a)this.needsUpload=this.programConfigurations[p.id].updatePaintArrays(e,this._featureMap,r,p,o)||this.needsUpload}get(e){return this.programConfigurations[e]}upload(e){if(this.needsUpload){for(const r in this.programConfigurations)this.programConfigurations[r].upload(e);this.needsUpload=!1}}destroy(){for(const e in this.programConfigurations)this.programConfigurations[e].destroy()}}function og(i,e){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-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"]}[i]||[i.replace(`${e}-`,"").replace(/-/g,"_")]}function Ah(i,e,r){const a={color:{source:Qn,composite:V},number:{source:x,composite:Qn}},o=(function(p){return{"line-pattern":{source:bt,composite:bt},"fill-pattern":{source:bt,composite:bt},"fill-extrusion-pattern":{source:bt,composite:bt}}[p]})(i);return o&&o[r]||a[e][r]}Re("ConstantBinder",Tr),Re("CrossFadedConstantBinder",Cn),Re("SourceExpressionBinder",Ir),Re("CrossFadedCompositeBinder",Ar),Re("CompositeExpressionBinder",ur),Re("ProgramConfiguration",bo,{omit:["_buffers"]}),Re("ProgramConfigurationSet",Or);const Xt=8192,Pc=Math.pow(2,14)-1,kh=-Pc-1;function Ca(i){const e=Xt/i.extent,r=i.loadGeometry();for(let a=0;a<r.length;a++){const o=r[a];for(let p=0;p<o.length;p++){const f=o[p],m=Math.round(f.x*e),y=Math.round(f.y*e);f.x=er(m,kh,Pc),f.y=er(y,kh,Pc),(m<f.x||m>f.x+1||y<f.y||y>f.y+1)&&li("Geometry exceeds allowed extent, reduce your vector tile buffer size")}}return r}function Ma(i,e){return{type:i.type,id:i.id,properties:i.properties,geometry:e?Ca(i):[]}}function zl(i,e,r,a,o){i.emplaceBack(2*e+(a+1)/2,2*r+(o+1)/2)}class zc{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((r=>r.id)),this.index=e.index,this.hasPattern=!1,this.layoutVertexArray=new Ne,this.indexArray=new hi,this.segments=new Et,this.programConfigurations=new Or(e.layers,e.zoom),this.stateDependentLayerIds=this.layers.filter((r=>r.isStateDependent())).map((r=>r.id))}populate(e,r,a){const o=this.layers[0],p=[];let f=null,m=!1;o.type==="circle"&&(f=o.layout.get("circle-sort-key"),m=!f.isConstant());for(const{feature:y,id:v,index:S,sourceLayerIndex:A}of e){const M=this.layers[0]._featureFilter.needGeometry,D=Ma(y,M);if(!this.layers[0]._featureFilter.filter(new Mt(this.zoom),D,a))continue;const L=m?f.evaluate(D,{},a):void 0,O={id:v,properties:y.properties,type:y.type,sourceLayerIndex:A,index:S,geometry:M?D.geometry:Ca(y),patterns:{},sortKey:L};p.push(O)}m&&p.sort(((y,v)=>y.sortKey-v.sortKey));for(const y of p){const{geometry:v,index:S,sourceLayerIndex:A}=y,M=e[S].feature;this.addFeature(y,v,S,a),r.featureIndex.insert(M,v,S,A,this.index)}}update(e,r,a){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,r,this.stateDependentLayers,a)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Wi),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,r,a,o){for(const p of r)for(const f of p){const m=f.x,y=f.y;if(m<0||m>=Xt||y<0||y>=Xt)continue;const v=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,e.sortKey),S=v.vertexLength;zl(this.layoutVertexArray,m,y,-1,-1),zl(this.layoutVertexArray,m,y,1,-1),zl(this.layoutVertexArray,m,y,1,1),zl(this.layoutVertexArray,m,y,-1,1),this.indexArray.emplaceBack(S,S+1,S+2),this.indexArray.emplaceBack(S,S+3,S+2),v.vertexLength+=4,v.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,a,{},o)}}function Ch(i,e){for(let r=0;r<i.length;r++)if(ms(e,i[r]))return!0;for(let r=0;r<e.length;r++)if(ms(i,e[r]))return!0;return!!Dc(i,e)}function lg(i,e,r){return!!ms(i,e)||!!Lc(e,i,r)}function Mh(i,e){if(i.length===1)return Ph(e,i[0]);for(let r=0;r<e.length;r++){const a=e[r];for(let o=0;o<a.length;o++)if(ms(i,a[o]))return!0}for(let r=0;r<i.length;r++)if(Ph(e,i[r]))return!0;for(let r=0;r<e.length;r++)if(Dc(i,e[r]))return!0;return!1}function cg(i,e,r){if(i.length>1){if(Dc(i,e))return!0;for(let a=0;a<e.length;a++)if(Lc(e[a],i,r))return!0}for(let a=0;a<i.length;a++)if(Lc(i[a],e,r))return!0;return!1}function Dc(i,e){if(i.length===0||e.length===0)return!1;for(let r=0;r<i.length-1;r++){const a=i[r],o=i[r+1];for(let p=0;p<e.length-1;p++)if(ug(a,o,e[p],e[p+1]))return!0}return!1}function ug(i,e,r,a){return $i(i,r,a)!==$i(e,r,a)&&$i(i,e,r)!==$i(i,e,a)}function Lc(i,e,r){const a=r*r;if(e.length===1)return i.distSqr(e[0])<a;for(let o=1;o<e.length;o++)if(Eh(i,e[o-1],e[o])<a)return!0;return!1}function Eh(i,e,r){const a=e.distSqr(r);if(a===0)return i.distSqr(e);const o=((i.x-e.x)*(r.x-e.x)+(i.y-e.y)*(r.y-e.y))/a;return i.distSqr(o<0?e:o>1?r:r.sub(e)._mult(o)._add(e))}function Ph(i,e){let r,a,o,p=!1;for(let f=0;f<i.length;f++){r=i[f];for(let m=0,y=r.length-1;m<r.length;y=m++)a=r[m],o=r[y],a.y>e.y!=o.y>e.y&&e.x<(o.x-a.x)*(e.y-a.y)/(o.y-a.y)+a.x&&(p=!p)}return p}function ms(i,e){let r=!1;for(let a=0,o=i.length-1;a<i.length;o=a++){const p=i[a],f=i[o];p.y>e.y!=f.y>e.y&&e.x<(f.x-p.x)*(e.y-p.y)/(f.y-p.y)+p.x&&(r=!r)}return r}function hg(i,e,r){const a=r[0],o=r[2];if(i.x<a.x&&e.x<a.x||i.x>o.x&&e.x>o.x||i.y<a.y&&e.y<a.y||i.y>o.y&&e.y>o.y)return!1;const p=$i(i,e,r[0]);return p!==$i(i,e,r[1])||p!==$i(i,e,r[2])||p!==$i(i,e,r[3])}function wo(i,e,r){const a=e.paint.get(i).value;return a.kind==="constant"?a.value:r.programConfigurations.get(e.id).getMaxValue(i)}function Dl(i){return Math.sqrt(i[0]*i[0]+i[1]*i[1])}function Ll(i,e,r,a,o){if(!e[0]&&!e[1])return i;const p=_e.convert(e)._mult(o);r==="viewport"&&p._rotate(-a);const f=[];for(let m=0;m<i.length;m++)f.push(i[m].sub(p));return f}let zh,Dh;Re("CircleBucket",zc,{omit:["layers"]});var pg={get paint(){return Dh=Dh||new Zt({"circle-radius":new Ke(he.paint_circle["circle-radius"]),"circle-color":new Ke(he.paint_circle["circle-color"]),"circle-blur":new Ke(he.paint_circle["circle-blur"]),"circle-opacity":new Ke(he.paint_circle["circle-opacity"]),"circle-translate":new je(he.paint_circle["circle-translate"]),"circle-translate-anchor":new je(he.paint_circle["circle-translate-anchor"]),"circle-pitch-scale":new je(he.paint_circle["circle-pitch-scale"]),"circle-pitch-alignment":new je(he.paint_circle["circle-pitch-alignment"]),"circle-stroke-width":new Ke(he.paint_circle["circle-stroke-width"]),"circle-stroke-color":new Ke(he.paint_circle["circle-stroke-color"]),"circle-stroke-opacity":new Ke(he.paint_circle["circle-stroke-opacity"])})},get layout(){return zh=zh||new Zt({"circle-sort-key":new Ke(he.layout_circle["circle-sort-key"])})}},Fi=1e-6,gs=typeof Float32Array<"u"?Float32Array:Array;function Rc(i){return i[0]=1,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=1,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=1,i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,i}function Lh(i,e,r){var a=e[0],o=e[1],p=e[2],f=e[3],m=e[4],y=e[5],v=e[6],S=e[7],A=e[8],M=e[9],D=e[10],L=e[11],O=e[12],q=e[13],H=e[14],re=e[15],Y=r[0],ae=r[1],oe=r[2],me=r[3];return i[0]=Y*a+ae*m+oe*A+me*O,i[1]=Y*o+ae*y+oe*M+me*q,i[2]=Y*p+ae*v+oe*D+me*H,i[3]=Y*f+ae*S+oe*L+me*re,i[4]=(Y=r[4])*a+(ae=r[5])*m+(oe=r[6])*A+(me=r[7])*O,i[5]=Y*o+ae*y+oe*M+me*q,i[6]=Y*p+ae*v+oe*D+me*H,i[7]=Y*f+ae*S+oe*L+me*re,i[8]=(Y=r[8])*a+(ae=r[9])*m+(oe=r[10])*A+(me=r[11])*O,i[9]=Y*o+ae*y+oe*M+me*q,i[10]=Y*p+ae*v+oe*D+me*H,i[11]=Y*f+ae*S+oe*L+me*re,i[12]=(Y=r[12])*a+(ae=r[13])*m+(oe=r[14])*A+(me=r[15])*O,i[13]=Y*o+ae*y+oe*M+me*q,i[14]=Y*p+ae*v+oe*D+me*H,i[15]=Y*f+ae*S+oe*L+me*re,i}Math.hypot||(Math.hypot=function(){for(var i=0,e=arguments.length;e--;)i+=arguments[e]*arguments[e];return Math.sqrt(i)});var So,dg=Lh;function Rl(i,e,r){var a=e[0],o=e[1],p=e[2],f=e[3];return i[0]=r[0]*a+r[4]*o+r[8]*p+r[12]*f,i[1]=r[1]*a+r[5]*o+r[9]*p+r[13]*f,i[2]=r[2]*a+r[6]*o+r[10]*p+r[14]*f,i[3]=r[3]*a+r[7]*o+r[11]*p+r[15]*f,i}So=new gs(4),gs!=Float32Array&&(So[0]=0,So[1]=0,So[2]=0,So[3]=0);class fg extends cr{constructor(e){super(e,pg)}createBucket(e){return new zc(e)}queryRadius(e){const r=e;return wo("circle-radius",this,r)+wo("circle-stroke-width",this,r)+Dl(this.paint.get("circle-translate"))}queryIntersectsFeature(e,r,a,o,p,f,m,y){const v=Ll(e,this.paint.get("circle-translate"),this.paint.get("circle-translate-anchor"),f.angle,m),S=this.paint.get("circle-radius").evaluate(r,a)+this.paint.get("circle-stroke-width").evaluate(r,a),A=this.paint.get("circle-pitch-alignment")==="map",M=A?v:(function(L,O){return L.map((q=>Rh(q,O)))})(v,y),D=A?S*m:S;for(const L of o)for(const O of L){const q=A?O:Rh(O,y);let H=D;const re=Rl([],[O.x,O.y,0,1],y);if(this.paint.get("circle-pitch-scale")==="viewport"&&this.paint.get("circle-pitch-alignment")==="map"?H*=re[3]/f.cameraToCenterDistance:this.paint.get("circle-pitch-scale")==="map"&&this.paint.get("circle-pitch-alignment")==="viewport"&&(H*=f.cameraToCenterDistance/re[3]),lg(M,q,H))return!0}return!1}}function Rh(i,e){const r=Rl([],[i.x,i.y,0,1],e);return new _e(r[0]/r[3],r[1]/r[3])}class Fh extends zc{}let Bh;Re("HeatmapBucket",Fh,{omit:["layers"]});var mg={get paint(){return Bh=Bh||new Zt({"heatmap-radius":new Ke(he.paint_heatmap["heatmap-radius"]),"heatmap-weight":new Ke(he.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new je(he.paint_heatmap["heatmap-intensity"]),"heatmap-color":new fo(he.paint_heatmap["heatmap-color"]),"heatmap-opacity":new je(he.paint_heatmap["heatmap-opacity"])})}};function Fc(i,{width:e,height:r},a,o){if(o){if(o instanceof Uint8ClampedArray)o=new Uint8Array(o.buffer);else if(o.length!==e*r*a)throw new RangeError(`mismatched image size. expected: ${o.length} but got: ${e*r*a}`)}else o=new Uint8Array(e*r*a);return i.width=e,i.height=r,i.data=o,i}function Oh(i,{width:e,height:r},a){if(e===i.width&&r===i.height)return;const o=Fc({},{width:e,height:r},a);Bc(i,o,{x:0,y:0},{x:0,y:0},{width:Math.min(i.width,e),height:Math.min(i.height,r)},a),i.width=e,i.height=r,i.data=o.data}function Bc(i,e,r,a,o,p){if(o.width===0||o.height===0)return e;if(o.width>i.width||o.height>i.height||r.x>i.width-o.width||r.y>i.height-o.height)throw new RangeError("out of range source coordinates for image copy");if(o.width>e.width||o.height>e.height||a.x>e.width-o.width||a.y>e.height-o.height)throw new RangeError("out of range destination coordinates for image copy");const f=i.data,m=e.data;if(f===m)throw new Error("srcData equals dstData, so image is already copied");for(let y=0;y<o.height;y++){const v=((r.y+y)*i.width+r.x)*p,S=((a.y+y)*e.width+a.x)*p;for(let A=0;A<o.width*p;A++)m[S+A]=f[v+A]}return e}class To{constructor(e,r){Fc(this,e,1,r)}resize(e){Oh(this,e,1)}clone(){return new To({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(e,r,a,o,p){Bc(e,r,a,o,p,1)}}class dr{constructor(e,r){Fc(this,e,4,r)}resize(e){Oh(this,e,4)}replace(e,r){r?this.data.set(e):this.data=e instanceof Uint8ClampedArray?new Uint8Array(e.buffer):e}clone(){return new dr({width:this.width,height:this.height},new Uint8Array(this.data))}static copy(e,r,a,o,p){Bc(e,r,a,o,p,4)}}function Nh(i){const e={},r=i.resolution||256,a=i.clips?i.clips.length:1,o=i.image||new dr({width:r,height:a});if(Math.log(r)/Math.LN2%1!=0)throw new Error(`width is not a power of 2 - ${r}`);const p=(f,m,y)=>{e[i.evaluationKey]=y;const v=i.expression.evaluate(e);o.data[f+m+0]=Math.floor(255*v.r/v.a),o.data[f+m+1]=Math.floor(255*v.g/v.a),o.data[f+m+2]=Math.floor(255*v.b/v.a),o.data[f+m+3]=Math.floor(255*v.a)};if(i.clips)for(let f=0,m=0;f<a;++f,m+=4*r)for(let y=0,v=0;y<r;y++,v+=4){const S=y/(r-1),{start:A,end:M}=i.clips[f];p(m,v,A*(1-S)+M*S)}else for(let f=0,m=0;f<r;f++,m+=4)p(0,m,f/(r-1));return o}Re("AlphaImage",To),Re("RGBAImage",dr);class gg extends cr{createBucket(e){return new Fh(e)}constructor(e){super(e,mg),this._updateColorRamp()}_handleSpecialPaintPropertyUpdate(e){e==="heatmap-color"&&this._updateColorRamp()}_updateColorRamp(){this.colorRamp=Nh({expression:this._transitionablePaint._values["heatmap-color"].value.expression,evaluationKey:"heatmapDensity",image:this.colorRamp}),this.colorRampTexture=null}resize(){this.heatmapFbo&&(this.heatmapFbo.destroy(),this.heatmapFbo=null)}queryRadius(){return 0}queryIntersectsFeature(){return!1}hasOffscreenPass(){return this.paint.get("heatmap-opacity")!==0&&this.visibility!=="none"}}let Vh;var _g={get paint(){return Vh=Vh||new Zt({"hillshade-illumination-direction":new je(he.paint_hillshade["hillshade-illumination-direction"]),"hillshade-illumination-anchor":new je(he.paint_hillshade["hillshade-illumination-anchor"]),"hillshade-exaggeration":new je(he.paint_hillshade["hillshade-exaggeration"]),"hillshade-shadow-color":new je(he.paint_hillshade["hillshade-shadow-color"]),"hillshade-highlight-color":new je(he.paint_hillshade["hillshade-highlight-color"]),"hillshade-accent-color":new je(he.paint_hillshade["hillshade-accent-color"])})}};class yg extends cr{constructor(e){super(e,_g)}hasOffscreenPass(){return this.paint.get("hillshade-exaggeration")!==0&&this.visibility!=="none"}}const xg=Bt([{name:"a_pos",components:2,type:"Int16"}],4),{members:vg}=xg;var Oc={exports:{}};function Fl(i,e,r){r=r||2;var a,o,p,f,m,y,v,S=e&&e.length,A=S?e[0]*r:i.length,M=Uh(i,0,A,r,!0),D=[];if(!M||M.next===M.prev)return D;if(S&&(M=(function(O,q,H,re){var Y,ae,oe,me=[];for(Y=0,ae=q.length;Y<ae;Y++)(oe=Uh(O,q[Y]*re,Y<ae-1?q[Y+1]*re:O.length,re,!1))===oe.next&&(oe.steiner=!0),me.push(Cg(oe));for(me.sort(Ig),Y=0;Y<me.length;Y++)H=Ag(me[Y],H);return H})(i,e,M,r)),i.length>80*r){a=p=i[0],o=f=i[1];for(var L=r;L<A;L+=r)(m=i[L])<a&&(a=m),(y=i[L+1])<o&&(o=y),m>p&&(p=m),y>f&&(f=y);v=(v=Math.max(p-a,f-o))!==0?32767/v:0}return Io(M,D,r,a,o,v,0),D}function Uh(i,e,r,a,o){var p,f;if(o===Uc(i,e,r,a)>0)for(p=e;p<r;p+=a)f=qh(p,i[p],i[p+1],f);else for(p=r-a;p>=e;p-=a)f=qh(p,i[p],i[p+1],f);return f&&Bl(f,f.next)&&(ko(f),f=f.next),f}function Ea(i,e){if(!i)return i;e||(e=i);var r,a=i;do if(r=!1,a.steiner||!Bl(a,a.next)&&Ht(a.prev,a,a.next)!==0)a=a.next;else{if(ko(a),(a=e=a.prev)===a.next)break;r=!0}while(r||a!==e);return e}function Io(i,e,r,a,o,p,f){if(i){!f&&p&&(function(S,A,M,D){var L=S;do L.z===0&&(L.z=Nc(L.x,L.y,A,M,D)),L.prevZ=L.prev,L.nextZ=L.next,L=L.next;while(L!==S);L.prevZ.nextZ=null,L.prevZ=null,(function(O){var q,H,re,Y,ae,oe,me,De,Ve=1;do{for(H=O,O=null,ae=null,oe=0;H;){for(oe++,re=H,me=0,q=0;q<Ve&&(me++,re=re.nextZ);q++);for(De=Ve;me>0||De>0&&re;)me!==0&&(De===0||!re||H.z<=re.z)?(Y=H,H=H.nextZ,me--):(Y=re,re=re.nextZ,De--),ae?ae.nextZ=Y:O=Y,Y.prevZ=ae,ae=Y;H=re}ae.nextZ=null,Ve*=2}while(oe>1)})(L)})(i,a,o,p);for(var m,y,v=i;i.prev!==i.next;)if(m=i.prev,y=i.next,p?wg(i,a,o,p):bg(i))e.push(m.i/r|0),e.push(i.i/r|0),e.push(y.i/r|0),ko(i),i=y.next,v=y.next;else if((i=y)===v){f?f===1?Io(i=Sg(Ea(i),e,r),e,r,a,o,p,2):f===2&&Tg(i,e,r,a,o,p):Io(Ea(i),e,r,a,o,p,1);break}}}function bg(i){var e=i.prev,r=i,a=i.next;if(Ht(e,r,a)>=0)return!1;for(var o=e.x,p=r.x,f=a.x,m=e.y,y=r.y,v=a.y,S=o<p?o<f?o:f:p<f?p:f,A=m<y?m<v?m:v:y<v?y:v,M=o>p?o>f?o:f:p>f?p:f,D=m>y?m>v?m:v:y>v?y:v,L=a.next;L!==e;){if(L.x>=S&&L.x<=M&&L.y>=A&&L.y<=D&&_s(o,m,p,y,f,v,L.x,L.y)&&Ht(L.prev,L,L.next)>=0)return!1;L=L.next}return!0}function wg(i,e,r,a){var o=i.prev,p=i,f=i.next;if(Ht(o,p,f)>=0)return!1;for(var m=o.x,y=p.x,v=f.x,S=o.y,A=p.y,M=f.y,D=m<y?m<v?m:v:y<v?y:v,L=S<A?S<M?S:M:A<M?A:M,O=m>y?m>v?m:v:y>v?y:v,q=S>A?S>M?S:M:A>M?A:M,H=Nc(D,L,e,r,a),re=Nc(O,q,e,r,a),Y=i.prevZ,ae=i.nextZ;Y&&Y.z>=H&&ae&&ae.z<=re;){if(Y.x>=D&&Y.x<=O&&Y.y>=L&&Y.y<=q&&Y!==o&&Y!==f&&_s(m,S,y,A,v,M,Y.x,Y.y)&&Ht(Y.prev,Y,Y.next)>=0||(Y=Y.prevZ,ae.x>=D&&ae.x<=O&&ae.y>=L&&ae.y<=q&&ae!==o&&ae!==f&&_s(m,S,y,A,v,M,ae.x,ae.y)&&Ht(ae.prev,ae,ae.next)>=0))return!1;ae=ae.nextZ}for(;Y&&Y.z>=H;){if(Y.x>=D&&Y.x<=O&&Y.y>=L&&Y.y<=q&&Y!==o&&Y!==f&&_s(m,S,y,A,v,M,Y.x,Y.y)&&Ht(Y.prev,Y,Y.next)>=0)return!1;Y=Y.prevZ}for(;ae&&ae.z<=re;){if(ae.x>=D&&ae.x<=O&&ae.y>=L&&ae.y<=q&&ae!==o&&ae!==f&&_s(m,S,y,A,v,M,ae.x,ae.y)&&Ht(ae.prev,ae,ae.next)>=0)return!1;ae=ae.nextZ}return!0}function Sg(i,e,r){var a=i;do{var o=a.prev,p=a.next.next;!Bl(o,p)&&$h(o,a,a.next,p)&&Ao(o,p)&&Ao(p,o)&&(e.push(o.i/r|0),e.push(a.i/r|0),e.push(p.i/r|0),ko(a),ko(a.next),a=i=p),a=a.next}while(a!==i);return Ea(a)}function Tg(i,e,r,a,o,p){var f=i;do{for(var m=f.next.next;m!==f.prev;){if(f.i!==m.i&&Mg(f,m)){var y=jh(f,m);return f=Ea(f,f.next),y=Ea(y,y.next),Io(f,e,r,a,o,p,0),void Io(y,e,r,a,o,p,0)}m=m.next}f=f.next}while(f!==i)}function Ig(i,e){return i.x-e.x}function Ag(i,e){var r=(function(o,p){var f,m=p,y=o.x,v=o.y,S=-1/0;do{if(v<=m.y&&v>=m.next.y&&m.next.y!==m.y){var A=m.x+(v-m.y)*(m.next.x-m.x)/(m.next.y-m.y);if(A<=y&&A>S&&(S=A,f=m.x<m.next.x?m:m.next,A===y))return f}m=m.next}while(m!==p);if(!f)return null;var M,D=f,L=f.x,O=f.y,q=1/0;m=f;do y>=m.x&&m.x>=L&&y!==m.x&&_s(v<O?y:S,v,L,O,v<O?S:y,v,m.x,m.y)&&(M=Math.abs(v-m.y)/(y-m.x),Ao(m,o)&&(M<q||M===q&&(m.x>f.x||m.x===f.x&&kg(f,m)))&&(f=m,q=M)),m=m.next;while(m!==D);return f})(i,e);if(!r)return e;var a=jh(r,i);return Ea(a,a.next),Ea(r,r.next)}function kg(i,e){return Ht(i.prev,i,e.prev)<0&&Ht(e.next,i,i.next)<0}function Nc(i,e,r,a,o){return(i=1431655765&((i=858993459&((i=252645135&((i=16711935&((i=(i-r)*o|0)|i<<8))|i<<4))|i<<2))|i<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-a)*o|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Cg(i){var e=i,r=i;do(e.x<r.x||e.x===r.x&&e.y<r.y)&&(r=e),e=e.next;while(e!==i);return r}function _s(i,e,r,a,o,p,f,m){return(o-f)*(e-m)>=(i-f)*(p-m)&&(i-f)*(a-m)>=(r-f)*(e-m)&&(r-f)*(p-m)>=(o-f)*(a-m)}function Mg(i,e){return i.next.i!==e.i&&i.prev.i!==e.i&&!(function(r,a){var o=r;do{if(o.i!==r.i&&o.next.i!==r.i&&o.i!==a.i&&o.next.i!==a.i&&$h(o,o.next,r,a))return!0;o=o.next}while(o!==r);return!1})(i,e)&&(Ao(i,e)&&Ao(e,i)&&(function(r,a){var o=r,p=!1,f=(r.x+a.x)/2,m=(r.y+a.y)/2;do o.y>m!=o.next.y>m&&o.next.y!==o.y&&f<(o.next.x-o.x)*(m-o.y)/(o.next.y-o.y)+o.x&&(p=!p),o=o.next;while(o!==r);return p})(i,e)&&(Ht(i.prev,i,e.prev)||Ht(i,e.prev,e))||Bl(i,e)&&Ht(i.prev,i,i.next)>0&&Ht(e.prev,e,e.next)>0)}function Ht(i,e,r){return(e.y-i.y)*(r.x-e.x)-(e.x-i.x)*(r.y-e.y)}function Bl(i,e){return i.x===e.x&&i.y===e.y}function $h(i,e,r,a){var o=Nl(Ht(i,e,r)),p=Nl(Ht(i,e,a)),f=Nl(Ht(r,a,i)),m=Nl(Ht(r,a,e));return o!==p&&f!==m||!(o!==0||!Ol(i,r,e))||!(p!==0||!Ol(i,a,e))||!(f!==0||!Ol(r,i,a))||!(m!==0||!Ol(r,e,a))}function Ol(i,e,r){return e.x<=Math.max(i.x,r.x)&&e.x>=Math.min(i.x,r.x)&&e.y<=Math.max(i.y,r.y)&&e.y>=Math.min(i.y,r.y)}function Nl(i){return i>0?1:i<0?-1:0}function Ao(i,e){return Ht(i.prev,i,i.next)<0?Ht(i,e,i.next)>=0&&Ht(i,i.prev,e)>=0:Ht(i,e,i.prev)<0||Ht(i,i.next,e)<0}function jh(i,e){var r=new Vc(i.i,i.x,i.y),a=new Vc(e.i,e.x,e.y),o=i.next,p=e.prev;return i.next=e,e.prev=i,r.next=o,o.prev=r,a.next=r,r.prev=a,p.next=a,a.prev=p,a}function qh(i,e,r,a){var o=new Vc(i,e,r);return a?(o.next=a.next,o.prev=a,a.next.prev=o,a.next=o):(o.prev=o,o.next=o),o}function ko(i){i.next.prev=i.prev,i.prev.next=i.next,i.prevZ&&(i.prevZ.nextZ=i.nextZ),i.nextZ&&(i.nextZ.prevZ=i.prevZ)}function Vc(i,e,r){this.i=i,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Uc(i,e,r,a){for(var o=0,p=e,f=r-a;p<r;p+=a)o+=(i[f]-i[p])*(i[p+1]+i[f+1]),f=p;return o}Oc.exports=Fl,Oc.exports.default=Fl,Fl.deviation=function(i,e,r,a){var o=e&&e.length,p=Math.abs(Uc(i,0,o?e[0]*r:i.length,r));if(o)for(var f=0,m=e.length;f<m;f++)p-=Math.abs(Uc(i,e[f]*r,f<m-1?e[f+1]*r:i.length,r));var y=0;for(f=0;f<a.length;f+=3){var v=a[f]*r,S=a[f+1]*r,A=a[f+2]*r;y+=Math.abs((i[v]-i[A])*(i[S+1]-i[v+1])-(i[v]-i[S])*(i[A+1]-i[v+1]))}return p===0&&y===0?0:Math.abs((y-p)/p)},Fl.flatten=function(i){for(var e=i[0][0].length,r={vertices:[],holes:[],dimensions:e},a=0,o=0;o<i.length;o++){for(var p=0;p<i[o].length;p++)for(var f=0;f<e;f++)r.vertices.push(i[o][p][f]);o>0&&r.holes.push(a+=i[o-1].length)}return r};var Zh=X(Oc.exports);function Eg(i,e,r,a,o){Gh(i,e,r,a||i.length-1,o||Pg)}function Gh(i,e,r,a,o){for(;a>r;){if(a-r>600){var p=a-r+1,f=e-r+1,m=Math.log(p),y=.5*Math.exp(2*m/3),v=.5*Math.sqrt(m*y*(p-y)/p)*(f-p/2<0?-1:1);Gh(i,e,Math.max(r,Math.floor(e-f*y/p+v)),Math.min(a,Math.floor(e+(p-f)*y/p+v)),o)}var S=i[e],A=r,M=a;for(Co(i,r,e),o(i[a],S)>0&&Co(i,r,a);A<M;){for(Co(i,A,M),A++,M--;o(i[A],S)<0;)A++;for(;o(i[M],S)>0;)M--}o(i[r],S)===0?Co(i,r,M):Co(i,++M,a),M<=e&&(r=M+1),e<=M&&(a=M-1)}}function Co(i,e,r){var a=i[e];i[e]=i[r],i[r]=a}function Pg(i,e){return i<e?-1:i>e?1:0}function $c(i,e){const r=i.length;if(r<=1)return[i];const a=[];let o,p;for(let f=0;f<r;f++){const m=Mr(i[f]);m!==0&&(i[f].area=Math.abs(m),p===void 0&&(p=m<0),p===m<0?(o&&a.push(o),o=[i[f]]):o.push(i[f]))}if(o&&a.push(o),e>1)for(let f=0;f<a.length;f++)a[f].length<=e||(Eg(a[f],e,1,a[f].length-1,zg),a[f]=a[f].slice(0,e));return a}function zg(i,e){return e.area-i.area}function jc(i,e,r){const a=r.patternDependencies;let o=!1;for(const p of e){const f=p.paint.get(`${i}-pattern`);f.isConstant()||(o=!0);const m=f.constantOr(null);m&&(o=!0,a[m.to]=!0,a[m.from]=!0)}return o}function qc(i,e,r,a,o){const p=o.patternDependencies;for(const f of e){const m=f.paint.get(`${i}-pattern`).value;if(m.kind!=="constant"){let y=m.evaluate({zoom:a-1},r,{},o.availableImages),v=m.evaluate({zoom:a},r,{},o.availableImages),S=m.evaluate({zoom:a+1},r,{},o.availableImages);y=y&&y.name?y.name:y,v=v&&v.name?v.name:v,S=S&&S.name?S.name:S,p[y]=!0,p[v]=!0,p[S]=!0,r.patterns[f.id]={min:y,mid:v,max:S}}}return r}class Zc{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((r=>r.id)),this.index=e.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new ot,this.indexArray=new hi,this.indexArray2=new Jt,this.programConfigurations=new Or(e.layers,e.zoom),this.segments=new Et,this.segments2=new Et,this.stateDependentLayerIds=this.layers.filter((r=>r.isStateDependent())).map((r=>r.id))}populate(e,r,a){this.hasPattern=jc("fill",this.layers,r);const o=this.layers[0].layout.get("fill-sort-key"),p=!o.isConstant(),f=[];for(const{feature:m,id:y,index:v,sourceLayerIndex:S}of e){const A=this.layers[0]._featureFilter.needGeometry,M=Ma(m,A);if(!this.layers[0]._featureFilter.filter(new Mt(this.zoom),M,a))continue;const D=p?o.evaluate(M,{},a,r.availableImages):void 0,L={id:y,properties:m.properties,type:m.type,sourceLayerIndex:S,index:v,geometry:A?M.geometry:Ca(m),patterns:{},sortKey:D};f.push(L)}p&&f.sort(((m,y)=>m.sortKey-y.sortKey));for(const m of f){const{geometry:y,index:v,sourceLayerIndex:S}=m;if(this.hasPattern){const A=qc("fill",this.layers,m,this.zoom,r);this.patternFeatures.push(A)}else this.addFeature(m,y,v,a,{});r.featureIndex.insert(e[v].feature,y,v,S,this.index)}}update(e,r,a){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,r,this.stateDependentLayers,a)}addFeatures(e,r,a){for(const o of this.patternFeatures)this.addFeature(o,o.geometry,o.index,r,a)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(e){this.uploaded||(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,vg),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,r,a,o,p){for(const f of $c(r,500)){let m=0;for(const D of f)m+=D.length;const y=this.segments.prepareSegment(m,this.layoutVertexArray,this.indexArray),v=y.vertexLength,S=[],A=[];for(const D of f){if(D.length===0)continue;D!==f[0]&&A.push(S.length/2);const L=this.segments2.prepareSegment(D.length,this.layoutVertexArray,this.indexArray2),O=L.vertexLength;this.layoutVertexArray.emplaceBack(D[0].x,D[0].y),this.indexArray2.emplaceBack(O+D.length-1,O),S.push(D[0].x),S.push(D[0].y);for(let q=1;q<D.length;q++)this.layoutVertexArray.emplaceBack(D[q].x,D[q].y),this.indexArray2.emplaceBack(O+q-1,O+q),S.push(D[q].x),S.push(D[q].y);L.vertexLength+=D.length,L.primitiveLength+=D.length}const M=Zh(S,A);for(let D=0;D<M.length;D+=3)this.indexArray.emplaceBack(v+M[D],v+M[D+1],v+M[D+2]);y.vertexLength+=m,y.primitiveLength+=M.length/3}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,a,p,o)}}let Hh,Wh;Re("FillBucket",Zc,{omit:["layers","patternFeatures"]});var Dg={get paint(){return Wh=Wh||new Zt({"fill-antialias":new je(he.paint_fill["fill-antialias"]),"fill-opacity":new Ke(he.paint_fill["fill-opacity"]),"fill-color":new Ke(he.paint_fill["fill-color"]),"fill-outline-color":new Ke(he.paint_fill["fill-outline-color"]),"fill-translate":new je(he.paint_fill["fill-translate"]),"fill-translate-anchor":new je(he.paint_fill["fill-translate-anchor"]),"fill-pattern":new Ia(he.paint_fill["fill-pattern"])})},get layout(){return Hh=Hh||new Zt({"fill-sort-key":new Ke(he.layout_fill["fill-sort-key"])})}};class Lg extends cr{constructor(e){super(e,Dg)}recalculate(e,r){super.recalculate(e,r);const a=this.paint._values["fill-outline-color"];a.value.kind==="constant"&&a.value.value===void 0&&(this.paint._values["fill-outline-color"]=this.paint._values["fill-color"])}createBucket(e){return new Zc(e)}queryRadius(){return Dl(this.paint.get("fill-translate"))}queryIntersectsFeature(e,r,a,o,p,f,m){return Mh(Ll(e,this.paint.get("fill-translate"),this.paint.get("fill-translate-anchor"),f.angle,m),o)}isTileClipped(){return!0}}const Rg=Bt([{name:"a_pos",components:2,type:"Int16"},{name:"a_normal_ed",components:4,type:"Int16"}],4),Fg=Bt([{name:"a_centroid",components:2,type:"Int16"}],4),{members:Bg}=Rg;var ta={},Og=Ee,Xh=ys;function ys(i,e,r,a,o){this.properties={},this.extent=r,this.type=0,this._pbf=i,this._geometry=-1,this._keys=a,this._values=o,i.readFields(Ng,this,e)}function Ng(i,e,r){i==1?e.id=r.readVarint():i==2?(function(a,o){for(var p=a.readVarint()+a.pos;a.pos<p;){var f=o._keys[a.readVarint()],m=o._values[a.readVarint()];o.properties[f]=m}})(r,e):i==3?e.type=r.readVarint():i==4&&(e._geometry=r.pos)}function Vg(i){for(var e,r,a=0,o=0,p=i.length,f=p-1;o<p;f=o++)a+=((r=i[f]).x-(e=i[o]).x)*(e.y+r.y);return a}ys.types=["Unknown","Point","LineString","Polygon"],ys.prototype.loadGeometry=function(){var i=this._pbf;i.pos=this._geometry;for(var e,r=i.readVarint()+i.pos,a=1,o=0,p=0,f=0,m=[];i.pos<r;){if(o<=0){var y=i.readVarint();a=7&y,o=y>>3}if(o--,a===1||a===2)p+=i.readSVarint(),f+=i.readSVarint(),a===1&&(e&&m.push(e),e=[]),e.push(new Og(p,f));else{if(a!==7)throw new Error("unknown command "+a);e&&e.push(e[0].clone())}}return e&&m.push(e),m},ys.prototype.bbox=function(){var i=this._pbf;i.pos=this._geometry;for(var e=i.readVarint()+i.pos,r=1,a=0,o=0,p=0,f=1/0,m=-1/0,y=1/0,v=-1/0;i.pos<e;){if(a<=0){var S=i.readVarint();r=7&S,a=S>>3}if(a--,r===1||r===2)(o+=i.readSVarint())<f&&(f=o),o>m&&(m=o),(p+=i.readSVarint())<y&&(y=p),p>v&&(v=p);else if(r!==7)throw new Error("unknown command "+r)}return[f,y,m,v]},ys.prototype.toGeoJSON=function(i,e,r){var a,o,p=this.extent*Math.pow(2,r),f=this.extent*i,m=this.extent*e,y=this.loadGeometry(),v=ys.types[this.type];function S(D){for(var L=0;L<D.length;L++){var O=D[L];D[L]=[360*(O.x+f)/p-180,360/Math.PI*Math.atan(Math.exp((180-360*(O.y+m)/p)*Math.PI/180))-90]}}switch(this.type){case 1:var A=[];for(a=0;a<y.length;a++)A[a]=y[a][0];S(y=A);break;case 2:for(a=0;a<y.length;a++)S(y[a]);break;case 3:for(y=(function(D){var L=D.length;if(L<=1)return[D];for(var O,q,H=[],re=0;re<L;re++){var Y=Vg(D[re]);Y!==0&&(q===void 0&&(q=Y<0),q===Y<0?(O&&H.push(O),O=[D[re]]):O.push(D[re]))}return O&&H.push(O),H})(y),a=0;a<y.length;a++)for(o=0;o<y[a].length;o++)S(y[a][o])}y.length===1?y=y[0]:v="Multi"+v;var M={type:"Feature",geometry:{type:v,coordinates:y},properties:this.properties};return"id"in this&&(M.id=this.id),M};var Ug=Xh,Kh=Yh;function Yh(i,e){this.version=1,this.name=null,this.extent=4096,this.length=0,this._pbf=i,this._keys=[],this._values=[],this._features=[],i.readFields($g,this,e),this.length=this._features.length}function $g(i,e,r){i===15?e.version=r.readVarint():i===1?e.name=r.readString():i===5?e.extent=r.readVarint():i===2?e._features.push(r.pos):i===3?e._keys.push(r.readString()):i===4&&e._values.push((function(a){for(var o=null,p=a.readVarint()+a.pos;a.pos<p;){var f=a.readVarint()>>3;o=f===1?a.readString():f===2?a.readFloat():f===3?a.readDouble():f===4?a.readVarint64():f===5?a.readVarint():f===6?a.readSVarint():f===7?a.readBoolean():null}return o})(r))}Yh.prototype.feature=function(i){if(i<0||i>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[i];var e=this._pbf.readVarint()+this._pbf.pos;return new Ug(this._pbf,e,this.extent,this._keys,this._values)};var jg=Kh;function qg(i,e,r){if(i===3){var a=new jg(r,r.readVarint()+r.pos);a.length&&(e[a.name]=a)}}ta.VectorTile=function(i,e){this.layers=i.readFields(qg,{},e)},ta.VectorTileFeature=Xh,ta.VectorTileLayer=Kh;const Zg=ta.VectorTileFeature.types,Gc=Math.pow(2,13);function Mo(i,e,r,a,o,p,f,m){i.emplaceBack(e,r,2*Math.floor(a*Gc)+f,o*Gc*2,p*Gc*2,Math.round(m))}class Hc{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((r=>r.id)),this.index=e.index,this.hasPattern=!1,this.layoutVertexArray=new Ce,this.centroidVertexArray=new Se,this.indexArray=new hi,this.programConfigurations=new Or(e.layers,e.zoom),this.segments=new Et,this.stateDependentLayerIds=this.layers.filter((r=>r.isStateDependent())).map((r=>r.id))}populate(e,r,a){this.features=[],this.hasPattern=jc("fill-extrusion",this.layers,r);for(const{feature:o,id:p,index:f,sourceLayerIndex:m}of e){const y=this.layers[0]._featureFilter.needGeometry,v=Ma(o,y);if(!this.layers[0]._featureFilter.filter(new Mt(this.zoom),v,a))continue;const S={id:p,sourceLayerIndex:m,index:f,geometry:y?v.geometry:Ca(o),properties:o.properties,type:o.type,patterns:{}};this.hasPattern?this.features.push(qc("fill-extrusion",this.layers,S,this.zoom,r)):this.addFeature(S,S.geometry,f,a,{}),r.featureIndex.insert(o,S.geometry,f,m,this.index,!0)}}addFeatures(e,r,a){for(const o of this.features){const{geometry:p}=o;this.addFeature(o,p,o.index,r,a)}}update(e,r,a){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,r,this.stateDependentLayers,a)}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,Bg),this.centroidVertexBuffer=e.createVertexBuffer(this.centroidVertexArray,Fg.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,r,a,o,p){const f={x:0,y:0,vertexCount:0};for(const m of $c(r,500)){let y=0;for(const L of m)y+=L.length;let v=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(const L of m){if(L.length===0||Hg(L))continue;let O=0;for(let q=0;q<L.length;q++){const H=L[q];if(q>=1){const re=L[q-1];if(!Gg(H,re)){v.vertexLength+4>Et.MAX_VERTEX_ARRAY_LENGTH&&(v=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));const Y=H.sub(re)._perp()._unit(),ae=re.dist(H);O+ae>32768&&(O=0),Mo(this.layoutVertexArray,H.x,H.y,Y.x,Y.y,0,0,O),Mo(this.layoutVertexArray,H.x,H.y,Y.x,Y.y,0,1,O),f.x+=2*H.x,f.y+=2*H.y,f.vertexCount+=2,O+=ae,Mo(this.layoutVertexArray,re.x,re.y,Y.x,Y.y,0,0,O),Mo(this.layoutVertexArray,re.x,re.y,Y.x,Y.y,0,1,O),f.x+=2*re.x,f.y+=2*re.y,f.vertexCount+=2;const oe=v.vertexLength;this.indexArray.emplaceBack(oe,oe+2,oe+1),this.indexArray.emplaceBack(oe+1,oe+2,oe+3),v.vertexLength+=4,v.primitiveLength+=2}}}}if(v.vertexLength+y>Et.MAX_VERTEX_ARRAY_LENGTH&&(v=this.segments.prepareSegment(y,this.layoutVertexArray,this.indexArray)),Zg[e.type]!=="Polygon")continue;const S=[],A=[],M=v.vertexLength;for(const L of m)if(L.length!==0){L!==m[0]&&A.push(S.length/2);for(let O=0;O<L.length;O++){const q=L[O];Mo(this.layoutVertexArray,q.x,q.y,0,0,1,1,0),f.x+=q.x,f.y+=q.y,f.vertexCount+=1,S.push(q.x),S.push(q.y)}}const D=Zh(S,A);for(let L=0;L<D.length;L+=3)this.indexArray.emplaceBack(M+D[L],M+D[L+2],M+D[L+1]);v.primitiveLength+=D.length/3,v.vertexLength+=y}for(let m=0;m<f.vertexCount;m++)this.centroidVertexArray.emplaceBack(Math.floor(f.x/f.vertexCount),Math.floor(f.y/f.vertexCount));this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,a,p,o)}}function Gg(i,e){return i.x===e.x&&(i.x<0||i.x>Xt)||i.y===e.y&&(i.y<0||i.y>Xt)}function Hg(i){return i.every((e=>e.x<0))||i.every((e=>e.x>Xt))||i.every((e=>e.y<0))||i.every((e=>e.y>Xt))}let Jh;Re("FillExtrusionBucket",Hc,{omit:["layers","features"]});var Wg={get paint(){return Jh=Jh||new Zt({"fill-extrusion-opacity":new je(he["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new Ke(he["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new je(he["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new je(he["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new Ia(he["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new Ke(he["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new Ke(he["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new je(he["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};class Xg extends cr{constructor(e){super(e,Wg)}createBucket(e){return new Hc(e)}queryRadius(){return Dl(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}queryIntersectsFeature(e,r,a,o,p,f,m,y){const v=Ll(e,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),f.angle,m),S=this.paint.get("fill-extrusion-height").evaluate(r,a),A=this.paint.get("fill-extrusion-base").evaluate(r,a),M=(function(L,O,q,H){const re=[];for(const Y of L){const ae=[Y.x,Y.y,0,1];Rl(ae,ae,O),re.push(new _e(ae[0]/ae[3],ae[1]/ae[3]))}return re})(v,y),D=(function(L,O,q,H){const re=[],Y=[],ae=H[8]*O,oe=H[9]*O,me=H[10]*O,De=H[11]*O,Ve=H[8]*q,Pe=H[9]*q,Me=H[10]*q,Te=H[11]*q;for(const Fe of L){const Ae=[],be=[];for(const He of Fe){const $e=He.x,at=He.y,Pt=H[0]*$e+H[4]*at+H[12],Dt=H[1]*$e+H[5]*at+H[13],ti=H[2]*$e+H[6]*at+H[14],hr=H[3]*$e+H[7]*at+H[15],Bi=ti+me,Kt=hr+De,di=Pt+Ve,xi=Dt+Pe,Oi=ti+Me,Ni=hr+Te,ii=new _e((Pt+ae)/Kt,(Dt+oe)/Kt);ii.z=Bi/Kt,Ae.push(ii);const ri=new _e(di/Ni,xi/Ni);ri.z=Oi/Ni,be.push(ri)}re.push(Ae),Y.push(be)}return[re,Y]})(o,A,S,y);return(function(L,O,q){let H=1/0;Mh(q,O)&&(H=Qh(q,O[0]));for(let re=0;re<O.length;re++){const Y=O[re],ae=L[re];for(let oe=0;oe<Y.length-1;oe++){const me=Y[oe],De=[me,Y[oe+1],ae[oe+1],ae[oe],me];Ch(q,De)&&(H=Math.min(H,Qh(q,De)))}}return H!==1/0&&H})(D[0],D[1],M)}}function Eo(i,e){return i.x*e.x+i.y*e.y}function Qh(i,e){if(i.length===1){let r=0;const a=e[r++];let o;for(;!o||a.equals(o);)if(o=e[r++],!o)return 1/0;for(;r<e.length;r++){const p=e[r],f=i[0],m=o.sub(a),y=p.sub(a),v=f.sub(a),S=Eo(m,m),A=Eo(m,y),M=Eo(y,y),D=Eo(v,m),L=Eo(v,y),O=S*M-A*A,q=(M*D-A*L)/O,H=(S*L-A*D)/O,re=a.z*(1-q-H)+o.z*q+p.z*H;if(isFinite(re))return re}return 1/0}{let r=1/0;for(const a of e)r=Math.min(r,a.z);return r}}const Kg=Bt([{name:"a_pos_normal",components:2,type:"Int16"},{name:"a_data",components:4,type:"Uint8"}],4),{members:Yg}=Kg,Jg=Bt([{name:"a_uv_x",components:1,type:"Float32"},{name:"a_split_index",components:1,type:"Float32"}]),{members:Qg}=Jg,e_=ta.VectorTileFeature.types,t_=Math.cos(Math.PI/180*37.5),ep=Math.pow(2,14)/.5;class Wc{constructor(e){this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((r=>r.id)),this.index=e.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach((r=>{this.gradients[r.id]={}})),this.layoutVertexArray=new Ye,this.layoutVertexArray2=new Ue,this.indexArray=new hi,this.programConfigurations=new Or(e.layers,e.zoom),this.segments=new Et,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter((r=>r.isStateDependent())).map((r=>r.id))}populate(e,r,a){this.hasPattern=jc("line",this.layers,r);const o=this.layers[0].layout.get("line-sort-key"),p=!o.isConstant(),f=[];for(const{feature:m,id:y,index:v,sourceLayerIndex:S}of e){const A=this.layers[0]._featureFilter.needGeometry,M=Ma(m,A);if(!this.layers[0]._featureFilter.filter(new Mt(this.zoom),M,a))continue;const D=p?o.evaluate(M,{},a):void 0,L={id:y,properties:m.properties,type:m.type,sourceLayerIndex:S,index:v,geometry:A?M.geometry:Ca(m),patterns:{},sortKey:D};f.push(L)}p&&f.sort(((m,y)=>m.sortKey-y.sortKey));for(const m of f){const{geometry:y,index:v,sourceLayerIndex:S}=m;if(this.hasPattern){const A=qc("line",this.layers,m,this.zoom,r);this.patternFeatures.push(A)}else this.addFeature(m,y,v,a,{});r.featureIndex.insert(e[v].feature,y,v,S,this.index)}}update(e,r,a){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(e,r,this.stateDependentLayers,a)}addFeatures(e,r,a){for(const o of this.patternFeatures)this.addFeature(o,o.geometry,o.index,r,a)}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,Qg)),this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,Yg),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.prototype.hasOwnProperty.call(e.properties,"mapbox_clip_start")&&Object.prototype.hasOwnProperty.call(e.properties,"mapbox_clip_end"))return{start:+e.properties.mapbox_clip_start,end:+e.properties.mapbox_clip_end}}addFeature(e,r,a,o,p){const f=this.layers[0].layout,m=f.get("line-join").evaluate(e,{}),y=f.get("line-cap"),v=f.get("line-miter-limit"),S=f.get("line-round-limit");this.lineClips=this.lineFeatureClips(e);for(const A of r)this.addLine(A,e,m,y,v,S);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,e,a,p,o)}addLine(e,r,a,o,p,f){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let H=0;H<e.length-1;H++)this.totalDistance+=e[H].dist(e[H+1]);this.updateScaledDistance(),this.maxLineLength=Math.max(this.maxLineLength,this.totalDistance)}const m=e_[r.type]==="Polygon";let y=e.length;for(;y>=2&&e[y-1].equals(e[y-2]);)y--;let v=0;for(;v<y-1&&e[v].equals(e[v+1]);)v++;if(y<(m?3:2))return;a==="bevel"&&(p=1.05);const S=this.overscaling<=16?15*Xt/(512*this.overscaling):0,A=this.segments.prepareSegment(10*y,this.layoutVertexArray,this.indexArray);let M,D,L,O,q;this.e1=this.e2=-1,m&&(M=e[y-2],q=e[v].sub(M)._unit()._perp());for(let H=v;H<y;H++){if(L=H===y-1?m?e[v+1]:void 0:e[H+1],L&&e[H].equals(L))continue;q&&(O=q),M&&(D=M),M=e[H],q=L?L.sub(M)._unit()._perp():O,O=O||q;let re=O.add(q);re.x===0&&re.y===0||re._unit();const Y=O.x*q.x+O.y*q.y,ae=re.x*q.x+re.y*q.y,oe=ae!==0?1/ae:1/0,me=2*Math.sqrt(2-2*ae),De=ae<t_&&D&&L,Ve=O.x*q.y-O.y*q.x>0;if(De&&H>v){const Te=M.dist(D);if(Te>2*S){const Fe=M.sub(M.sub(D)._mult(S/Te)._round());this.updateDistance(D,Fe),this.addCurrentVertex(Fe,O,0,0,A),D=Fe}}const Pe=D&&L;let Me=Pe?a:m?"butt":o;if(Pe&&Me==="round"&&(oe<f?Me="miter":oe<=2&&(Me="fakeround")),Me==="miter"&&oe>p&&(Me="bevel"),Me==="bevel"&&(oe>2&&(Me="flipbevel"),oe<p&&(Me="miter")),D&&this.updateDistance(D,M),Me==="miter")re._mult(oe),this.addCurrentVertex(M,re,0,0,A);else if(Me==="flipbevel"){if(oe>100)re=q.mult(-1);else{const Te=oe*O.add(q).mag()/O.sub(q).mag();re._perp()._mult(Te*(Ve?-1:1))}this.addCurrentVertex(M,re,0,0,A),this.addCurrentVertex(M,re.mult(-1),0,0,A)}else if(Me==="bevel"||Me==="fakeround"){const Te=-Math.sqrt(oe*oe-1),Fe=Ve?Te:0,Ae=Ve?0:Te;if(D&&this.addCurrentVertex(M,O,Fe,Ae,A),Me==="fakeround"){const be=Math.round(180*me/Math.PI/20);for(let He=1;He<be;He++){let $e=He/be;if($e!==.5){const Pt=$e-.5;$e+=$e*Pt*($e-1)*((1.0904+Y*(Y*(3.55645-1.43519*Y)-3.2452))*Pt*Pt+(.848013+Y*(.215638*Y-1.06021)))}const at=q.sub(O)._mult($e)._add(O)._unit()._mult(Ve?-1:1);this.addHalfVertex(M,at.x,at.y,!1,Ve,0,A)}}L&&this.addCurrentVertex(M,q,-Fe,-Ae,A)}else if(Me==="butt")this.addCurrentVertex(M,re,0,0,A);else if(Me==="square"){const Te=D?1:-1;this.addCurrentVertex(M,re,Te,Te,A)}else Me==="round"&&(D&&(this.addCurrentVertex(M,O,0,0,A),this.addCurrentVertex(M,O,1,1,A,!0)),L&&(this.addCurrentVertex(M,q,-1,-1,A,!0),this.addCurrentVertex(M,q,0,0,A)));if(De&&H<y-1){const Te=M.dist(L);if(Te>2*S){const Fe=M.add(L.sub(M)._mult(S/Te)._round());this.updateDistance(M,Fe),this.addCurrentVertex(Fe,q,0,0,A),M=Fe}}}}addCurrentVertex(e,r,a,o,p,f=!1){const m=r.y*o-r.x,y=-r.y-r.x*o;this.addHalfVertex(e,r.x+r.y*a,r.y-r.x*a,f,!1,a,p),this.addHalfVertex(e,m,y,f,!0,-o,p),this.distance>ep/2&&this.totalDistance===0&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(e,r,a,o,p,f))}addHalfVertex({x:e,y:r},a,o,p,f,m,y){const v=.5*(this.lineClips?this.scaledDistance*(ep-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((e<<1)+(p?1:0),(r<<1)+(f?1:0),Math.round(63*a)+128,Math.round(63*o)+128,1+(m===0?0:m<0?-1:1)|(63&v)<<2,v>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);const S=y.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,S),y.primitiveLength++),f?this.e2=S:this.e1=S}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(e,r){this.distance+=e.dist(r),this.updateScaledDistance()}}let tp,ip;Re("LineBucket",Wc,{omit:["layers","patternFeatures"]});var rp={get paint(){return ip=ip||new Zt({"line-opacity":new Ke(he.paint_line["line-opacity"]),"line-color":new Ke(he.paint_line["line-color"]),"line-translate":new je(he.paint_line["line-translate"]),"line-translate-anchor":new je(he.paint_line["line-translate-anchor"]),"line-width":new Ke(he.paint_line["line-width"]),"line-gap-width":new Ke(he.paint_line["line-gap-width"]),"line-offset":new Ke(he.paint_line["line-offset"]),"line-blur":new Ke(he.paint_line["line-blur"]),"line-dasharray":new po(he.paint_line["line-dasharray"]),"line-pattern":new Ia(he.paint_line["line-pattern"]),"line-gradient":new fo(he.paint_line["line-gradient"])})},get layout(){return tp=tp||new Zt({"line-cap":new je(he.layout_line["line-cap"]),"line-join":new Ke(he.layout_line["line-join"]),"line-miter-limit":new je(he.layout_line["line-miter-limit"]),"line-round-limit":new je(he.layout_line["line-round-limit"]),"line-sort-key":new Ke(he.layout_line["line-sort-key"])})}};class i_ extends Ke{possiblyEvaluate(e,r){return r=new Mt(Math.floor(r.zoom),{now:r.now,fadeDuration:r.fadeDuration,zoomHistory:r.zoomHistory,transition:r.transition}),super.possiblyEvaluate(e,r)}evaluate(e,r,a,o){return r=Yt({},r,{zoom:Math.floor(r.zoom)}),super.evaluate(e,r,a,o)}}let Vl;class r_ extends cr{constructor(e){super(e,rp),this.gradientVersion=0,Vl||(Vl=new i_(rp.paint.properties["line-width"].specification),Vl.useIntegerZoom=!0)}_handleSpecialPaintPropertyUpdate(e){if(e==="line-gradient"){const r=this.gradientExpression();this.stepInterpolant=!!(function(a){return a._styleExpression!==void 0})(r)&&r._styleExpression.expression instanceof Qr,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(e,r){super.recalculate(e,r),this.paint._values["line-floorwidth"]=Vl.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,e)}createBucket(e){return new Wc(e)}queryRadius(e){const r=e,a=np(wo("line-width",this,r),wo("line-gap-width",this,r)),o=wo("line-offset",this,r);return a/2+Math.abs(o)+Dl(this.paint.get("line-translate"))}queryIntersectsFeature(e,r,a,o,p,f,m){const y=Ll(e,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),f.angle,m),v=m/2*np(this.paint.get("line-width").evaluate(r,a),this.paint.get("line-gap-width").evaluate(r,a)),S=this.paint.get("line-offset").evaluate(r,a);return S&&(o=(function(A,M){const D=[];for(let L=0;L<A.length;L++){const O=A[L],q=[];for(let H=0;H<O.length;H++){const re=O[H-1],Y=O[H],ae=O[H+1],oe=H===0?new _e(0,0):Y.sub(re)._unit()._perp(),me=H===O.length-1?new _e(0,0):ae.sub(Y)._unit()._perp(),De=oe._add(me)._unit(),Ve=De.x*me.x+De.y*me.y;Ve!==0&&De._mult(1/Ve),q.push(De._mult(M)._add(Y))}D.push(q)}return D})(o,S*m)),(function(A,M,D){for(let L=0;L<M.length;L++){const O=M[L];if(A.length>=3){for(let q=0;q<O.length;q++)if(ms(A,O[q]))return!0}if(cg(A,O,D))return!0}return!1})(y,o,v)}isTileClipped(){return!0}}function np(i,e){return e>0?e+2*i:i}const n_=Bt([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),a_=Bt([{name:"a_projected_pos",components:3,type:"Float32"}],4);Bt([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);const s_=Bt([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"}]);Bt([{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"}]);const ap=Bt([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),o_=Bt([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function l_(i,e,r){return i.sections.forEach((a=>{a.text=(function(o,p,f){const m=p.layout.get("text-transform").evaluate(f,{});return m==="uppercase"?o=o.toLocaleUpperCase():m==="lowercase"&&(o=o.toLocaleLowerCase()),Hi.applyArabicShaping&&(o=Hi.applyArabicShaping(o)),o})(a.text,e,r)})),i}Bt([{name:"triangle",components:3,type:"Uint16"}]),Bt([{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"}]),Bt([{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"}]),Bt([{type:"Float32",name:"offsetX"}]),Bt([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]),Bt([{type:"Uint16",name:"textAnchor"},{type:"Float32",components:2,name:"textOffset"}]);const Po={"!":"︕","#":"",$:"","%":"","&":"","(":"︵",")":"︶","*":"","+":"",",":"︐","-":"︲",".":"・","/":"",":":"︓",";":"︔","<":"︿","=":"",">":"﹀","?":"︖","@":"","[":"﹇","\\":"","]":"﹈","^":"",_:"︳","`":"","{":"︷","|":"―","}":"︸","~":"","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","":"︲","—":"︱","":"﹃","":"﹄","“":"﹁","”":"﹂","…":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","":"︹","":"︺","〖":"︗","〗":"︘","":"︕","":"︵","":"︶","":"︐","":"︲","":"・","":"︓","":"︔","":"︿","":"﹀","":"︖","":"﹇","":"﹈","_":"︳","":"︷","":"―","":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂"};var ei=24,sp=St,op=function(i,e,r,a,o){var p,f,m=8*o-a-1,y=(1<<m)-1,v=y>>1,S=-7,A=o-1,M=-1,D=i[e+A];for(A+=M,p=D&(1<<-S)-1,D>>=-S,S+=m;S>0;p=256*p+i[e+A],A+=M,S-=8);for(f=p&(1<<-S)-1,p>>=-S,S+=a;S>0;f=256*f+i[e+A],A+=M,S-=8);if(p===0)p=1-v;else{if(p===y)return f?NaN:1/0*(D?-1:1);f+=Math.pow(2,a),p-=v}return(D?-1:1)*f*Math.pow(2,p-a)},lp=function(i,e,r,a,o,p){var f,m,y,v=8*p-o-1,S=(1<<v)-1,A=S>>1,M=o===23?Math.pow(2,-24)-Math.pow(2,-77):0,D=0,L=1,O=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(m=isNaN(e)?1:0,f=S):(f=Math.floor(Math.log(e)/Math.LN2),e*(y=Math.pow(2,-f))<1&&(f--,y*=2),(e+=f+A>=1?M/y:M*Math.pow(2,1-A))*y>=2&&(f++,y/=2),f+A>=S?(m=0,f=S):f+A>=1?(m=(e*y-1)*Math.pow(2,o),f+=A):(m=e*Math.pow(2,A-1)*Math.pow(2,o),f=0));o>=8;i[r+D]=255&m,D+=L,m/=256,o-=8);for(f=f<<o|m,v+=o;v>0;i[r+D]=255&f,D+=L,f/=256,v-=8);i[r+D-L]|=128*O};function St(i){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(i)?i:new Uint8Array(i||0),this.pos=0,this.type=0,this.length=this.buf.length}St.Varint=0,St.Fixed64=1,St.Bytes=2,St.Fixed32=5;var Xc=4294967296,cp=1/Xc,up=typeof TextDecoder>"u"?null:new TextDecoder("utf8");function Mn(i){return i.type===St.Bytes?i.readVarint()+i.pos:i.pos+1}function xs(i,e,r){return r?4294967296*e+(i>>>0):4294967296*(e>>>0)+(i>>>0)}function hp(i,e,r){var a=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(a);for(var o=r.pos-1;o>=i;o--)r.buf[o+a]=r.buf[o]}function c_(i,e){for(var r=0;r<i.length;r++)e.writeVarint(i[r])}function u_(i,e){for(var r=0;r<i.length;r++)e.writeSVarint(i[r])}function h_(i,e){for(var r=0;r<i.length;r++)e.writeFloat(i[r])}function p_(i,e){for(var r=0;r<i.length;r++)e.writeDouble(i[r])}function d_(i,e){for(var r=0;r<i.length;r++)e.writeBoolean(i[r])}function f_(i,e){for(var r=0;r<i.length;r++)e.writeFixed32(i[r])}function m_(i,e){for(var r=0;r<i.length;r++)e.writeSFixed32(i[r])}function g_(i,e){for(var r=0;r<i.length;r++)e.writeFixed64(i[r])}function __(i,e){for(var r=0;r<i.length;r++)e.writeSFixed64(i[r])}function Ul(i,e){return(i[e]|i[e+1]<<8|i[e+2]<<16)+16777216*i[e+3]}function vs(i,e,r){i[r]=e,i[r+1]=e>>>8,i[r+2]=e>>>16,i[r+3]=e>>>24}function pp(i,e){return(i[e]|i[e+1]<<8|i[e+2]<<16)+(i[e+3]<<24)}St.prototype={destroy:function(){this.buf=null},readFields:function(i,e,r){for(r=r||this.length;this.pos<r;){var a=this.readVarint(),o=a>>3,p=this.pos;this.type=7&a,i(o,e,this),this.pos===p&&this.skip(a)}return e},readMessage:function(i,e){return this.readFields(i,e,this.readVarint()+this.pos)},readFixed32:function(){var i=Ul(this.buf,this.pos);return this.pos+=4,i},readSFixed32:function(){var i=pp(this.buf,this.pos);return this.pos+=4,i},readFixed64:function(){var i=Ul(this.buf,this.pos)+Ul(this.buf,this.pos+4)*Xc;return this.pos+=8,i},readSFixed64:function(){var i=Ul(this.buf,this.pos)+pp(this.buf,this.pos+4)*Xc;return this.pos+=8,i},readFloat:function(){var i=op(this.buf,this.pos,!0,23,4);return this.pos+=4,i},readDouble:function(){var i=op(this.buf,this.pos,!0,52,8);return this.pos+=8,i},readVarint:function(i){var e,r,a=this.buf;return e=127&(r=a[this.pos++]),r<128?e:(e|=(127&(r=a[this.pos++]))<<7,r<128?e:(e|=(127&(r=a[this.pos++]))<<14,r<128?e:(e|=(127&(r=a[this.pos++]))<<21,r<128?e:(function(o,p,f){var m,y,v=f.buf;if(m=(112&(y=v[f.pos++]))>>4,y<128||(m|=(127&(y=v[f.pos++]))<<3,y<128)||(m|=(127&(y=v[f.pos++]))<<10,y<128)||(m|=(127&(y=v[f.pos++]))<<17,y<128)||(m|=(127&(y=v[f.pos++]))<<24,y<128)||(m|=(1&(y=v[f.pos++]))<<31,y<128))return xs(o,m,p);throw new Error("Expected varint not more than 10 bytes")})(e|=(15&(r=a[this.pos]))<<28,i,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var i=this.readVarint();return i%2==1?(i+1)/-2:i/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var i=this.readVarint()+this.pos,e=this.pos;return this.pos=i,i-e>=12&&up?(function(r,a,o){return up.decode(r.subarray(a,o))})(this.buf,e,i):(function(r,a,o){for(var p="",f=a;f<o;){var m,y,v,S=r[f],A=null,M=S>239?4:S>223?3:S>191?2:1;if(f+M>o)break;M===1?S<128&&(A=S):M===2?(192&(m=r[f+1]))==128&&(A=(31&S)<<6|63&m)<=127&&(A=null):M===3?(y=r[f+2],(192&(m=r[f+1]))==128&&(192&y)==128&&((A=(15&S)<<12|(63&m)<<6|63&y)<=2047||A>=55296&&A<=57343)&&(A=null)):M===4&&(y=r[f+2],v=r[f+3],(192&(m=r[f+1]))==128&&(192&y)==128&&(192&v)==128&&((A=(15&S)<<18|(63&m)<<12|(63&y)<<6|63&v)<=65535||A>=1114112)&&(A=null)),A===null?(A=65533,M=1):A>65535&&(A-=65536,p+=String.fromCharCode(A>>>10&1023|55296),A=56320|1023&A),p+=String.fromCharCode(A),f+=M}return p})(this.buf,e,i)},readBytes:function(){var i=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,i);return this.pos=i,e},readPackedVarint:function(i,e){if(this.type!==St.Bytes)return i.push(this.readVarint(e));var r=Mn(this);for(i=i||[];this.pos<r;)i.push(this.readVarint(e));return i},readPackedSVarint:function(i){if(this.type!==St.Bytes)return i.push(this.readSVarint());var e=Mn(this);for(i=i||[];this.pos<e;)i.push(this.readSVarint());return i},readPackedBoolean:function(i){if(this.type!==St.Bytes)return i.push(this.readBoolean());var e=Mn(this);for(i=i||[];this.pos<e;)i.push(this.readBoolean());return i},readPackedFloat:function(i){if(this.type!==St.Bytes)return i.push(this.readFloat());var e=Mn(this);for(i=i||[];this.pos<e;)i.push(this.readFloat());return i},readPackedDouble:function(i){if(this.type!==St.Bytes)return i.push(this.readDouble());var e=Mn(this);for(i=i||[];this.pos<e;)i.push(this.readDouble());return i},readPackedFixed32:function(i){if(this.type!==St.Bytes)return i.push(this.readFixed32());var e=Mn(this);for(i=i||[];this.pos<e;)i.push(this.readFixed32());return i},readPackedSFixed32:function(i){if(this.type!==St.Bytes)return i.push(this.readSFixed32());var e=Mn(this);for(i=i||[];this.pos<e;)i.push(this.readSFixed32());return i},readPackedFixed64:function(i){if(this.type!==St.Bytes)return i.push(this.readFixed64());var e=Mn(this);for(i=i||[];this.pos<e;)i.push(this.readFixed64());return i},readPackedSFixed64:function(i){if(this.type!==St.Bytes)return i.push(this.readSFixed64());var e=Mn(this);for(i=i||[];this.pos<e;)i.push(this.readSFixed64());return i},skip:function(i){var e=7&i;if(e===St.Varint)for(;this.buf[this.pos++]>127;);else if(e===St.Bytes)this.pos=this.readVarint()+this.pos;else if(e===St.Fixed32)this.pos+=4;else{if(e!==St.Fixed64)throw new Error("Unimplemented type: "+e);this.pos+=8}},writeTag:function(i,e){this.writeVarint(i<<3|e)},realloc:function(i){for(var e=this.length||16;e<this.pos+i;)e*=2;if(e!==this.length){var r=new Uint8Array(e);r.set(this.buf),this.buf=r,this.length=e}},finish:function(){return this.length=this.pos,this.pos=0,this.buf.subarray(0,this.length)},writeFixed32:function(i){this.realloc(4),vs(this.buf,i,this.pos),this.pos+=4},writeSFixed32:function(i){this.realloc(4),vs(this.buf,i,this.pos),this.pos+=4},writeFixed64:function(i){this.realloc(8),vs(this.buf,-1&i,this.pos),vs(this.buf,Math.floor(i*cp),this.pos+4),this.pos+=8},writeSFixed64:function(i){this.realloc(8),vs(this.buf,-1&i,this.pos),vs(this.buf,Math.floor(i*cp),this.pos+4),this.pos+=8},writeVarint:function(i){(i=+i||0)>268435455||i<0?(function(e,r){var a,o;if(e>=0?(a=e%4294967296|0,o=e/4294967296|0):(o=~(-e/4294967296),4294967295^(a=~(-e%4294967296))?a=a+1|0:(a=0,o=o+1|0)),e>=18446744073709552e3||e<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");r.realloc(10),(function(p,f,m){m.buf[m.pos++]=127&p|128,p>>>=7,m.buf[m.pos++]=127&p|128,p>>>=7,m.buf[m.pos++]=127&p|128,p>>>=7,m.buf[m.pos++]=127&p|128,m.buf[m.pos]=127&(p>>>=7)})(a,0,r),(function(p,f){var m=(7&p)<<4;f.buf[f.pos++]|=m|((p>>>=3)?128:0),p&&(f.buf[f.pos++]=127&p|((p>>>=7)?128:0),p&&(f.buf[f.pos++]=127&p|((p>>>=7)?128:0),p&&(f.buf[f.pos++]=127&p|((p>>>=7)?128:0),p&&(f.buf[f.pos++]=127&p|((p>>>=7)?128:0),p&&(f.buf[f.pos++]=127&p)))))})(o,r)})(i,this):(this.realloc(4),this.buf[this.pos++]=127&i|(i>127?128:0),i<=127||(this.buf[this.pos++]=127&(i>>>=7)|(i>127?128:0),i<=127||(this.buf[this.pos++]=127&(i>>>=7)|(i>127?128:0),i<=127||(this.buf[this.pos++]=i>>>7&127))))},writeSVarint:function(i){this.writeVarint(i<0?2*-i-1:2*i)},writeBoolean:function(i){this.writeVarint(!!i)},writeString:function(i){i=String(i),this.realloc(4*i.length),this.pos++;var e=this.pos;this.pos=(function(a,o,p){for(var f,m,y=0;y<o.length;y++){if((f=o.charCodeAt(y))>55295&&f<57344){if(!m){f>56319||y+1===o.length?(a[p++]=239,a[p++]=191,a[p++]=189):m=f;continue}if(f<56320){a[p++]=239,a[p++]=191,a[p++]=189,m=f;continue}f=m-55296<<10|f-56320|65536,m=null}else m&&(a[p++]=239,a[p++]=191,a[p++]=189,m=null);f<128?a[p++]=f:(f<2048?a[p++]=f>>6|192:(f<65536?a[p++]=f>>12|224:(a[p++]=f>>18|240,a[p++]=f>>12&63|128),a[p++]=f>>6&63|128),a[p++]=63&f|128)}return p})(this.buf,i,this.pos);var r=this.pos-e;r>=128&&hp(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(i){this.realloc(4),lp(this.buf,i,this.pos,!0,23,4),this.pos+=4},writeDouble:function(i){this.realloc(8),lp(this.buf,i,this.pos,!0,52,8),this.pos+=8},writeBytes:function(i){var e=i.length;this.writeVarint(e),this.realloc(e);for(var r=0;r<e;r++)this.buf[this.pos++]=i[r]},writeRawMessage:function(i,e){this.pos++;var r=this.pos;i(e,this);var a=this.pos-r;a>=128&&hp(r,a,this),this.pos=r-1,this.writeVarint(a),this.pos+=a},writeMessage:function(i,e,r){this.writeTag(i,St.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(i,e){e.length&&this.writeMessage(i,c_,e)},writePackedSVarint:function(i,e){e.length&&this.writeMessage(i,u_,e)},writePackedBoolean:function(i,e){e.length&&this.writeMessage(i,d_,e)},writePackedFloat:function(i,e){e.length&&this.writeMessage(i,h_,e)},writePackedDouble:function(i,e){e.length&&this.writeMessage(i,p_,e)},writePackedFixed32:function(i,e){e.length&&this.writeMessage(i,f_,e)},writePackedSFixed32:function(i,e){e.length&&this.writeMessage(i,m_,e)},writePackedFixed64:function(i,e){e.length&&this.writeMessage(i,g_,e)},writePackedSFixed64:function(i,e){e.length&&this.writeMessage(i,__,e)},writeBytesField:function(i,e){this.writeTag(i,St.Bytes),this.writeBytes(e)},writeFixed32Field:function(i,e){this.writeTag(i,St.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(i,e){this.writeTag(i,St.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(i,e){this.writeTag(i,St.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(i,e){this.writeTag(i,St.Fixed64),this.writeSFixed64(e)},writeVarintField:function(i,e){this.writeTag(i,St.Varint),this.writeVarint(e)},writeSVarintField:function(i,e){this.writeTag(i,St.Varint),this.writeSVarint(e)},writeStringField:function(i,e){this.writeTag(i,St.Bytes),this.writeString(e)},writeFloatField:function(i,e){this.writeTag(i,St.Fixed32),this.writeFloat(e)},writeDoubleField:function(i,e){this.writeTag(i,St.Fixed64),this.writeDouble(e)},writeBooleanField:function(i,e){this.writeVarintField(i,!!e)}};var Kc=X(sp);const Yc=3;function y_(i,e,r){i===1&&r.readMessage(x_,e)}function x_(i,e,r){if(i===3){const{id:a,bitmap:o,width:p,height:f,left:m,top:y,advance:v}=r.readMessage(v_,{});e.push({id:a,bitmap:new To({width:p+2*Yc,height:f+2*Yc},o),metrics:{width:p,height:f,left:m,top:y,advance:v}})}}function v_(i,e,r){i===1?e.id=r.readVarint():i===2?e.bitmap=r.readBytes():i===3?e.width=r.readVarint():i===4?e.height=r.readVarint():i===5?e.left=r.readSVarint():i===6?e.top=r.readSVarint():i===7&&(e.advance=r.readVarint())}const dp=Yc;function fp(i){let e=0,r=0;for(const f of i)e+=f.w*f.h,r=Math.max(r,f.w);i.sort(((f,m)=>m.h-f.h));const a=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),r),h:1/0}];let o=0,p=0;for(const f of i)for(let m=a.length-1;m>=0;m--){const y=a[m];if(!(f.w>y.w||f.h>y.h)){if(f.x=y.x,f.y=y.y,p=Math.max(p,f.y+f.h),o=Math.max(o,f.x+f.w),f.w===y.w&&f.h===y.h){const v=a.pop();m<a.length&&(a[m]=v)}else f.h===y.h?(y.x+=f.w,y.w-=f.w):f.w===y.w?(y.y+=f.h,y.h-=f.h):(a.push({x:y.x+f.w,y:y.y,w:y.w-f.w,h:f.h}),y.y+=f.h,y.h-=f.h);break}}return{w:o,h:p,fill:e/(o*p)||0}}const Xi=1;class Jc{constructor(e,{pixelRatio:r,version:a,stretchX:o,stretchY:p,content:f}){this.paddedRect=e,this.pixelRatio=r,this.stretchX=o,this.stretchY=p,this.content=f,this.version=a}get tl(){return[this.paddedRect.x+Xi,this.paddedRect.y+Xi]}get br(){return[this.paddedRect.x+this.paddedRect.w-Xi,this.paddedRect.y+this.paddedRect.h-Xi]}get tlbr(){return this.tl.concat(this.br)}get displaySize(){return[(this.paddedRect.w-2*Xi)/this.pixelRatio,(this.paddedRect.h-2*Xi)/this.pixelRatio]}}class mp{constructor(e,r){const a={},o={};this.haveRenderCallbacks=[];const p=[];this.addImages(e,a,p),this.addImages(r,o,p);const{w:f,h:m}=fp(p),y=new dr({width:f||1,height:m||1});for(const v in e){const S=e[v],A=a[v].paddedRect;dr.copy(S.data,y,{x:0,y:0},{x:A.x+Xi,y:A.y+Xi},S.data)}for(const v in r){const S=r[v],A=o[v].paddedRect,M=A.x+Xi,D=A.y+Xi,L=S.data.width,O=S.data.height;dr.copy(S.data,y,{x:0,y:0},{x:M,y:D},S.data),dr.copy(S.data,y,{x:0,y:O-1},{x:M,y:D-1},{width:L,height:1}),dr.copy(S.data,y,{x:0,y:0},{x:M,y:D+O},{width:L,height:1}),dr.copy(S.data,y,{x:L-1,y:0},{x:M-1,y:D},{width:1,height:O}),dr.copy(S.data,y,{x:0,y:0},{x:M+L,y:D},{width:1,height:O})}this.image=y,this.iconPositions=a,this.patternPositions=o}addImages(e,r,a){for(const o in e){const p=e[o],f={x:0,y:0,w:p.data.width+2*Xi,h:p.data.height+2*Xi};a.push(f),r[o]=new Jc(f,p),p.hasRenderCallback&&this.haveRenderCallbacks.push(o)}}patchUpdatedImages(e,r){e.dispatchRenderCallbacks(this.haveRenderCallbacks);for(const a in e.updatedImages)this.patchUpdatedImage(this.iconPositions[a],e.getImage(a),r),this.patchUpdatedImage(this.patternPositions[a],e.getImage(a),r)}patchUpdatedImage(e,r,a){if(!e||!r||e.version===r.version)return;e.version=r.version;const[o,p]=e.tl;a.update(r.data,void 0,{x:o,y:p})}}var ia;Re("ImagePosition",Jc),Re("ImageAtlas",mp),l.ai=void 0,(ia=l.ai||(l.ai={}))[ia.none=0]="none",ia[ia.horizontal=1]="horizontal",ia[ia.vertical=2]="vertical",ia[ia.horizontalOnly=3]="horizontalOnly";const zo=-17;class Do{constructor(){this.scale=1,this.fontStack="",this.imageName=null}static forText(e,r){const a=new Do;return a.scale=e||1,a.fontStack=r,a}static forImage(e){const r=new Do;return r.imageName=e,r}}class bs{constructor(){this.text="",this.sectionIndex=[],this.sections=[],this.imageSectionID=null}static fromFeature(e,r){const a=new bs;for(let o=0;o<e.sections.length;o++){const p=e.sections[o];p.image?a.addImageSection(p):a.addTextSection(p,r)}return a}length(){return this.text.length}getSection(e){return this.sections[this.sectionIndex[e]]}getSectionIndex(e){return this.sectionIndex[e]}getCharCode(e){return this.text.charCodeAt(e)}verticalizePunctuation(){this.text=(function(e){let r="";for(let a=0;a<e.length;a++){const o=e.charCodeAt(a+1)||null,p=e.charCodeAt(a-1)||null;r+=o&&wl(o)&&!Po[e[a+1]]||p&&wl(p)&&!Po[e[a-1]]||!Po[e[a]]?e[a]:Po[e[a]]}return r})(this.text)}trim(){let e=0;for(let a=0;a<this.text.length&&jl[this.text.charCodeAt(a)];a++)e++;let r=this.text.length;for(let a=this.text.length-1;a>=0&&a>=e&&jl[this.text.charCodeAt(a)];a--)r--;this.text=this.text.substring(e,r),this.sectionIndex=this.sectionIndex.slice(e,r)}substring(e,r){const a=new bs;return a.text=this.text.substring(e,r),a.sectionIndex=this.sectionIndex.slice(e,r),a.sections=this.sections,a}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce(((e,r)=>Math.max(e,this.sections[r].scale)),0)}addTextSection(e,r){this.text+=e.text,this.sections.push(Do.forText(e.scale,e.fontStack||r));const a=this.sections.length-1;for(let o=0;o<e.text.length;++o)this.sectionIndex.push(a)}addImageSection(e){const r=e.image?e.image.name:"";if(r.length===0)return void li("Can't add FormattedSection with an empty image.");const a=this.getNextImageSectionCharCode();a?(this.text+=String.fromCharCode(a),this.sections.push(Do.forImage(r)),this.sectionIndex.push(this.sections.length-1)):li("Reached maximum number of images 6401")}getNextImageSectionCharCode(){return this.imageSectionID?this.imageSectionID>=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function $l(i,e,r,a,o,p,f,m,y,v,S,A,M,D,L,O){const q=bs.fromFeature(i,o);let H;A===l.ai.vertical&&q.verticalizePunctuation();const{processBidirectionalText:re,processStyledBidirectionalText:Y}=Hi;if(re&&q.sections.length===1){H=[];const me=re(q.toString(),Qc(q,v,p,e,a,D,L));for(const De of me){const Ve=new bs;Ve.text=De,Ve.sections=q.sections;for(let Pe=0;Pe<De.length;Pe++)Ve.sectionIndex.push(0);H.push(Ve)}}else if(Y){H=[];const me=Y(q.text,q.sectionIndex,Qc(q,v,p,e,a,D,L));for(const De of me){const Ve=new bs;Ve.text=De[0],Ve.sectionIndex=De[1],Ve.sections=q.sections,H.push(Ve)}}else H=(function(me,De){const Ve=[],Pe=me.text;let Me=0;for(const Te of De)Ve.push(me.substring(Me,Te)),Me=Te;return Me<Pe.length&&Ve.push(me.substring(Me,Pe.length)),Ve})(q,Qc(q,v,p,e,a,D,L));const ae=[],oe={positionedLines:ae,text:q.toString(),top:S[1],bottom:S[1],left:S[0],right:S[0],writingMode:A,iconsInText:!1,verticalizable:!1};return(function(me,De,Ve,Pe,Me,Te,Fe,Ae,be,He,$e,at){let Pt=0,Dt=zo,ti=0,hr=0;const Bi=Ae==="right"?1:Ae==="left"?0:.5;let Kt=0;for(const ii of Me){ii.trim();const ri=ii.getMaxScale(),Ai=(ri-1)*ei,Vi={positionedGlyphs:[],lineOffset:0};me.positionedLines[Kt]=Vi;const ki=Vi.positionedGlyphs;let Ki=0;if(!ii.length()){Dt+=Te,++Kt;continue}for(let ni=0;ni<ii.length();ni++){const ct=ii.getSection(ni),Ci=ii.getSectionIndex(ni),vi=ii.getCharCode(ni);let ai=0,kr=null,Nr=null,Vr=null,En=ei;const Cr=!(be===l.ai.horizontal||!$e&&!no(vi)||$e&&(jl[vi]||(di=vi,ze.Arabic(di)||ze["Arabic Supplement"](di)||ze["Arabic Extended-A"](di)||ze["Arabic Presentation Forms-A"](di)||ze["Arabic Presentation Forms-B"](di))));if(ct.imageName){const mr=Pe[ct.imageName];if(!mr)continue;Vr=ct.imageName,me.iconsInText=me.iconsInText||!0,Nr=mr.paddedRect;const Ji=mr.displaySize;ct.scale=ct.scale*ei/at,kr={width:Ji[0],height:Ji[1],left:Xi,top:-dp,advance:Cr?Ji[1]:Ji[0]},ai=Ai+(ei-Ji[1]*ct.scale),En=kr.advance;const Pn=Cr?Ji[0]*ct.scale-ei*ri:Ji[1]*ct.scale-ei*ri;Pn>0&&Pn>Ki&&(Ki=Pn)}else{const mr=Ve[ct.fontStack],Ji=mr&&mr[vi];if(Ji&&Ji.rect)Nr=Ji.rect,kr=Ji.metrics;else{const Pn=De[ct.fontStack],Oo=Pn&&Pn[vi];if(!Oo)continue;kr=Oo.metrics}ai=(ri-ct.scale)*ei}Cr?(me.verticalizable=!0,ki.push({glyph:vi,imageName:Vr,x:Pt,y:Dt+ai,vertical:Cr,scale:ct.scale,fontStack:ct.fontStack,sectionIndex:Ci,metrics:kr,rect:Nr}),Pt+=En*ct.scale+He):(ki.push({glyph:vi,imageName:Vr,x:Pt,y:Dt+ai,vertical:Cr,scale:ct.scale,fontStack:ct.fontStack,sectionIndex:Ci,metrics:kr,rect:Nr}),Pt+=kr.advance*ct.scale+He)}ki.length!==0&&(ti=Math.max(Pt-He,ti),S_(ki,0,ki.length-1,Bi,Ki)),Pt=0;const Yi=Te*ri+Ki;Vi.lineOffset=Math.max(Ki,Ai),Dt+=Yi,hr=Math.max(Yi,hr),++Kt}var di;const xi=Dt-zo,{horizontalAlign:Oi,verticalAlign:Ni}=eu(Fe);(function(ii,ri,Ai,Vi,ki,Ki,Yi,ni,ct){const Ci=(ri-Ai)*ki;let vi=0;vi=Ki!==Yi?-ni*Vi-zo:(-Vi*ct+.5)*Yi;for(const ai of ii)for(const kr of ai.positionedGlyphs)kr.x+=Ci,kr.y+=vi})(me.positionedLines,Bi,Oi,Ni,ti,hr,Te,xi,Me.length),me.top+=-Ni*xi,me.bottom=me.top+xi,me.left+=-Oi*ti,me.right=me.left+ti})(oe,e,r,a,H,f,m,y,A,v,M,O),!(function(me){for(const De of me)if(De.positionedGlyphs.length!==0)return!1;return!0})(ae)&&oe}const jl={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},b_={10:!0,32:!0,38:!0,40:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0};function gp(i,e,r,a,o,p){if(e.imageName){const f=a[e.imageName];return f?f.displaySize[0]*e.scale*ei/p+o:0}{const f=r[e.fontStack],m=f&&f[i];return m?m.metrics.advance*e.scale+o:0}}function _p(i,e,r,a){const o=Math.pow(i-e,2);return a?i<e?o/2:2*o:o+Math.abs(r)*r}function w_(i,e,r){let a=0;return i===10&&(a-=1e4),r&&(a+=150),i!==40&&i!==65288||(a+=50),e!==41&&e!==65289||(a+=50),a}function yp(i,e,r,a,o,p){let f=null,m=_p(e,r,o,p);for(const y of a){const v=_p(e-y.x,r,o,p)+y.badness;v<=m&&(f=y,m=v)}return{index:i,x:e,priorBreak:f,badness:m}}function xp(i){return i?xp(i.priorBreak).concat(i.index):[]}function Qc(i,e,r,a,o,p,f){if(p!=="point")return[];if(!i)return[];const m=[],y=(function(M,D,L,O,q,H){let re=0;for(let Y=0;Y<M.length();Y++){const ae=M.getSection(Y);re+=gp(M.getCharCode(Y),ae,O,q,D,H)}return re/Math.max(1,Math.ceil(re/L))})(i,e,r,a,o,f),v=i.text.indexOf("")>=0;let S=0;for(let M=0;M<i.length();M++){const D=i.getSection(M),L=i.getCharCode(M);if(jl[L]||(S+=gp(L,D,a,o,e,f)),M<i.length()-1){const O=!((A=L)<11904||!(ze["Bopomofo Extended"](A)||ze.Bopomofo(A)||ze["CJK Compatibility Forms"](A)||ze["CJK Compatibility Ideographs"](A)||ze["CJK Compatibility"](A)||ze["CJK Radicals Supplement"](A)||ze["CJK Strokes"](A)||ze["CJK Symbols and Punctuation"](A)||ze["CJK Unified Ideographs Extension A"](A)||ze["CJK Unified Ideographs"](A)||ze["Enclosed CJK Letters and Months"](A)||ze["Halfwidth and Fullwidth Forms"](A)||ze.Hiragana(A)||ze["Ideographic Description Characters"](A)||ze["Kangxi Radicals"](A)||ze["Katakana Phonetic Extensions"](A)||ze.Katakana(A)||ze["Vertical Forms"](A)||ze["Yi Radicals"](A)||ze["Yi Syllables"](A)));(b_[L]||O||D.imageName)&&m.push(yp(M+1,S,y,m,w_(L,i.getCharCode(M+1),O&&v),!1))}}var A;return xp(yp(i.length(),S,y,m,0,!0))}function eu(i){let e=.5,r=.5;switch(i){case"right":case"top-right":case"bottom-right":e=1;break;case"left":case"top-left":case"bottom-left":e=0}switch(i){case"bottom":case"bottom-right":case"bottom-left":r=1;break;case"top":case"top-right":case"top-left":r=0}return{horizontalAlign:e,verticalAlign:r}}function S_(i,e,r,a,o){if(!a&&!o)return;const p=i[r],f=(i[r].x+p.metrics.advance*p.scale)*a;for(let m=e;m<=r;m++)i[m].x-=f,i[m].y+=o}function T_(i,e,r){const{horizontalAlign:a,verticalAlign:o}=eu(r),p=e[0]-i.displaySize[0]*a,f=e[1]-i.displaySize[1]*o;return{image:i,top:f,bottom:f+i.displaySize[1],left:p,right:p+i.displaySize[0]}}function vp(i,e,r,a,o,p){const f=i.image;let m;if(f.content){const q=f.content,H=f.pixelRatio||1;m=[q[0]/H,q[1]/H,f.displaySize[0]-q[2]/H,f.displaySize[1]-q[3]/H]}const y=e.left*p,v=e.right*p;let S,A,M,D;r==="width"||r==="both"?(D=o[0]+y-a[3],A=o[0]+v+a[1]):(D=o[0]+(y+v-f.displaySize[0])/2,A=D+f.displaySize[0]);const L=e.top*p,O=e.bottom*p;return r==="height"||r==="both"?(S=o[1]+L-a[0],M=o[1]+O+a[2]):(S=o[1]+(L+O-f.displaySize[1])/2,M=S+f.displaySize[1]),{image:f,top:S,right:A,bottom:M,left:D,collisionPadding:m}}const Lo=255,sn=128,ra=Lo*sn;function bp(i,e){const{expression:r}=e;if(r.kind==="constant")return{kind:"constant",layoutSize:r.evaluate(new Mt(i+1))};if(r.kind==="source")return{kind:"source"};{const{zoomStops:a,interpolationType:o}=r;let p=0;for(;p<a.length&&a[p]<=i;)p++;p=Math.max(0,p-1);let f=p;for(;f<a.length&&a[f]<i+1;)f++;f=Math.min(a.length-1,f);const m=a[p],y=a[f];return r.kind==="composite"?{kind:"composite",minZoom:m,maxZoom:y,interpolationType:o}:{kind:"camera",minZoom:m,maxZoom:y,minSize:r.evaluate(new Mt(m)),maxSize:r.evaluate(new Mt(y)),interpolationType:o}}}function tu(i,e,r){let a="never";const o=i.get(e);return o?a=o:i.get(r)&&(a="always"),a}const I_=ta.VectorTileFeature.types,A_=[{name:"a_fade_opacity",components:1,type:"Uint8",offset:0}];function ql(i,e,r,a,o,p,f,m,y,v,S,A,M){const D=m?Math.min(ra,Math.round(m[0])):0,L=m?Math.min(ra,Math.round(m[1])):0;i.emplaceBack(e,r,Math.round(32*a),Math.round(32*o),p,f,(D<<1)+(y?1:0),L,16*v,16*S,256*A,256*M)}function iu(i,e,r){i.emplaceBack(e.x,e.y,r),i.emplaceBack(e.x,e.y,r),i.emplaceBack(e.x,e.y,r),i.emplaceBack(e.x,e.y,r)}function k_(i){for(const e of i.sections)if(Cc(e.text))return!0;return!1}class ru{constructor(e){this.layoutVertexArray=new st,this.indexArray=new hi,this.programConfigurations=e,this.segments=new Et,this.dynamicLayoutVertexArray=new rt,this.opacityVertexArray=new lt,this.hasVisibleVertices=!1,this.placedSymbolArray=new ee}isEmpty(){return this.layoutVertexArray.length===0&&this.indexArray.length===0&&this.dynamicLayoutVertexArray.length===0&&this.opacityVertexArray.length===0}upload(e,r,a,o){this.isEmpty()||(a&&(this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,n_.members),this.indexBuffer=e.createIndexBuffer(this.indexArray,r),this.dynamicLayoutVertexBuffer=e.createVertexBuffer(this.dynamicLayoutVertexArray,a_.members,!0),this.opacityVertexBuffer=e.createVertexBuffer(this.opacityVertexArray,A_,!0),this.opacityVertexBuffer.itemSize=1),(a||o)&&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())}}Re("SymbolBuffers",ru);class nu{constructor(e,r,a){this.layoutVertexArray=new e,this.layoutAttributes=r,this.indexArray=new a,this.segments=new Et,this.collisionVertexArray=new At}upload(e){this.layoutVertexBuffer=e.createVertexBuffer(this.layoutVertexArray,this.layoutAttributes),this.indexBuffer=e.createIndexBuffer(this.indexArray),this.collisionVertexBuffer=e.createVertexBuffer(this.collisionVertexArray,s_.members,!0)}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.collisionVertexBuffer.destroy())}}Re("CollisionBuffers",nu);class ws{constructor(e){this.collisionBoxArray=e.collisionBoxArray,this.zoom=e.zoom,this.overscaling=e.overscaling,this.layers=e.layers,this.layerIds=this.layers.map((f=>f.id)),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=Rc([]),this.placementViewportMatrix=Rc([]);const r=this.layers[0]._unevaluatedLayout._values;this.textSizeData=bp(this.zoom,r["text-size"]),this.iconSizeData=bp(this.zoom,r["icon-size"]);const a=this.layers[0].layout,o=a.get("symbol-sort-key"),p=a.get("symbol-z-order");this.canOverlap=tu(a,"text-overlap","text-allow-overlap")!=="never"||tu(a,"icon-overlap","icon-allow-overlap")!=="never"||a.get("text-ignore-placement")||a.get("icon-ignore-placement"),this.sortFeaturesByKey=p!=="viewport-y"&&!o.isConstant(),this.sortFeaturesByY=(p==="viewport-y"||p==="auto"&&!this.sortFeaturesByKey)&&this.canOverlap,a.get("symbol-placement")==="point"&&(this.writingModes=a.get("text-writing-mode").map((f=>l.ai[f]))),this.stateDependentLayerIds=this.layers.filter((f=>f.isStateDependent())).map((f=>f.id)),this.sourceID=e.sourceID}createArrays(){this.text=new ru(new Or(this.layers,this.zoom,(e=>/^text/.test(e)))),this.icon=new ru(new Or(this.layers,this.zoom,(e=>/^icon/.test(e)))),this.glyphOffsetArray=new te,this.lineVertexArray=new ce,this.symbolInstances=new G,this.textAnchorOffsets=new fe}calculateGlyphDependencies(e,r,a,o,p){for(let f=0;f<e.length;f++)if(r[e.charCodeAt(f)]=!0,(a||o)&&p){const m=Po[e.charAt(f)];m&&(r[m.charCodeAt(0)]=!0)}}populate(e,r,a){const o=this.layers[0],p=o.layout,f=p.get("text-font"),m=p.get("text-field"),y=p.get("icon-image"),v=(m.value.kind!=="constant"||m.value.value instanceof gi&&!m.value.value.isEmpty()||m.value.value.toString().length>0)&&(f.value.kind!=="constant"||f.value.value.length>0),S=y.value.kind!=="constant"||!!y.value.value||Object.keys(y.parameters).length>0,A=p.get("symbol-sort-key");if(this.features=[],!v&&!S)return;const M=r.iconDependencies,D=r.glyphDependencies,L=r.availableImages,O=new Mt(this.zoom);for(const{feature:q,id:H,index:re,sourceLayerIndex:Y}of e){const ae=o._featureFilter.needGeometry,oe=Ma(q,ae);if(!o._featureFilter.filter(O,oe,a))continue;let me,De;if(ae||(oe.geometry=Ca(q)),v){const Pe=o.getValueAndResolveTokens("text-field",oe,a,L),Me=gi.factory(Pe);k_(Me)&&(this.hasRTLText=!0),(!this.hasRTLText||uo()==="unavailable"||this.hasRTLText&&Hi.isParsed())&&(me=l_(Me,o,oe))}if(S){const Pe=o.getValueAndResolveTokens("icon-image",oe,a,L);De=Pe instanceof ui?Pe:ui.fromString(Pe)}if(!me&&!De)continue;const Ve=this.sortFeaturesByKey?A.evaluate(oe,{},a):void 0;if(this.features.push({id:H,text:me,icon:De,index:re,sourceLayerIndex:Y,geometry:oe.geometry,properties:q.properties,type:I_[q.type],sortKey:Ve}),De&&(M[De.name]=!0),me){const Pe=f.evaluate(oe,{},a).join(","),Me=p.get("text-rotation-alignment")!=="viewport"&&p.get("symbol-placement")!=="point";this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(l.ai.vertical)>=0;for(const Te of me.sections)if(Te.image)M[Te.image.name]=!0;else{const Fe=io(me.toString()),Ae=Te.fontStack||Pe,be=D[Ae]=D[Ae]||{};this.calculateGlyphDependencies(Te.text,be,Me,this.allowVerticalPlacement,Fe)}}}p.get("symbol-placement")==="line"&&(this.features=(function(q){const H={},re={},Y=[];let ae=0;function oe(Pe){Y.push(q[Pe]),ae++}function me(Pe,Me,Te){const Fe=re[Pe];return delete re[Pe],re[Me]=Fe,Y[Fe].geometry[0].pop(),Y[Fe].geometry[0]=Y[Fe].geometry[0].concat(Te[0]),Fe}function De(Pe,Me,Te){const Fe=H[Me];return delete H[Me],H[Pe]=Fe,Y[Fe].geometry[0].shift(),Y[Fe].geometry[0]=Te[0].concat(Y[Fe].geometry[0]),Fe}function Ve(Pe,Me,Te){const Fe=Te?Me[0][Me[0].length-1]:Me[0][0];return`${Pe}:${Fe.x}:${Fe.y}`}for(let Pe=0;Pe<q.length;Pe++){const Me=q[Pe],Te=Me.geometry,Fe=Me.text?Me.text.toString():null;if(!Fe){oe(Pe);continue}const Ae=Ve(Fe,Te),be=Ve(Fe,Te,!0);if(Ae in re&&be in H&&re[Ae]!==H[be]){const He=De(Ae,be,Te),$e=me(Ae,be,Y[He].geometry);delete H[Ae],delete re[be],re[Ve(Fe,Y[$e].geometry,!0)]=$e,Y[He].geometry=null}else Ae in re?me(Ae,be,Te):be in H?De(Ae,be,Te):(oe(Pe),H[Ae]=ae-1,re[be]=ae-1)}return Y.filter((Pe=>Pe.geometry))})(this.features)),this.sortFeaturesByKey&&this.features.sort(((q,H)=>q.sortKey-H.sortKey))}update(e,r,a){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(e,r,this.layers,a),this.icon.programConfigurations.updatePaintArrays(e,r,this.layers,a))}isEmpty(){return this.symbolInstances.length===0&&!this.hasRTLText}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,r){const a=this.lineVertexArray.length;if(e.segment!==void 0){let o=e.dist(r[e.segment+1]),p=e.dist(r[e.segment]);const f={};for(let m=e.segment+1;m<r.length;m++)f[m]={x:r[m].x,y:r[m].y,tileUnitDistanceFromAnchor:o},m<r.length-1&&(o+=r[m+1].dist(r[m]));for(let m=e.segment||0;m>=0;m--)f[m]={x:r[m].x,y:r[m].y,tileUnitDistanceFromAnchor:p},m>0&&(p+=r[m-1].dist(r[m]));for(let m=0;m<r.length;m++){const y=f[m];this.lineVertexArray.emplaceBack(y.x,y.y,y.tileUnitDistanceFromAnchor)}}return{lineStartIndex:a,lineLength:this.lineVertexArray.length-a}}addSymbols(e,r,a,o,p,f,m,y,v,S,A,M){const D=e.indexArray,L=e.layoutVertexArray,O=e.segments.prepareSegment(4*r.length,L,D,this.canOverlap?f.sortKey:void 0),q=this.glyphOffsetArray.length,H=O.vertexLength,re=this.allowVerticalPlacement&&m===l.ai.vertical?Math.PI/2:0,Y=f.text&&f.text.sections;for(let ae=0;ae<r.length;ae++){const{tl:oe,tr:me,bl:De,br:Ve,tex:Pe,pixelOffsetTL:Me,pixelOffsetBR:Te,minFontScaleX:Fe,minFontScaleY:Ae,glyphOffset:be,isSDF:He,sectionIndex:$e}=r[ae],at=O.vertexLength,Pt=be[1];ql(L,y.x,y.y,oe.x,Pt+oe.y,Pe.x,Pe.y,a,He,Me.x,Me.y,Fe,Ae),ql(L,y.x,y.y,me.x,Pt+me.y,Pe.x+Pe.w,Pe.y,a,He,Te.x,Me.y,Fe,Ae),ql(L,y.x,y.y,De.x,Pt+De.y,Pe.x,Pe.y+Pe.h,a,He,Me.x,Te.y,Fe,Ae),ql(L,y.x,y.y,Ve.x,Pt+Ve.y,Pe.x+Pe.w,Pe.y+Pe.h,a,He,Te.x,Te.y,Fe,Ae),iu(e.dynamicLayoutVertexArray,y,re),D.emplaceBack(at,at+1,at+2),D.emplaceBack(at+1,at+2,at+3),O.vertexLength+=4,O.primitiveLength+=2,this.glyphOffsetArray.emplaceBack(be[0]),ae!==r.length-1&&$e===r[ae+1].sectionIndex||e.programConfigurations.populatePaintArrays(L.length,f,f.index,{},M,Y&&Y[$e])}e.placedSymbolArray.emplaceBack(y.x,y.y,q,this.glyphOffsetArray.length-q,H,v,S,y.segment,a?a[0]:0,a?a[1]:0,o[0],o[1],m,0,!1,0,A)}_addCollisionDebugVertex(e,r,a,o,p,f){return r.emplaceBack(0,0),e.emplaceBack(a.x,a.y,o,p,Math.round(f.x),Math.round(f.y))}addCollisionDebugVertices(e,r,a,o,p,f,m){const y=p.segments.prepareSegment(4,p.layoutVertexArray,p.indexArray),v=y.vertexLength,S=p.layoutVertexArray,A=p.collisionVertexArray,M=m.anchorX,D=m.anchorY;this._addCollisionDebugVertex(S,A,f,M,D,new _e(e,r)),this._addCollisionDebugVertex(S,A,f,M,D,new _e(a,r)),this._addCollisionDebugVertex(S,A,f,M,D,new _e(a,o)),this._addCollisionDebugVertex(S,A,f,M,D,new _e(e,o)),y.vertexLength+=4;const L=p.indexArray;L.emplaceBack(v,v+1),L.emplaceBack(v+1,v+2),L.emplaceBack(v+2,v+3),L.emplaceBack(v+3,v),y.primitiveLength+=4}addDebugCollisionBoxes(e,r,a,o){for(let p=e;p<r;p++){const f=this.collisionBoxArray.get(p);this.addCollisionDebugVertices(f.x1,f.y1,f.x2,f.y2,o?this.textCollisionBox:this.iconCollisionBox,f.anchorPoint,a)}}generateCollisionDebugBuffers(){this.hasDebugData()&&this.destroyDebugData(),this.textCollisionBox=new nu($t,ap.members,Jt),this.iconCollisionBox=new nu($t,ap.members,Jt);for(let e=0;e<this.symbolInstances.length;e++){const r=this.symbolInstances.get(e);this.addDebugCollisionBoxes(r.textBoxStartIndex,r.textBoxEndIndex,r,!0),this.addDebugCollisionBoxes(r.verticalTextBoxStartIndex,r.verticalTextBoxEndIndex,r,!0),this.addDebugCollisionBoxes(r.iconBoxStartIndex,r.iconBoxEndIndex,r,!1),this.addDebugCollisionBoxes(r.verticalIconBoxStartIndex,r.verticalIconBoxEndIndex,r,!1)}}_deserializeCollisionBoxesForSymbol(e,r,a,o,p,f,m,y,v){const S={};for(let A=r;A<a;A++){const M=e.get(A);S.textBox={x1:M.x1,y1:M.y1,x2:M.x2,y2:M.y2,anchorPointX:M.anchorPointX,anchorPointY:M.anchorPointY},S.textFeatureIndex=M.featureIndex;break}for(let A=o;A<p;A++){const M=e.get(A);S.verticalTextBox={x1:M.x1,y1:M.y1,x2:M.x2,y2:M.y2,anchorPointX:M.anchorPointX,anchorPointY:M.anchorPointY},S.verticalTextFeatureIndex=M.featureIndex;break}for(let A=f;A<m;A++){const M=e.get(A);S.iconBox={x1:M.x1,y1:M.y1,x2:M.x2,y2:M.y2,anchorPointX:M.anchorPointX,anchorPointY:M.anchorPointY},S.iconFeatureIndex=M.featureIndex;break}for(let A=y;A<v;A++){const M=e.get(A);S.verticalIconBox={x1:M.x1,y1:M.y1,x2:M.x2,y2:M.y2,anchorPointX:M.anchorPointX,anchorPointY:M.anchorPointY},S.verticalIconFeatureIndex=M.featureIndex;break}return S}deserializeCollisionBoxes(e){this.collisionArrays=[];for(let r=0;r<this.symbolInstances.length;r++){const a=this.symbolInstances.get(r);this.collisionArrays.push(this._deserializeCollisionBoxesForSymbol(e,a.textBoxStartIndex,a.textBoxEndIndex,a.verticalTextBoxStartIndex,a.verticalTextBoxEndIndex,a.iconBoxStartIndex,a.iconBoxEndIndex,a.verticalIconBoxStartIndex,a.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,r){const a=e.placedSymbolArray.get(r),o=a.vertexStartIndex+4*a.numGlyphs;for(let p=a.vertexStartIndex;p<o;p+=4)e.indexArray.emplaceBack(p,p+1,p+2),e.indexArray.emplaceBack(p+1,p+2,p+3)}getSortedSymbolIndexes(e){if(this.sortedAngle===e&&this.symbolInstanceIndexes!==void 0)return this.symbolInstanceIndexes;const r=Math.sin(e),a=Math.cos(e),o=[],p=[],f=[];for(let m=0;m<this.symbolInstances.length;++m){f.push(m);const y=this.symbolInstances.get(m);o.push(0|Math.round(r*y.anchorX+a*y.anchorY)),p.push(y.featureIndex)}return f.sort(((m,y)=>o[m]-o[y]||p[y]-p[m])),f}addToSortKeyRanges(e,r){const a=this.sortKeyRanges[this.sortKeyRanges.length-1];a&&a.sortKey===r?a.symbolInstanceEnd=e+1:this.sortKeyRanges.push({sortKey:r,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(const r of this.symbolInstanceIndexes){const a=this.symbolInstances.get(r);this.featureSortOrder.push(a.featureIndex),[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex].forEach(((o,p,f)=>{o>=0&&f.indexOf(o)===p&&this.addIndicesForPlacedSymbol(this.text,o)})),a.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,a.verticalPlacedTextSymbolIndex),a.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.placedIconSymbolIndex),a.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}let wp,Sp;Re("SymbolBucket",ws,{omit:["layers","collisionBoxArray","features","compareText"]}),ws.MAX_GLYPHS=65535,ws.addDynamicAttributes=iu;var au={get paint(){return Sp=Sp||new Zt({"icon-opacity":new Ke(he.paint_symbol["icon-opacity"]),"icon-color":new Ke(he.paint_symbol["icon-color"]),"icon-halo-color":new Ke(he.paint_symbol["icon-halo-color"]),"icon-halo-width":new Ke(he.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Ke(he.paint_symbol["icon-halo-blur"]),"icon-translate":new je(he.paint_symbol["icon-translate"]),"icon-translate-anchor":new je(he.paint_symbol["icon-translate-anchor"]),"text-opacity":new Ke(he.paint_symbol["text-opacity"]),"text-color":new Ke(he.paint_symbol["text-color"],{runtimeType:Si,getOverride:i=>i.textColor,hasOverride:i=>!!i.textColor}),"text-halo-color":new Ke(he.paint_symbol["text-halo-color"]),"text-halo-width":new Ke(he.paint_symbol["text-halo-width"]),"text-halo-blur":new Ke(he.paint_symbol["text-halo-blur"]),"text-translate":new je(he.paint_symbol["text-translate"]),"text-translate-anchor":new je(he.paint_symbol["text-translate-anchor"])})},get layout(){return wp=wp||new Zt({"symbol-placement":new je(he.layout_symbol["symbol-placement"]),"symbol-spacing":new je(he.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new je(he.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Ke(he.layout_symbol["symbol-sort-key"]),"symbol-z-order":new je(he.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new je(he.layout_symbol["icon-allow-overlap"]),"icon-overlap":new je(he.layout_symbol["icon-overlap"]),"icon-ignore-placement":new je(he.layout_symbol["icon-ignore-placement"]),"icon-optional":new je(he.layout_symbol["icon-optional"]),"icon-rotation-alignment":new je(he.layout_symbol["icon-rotation-alignment"]),"icon-size":new Ke(he.layout_symbol["icon-size"]),"icon-text-fit":new je(he.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new je(he.layout_symbol["icon-text-fit-padding"]),"icon-image":new Ke(he.layout_symbol["icon-image"]),"icon-rotate":new Ke(he.layout_symbol["icon-rotate"]),"icon-padding":new Ke(he.layout_symbol["icon-padding"]),"icon-keep-upright":new je(he.layout_symbol["icon-keep-upright"]),"icon-offset":new Ke(he.layout_symbol["icon-offset"]),"icon-anchor":new Ke(he.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new je(he.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new je(he.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new je(he.layout_symbol["text-rotation-alignment"]),"text-field":new Ke(he.layout_symbol["text-field"]),"text-font":new Ke(he.layout_symbol["text-font"]),"text-size":new Ke(he.layout_symbol["text-size"]),"text-max-width":new Ke(he.layout_symbol["text-max-width"]),"text-line-height":new je(he.layout_symbol["text-line-height"]),"text-letter-spacing":new Ke(he.layout_symbol["text-letter-spacing"]),"text-justify":new Ke(he.layout_symbol["text-justify"]),"text-radial-offset":new Ke(he.layout_symbol["text-radial-offset"]),"text-variable-anchor":new je(he.layout_symbol["text-variable-anchor"]),"text-variable-anchor-offset":new Ke(he.layout_symbol["text-variable-anchor-offset"]),"text-anchor":new Ke(he.layout_symbol["text-anchor"]),"text-max-angle":new je(he.layout_symbol["text-max-angle"]),"text-writing-mode":new je(he.layout_symbol["text-writing-mode"]),"text-rotate":new Ke(he.layout_symbol["text-rotate"]),"text-padding":new je(he.layout_symbol["text-padding"]),"text-keep-upright":new je(he.layout_symbol["text-keep-upright"]),"text-transform":new Ke(he.layout_symbol["text-transform"]),"text-offset":new Ke(he.layout_symbol["text-offset"]),"text-allow-overlap":new je(he.layout_symbol["text-allow-overlap"]),"text-overlap":new je(he.layout_symbol["text-overlap"]),"text-ignore-placement":new je(he.layout_symbol["text-ignore-placement"]),"text-optional":new je(he.layout_symbol["text-optional"])})}};class Tp{constructor(e){if(e.property.overrides===void 0)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=e.property.overrides?e.property.overrides.runtimeType:zr,this.defaultValue=e}evaluate(e){if(e.formattedSection){const r=this.defaultValue.property.overrides;if(r&&r.hasOverride(e.formattedSection))return r.getOverride(e.formattedSection)}return e.feature&&e.featureState?this.defaultValue.evaluate(e.feature,e.featureState):this.defaultValue.property.specification.default}eachChild(e){this.defaultValue.isConstant()||e(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}Re("FormatSectionOverride",Tp,{omit:["defaultValue"]});class Zl extends cr{constructor(e){super(e,au)}recalculate(e,r){if(super.recalculate(e,r),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout._values["icon-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout._values["text-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),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")),this.layout.get("symbol-placement")==="point"){const a=this.layout.get("text-writing-mode");if(a){const o=[];for(const p of a)o.indexOf(p)<0&&o.push(p);this.layout._values["text-writing-mode"]=o}else this.layout._values["text-writing-mode"]=["horizontal"]}this._setPaintOverrides()}getValueAndResolveTokens(e,r,a,o){const p=this.layout.get(e).evaluate(r,{},a,o),f=this._unevaluatedLayout._values[e];return f.isDataDriven()||is(f.value)||!p?p:(function(m,y){return y.replace(/{([^{}]+)}/g,((v,S)=>m&&S in m?String(m[S]):""))})(r.properties,p)}createBucket(e){return new ws(e)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(const e of au.paint.overridableProperties){if(!Zl.hasPaintOverride(this.layout,e))continue;const r=this.paint.get(e),a=new Tp(r),o=new Ks(a,r.property.specification);let p=null;p=r.value.kind==="constant"||r.value.kind==="source"?new Ys("source",o):new ns("composite",o,r.value.zoomStops),this.paint._values[e]=new Ti(r.property,p,r.parameters)}}_handleOverridablePaintPropertyUpdate(e,r,a){return!(!this.layout||r.isDataDriven()||a.isDataDriven())&&Zl.hasPaintOverride(this.layout,e)}static hasPaintOverride(e,r){const a=e.get("text-field"),o=au.paint.properties[r];let p=!1;const f=m=>{for(const y of m)if(o.overrides&&o.overrides.hasOverride(y))return void(p=!0)};if(a.value.kind==="constant"&&a.value.value instanceof gi)f(a.value.value.sections);else if(a.value.kind==="source"){const m=v=>{p||(v instanceof _n&&Lt(v.value)===U?f(v.value.sections):v instanceof ts?f(v.sections):v.eachChild(m))},y=a.value;y._styleExpression&&m(y._styleExpression.expression)}return p}}let Ip;var C_={get paint(){return Ip=Ip||new Zt({"background-color":new je(he.paint_background["background-color"]),"background-pattern":new po(he.paint_background["background-pattern"]),"background-opacity":new je(he.paint_background["background-opacity"])})}};class M_ extends cr{constructor(e){super(e,C_)}}let Ap;var E_={get paint(){return Ap=Ap||new Zt({"raster-opacity":new je(he.paint_raster["raster-opacity"]),"raster-hue-rotate":new je(he.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new je(he.paint_raster["raster-brightness-min"]),"raster-brightness-max":new je(he.paint_raster["raster-brightness-max"]),"raster-saturation":new je(he.paint_raster["raster-saturation"]),"raster-contrast":new je(he.paint_raster["raster-contrast"]),"raster-resampling":new je(he.paint_raster["raster-resampling"]),"raster-fade-duration":new je(he.paint_raster["raster-fade-duration"])})}};class P_ extends cr{constructor(e){super(e,E_)}}class z_ extends cr{constructor(e){super(e,{}),this.onAdd=r=>{this.implementation.onAdd&&this.implementation.onAdd(r,r.painter.context.gl)},this.onRemove=r=>{this.implementation.onRemove&&this.implementation.onRemove(r,r.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 new Error("Custom layers cannot be serialized")}}class D_{constructor(e){this._callback=e,this._triggered=!1,typeof MessageChannel<"u"&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._callback()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout((()=>{this._triggered=!1,this._callback()}),0))}remove(){delete this._channel,this._callback=()=>{}}}const su=63710088e-1;class na{constructor(e,r){if(isNaN(e)||isNaN(r))throw new Error(`Invalid LngLat object: (${e}, ${r})`);if(this.lng=+e,this.lat=+r,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new na(un(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(e){const r=Math.PI/180,a=this.lat*r,o=e.lat*r,p=Math.sin(a)*Math.sin(o)+Math.cos(a)*Math.cos(o)*Math.cos((e.lng-this.lng)*r);return su*Math.acos(Math.min(p,1))}static convert(e){if(e instanceof na)return e;if(Array.isArray(e)&&(e.length===2||e.length===3))return new na(Number(e[0]),Number(e[1]));if(!Array.isArray(e)&&typeof e=="object"&&e!==null)return new na(Number("lng"in e?e.lng:e.lon),Number(e.lat));throw new 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>]")}}const kp=2*Math.PI*su;function Cp(i){return kp*Math.cos(i*Math.PI/180)}function Mp(i){return(180+i)/360}function Ep(i){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+i*Math.PI/360)))/360}function Pp(i,e){return i/Cp(e)}function zp(i){return 360*i-180}function ou(i){return 360/Math.PI*Math.atan(Math.exp((180-360*i)*Math.PI/180))-90}class Gl{constructor(e,r,a=0){this.x=+e,this.y=+r,this.z=+a}static fromLngLat(e,r=0){const a=na.convert(e);return new Gl(Mp(a.lng),Ep(a.lat),Pp(r,a.lat))}toLngLat(){return new na(zp(this.x),ou(this.y))}toAltitude(){return this.z*Cp(ou(this.y))}meterInMercatorCoordinateUnits(){return 1/kp*(e=ou(this.y),1/Math.cos(e*Math.PI/180));var e}}function Dp(i,e,r){var a=2*Math.PI*6378137/256/Math.pow(2,r);return[i*a-2*Math.PI*6378137/2,e*a-2*Math.PI*6378137/2]}class lu{constructor(e,r,a){if(e<0||e>25||a<0||a>=Math.pow(2,e)||r<0||r>=Math.pow(2,e))throw new Error(`x=${r}, y=${a}, z=${e} outside of bounds. 0<=x<${Math.pow(2,e)}, 0<=y<${Math.pow(2,e)} 0<=z<=25 `);this.z=e,this.x=r,this.y=a,this.key=Ro(0,e,e,r,a)}equals(e){return this.z===e.z&&this.x===e.x&&this.y===e.y}url(e,r,a){const o=(f=this.y,m=this.z,y=Dp(256*(p=this.x),256*(f=Math.pow(2,m)-f-1),m),v=Dp(256*(p+1),256*(f+1),m),y[0]+","+y[1]+","+v[0]+","+v[1]);var p,f,m,y,v;const S=(function(A,M,D){let L,O="";for(let q=A;q>0;q--)L=1<<q-1,O+=(M&L?1:0)+(D&L?2:0);return O})(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(a==="tms"?Math.pow(2,this.z)-this.y-1:this.y)).replace(/{ratio}/g,r>1?"@2x":"").replace(/{quadkey}/g,S).replace(/{bbox-epsg-3857}/g,o)}isChildOf(e){const r=this.z-e.z;return r>0&&e.x===this.x>>r&&e.y===this.y>>r}getTilePoint(e){const r=Math.pow(2,this.z);return new _e((e.x*r-this.x)*Xt,(e.y*r-this.y)*Xt)}toString(){return`${this.z}/${this.x}/${this.y}`}}class Lp{constructor(e,r){this.wrap=e,this.canonical=r,this.key=Ro(e,r.z,r.z,r.x,r.y)}}class fr{constructor(e,r,a,o,p){if(e<a)throw new Error(`overscaledZ should be >= z; overscaledZ = ${e}; z = ${a}`);this.overscaledZ=e,this.wrap=r,this.canonical=new lu(a,+o,+p),this.key=Ro(r,e,a,o,p)}clone(){return new fr(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(e){if(e>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${e}; overscaledZ = ${this.overscaledZ}`);const r=this.canonical.z-e;return e>this.canonical.z?new fr(e,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new fr(e,this.wrap,e,this.canonical.x>>r,this.canonical.y>>r)}calculateScaledKey(e,r){if(e>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${e}; overscaledZ = ${this.overscaledZ}`);const a=this.canonical.z-e;return e>this.canonical.z?Ro(this.wrap*+r,e,this.canonical.z,this.canonical.x,this.canonical.y):Ro(this.wrap*+r,e,e,this.canonical.x>>a,this.canonical.y>>a)}isChildOf(e){if(e.wrap!==this.wrap)return!1;const r=this.canonical.z-e.canonical.z;return e.overscaledZ===0||e.overscaledZ<this.overscaledZ&&e.canonical.x===this.canonical.x>>r&&e.canonical.y===this.canonical.y>>r}children(e){if(this.overscaledZ>=e)return[new fr(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const r=this.canonical.z+1,a=2*this.canonical.x,o=2*this.canonical.y;return[new fr(r,this.wrap,r,a,o),new fr(r,this.wrap,r,a+1,o),new fr(r,this.wrap,r,a,o+1),new fr(r,this.wrap,r,a+1,o+1)]}isLessThan(e){return this.wrap<e.wrap||!(this.wrap>e.wrap)&&(this.overscaledZ<e.overscaledZ||!(this.overscaledZ>e.overscaledZ)&&(this.canonical.x<e.canonical.x||!(this.canonical.x>e.canonical.x)&&this.canonical.y<e.canonical.y))}wrapped(){return new fr(this.overscaledZ,0,this.canonical.z,this.canonical.x,this.canonical.y)}unwrapTo(e){return new fr(this.overscaledZ,e,this.canonical.z,this.canonical.x,this.canonical.y)}overscaleFactor(){return Math.pow(2,this.overscaledZ-this.canonical.z)}toUnwrapped(){return new Lp(this.wrap,this.canonical)}toString(){return`${this.overscaledZ}/${this.canonical.x}/${this.canonical.y}`}getTilePoint(e){return this.canonical.getTilePoint(new Gl(e.x-this.wrap,e.y))}}function Ro(i,e,r,a,o){(i*=2)<0&&(i=-1*i-1);const p=1<<r;return(p*p*i+p*o+a).toString(36)+r.toString(36)+e.toString(36)}Re("CanonicalTileID",lu),Re("OverscaledTileID",fr,{omit:["posMatrix"]});class Rp{constructor(e,r,a,o=1,p=1,f=1,m=0){if(this.uid=e,r.height!==r.width)throw new RangeError("DEM tiles must be square");if(a&&!["mapbox","terrarium","custom"].includes(a))return void li(`"${a}" is not a valid encoding type. Valid types include "mapbox", "terrarium" and "custom".`);this.stride=r.height;const y=this.dim=r.height-2;switch(this.data=new Uint32Array(r.data.buffer),a){case"terrarium":this.redFactor=256,this.greenFactor=1,this.blueFactor=1/256,this.baseShift=32768;break;case"custom":this.redFactor=o,this.greenFactor=p,this.blueFactor=f,this.baseShift=m;break;default:this.redFactor=6553.6,this.greenFactor=25.6,this.blueFactor=.1,this.baseShift=1e4}for(let v=0;v<y;v++)this.data[this._idx(-1,v)]=this.data[this._idx(0,v)],this.data[this._idx(y,v)]=this.data[this._idx(y-1,v)],this.data[this._idx(v,-1)]=this.data[this._idx(v,0)],this.data[this._idx(v,y)]=this.data[this._idx(v,y-1)];this.data[this._idx(-1,-1)]=this.data[this._idx(0,0)],this.data[this._idx(y,-1)]=this.data[this._idx(y-1,0)],this.data[this._idx(-1,y)]=this.data[this._idx(0,y-1)],this.data[this._idx(y,y)]=this.data[this._idx(y-1,y-1)],this.min=Number.MAX_SAFE_INTEGER,this.max=Number.MIN_SAFE_INTEGER;for(let v=0;v<y;v++)for(let S=0;S<y;S++){const A=this.get(v,S);A>this.max&&(this.max=A),A<this.min&&(this.min=A)}}get(e,r){const a=new Uint8Array(this.data.buffer),o=4*this._idx(e,r);return this.unpack(a[o],a[o+1],a[o+2])}getUnpackVector(){return[this.redFactor,this.greenFactor,this.blueFactor,this.baseShift]}_idx(e,r){if(e<-1||e>=this.dim+1||r<-1||r>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(r+1)*this.stride+(e+1)}unpack(e,r,a){return e*this.redFactor+r*this.greenFactor+a*this.blueFactor-this.baseShift}getPixels(){return new dr({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(e,r,a){if(this.dim!==e.dim)throw new Error("dem dimension mismatch");let o=r*this.dim,p=r*this.dim+this.dim,f=a*this.dim,m=a*this.dim+this.dim;switch(r){case-1:o=p-1;break;case 1:p=o+1}switch(a){case-1:f=m-1;break;case 1:m=f+1}const y=-r*this.dim,v=-a*this.dim;for(let S=f;S<m;S++)for(let A=o;A<p;A++)this.data[this._idx(A,S)]=e.data[this._idx(A+y,S+v)]}}Re("DEMData",Rp);class Fp{constructor(e){this._stringToNumber={},this._numberToString=[];for(let r=0;r<e.length;r++){const a=e[r];this._stringToNumber[a]=r,this._numberToString[r]=a}}encode(e){return this._stringToNumber[e]}decode(e){if(e>=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${e} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[e]}}class Bp{constructor(e,r,a,o,p){this.type="Feature",this._vectorTileFeature=e,e._z=r,e._x=a,e._y=o,this.properties=e.properties,this.id=p}get geometry(){return this._geometry===void 0&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(e){this._geometry=e}toJSON(){const e={geometry:this.geometry};for(const r in this)r!=="_geometry"&&r!=="_vectorTileFeature"&&(e[r]=this[r]);return e}}class Op{constructor(e,r){this.tileID=e,this.x=e.canonical.x,this.y=e.canonical.y,this.z=e.canonical.z,this.grid=new Kn(Xt,16,0),this.grid3D=new Kn(Xt,16,0),this.featureIndexArray=new xe,this.promoteId=r}insert(e,r,a,o,p,f){const m=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(a,o,p);const y=f?this.grid3D:this.grid;for(let v=0;v<r.length;v++){const S=r[v],A=[1/0,1/0,-1/0,-1/0];for(let M=0;M<S.length;M++){const D=S[M];A[0]=Math.min(A[0],D.x),A[1]=Math.min(A[1],D.y),A[2]=Math.max(A[2],D.x),A[3]=Math.max(A[3],D.y)}A[0]<Xt&&A[1]<Xt&&A[2]>=0&&A[3]>=0&&y.insert(m,A[0],A[1],A[2],A[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new ta.VectorTile(new Kc(this.rawTileData)).layers,this.sourceLayerCoder=new Fp(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers}query(e,r,a,o){this.loadVTLayers();const p=e.params||{},f=Xt/e.tileSize/e.scale,m=Qs(p.filter),y=e.queryGeometry,v=e.queryPadding*f,S=Vp(y),A=this.grid.query(S.minX-v,S.minY-v,S.maxX+v,S.maxY+v),M=Vp(e.cameraQueryGeometry),D=this.grid3D.query(M.minX-v,M.minY-v,M.maxX+v,M.maxY+v,((q,H,re,Y)=>(function(ae,oe,me,De,Ve){for(const Me of ae)if(oe<=Me.x&&me<=Me.y&&De>=Me.x&&Ve>=Me.y)return!0;const Pe=[new _e(oe,me),new _e(oe,Ve),new _e(De,Ve),new _e(De,me)];if(ae.length>2){for(const Me of Pe)if(ms(ae,Me))return!0}for(let Me=0;Me<ae.length-1;Me++)if(hg(ae[Me],ae[Me+1],Pe))return!0;return!1})(e.cameraQueryGeometry,q-v,H-v,re+v,Y+v)));for(const q of D)A.push(q);A.sort(L_);const L={};let O;for(let q=0;q<A.length;q++){const H=A[q];if(H===O)continue;O=H;const re=this.featureIndexArray.get(H);let Y=null;this.loadMatchingFeature(L,re.bucketIndex,re.sourceLayerIndex,re.featureIndex,m,p.layers,p.availableImages,r,a,o,((ae,oe,me)=>(Y||(Y=Ca(ae)),oe.queryIntersectsFeature(y,ae,me,Y,this.z,e.transform,f,e.pixelPosMatrix))))}return L}loadMatchingFeature(e,r,a,o,p,f,m,y,v,S,A){const M=this.bucketLayerIDs[r];if(f&&!(function(q,H){for(let re=0;re<q.length;re++)if(H.indexOf(q[re])>=0)return!0;return!1})(f,M))return;const D=this.sourceLayerCoder.decode(a),L=this.vtLayers[D].feature(o);if(p.needGeometry){const q=Ma(L,!0);if(!p.filter(new Mt(this.tileID.overscaledZ),q,this.tileID.canonical))return}else if(!p.filter(new Mt(this.tileID.overscaledZ),L))return;const O=this.getId(L,D);for(let q=0;q<M.length;q++){const H=M[q];if(f&&f.indexOf(H)<0)continue;const re=y[H];if(!re)continue;let Y={};O&&S&&(Y=S.getState(re.sourceLayer||"_geojsonTileLayer",O));const ae=Yt({},v[H]);ae.paint=Np(ae.paint,re.paint,L,Y,m),ae.layout=Np(ae.layout,re.layout,L,Y,m);const oe=!A||A(L,re,Y);if(!oe)continue;const me=new Bp(L,this.z,this.x,this.y,O);me.layer=ae;let De=e[H];De===void 0&&(De=e[H]=[]),De.push({featureIndex:o,feature:me,intersectionZ:oe})}}lookupSymbolFeatures(e,r,a,o,p,f,m,y){const v={};this.loadVTLayers();const S=Qs(p);for(const A of e)this.loadMatchingFeature(v,a,o,A,S,f,m,y,r);return v}hasLayer(e){for(const r of this.bucketLayerIDs)for(const a of r)if(e===a)return!0;return!1}getId(e,r){let a=e.id;return this.promoteId&&(a=e.properties[typeof this.promoteId=="string"?this.promoteId:this.promoteId[r]],typeof a=="boolean"&&(a=Number(a))),a}}function Np(i,e,r,a,o){return kt(i,((p,f)=>{const m=e instanceof ds?e.get(f):null;return m&&m.evaluate?m.evaluate(r,a,o):m}))}function Vp(i){let e=1/0,r=1/0,a=-1/0,o=-1/0;for(const p of i)e=Math.min(e,p.x),r=Math.min(r,p.y),a=Math.max(a,p.x),o=Math.max(o,p.y);return{minX:e,minY:r,maxX:a,maxY:o}}function L_(i,e){return e-i}function Up(i,e,r,a,o){const p=[];for(let f=0;f<i.length;f++){const m=i[f];let y;for(let v=0;v<m.length-1;v++){let S=m[v],A=m[v+1];S.x<e&&A.x<e||(S.x<e?S=new _e(e,S.y+(e-S.x)/(A.x-S.x)*(A.y-S.y))._round():A.x<e&&(A=new _e(e,S.y+(e-S.x)/(A.x-S.x)*(A.y-S.y))._round()),S.y<r&&A.y<r||(S.y<r?S=new _e(S.x+(r-S.y)/(A.y-S.y)*(A.x-S.x),r)._round():A.y<r&&(A=new _e(S.x+(r-S.y)/(A.y-S.y)*(A.x-S.x),r)._round()),S.x>=a&&A.x>=a||(S.x>=a?S=new _e(a,S.y+(a-S.x)/(A.x-S.x)*(A.y-S.y))._round():A.x>=a&&(A=new _e(a,S.y+(a-S.x)/(A.x-S.x)*(A.y-S.y))._round()),S.y>=o&&A.y>=o||(S.y>=o?S=new _e(S.x+(o-S.y)/(A.y-S.y)*(A.x-S.x),o)._round():A.y>=o&&(A=new _e(S.x+(o-S.y)/(A.y-S.y)*(A.x-S.x),o)._round()),y&&S.equals(y[y.length-1])||(y=[S],p.push(y)),y.push(A)))))}}return p}Re("FeatureIndex",Op,{omit:["rawTileData","sourceLayerCoder"]});class aa extends _e{constructor(e,r,a,o){super(e,r),this.angle=a,o!==void 0&&(this.segment=o)}clone(){return new aa(this.x,this.y,this.angle,this.segment)}}function $p(i,e,r,a,o){if(e.segment===void 0||r===0)return!0;let p=e,f=e.segment+1,m=0;for(;m>-r/2;){if(f--,f<0)return!1;m-=i[f].dist(p),p=i[f]}m+=i[f].dist(i[f+1]),f++;const y=[];let v=0;for(;m<r/2;){const S=i[f],A=i[f+1];if(!A)return!1;let M=i[f-1].angleTo(S)-S.angleTo(A);for(M=Math.abs((M+3*Math.PI)%(2*Math.PI)-Math.PI),y.push({distance:m,angleDelta:M}),v+=M;m-y[0].distance>a;)v-=y.shift().angleDelta;if(v>o)return!1;f++,m+=S.dist(A)}return!0}function jp(i){let e=0;for(let r=0;r<i.length-1;r++)e+=i[r].dist(i[r+1]);return e}function qp(i,e,r){return i?.6*e*r:0}function Zp(i,e){return Math.max(i?i.right-i.left:0,e?e.right-e.left:0)}function R_(i,e,r,a,o,p){const f=qp(r,o,p),m=Zp(r,a)*p;let y=0;const v=jp(i)/2;for(let S=0;S<i.length-1;S++){const A=i[S],M=i[S+1],D=A.dist(M);if(y+D>v){const L=(v-y)/D,O=qi.number(A.x,M.x,L),q=qi.number(A.y,M.y,L),H=new aa(O,q,M.angleTo(A),S);return H._round(),!f||$p(i,H,m,f,e)?H:void 0}y+=D}}function F_(i,e,r,a,o,p,f,m,y){const v=qp(a,p,f),S=Zp(a,o),A=S*f,M=i[0].x===0||i[0].x===y||i[0].y===0||i[0].y===y;return e-A<e/4&&(e=A+e/4),Gp(i,M?e/2*m%e:(S/2+2*p)*f*m%e,e,v,r,A,M,!1,y)}function Gp(i,e,r,a,o,p,f,m,y){const v=p/2,S=jp(i);let A=0,M=e-r,D=[];for(let L=0;L<i.length-1;L++){const O=i[L],q=i[L+1],H=O.dist(q),re=q.angleTo(O);for(;M+r<A+H;){M+=r;const Y=(M-A)/H,ae=qi.number(O.x,q.x,Y),oe=qi.number(O.y,q.y,Y);if(ae>=0&&ae<y&&oe>=0&&oe<y&&M-v>=0&&M+v<=S){const me=new aa(ae,oe,re,L);me._round(),a&&!$p(i,me,p,a,o)||D.push(me)}}A+=H}return m||D.length||f||(D=Gp(i,A/2,r,a,o,p,f,!0,y)),D}Re("Anchor",aa);const Ss=Xi;function Hp(i,e,r,a){const o=[],p=i.image,f=p.pixelRatio,m=p.paddedRect.w-2*Ss,y=p.paddedRect.h-2*Ss,v=i.right-i.left,S=i.bottom-i.top,A=p.stretchX||[[0,m]],M=p.stretchY||[[0,y]],D=(Te,Fe)=>Te+Fe[1]-Fe[0],L=A.reduce(D,0),O=M.reduce(D,0),q=m-L,H=y-O;let re=0,Y=L,ae=0,oe=O,me=0,De=q,Ve=0,Pe=H;if(p.content&&a){const Te=p.content;re=Hl(A,0,Te[0]),ae=Hl(M,0,Te[1]),Y=Hl(A,Te[0],Te[2]),oe=Hl(M,Te[1],Te[3]),me=Te[0]-re,Ve=Te[1]-ae,De=Te[2]-Te[0]-Y,Pe=Te[3]-Te[1]-oe}const Me=(Te,Fe,Ae,be)=>{const He=Wl(Te.stretch-re,Y,v,i.left),$e=Xl(Te.fixed-me,De,Te.stretch,L),at=Wl(Fe.stretch-ae,oe,S,i.top),Pt=Xl(Fe.fixed-Ve,Pe,Fe.stretch,O),Dt=Wl(Ae.stretch-re,Y,v,i.left),ti=Xl(Ae.fixed-me,De,Ae.stretch,L),hr=Wl(be.stretch-ae,oe,S,i.top),Bi=Xl(be.fixed-Ve,Pe,be.stretch,O),Kt=new _e(He,at),di=new _e(Dt,at),xi=new _e(Dt,hr),Oi=new _e(He,hr),Ni=new _e($e/f,Pt/f),ii=new _e(ti/f,Bi/f),ri=e*Math.PI/180;if(ri){const ki=Math.sin(ri),Ki=Math.cos(ri),Yi=[Ki,-ki,ki,Ki];Kt._matMult(Yi),di._matMult(Yi),Oi._matMult(Yi),xi._matMult(Yi)}const Ai=Te.stretch+Te.fixed,Vi=Fe.stretch+Fe.fixed;return{tl:Kt,tr:di,bl:Oi,br:xi,tex:{x:p.paddedRect.x+Ss+Ai,y:p.paddedRect.y+Ss+Vi,w:Ae.stretch+Ae.fixed-Ai,h:be.stretch+be.fixed-Vi},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:Ni,pixelOffsetBR:ii,minFontScaleX:De/f/v,minFontScaleY:Pe/f/S,isSDF:r}};if(a&&(p.stretchX||p.stretchY)){const Te=Wp(A,q,L),Fe=Wp(M,H,O);for(let Ae=0;Ae<Te.length-1;Ae++){const be=Te[Ae],He=Te[Ae+1];for(let $e=0;$e<Fe.length-1;$e++)o.push(Me(be,Fe[$e],He,Fe[$e+1]))}}else o.push(Me({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:m+1},{fixed:0,stretch:y+1}));return o}function Hl(i,e,r){let a=0;for(const o of i)a+=Math.max(e,Math.min(r,o[1]))-Math.max(e,Math.min(r,o[0]));return a}function Wp(i,e,r){const a=[{fixed:-Ss,stretch:0}];for(const[o,p]of i){const f=a[a.length-1];a.push({fixed:o-f.stretch,stretch:f.stretch}),a.push({fixed:o-f.stretch,stretch:f.stretch+(p-o)})}return a.push({fixed:e+Ss,stretch:r}),a}function Wl(i,e,r,a){return i/e*r+a}function Xl(i,e,r,a){return i-e*r/a}class Kl{constructor(e,r,a,o,p,f,m,y,v,S){if(this.boxStartIndex=e.length,v){let A=f.top,M=f.bottom;const D=f.collisionPadding;D&&(A-=D[1],M+=D[3]);let L=M-A;L>0&&(L=Math.max(10,L),this.circleDiameter=L)}else{let A=f.top*m-y[0],M=f.bottom*m+y[2],D=f.left*m-y[3],L=f.right*m+y[1];const O=f.collisionPadding;if(O&&(D-=O[0]*m,A-=O[1]*m,L+=O[2]*m,M+=O[3]*m),S){const q=new _e(D,A),H=new _e(L,A),re=new _e(D,M),Y=new _e(L,M),ae=S*Math.PI/180;q._rotate(ae),H._rotate(ae),re._rotate(ae),Y._rotate(ae),D=Math.min(q.x,H.x,re.x,Y.x),L=Math.max(q.x,H.x,re.x,Y.x),A=Math.min(q.y,H.y,re.y,Y.y),M=Math.max(q.y,H.y,re.y,Y.y)}e.emplaceBack(r.x,r.y,D,A,L,M,a,o,p)}this.boxEndIndex=e.length}}class B_{constructor(e=[],r=O_){if(this.data=e,this.length=this.data.length,this.compare=r,this.length>0)for(let a=(this.length>>1)-1;a>=0;a--)this._down(a)}push(e){this.data.push(e),this.length++,this._up(this.length-1)}pop(){if(this.length===0)return;const e=this.data[0],r=this.data.pop();return this.length--,this.length>0&&(this.data[0]=r,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:r,compare:a}=this,o=r[e];for(;e>0;){const p=e-1>>1,f=r[p];if(a(o,f)>=0)break;r[e]=f,e=p}r[e]=o}_down(e){const{data:r,compare:a}=this,o=this.length>>1,p=r[e];for(;e<o;){let f=1+(e<<1),m=r[f];const y=f+1;if(y<this.length&&a(r[y],m)<0&&(f=y,m=r[y]),a(m,p)>=0)break;r[e]=m,e=f}r[e]=p}}function O_(i,e){return i<e?-1:i>e?1:0}function N_(i,e=1,r=!1){let a=1/0,o=1/0,p=-1/0,f=-1/0;const m=i[0];for(let D=0;D<m.length;D++){const L=m[D];(!D||L.x<a)&&(a=L.x),(!D||L.y<o)&&(o=L.y),(!D||L.x>p)&&(p=L.x),(!D||L.y>f)&&(f=L.y)}const y=Math.min(p-a,f-o);let v=y/2;const S=new B_([],V_);if(y===0)return new _e(a,o);for(let D=a;D<p;D+=y)for(let L=o;L<f;L+=y)S.push(new Ts(D+v,L+v,v,i));let A=(function(D){let L=0,O=0,q=0;const H=D[0];for(let re=0,Y=H.length,ae=Y-1;re<Y;ae=re++){const oe=H[re],me=H[ae],De=oe.x*me.y-me.x*oe.y;O+=(oe.x+me.x)*De,q+=(oe.y+me.y)*De,L+=3*De}return new Ts(O/L,q/L,0,D)})(i),M=S.length;for(;S.length;){const D=S.pop();(D.d>A.d||!A.d)&&(A=D,r&&console.log("found best %d after %d probes",Math.round(1e4*D.d)/1e4,M)),D.max-A.d<=e||(v=D.h/2,S.push(new Ts(D.p.x-v,D.p.y-v,v,i)),S.push(new Ts(D.p.x+v,D.p.y-v,v,i)),S.push(new Ts(D.p.x-v,D.p.y+v,v,i)),S.push(new Ts(D.p.x+v,D.p.y+v,v,i)),M+=4)}return r&&(console.log(`num probes: ${M}`),console.log(`best distance: ${A.d}`)),A.p}function V_(i,e){return e.max-i.max}function Ts(i,e,r,a){this.p=new _e(i,e),this.h=r,this.d=(function(o,p){let f=!1,m=1/0;for(let y=0;y<p.length;y++){const v=p[y];for(let S=0,A=v.length,M=A-1;S<A;M=S++){const D=v[S],L=v[M];D.y>o.y!=L.y>o.y&&o.x<(L.x-D.x)*(o.y-D.y)/(L.y-D.y)+D.x&&(f=!f),m=Math.min(m,Eh(o,D,L))}}return(f?1:-1)*Math.sqrt(m)})(this.p,a),this.max=this.d+this.h*Math.SQRT2}var yi;l.aq=void 0,(yi=l.aq||(l.aq={}))[yi.center=1]="center",yi[yi.left=2]="left",yi[yi.right=3]="right",yi[yi.top=4]="top",yi[yi.bottom=5]="bottom",yi[yi["top-left"]=6]="top-left",yi[yi["top-right"]=7]="top-right",yi[yi["bottom-left"]=8]="bottom-left",yi[yi["bottom-right"]=9]="bottom-right";const sa=7,cu=Number.POSITIVE_INFINITY;function Xp(i,e){return e[1]!==cu?(function(r,a,o){let p=0,f=0;switch(a=Math.abs(a),o=Math.abs(o),r){case"top-right":case"top-left":case"top":f=o-sa;break;case"bottom-right":case"bottom-left":case"bottom":f=-o+sa}switch(r){case"top-right":case"bottom-right":case"right":p=-a;break;case"top-left":case"bottom-left":case"left":p=a}return[p,f]})(i,e[0],e[1]):(function(r,a){let o=0,p=0;a<0&&(a=0);const f=a/Math.SQRT2;switch(r){case"top-right":case"top-left":p=f-sa;break;case"bottom-right":case"bottom-left":p=-f+sa;break;case"bottom":p=-a+sa;break;case"top":p=a-sa}switch(r){case"top-right":case"bottom-right":o=-f;break;case"top-left":case"bottom-left":o=f;break;case"left":o=a;break;case"right":o=-a}return[o,p]})(i,e[0])}function Kp(i,e,r){var a;const o=i.layout,p=(a=o.get("text-variable-anchor-offset"))===null||a===void 0?void 0:a.evaluate(e,{},r);if(p){const m=p.values,y=[];for(let v=0;v<m.length;v+=2){const S=y[v]=m[v],A=m[v+1].map((M=>M*ei));S.startsWith("top")?A[1]-=sa:S.startsWith("bottom")&&(A[1]+=sa),y[v+1]=A}return new ar(y)}const f=o.get("text-variable-anchor");if(f){let m;m=i._unevaluatedLayout.getValue("text-radial-offset")!==void 0?[o.get("text-radial-offset").evaluate(e,{},r)*ei,cu]:o.get("text-offset").evaluate(e,{},r).map((v=>v*ei));const y=[];for(const v of f)y.push(v,Xp(v,m));return new ar(y)}return null}function uu(i){switch(i){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function U_(i,e,r,a,o,p,f,m,y,v,S){let A=p.textMaxSize.evaluate(e,{});A===void 0&&(A=f);const M=i.layers[0].layout,D=M.get("icon-offset").evaluate(e,{},S),L=Jp(r.horizontal),O=f/24,q=i.tilePixelRatio*O,H=i.tilePixelRatio*A/24,re=i.tilePixelRatio*m,Y=i.tilePixelRatio*M.get("symbol-spacing"),ae=M.get("text-padding")*i.tilePixelRatio,oe=(function(be,He,$e,at=1){const Pt=be.get("icon-padding").evaluate(He,{},$e),Dt=Pt&&Pt.values;return[Dt[0]*at,Dt[1]*at,Dt[2]*at,Dt[3]*at]})(M,e,S,i.tilePixelRatio),me=M.get("text-max-angle")/180*Math.PI,De=M.get("text-rotation-alignment")!=="viewport"&&M.get("symbol-placement")!=="point",Ve=M.get("icon-rotation-alignment")==="map"&&M.get("symbol-placement")!=="point",Pe=M.get("symbol-placement"),Me=Y/2,Te=M.get("icon-text-fit");let Fe;a&&Te!=="none"&&(i.allowVerticalPlacement&&r.vertical&&(Fe=vp(a,r.vertical,Te,M.get("icon-text-fit-padding"),D,O)),L&&(a=vp(a,L,Te,M.get("icon-text-fit-padding"),D,O)));const Ae=(be,He)=>{He.x<0||He.x>=Xt||He.y<0||He.y>=Xt||(function($e,at,Pt,Dt,ti,hr,Bi,Kt,di,xi,Oi,Ni,ii,ri,Ai,Vi,ki,Ki,Yi,ni,ct,Ci,vi,ai,kr){const Nr=$e.addToLineVertexArray(at,Pt);let Vr,En,Cr,mr,Ji=0,Pn=0,Oo=0,id=0,yu=-1,xu=-1;const zn={};let rd=An("");if($e.allowVerticalPlacement&&Dt.vertical){const Mi=Kt.layout.get("text-rotate").evaluate(ct,{},ai)+90;Cr=new Kl(di,at,xi,Oi,Ni,Dt.vertical,ii,ri,Ai,Mi),Bi&&(mr=new Kl(di,at,xi,Oi,Ni,Bi,ki,Ki,Ai,Mi))}if(ti){const Mi=Kt.layout.get("icon-rotate").evaluate(ct,{}),gr=Kt.layout.get("icon-text-fit")!=="none",Pa=Hp(ti,Mi,vi,gr),$r=Bi?Hp(Bi,Mi,vi,gr):void 0;En=new Kl(di,at,xi,Oi,Ni,ti,ki,Ki,!1,Mi),Ji=4*Pa.length;const za=$e.iconSizeData;let on=null;za.kind==="source"?(on=[sn*Kt.layout.get("icon-size").evaluate(ct,{})],on[0]>ra&&li(`${$e.layerIds[0]}: Value for "icon-size" is >= ${Lo}. Reduce your "icon-size".`)):za.kind==="composite"&&(on=[sn*Ci.compositeIconSizes[0].evaluate(ct,{},ai),sn*Ci.compositeIconSizes[1].evaluate(ct,{},ai)],(on[0]>ra||on[1]>ra)&&li(`${$e.layerIds[0]}: Value for "icon-size" is >= ${Lo}. Reduce your "icon-size".`)),$e.addSymbols($e.icon,Pa,on,ni,Yi,ct,l.ai.none,at,Nr.lineStartIndex,Nr.lineLength,-1,ai),yu=$e.icon.placedSymbolArray.length-1,$r&&(Pn=4*$r.length,$e.addSymbols($e.icon,$r,on,ni,Yi,ct,l.ai.vertical,at,Nr.lineStartIndex,Nr.lineLength,-1,ai),xu=$e.icon.placedSymbolArray.length-1)}const nd=Object.keys(Dt.horizontal);for(const Mi of nd){const gr=Dt.horizontal[Mi];if(!Vr){rd=An(gr.text);const $r=Kt.layout.get("text-rotate").evaluate(ct,{},ai);Vr=new Kl(di,at,xi,Oi,Ni,gr,ii,ri,Ai,$r)}const Pa=gr.positionedLines.length===1;if(Oo+=Yp($e,at,gr,hr,Kt,Ai,ct,Vi,Nr,Dt.vertical?l.ai.horizontal:l.ai.horizontalOnly,Pa?nd:[Mi],zn,yu,Ci,ai),Pa)break}Dt.vertical&&(id+=Yp($e,at,Dt.vertical,hr,Kt,Ai,ct,Vi,Nr,l.ai.vertical,["vertical"],zn,xu,Ci,ai));const q_=Vr?Vr.boxStartIndex:$e.collisionBoxArray.length,Z_=Vr?Vr.boxEndIndex:$e.collisionBoxArray.length,G_=Cr?Cr.boxStartIndex:$e.collisionBoxArray.length,H_=Cr?Cr.boxEndIndex:$e.collisionBoxArray.length,W_=En?En.boxStartIndex:$e.collisionBoxArray.length,X_=En?En.boxEndIndex:$e.collisionBoxArray.length,K_=mr?mr.boxStartIndex:$e.collisionBoxArray.length,Y_=mr?mr.boxEndIndex:$e.collisionBoxArray.length;let Ur=-1;const Jl=(Mi,gr)=>Mi&&Mi.circleDiameter?Math.max(Mi.circleDiameter,gr):gr;Ur=Jl(Vr,Ur),Ur=Jl(Cr,Ur),Ur=Jl(En,Ur),Ur=Jl(mr,Ur);const ad=Ur>-1?1:0;ad&&(Ur*=kr/ei),$e.glyphOffsetArray.length>=ws.MAX_GLYPHS&&li("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),ct.sortKey!==void 0&&$e.addToSortKeyRanges($e.symbolInstances.length,ct.sortKey);const J_=Kp(Kt,ct,ai),[Q_,ey]=(function(Mi,gr){const Pa=Mi.length,$r=gr==null?void 0:gr.values;if(($r==null?void 0:$r.length)>0)for(let za=0;za<$r.length;za+=2){const on=$r[za+1];Mi.emplaceBack(l.aq[$r[za]],on[0],on[1])}return[Pa,Mi.length]})($e.textAnchorOffsets,J_);$e.symbolInstances.emplaceBack(at.x,at.y,zn.right>=0?zn.right:-1,zn.center>=0?zn.center:-1,zn.left>=0?zn.left:-1,zn.vertical||-1,yu,xu,rd,q_,Z_,G_,H_,W_,X_,K_,Y_,xi,Oo,id,Ji,Pn,ad,0,ii,Ur,Q_,ey)})(i,He,be,r,a,o,Fe,i.layers[0],i.collisionBoxArray,e.index,e.sourceLayerIndex,i.index,q,[ae,ae,ae,ae],De,y,re,oe,Ve,D,e,p,v,S,f)};if(Pe==="line")for(const be of Up(e.geometry,0,0,Xt,Xt)){const He=F_(be,Y,me,r.vertical||L,a,24,H,i.overscaling,Xt);for(const $e of He)L&&$_(i,L.text,Me,$e)||Ae(be,$e)}else if(Pe==="line-center"){for(const be of e.geometry)if(be.length>1){const He=R_(be,me,r.vertical||L,a,24,H);He&&Ae(be,He)}}else if(e.type==="Polygon")for(const be of $c(e.geometry,0)){const He=N_(be,16);Ae(be[0],new aa(He.x,He.y,0))}else if(e.type==="LineString")for(const be of e.geometry)Ae(be,new aa(be[0].x,be[0].y,0));else if(e.type==="Point")for(const be of e.geometry)for(const He of be)Ae([He],new aa(He.x,He.y,0))}function Yp(i,e,r,a,o,p,f,m,y,v,S,A,M,D,L){const O=(function(re,Y,ae,oe,me,De,Ve,Pe){const Me=oe.layout.get("text-rotate").evaluate(De,{})*Math.PI/180,Te=[];for(const Fe of Y.positionedLines)for(const Ae of Fe.positionedGlyphs){if(!Ae.rect)continue;const be=Ae.rect||{};let He=dp+1,$e=!0,at=1,Pt=0;const Dt=(me||Pe)&&Ae.vertical,ti=Ae.metrics.advance*Ae.scale/2;if(Pe&&Y.verticalizable&&(Pt=Fe.lineOffset/2-(Ae.imageName?-(ei-Ae.metrics.width*Ae.scale)/2:(Ae.scale-1)*ei)),Ae.imageName){const ni=Ve[Ae.imageName];$e=ni.sdf,at=ni.pixelRatio,He=Xi/at}const hr=me?[Ae.x+ti,Ae.y]:[0,0];let Bi=me?[0,0]:[Ae.x+ti+ae[0],Ae.y+ae[1]-Pt],Kt=[0,0];Dt&&(Kt=Bi,Bi=[0,0]);const di=Ae.metrics.isDoubleResolution?2:1,xi=(Ae.metrics.left-He)*Ae.scale-ti+Bi[0],Oi=(-Ae.metrics.top-He)*Ae.scale+Bi[1],Ni=xi+be.w/di*Ae.scale/at,ii=Oi+be.h/di*Ae.scale/at,ri=new _e(xi,Oi),Ai=new _e(Ni,Oi),Vi=new _e(xi,ii),ki=new _e(Ni,ii);if(Dt){const ni=new _e(-ti,ti-zo),ct=-Math.PI/2,Ci=ei/2-ti,vi=new _e(5-zo-Ci,-(Ae.imageName?Ci:0)),ai=new _e(...Kt);ri._rotateAround(ct,ni)._add(vi)._add(ai),Ai._rotateAround(ct,ni)._add(vi)._add(ai),Vi._rotateAround(ct,ni)._add(vi)._add(ai),ki._rotateAround(ct,ni)._add(vi)._add(ai)}if(Me){const ni=Math.sin(Me),ct=Math.cos(Me),Ci=[ct,-ni,ni,ct];ri._matMult(Ci),Ai._matMult(Ci),Vi._matMult(Ci),ki._matMult(Ci)}const Ki=new _e(0,0),Yi=new _e(0,0);Te.push({tl:ri,tr:Ai,bl:Vi,br:ki,tex:be,writingMode:Y.writingMode,glyphOffset:hr,sectionIndex:Ae.sectionIndex,isSDF:$e,pixelOffsetTL:Ki,pixelOffsetBR:Yi,minFontScaleX:0,minFontScaleY:0})}return Te})(0,r,m,o,p,f,a,i.allowVerticalPlacement),q=i.textSizeData;let H=null;q.kind==="source"?(H=[sn*o.layout.get("text-size").evaluate(f,{})],H[0]>ra&&li(`${i.layerIds[0]}: Value for "text-size" is >= ${Lo}. Reduce your "text-size".`)):q.kind==="composite"&&(H=[sn*D.compositeTextSizes[0].evaluate(f,{},L),sn*D.compositeTextSizes[1].evaluate(f,{},L)],(H[0]>ra||H[1]>ra)&&li(`${i.layerIds[0]}: Value for "text-size" is >= ${Lo}. Reduce your "text-size".`)),i.addSymbols(i.text,O,H,m,p,f,v,e,y.lineStartIndex,y.lineLength,M,L);for(const re of S)A[re]=i.text.placedSymbolArray.length-1;return 4*O.length}function Jp(i){for(const e in i)return i[e];return null}function $_(i,e,r,a){const o=i.compareText;if(e in o){const p=o[e];for(let f=p.length-1;f>=0;f--)if(a.dist(p[f])<r)return!0}else o[e]=[];return o[e].push(a),!1}const Qp=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class hu{static from(e){if(!(e instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");const[r,a]=new Uint8Array(e,0,2);if(r!==219)throw new Error("Data does not appear to be in a KDBush format.");const o=a>>4;if(o!==1)throw new Error(`Got v${o} data when expected v1.`);const p=Qp[15&a];if(!p)throw new Error("Unrecognized array type.");const[f]=new Uint16Array(e,2,1),[m]=new Uint32Array(e,4,1);return new hu(m,f,p,e)}constructor(e,r=64,a=Float64Array,o){if(isNaN(e)||e<0)throw new Error(`Unpexpected numItems value: ${e}.`);this.numItems=+e,this.nodeSize=Math.min(Math.max(+r,2),65535),this.ArrayType=a,this.IndexArrayType=e<65536?Uint16Array:Uint32Array;const p=Qp.indexOf(this.ArrayType),f=2*e*this.ArrayType.BYTES_PER_ELEMENT,m=e*this.IndexArrayType.BYTES_PER_ELEMENT,y=(8-m%8)%8;if(p<0)throw new Error(`Unexpected typed array class: ${a}.`);o&&o instanceof ArrayBuffer?(this.data=o,this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+m+y,2*e),this._pos=2*e,this._finished=!0):(this.data=new ArrayBuffer(8+f+m+y),this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+m+y,2*e),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+p]),new Uint16Array(this.data,2,1)[0]=r,new Uint32Array(this.data,4,1)[0]=e)}add(e,r){const a=this._pos>>1;return this.ids[a]=a,this.coords[this._pos++]=e,this.coords[this._pos++]=r,a}finish(){const e=this._pos>>1;if(e!==this.numItems)throw new Error(`Added ${e} items when expected ${this.numItems}.`);return pu(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(e,r,a,o){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:p,coords:f,nodeSize:m}=this,y=[0,p.length-1,0],v=[];for(;y.length;){const S=y.pop()||0,A=y.pop()||0,M=y.pop()||0;if(A-M<=m){for(let q=M;q<=A;q++){const H=f[2*q],re=f[2*q+1];H>=e&&H<=a&&re>=r&&re<=o&&v.push(p[q])}continue}const D=M+A>>1,L=f[2*D],O=f[2*D+1];L>=e&&L<=a&&O>=r&&O<=o&&v.push(p[D]),(S===0?e<=L:r<=O)&&(y.push(M),y.push(D-1),y.push(1-S)),(S===0?a>=L:o>=O)&&(y.push(D+1),y.push(A),y.push(1-S))}return v}within(e,r,a){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:o,coords:p,nodeSize:f}=this,m=[0,o.length-1,0],y=[],v=a*a;for(;m.length;){const S=m.pop()||0,A=m.pop()||0,M=m.pop()||0;if(A-M<=f){for(let q=M;q<=A;q++)td(p[2*q],p[2*q+1],e,r)<=v&&y.push(o[q]);continue}const D=M+A>>1,L=p[2*D],O=p[2*D+1];td(L,O,e,r)<=v&&y.push(o[D]),(S===0?e-a<=L:r-a<=O)&&(m.push(M),m.push(D-1),m.push(1-S)),(S===0?e+a>=L:r+a>=O)&&(m.push(D+1),m.push(A),m.push(1-S))}return y}}function pu(i,e,r,a,o,p){if(o-a<=r)return;const f=a+o>>1;ed(i,e,f,a,o,p),pu(i,e,r,a,f-1,1-p),pu(i,e,r,f+1,o,1-p)}function ed(i,e,r,a,o,p){for(;o>a;){if(o-a>600){const v=o-a+1,S=r-a+1,A=Math.log(v),M=.5*Math.exp(2*A/3),D=.5*Math.sqrt(A*M*(v-M)/v)*(S-v/2<0?-1:1);ed(i,e,r,Math.max(a,Math.floor(r-S*M/v+D)),Math.min(o,Math.floor(r+(v-S)*M/v+D)),p)}const f=e[2*r+p];let m=a,y=o;for(Fo(i,e,a,r),e[2*o+p]>f&&Fo(i,e,a,o);m<y;){for(Fo(i,e,m,y),m++,y--;e[2*m+p]<f;)m++;for(;e[2*y+p]>f;)y--}e[2*a+p]===f?Fo(i,e,a,y):(y++,Fo(i,e,y,o)),y<=r&&(a=y+1),r<=y&&(o=y-1)}}function Fo(i,e,r,a){du(i,r,a),du(e,2*r,2*a),du(e,2*r+1,2*a+1)}function du(i,e,r){const a=i[e];i[e]=i[r],i[r]=a}function td(i,e,r,a){const o=i-r,p=e-a;return o*o+p*p}var fu;l.bh=void 0,(fu=l.bh||(l.bh={})).create="create",fu.load="load",fu.fullLoad="fullLoad";let Yl=null,Bo=[];const mu=1e3/60,gu="loadTime",_u="fullLoadTime",j_={mark(i){performance.mark(i)},frame(i){const e=i;Yl!=null&&Bo.push(e-Yl),Yl=e},clearMetrics(){Yl=null,Bo=[],performance.clearMeasures(gu),performance.clearMeasures(_u);for(const i in l.bh)performance.clearMarks(l.bh[i])},getPerformanceMetrics(){performance.measure(gu,l.bh.create,l.bh.load),performance.measure(_u,l.bh.create,l.bh.fullLoad);const i=performance.getEntriesByName(gu)[0].duration,e=performance.getEntriesByName(_u)[0].duration,r=Bo.length,a=1/(Bo.reduce(((p,f)=>p+f),0)/r/1e3),o=Bo.filter((p=>p>mu)).reduce(((p,f)=>p+(f-mu)/mu),0);return{loadTime:i,fullLoadTime:e,fps:a,percentDroppedFrames:o/(r+o)*100,totalFrames:r}}};l.$=function(i,e,r){var a,o,p,f,m,y,v,S,A,M,D,L,O=r[0],q=r[1],H=r[2];return e===i?(i[12]=e[0]*O+e[4]*q+e[8]*H+e[12],i[13]=e[1]*O+e[5]*q+e[9]*H+e[13],i[14]=e[2]*O+e[6]*q+e[10]*H+e[14],i[15]=e[3]*O+e[7]*q+e[11]*H+e[15]):(o=e[1],p=e[2],f=e[3],m=e[4],y=e[5],v=e[6],S=e[7],A=e[8],M=e[9],D=e[10],L=e[11],i[0]=a=e[0],i[1]=o,i[2]=p,i[3]=f,i[4]=m,i[5]=y,i[6]=v,i[7]=S,i[8]=A,i[9]=M,i[10]=D,i[11]=L,i[12]=a*O+m*q+A*H+e[12],i[13]=o*O+y*q+M*H+e[13],i[14]=p*O+v*q+D*H+e[14],i[15]=f*O+S*q+L*H+e[15]),i},l.A=gs,l.B=qi,l.C=class{constructor(i,e,r){this.receive=a=>{const o=a.data,p=o.id;if(p&&(!o.targetMapId||this.mapId===o.targetMapId))if(o.type==="<cancel>"){delete this.tasks[p];const f=this.cancelCallbacks[p];delete this.cancelCallbacks[p],f&&f()}else tr()||o.mustQueue?(this.tasks[p]=o,this.taskQueue.push(p),this.invoker.trigger()):this.processTask(p,o)},this.process=()=>{if(!this.taskQueue.length)return;const a=this.taskQueue.shift(),o=this.tasks[a];delete this.tasks[a],this.taskQueue.length&&this.invoker.trigger(),o&&this.processTask(a,o)},this.target=i,this.parent=e,this.mapId=r,this.callbacks={},this.tasks={},this.taskQueue=[],this.cancelCallbacks={},this.invoker=new D_(this.process),this.target.addEventListener("message",this.receive,!1),this.globalScope=tr()?i:window}send(i,e,r,a,o=!1){const p=Math.round(1e18*Math.random()).toString(36).substring(0,10);r&&(this.callbacks[p]=r);const f=[],m={id:p,type:i,hasCallback:!!r,targetMapId:a,mustQueue:o,sourceMapId:this.mapId,data:rn(e,f)};return this.target.postMessage(m,{transfer:f}),{cancel:()=>{r&&delete this.callbacks[p],this.target.postMessage({id:p,type:"<cancel>",targetMapId:a,sourceMapId:this.mapId})}}}processTask(i,e){if(e.type==="<response>"){const r=this.callbacks[i];delete this.callbacks[i],r&&(e.error?r(Yn(e.error)):r(null,Yn(e.data)))}else{let r=!1;const a=[],o=e.hasCallback?(m,y)=>{r=!0,delete this.cancelCallbacks[i];const v={id:i,type:"<response>",sourceMapId:this.mapId,error:m?rn(m):null,data:rn(y,a)};this.target.postMessage(v,{transfer:a})}:m=>{r=!0};let p=null;const f=Yn(e.data);if(this.parent[e.type])p=this.parent[e.type](e.sourceMapId,f,o);else if("getWorkerSource"in this.parent){const m=e.type.split(".");p=this.parent.getWorkerSource(e.sourceMapId,m[0],f.source)[m[1]](f,o)}else o(new Error(`Could not find function ${e.type}`));!r&&p&&p.cancel&&(this.cancelCallbacks[i]=p.cancel)}}remove(){this.invoker.remove(),this.target.removeEventListener("message",this.receive,!1)}},l.D=je,l.E=fn,l.F=function(i,e){const r={};for(let a=0;a<e.length;a++){const o=e[a];o in i&&(r[o]=i[o])}return r},l.G=Mp,l.H=Ep,l.I=Jc,l.J=Ze,l.K=fi,l.L=na,l.M=ca,l.N=Xt,l.O=fr,l.P=_e,l.Q=Bt,l.R=dr,l.S=Et,l.T=Al,l.U=Gl,l.V=class extends Tn{},l.W=lu,l.X=function(i,e){const r=window.document.createElement("video");r.muted=!0,r.onloadstart=function(){e(null,r)};for(let a=0;a<i.length;a++){const o=window.document.createElement("source");Er(i[a])||(r.crossOrigin="Anonymous"),o.src=i[a],r.appendChild(o)}return{cancel:()=>{}}},l.Y=Ie,l.Z=function(){var i=new gs(16);return gs!=Float32Array&&(i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[11]=0,i[12]=0,i[13]=0,i[14]=0),i[0]=1,i[5]=1,i[10]=1,i[15]=1,i},l._=le,l.a=la,l.a$=class extends P{},l.a0=function(i,e,r){var a=r[0],o=r[1],p=r[2];return i[0]=e[0]*a,i[1]=e[1]*a,i[2]=e[2]*a,i[3]=e[3]*a,i[4]=e[4]*o,i[5]=e[5]*o,i[6]=e[6]*o,i[7]=e[7]*o,i[8]=e[8]*p,i[9]=e[9]*p,i[10]=e[10]*p,i[11]=e[11]*p,i[12]=e[12],i[13]=e[13],i[14]=e[14],i[15]=e[15],i},l.a1=Lh,l.a2=function(){return Rn++},l.a3=$,l.a4=ws,l.a5=function(){Hi.isLoading()||Hi.isLoaded()||uo()!=="deferred"||Il()},l.a6=Qs,l.a7=Ma,l.a8=Mt,l.a9=Bp,l.aA=Sa,l.aB=function(i){i=i.slice();const e=Object.create(null);for(let r=0;r<i.length;r++)e[i[r].id]=i[r];for(let r=0;r<i.length;r++)"ref"in i[r]&&(i[r]=rr(i[r],e[i[r].ref]));return i},l.aC=function(i){if(i.type==="custom")return new z_(i);switch(i.type){case"background":return new M_(i);case"circle":return new fg(i);case"fill":return new Lg(i);case"fill-extrusion":return new Xg(i);case"heatmap":return new gg(i);case"hillshade":return new yg(i);case"line":return new r_(i);case"raster":return new P_(i);case"symbol":return new Zl(i)}},l.aD=xt,l.aE=function(i,e){if(!i)return[{command:ft.setStyle,args:[e]}];let r=[];try{if(!Tt(i.version,e.version))return[{command:ft.setStyle,args:[e]}];Tt(i.center,e.center)||r.push({command:ft.setCenter,args:[e.center]}),Tt(i.zoom,e.zoom)||r.push({command:ft.setZoom,args:[e.zoom]}),Tt(i.bearing,e.bearing)||r.push({command:ft.setBearing,args:[e.bearing]}),Tt(i.pitch,e.pitch)||r.push({command:ft.setPitch,args:[e.pitch]}),Tt(i.sprite,e.sprite)||r.push({command:ft.setSprite,args:[e.sprite]}),Tt(i.glyphs,e.glyphs)||r.push({command:ft.setGlyphs,args:[e.glyphs]}),Tt(i.transition,e.transition)||r.push({command:ft.setTransition,args:[e.transition]}),Tt(i.light,e.light)||r.push({command:ft.setLight,args:[e.light]});const a={},o=[];(function(f,m,y,v){let S;for(S in m=m||{},f=f||{})Object.prototype.hasOwnProperty.call(f,S)&&(Object.prototype.hasOwnProperty.call(m,S)||Nn(S,y,v));for(S in m)Object.prototype.hasOwnProperty.call(m,S)&&(Object.prototype.hasOwnProperty.call(f,S)?Tt(f[S],m[S])||(f[S].type==="geojson"&&m[S].type==="geojson"&&Na(f,m,S)?y.push({command:ft.setGeoJSONSourceData,args:[S,m[S].data]}):Pr(S,m,y,v)):yr(S,m,y))})(i.sources,e.sources,o,a);const p=[];i.layers&&i.layers.forEach((f=>{a[f.source]?r.push({command:ft.removeLayer,args:[f.id]}):p.push(f)})),r=r.concat(o),(function(f,m,y){m=m||[];const v=(f=f||[]).map(Kr),S=m.map(Kr),A=f.reduce(mn,{}),M=m.reduce(mn,{}),D=v.slice(),L=Object.create(null);let O,q,H,re,Y,ae,oe;for(O=0,q=0;O<v.length;O++)H=v[O],Object.prototype.hasOwnProperty.call(M,H)?q++:(y.push({command:ft.removeLayer,args:[H]}),D.splice(D.indexOf(H,q),1));for(O=0,q=0;O<S.length;O++)H=S[S.length-1-O],D[D.length-1-O]!==H&&(Object.prototype.hasOwnProperty.call(A,H)?(y.push({command:ft.removeLayer,args:[H]}),D.splice(D.lastIndexOf(H,D.length-q),1)):q++,ae=D[D.length-O],y.push({command:ft.addLayer,args:[M[H],ae]}),D.splice(D.length-O,0,H),L[H]=!0);for(O=0;O<S.length;O++)if(H=S[O],re=A[H],Y=M[H],!L[H]&&!Tt(re,Y))if(Tt(re.source,Y.source)&&Tt(re["source-layer"],Y["source-layer"])&&Tt(re.type,Y.type)){for(oe in Vn(re.layout,Y.layout,y,H,null,ft.setLayoutProperty),Vn(re.paint,Y.paint,y,H,null,ft.setPaintProperty),Tt(re.filter,Y.filter)||y.push({command:ft.setFilter,args:[H,Y.filter]}),Tt(re.minzoom,Y.minzoom)&&Tt(re.maxzoom,Y.maxzoom)||y.push({command:ft.setLayerZoomRange,args:[H,Y.minzoom,Y.maxzoom]}),re)Object.prototype.hasOwnProperty.call(re,oe)&&oe!=="layout"&&oe!=="paint"&&oe!=="filter"&&oe!=="metadata"&&oe!=="minzoom"&&oe!=="maxzoom"&&(oe.indexOf("paint.")===0?Vn(re[oe],Y[oe],y,H,oe.slice(6),ft.setPaintProperty):Tt(re[oe],Y[oe])||y.push({command:ft.setLayerProperty,args:[H,oe,Y[oe]]}));for(oe in Y)Object.prototype.hasOwnProperty.call(Y,oe)&&!Object.prototype.hasOwnProperty.call(re,oe)&&oe!=="layout"&&oe!=="paint"&&oe!=="filter"&&oe!=="metadata"&&oe!=="minzoom"&&oe!=="maxzoom"&&(oe.indexOf("paint.")===0?Vn(re[oe],Y[oe],y,H,oe.slice(6),ft.setPaintProperty):Tt(re[oe],Y[oe])||y.push({command:ft.setLayerProperty,args:[H,oe,Y[oe]]}))}else y.push({command:ft.removeLayer,args:[H]}),ae=D[D.lastIndexOf(H)+1],y.push({command:ft.addLayer,args:[Y,ae]})})(p,e.layers,r)}catch(a){console.warn("Unable to compute style diff:",a),r=[{command:ft.setStyle,args:[e]}]}return r},l.aF=function(i){const e=[],r=i.id;return r===void 0&&e.push({message:`layers.${r}: missing required property "id"`}),i.render===void 0&&e.push({message:`layers.${r}: missing required method "render"`}),i.renderingMode&&i.renderingMode!=="2d"&&i.renderingMode!=="3d"&&e.push({message:`layers.${r}: property "renderingMode" must be either "2d" or "3d"`}),e},l.aG=function i(e,r){if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return!1;for(let a=0;a<e.length;a++)if(!i(e[a],r[a]))return!1;return!0}if(typeof e=="object"&&e!==null&&r!==null){if(typeof r!="object"||Object.keys(e).length!==Object.keys(r).length)return!1;for(const a in e)if(!i(e[a],r[a]))return!1;return!0}return e===r},l.aH=kt,l.aI=Zr,l.aJ=Ta,l.aK=function(i){return i({pluginStatus:Li,pluginURL:nn}),Ta.on("pluginStateChange",i),i},l.aL=class extends kn{constructor(i,e){super(i,e),this.current=0}set(i){this.current!==i&&(this.current=i,this.gl.uniform1i(this.location,i))}},l.aM=fs,l.aN=class extends kn{constructor(i,e){super(i,e),this.current=Ec}set(i){if(i[12]!==this.current[12]||i[0]!==this.current[0])return this.current=i,void this.gl.uniformMatrix4fv(this.location,!1,i);for(let e=1;e<16;e++)if(i[e]!==this.current[e]){this.current=i,this.gl.uniformMatrix4fv(this.location,!1,i);break}}},l.aO=El,l.aP=class extends kn{constructor(i,e){super(i,e),this.current=[0,0,0]}set(i){i[0]===this.current[0]&&i[1]===this.current[1]&&i[2]===this.current[2]||(this.current=i,this.gl.uniform3f(this.location,i[0],i[1],i[2]))}},l.aQ=class extends kn{constructor(i,e){super(i,e),this.current=[0,0]}set(i){i[0]===this.current[0]&&i[1]===this.current[1]||(this.current=i,this.gl.uniform2f(this.location,i[0],i[1]))}},l.aR=Pl,l.aS=function(i,e,r,a,o,p,f){var m=1/(e-r),y=1/(a-o),v=1/(p-f);return i[0]=-2*m,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=-2*y,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=2*v,i[11]=0,i[12]=(e+r)*m,i[13]=(o+a)*y,i[14]=(f+p)*v,i[15]=1,i},l.aT=vt,l.aU=dg,l.aV=class extends s{},l.aW=o_,l.aX=class extends h{},l.aY=function(i){return i<=1?1:Math.pow(2,Math.ceil(Math.log(i)/Math.LN2))},l.aZ=Nh,l.a_=Se,l.aa=function(i){const e={};if(i.replace(/(?:^|(?:\s*\,\s*))([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,((r,a,o,p)=>{const f=o||p;return e[a]=!f||f.toLowerCase(),""})),e["max-age"]){const r=parseInt(e["max-age"],10);isNaN(r)?delete e["max-age"]:e["max-age"]=r}return e},l.ab=function(i,e){const r=[];for(const a in i)a in e||r.push(a);return r},l.ac=function(i){if(hn==null){const e=i.navigator?i.navigator.userAgent:null;hn=!!i.safari||!(!e||!(/\b(iPad|iPhone|iPod)\b/.test(e)||e.match("Safari")&&!e.match("Chrome")))}return hn},l.ad=er,l.ae=function(i,e,r){var a=Math.sin(r),o=Math.cos(r),p=e[0],f=e[1],m=e[2],y=e[3],v=e[4],S=e[5],A=e[6],M=e[7];return e!==i&&(i[8]=e[8],i[9]=e[9],i[10]=e[10],i[11]=e[11],i[12]=e[12],i[13]=e[13],i[14]=e[14],i[15]=e[15]),i[0]=p*o+v*a,i[1]=f*o+S*a,i[2]=m*o+A*a,i[3]=y*o+M*a,i[4]=v*o-p*a,i[5]=S*o-f*a,i[6]=A*o-m*a,i[7]=M*o-y*a,i},l.af=function(i){var e=new gs(16);return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],e[9]=i[9],e[10]=i[10],e[11]=i[11],e[12]=i[12],e[13]=i[13],e[14]=i[14],e[15]=i[15],e},l.ag=Rl,l.ah=function(i,e){let r=0,a=0;if(i.kind==="constant")a=i.layoutSize;else if(i.kind!=="source"){const{interpolationType:o,minZoom:p,maxZoom:f}=i,m=o?er(Zi.interpolationFactor(o,e,p,f),0,1):0;i.kind==="camera"?a=qi.number(i.minSize,i.maxSize,m):r=m}return{uSizeT:r,uSize:a}},l.aj=function(i,{uSize:e,uSizeT:r},{lowerSize:a,upperSize:o}){return i.kind==="source"?a/sn:i.kind==="composite"?qi.number(a/sn,o/sn,r):e},l.ak=iu,l.al=function(i,e,r,a){const o=e.y-i.y,p=e.x-i.x,f=a.y-r.y,m=a.x-r.x,y=f*p-m*o;if(y===0)return null;const v=(m*(i.y-r.y)-f*(i.x-r.x))/y;return new _e(i.x+v*p,i.y+v*o)},l.am=Up,l.an=Ch,l.ao=Rc,l.ap=ei,l.ar=tu,l.as=function(i,e){var r=e[0],a=e[1],o=e[2],p=e[3],f=e[4],m=e[5],y=e[6],v=e[7],S=e[8],A=e[9],M=e[10],D=e[11],L=e[12],O=e[13],q=e[14],H=e[15],re=r*m-a*f,Y=r*y-o*f,ae=r*v-p*f,oe=a*y-o*m,me=a*v-p*m,De=o*v-p*y,Ve=S*O-A*L,Pe=S*q-M*L,Me=S*H-D*L,Te=A*q-M*O,Fe=A*H-D*O,Ae=M*H-D*q,be=re*Ae-Y*Fe+ae*Te+oe*Me-me*Pe+De*Ve;return be?(i[0]=(m*Ae-y*Fe+v*Te)*(be=1/be),i[1]=(o*Fe-a*Ae-p*Te)*be,i[2]=(O*De-q*me+H*oe)*be,i[3]=(M*me-A*De-D*oe)*be,i[4]=(y*Me-f*Ae-v*Pe)*be,i[5]=(r*Ae-o*Me+p*Pe)*be,i[6]=(q*ae-L*De-H*Y)*be,i[7]=(S*De-M*ae+D*Y)*be,i[8]=(f*Fe-m*Me+v*Ve)*be,i[9]=(a*Me-r*Fe-p*Ve)*be,i[10]=(L*me-O*ae+H*re)*be,i[11]=(A*ae-S*me-D*re)*be,i[12]=(m*Pe-f*Te-y*Ve)*be,i[13]=(r*Te-a*Pe+o*Ve)*be,i[14]=(O*Y-L*oe-q*re)*be,i[15]=(S*oe-A*Y+M*re)*be,i):null},l.at=uu,l.au=eu,l.av=hu,l.aw=function(){const i={},e=he.$version;for(const r in he.$root){const a=he.$root[r];if(a.required){let o=null;o=r==="version"?e:a.type==="array"?[]:{},o!=null&&(i[r]=o)}}return i},l.ax=ft,l.ay=bl,l.az=pr,l.b=function(i,e){const r=new Blob([new Uint8Array(i)],{type:"image/png"});createImageBitmap(r).then((a=>{e(null,a)})).catch((a=>{e(new Error(`Could not load image because of ${a.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`))}))},l.b0=hi,l.b1=function(i,e){var r=i[0],a=i[1],o=i[2],p=i[3],f=i[4],m=i[5],y=i[6],v=i[7],S=i[8],A=i[9],M=i[10],D=i[11],L=i[12],O=i[13],q=i[14],H=i[15],re=e[0],Y=e[1],ae=e[2],oe=e[3],me=e[4],De=e[5],Ve=e[6],Pe=e[7],Me=e[8],Te=e[9],Fe=e[10],Ae=e[11],be=e[12],He=e[13],$e=e[14],at=e[15];return Math.abs(r-re)<=Fi*Math.max(1,Math.abs(r),Math.abs(re))&&Math.abs(a-Y)<=Fi*Math.max(1,Math.abs(a),Math.abs(Y))&&Math.abs(o-ae)<=Fi*Math.max(1,Math.abs(o),Math.abs(ae))&&Math.abs(p-oe)<=Fi*Math.max(1,Math.abs(p),Math.abs(oe))&&Math.abs(f-me)<=Fi*Math.max(1,Math.abs(f),Math.abs(me))&&Math.abs(m-De)<=Fi*Math.max(1,Math.abs(m),Math.abs(De))&&Math.abs(y-Ve)<=Fi*Math.max(1,Math.abs(y),Math.abs(Ve))&&Math.abs(v-Pe)<=Fi*Math.max(1,Math.abs(v),Math.abs(Pe))&&Math.abs(S-Me)<=Fi*Math.max(1,Math.abs(S),Math.abs(Me))&&Math.abs(A-Te)<=Fi*Math.max(1,Math.abs(A),Math.abs(Te))&&Math.abs(M-Fe)<=Fi*Math.max(1,Math.abs(M),Math.abs(Fe))&&Math.abs(D-Ae)<=Fi*Math.max(1,Math.abs(D),Math.abs(Ae))&&Math.abs(L-be)<=Fi*Math.max(1,Math.abs(L),Math.abs(be))&&Math.abs(O-He)<=Fi*Math.max(1,Math.abs(O),Math.abs(He))&&Math.abs(q-$e)<=Fi*Math.max(1,Math.abs(q),Math.abs($e))&&Math.abs(H-at)<=Fi*Math.max(1,Math.abs(H),Math.abs(at))},l.b2=function(i,e){return i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=e[3],i[4]=e[4],i[5]=e[5],i[6]=e[6],i[7]=e[7],i[8]=e[8],i[9]=e[9],i[10]=e[10],i[11]=e[11],i[12]=e[12],i[13]=e[13],i[14]=e[14],i[15]=e[15],i},l.b3=function(i,e,r){return i[0]=e[0]*r[0],i[1]=e[1]*r[1],i[2]=e[2]*r[2],i[3]=e[3]*r[3],i},l.b4=function(i,e){return i[0]*e[0]+i[1]*e[1]+i[2]*e[2]+i[3]*e[3]},l.b5=un,l.b6=Lp,l.b7=Pp,l.b8=function(i,e,r,a,o){var p,f=1/Math.tan(e/2);return i[0]=f/r,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=f,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[11]=-1,i[12]=0,i[13]=0,i[15]=0,o!=null&&o!==1/0?(i[10]=(o+a)*(p=1/(a-o)),i[14]=2*o*a*p):(i[10]=-1,i[14]=-2*a),i},l.b9=function(i,e,r){var a=Math.sin(r),o=Math.cos(r),p=e[4],f=e[5],m=e[6],y=e[7],v=e[8],S=e[9],A=e[10],M=e[11];return e!==i&&(i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=e[3],i[12]=e[12],i[13]=e[13],i[14]=e[14],i[15]=e[15]),i[4]=p*o+v*a,i[5]=f*o+S*a,i[6]=m*o+A*a,i[7]=y*o+M*a,i[8]=v*o-p*a,i[9]=S*o-f*a,i[10]=A*o-m*a,i[11]=M*o-y*a,i},l.bA=Ee,l.bB=sp,l.bC=rs,l.bD=Hi,l.ba=cn,l.bb=qr,l.bc=function(i,e){return i[0]=e[0],i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=e[1],i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=e[2],i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,i},l.bd=class extends ka{},l.be=su,l.bf=zp,l.bg=j_,l.bi=Gr,l.bj=function(i,e,r=!1){if(Li===ao||Li===so||Li===oo)throw new Error("setRTLTextPlugin cannot be called multiple times.");nn=Fn.resolveURL(i),Li=ao,lo=e,co(),r||Il()},l.bk=uo,l.bl=function(i,e){const r={};for(let o=0;o<i.length;o++){const p=e&&e[i[o].id]||os(i[o]);e&&(e[i[o].id]=p);let f=r[p];f||(f=r[p]=[]),f.push(i[o])}const a=[];for(const o in r)a.push(r[o]);return a},l.bm=Re,l.bn=Fp,l.bo=Op,l.bp=mp,l.bq=function(i){i.bucket.createArrays(),i.bucket.tilePixelRatio=Xt/(512*i.bucket.overscaling),i.bucket.compareText={},i.bucket.iconsNeedLinear=!1;const e=i.bucket.layers[0],r=e.layout,a=e._unevaluatedLayout._values,o={layoutIconSize:a["icon-size"].possiblyEvaluate(new Mt(i.bucket.zoom+1),i.canonical),layoutTextSize:a["text-size"].possiblyEvaluate(new Mt(i.bucket.zoom+1),i.canonical),textMaxSize:a["text-size"].possiblyEvaluate(new Mt(18))};if(i.bucket.textSizeData.kind==="composite"){const{minZoom:v,maxZoom:S}=i.bucket.textSizeData;o.compositeTextSizes=[a["text-size"].possiblyEvaluate(new Mt(v),i.canonical),a["text-size"].possiblyEvaluate(new Mt(S),i.canonical)]}if(i.bucket.iconSizeData.kind==="composite"){const{minZoom:v,maxZoom:S}=i.bucket.iconSizeData;o.compositeIconSizes=[a["icon-size"].possiblyEvaluate(new Mt(v),i.canonical),a["icon-size"].possiblyEvaluate(new Mt(S),i.canonical)]}const p=r.get("text-line-height")*ei,f=r.get("text-rotation-alignment")!=="viewport"&&r.get("symbol-placement")!=="point",m=r.get("text-keep-upright"),y=r.get("text-size");for(const v of i.bucket.features){const S=r.get("text-font").evaluate(v,{},i.canonical).join(","),A=y.evaluate(v,{},i.canonical),M=o.layoutTextSize.evaluate(v,{},i.canonical),D=o.layoutIconSize.evaluate(v,{},i.canonical),L={horizontal:{},vertical:void 0},O=v.text;let q,H=[0,0];if(O){const ae=O.toString(),oe=r.get("text-letter-spacing").evaluate(v,{},i.canonical)*ei,me=ro(ae)?oe:0,De=r.get("text-anchor").evaluate(v,{},i.canonical),Ve=Kp(e,v,i.canonical);if(!Ve){const Ae=r.get("text-radial-offset").evaluate(v,{},i.canonical);H=Ae?Xp(De,[Ae*ei,cu]):r.get("text-offset").evaluate(v,{},i.canonical).map((be=>be*ei))}let Pe=f?"center":r.get("text-justify").evaluate(v,{},i.canonical);const Me=r.get("symbol-placement"),Te=Me==="point"?r.get("text-max-width").evaluate(v,{},i.canonical)*ei:0,Fe=()=>{i.bucket.allowVerticalPlacement&&io(ae)&&(L.vertical=$l(O,i.glyphMap,i.glyphPositions,i.imagePositions,S,Te,p,De,"left",me,H,l.ai.vertical,!0,Me,M,A))};if(!f&&Ve){const Ae=new Set;if(Pe==="auto")for(let He=0;He<Ve.values.length;He+=2)Ae.add(uu(Ve.values[He]));else Ae.add(Pe);let be=!1;for(const He of Ae)if(!L.horizontal[He])if(be)L.horizontal[He]=L.horizontal[0];else{const $e=$l(O,i.glyphMap,i.glyphPositions,i.imagePositions,S,Te,p,"center",He,me,H,l.ai.horizontal,!1,Me,M,A);$e&&(L.horizontal[He]=$e,be=$e.positionedLines.length===1)}Fe()}else{Pe==="auto"&&(Pe=uu(De));const Ae=$l(O,i.glyphMap,i.glyphPositions,i.imagePositions,S,Te,p,De,Pe,me,H,l.ai.horizontal,!1,Me,M,A);Ae&&(L.horizontal[Pe]=Ae),Fe(),io(ae)&&f&&m&&(L.vertical=$l(O,i.glyphMap,i.glyphPositions,i.imagePositions,S,Te,p,De,Pe,me,H,l.ai.vertical,!1,Me,M,A))}}let re=!1;if(v.icon&&v.icon.name){const ae=i.imageMap[v.icon.name];ae&&(q=T_(i.imagePositions[v.icon.name],r.get("icon-offset").evaluate(v,{},i.canonical),r.get("icon-anchor").evaluate(v,{},i.canonical)),re=!!ae.sdf,i.bucket.sdfIcons===void 0?i.bucket.sdfIcons=re:i.bucket.sdfIcons!==re&&li("Style sheet warning: Cannot mix SDF and non-SDF icons in one buffer"),(ae.pixelRatio!==i.bucket.pixelRatio||r.get("icon-rotate").constantOr(1)!==0)&&(i.bucket.iconsNeedLinear=!0))}const Y=Jp(L.horizontal)||L.vertical;i.bucket.iconsInText=!!Y&&Y.iconsInText,(Y||q)&&U_(i.bucket,v,L,q,i.imageMap,o,M,D,H,re,i.canonical)}i.showCollisionBoxes&&i.bucket.generateCollisionDebugBuffers()},l.br=Wc,l.bs=Zc,l.bt=Hc,l.bu=class{constructor(i){this._marks={start:[i.url,"start"].join("#"),end:[i.url,"end"].join("#"),measure:i.url.toString()},performance.mark(this._marks.start)}finish(){performance.mark(this._marks.end);let i=performance.getEntriesByName(this._marks.measure);return i.length===0&&(performance.measure(this._marks.measure,this._marks.start,this._marks.end),i=performance.getEntriesByName(this._marks.measure),performance.clearMarks(this._marks.start),performance.clearMarks(this._marks.end),performance.clearMeasures(this._marks.measure)),i}},l.bv=Kc,l.bw=ta,l.bx=function(i,e,r,a,o){return le(this,void 0,void 0,(function*(){if(fi())try{return yield ca(i,e,r,a,o)}catch{}return(function(p,f,m,y,v){const S=p.width,A=p.height;_r&&Ct||(_r=new OffscreenCanvas(S,A),Ct=_r.getContext("2d",{willReadFrequently:!0})),_r.width=S,_r.height=A,Ct.drawImage(p,0,0,S,A);const M=Ct.getImageData(f,m,y,v);return Ct.clearRect(0,0,S,A),M.data})(i,e,r,a,o)}))},l.by=Rp,l.bz=X,l.c=Bn,l.d=function(i,e){const r=new Image;r.onload=()=>{e(null,r),URL.revokeObjectURL(r.src),r.onload=null,window.requestAnimationFrame((()=>{r.src=Oa}))},r.onerror=()=>e(new 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."));const a=new Blob([new Uint8Array(i)],{type:"image/png"});r.src=i.byteLength?URL.createObjectURL(a):Oa},l.e=Yt,l.f=function(i,e){return Hr(Yt(i,{type:"json"}),e)},l.g=ir,l.h=Fn,l.i=tr,l.j=Xr,l.k=Wr,l.l=ha,l.m=Hr,l.n=function(i){return new Kc(i).readFields(y_,[])},l.o=function(i,e,r){if(!i.length)return r(null,[]);let a=i.length;const o=new Array(i.length);let p=null;i.forEach(((f,m)=>{e(f,((y,v)=>{y&&(p=y),o[m]=v,--a==0&&r(p,o)}))}))},l.p=fp,l.q=To,l.r=Zt,l.s=Er,l.t=Ac,l.u=ze,l.v=he,l.w=li,l.x=us,l.y=Fr,l.z=function([i,e,r]){return e+=90,e*=Math.PI/180,r*=Math.PI/180,{x:i*Math.cos(e)*Math.sin(r),y:i*Math.sin(e)*Math.sin(r),z:i*Math.cos(r)}}})),J(["./shared"],(function(l){class le{constructor(C){this.keyCache={},C&&this.replace(C)}replace(C){this._layerConfigs={},this._layers={},this.update(C,[])}update(C,E){for(const j of C){this._layerConfigs[j.id]=j;const Z=this._layers[j.id]=l.aC(j);Z._featureFilter=l.a6(Z.filter),this.keyCache[j.id]&&delete this.keyCache[j.id]}for(const j of E)delete this.keyCache[j],delete this._layerConfigs[j],delete this._layers[j];this.familiesBySource={};const F=l.bl(Object.values(this._layerConfigs),this.keyCache);for(const j of F){const Z=j.map((de=>this._layers[de.id])),ne=Z[0];if(ne.visibility==="none")continue;const Q=ne.source||"";let W=this.familiesBySource[Q];W||(W=this.familiesBySource[Q]={});const ie=ne.sourceLayer||"_geojsonTileLayer";let pe=W[ie];pe||(pe=W[ie]=[]),pe.push(Z)}}}class X{constructor(C){const E={},F=[];for(const Q in C){const W=C[Q],ie=E[Q]={};for(const pe in W){const de=W[+pe];if(!de||de.bitmap.width===0||de.bitmap.height===0)continue;const ge={x:0,y:0,w:de.bitmap.width+2,h:de.bitmap.height+2};F.push(ge),ie[pe]={rect:ge,metrics:de.metrics}}}const{w:j,h:Z}=l.p(F),ne=new l.q({width:j||1,height:Z||1});for(const Q in C){const W=C[Q];for(const ie in W){const pe=W[+ie];if(!pe||pe.bitmap.width===0||pe.bitmap.height===0)continue;const de=E[Q][ie].rect;l.q.copy(pe.bitmap,ne,{x:0,y:0},{x:de.x+1,y:de.y+1},pe.bitmap)}}this.image=ne,this.positions=E}}l.bm("GlyphAtlas",X);class Ee{constructor(C){this.tileID=new l.O(C.tileID.overscaledZ,C.tileID.wrap,C.tileID.canonical.z,C.tileID.canonical.x,C.tileID.canonical.y),this.uid=C.uid,this.zoom=C.zoom,this.pixelRatio=C.pixelRatio,this.tileSize=C.tileSize,this.source=C.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=C.showCollisionBoxes,this.collectResourceTiming=!!C.collectResourceTiming,this.returnDependencies=!!C.returnDependencies,this.promoteId=C.promoteId,this.inFlightDependencies=[],this.dependencySentinel=-1}parse(C,E,F,j,Z){this.status="parsing",this.data=C,this.collisionBoxArray=new l.a3;const ne=new l.bn(Object.keys(C.layers).sort()),Q=new l.bo(this.tileID,this.promoteId);Q.bucketLayerIDs=[];const W={},ie={featureIndex:Q,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:F},pe=E.familiesBySource[this.source];for(const dt in pe){const pt=C.layers[dt];if(!pt)continue;pt.version===1&&l.w(`Vector tile source "${this.source}" layer "${dt}" does not use vector tile spec v2 and therefore may have some rendering errors.`);const mi=ne.encode(dt),It=[];for(let Wt=0;Wt<pt.length;Wt++){const ci=pt.feature(Wt),nr=Q.getId(ci,dt);It.push({feature:ci,id:nr,index:Wt,sourceLayerIndex:mi})}for(const Wt of pe[dt]){const ci=Wt[0];ci.source!==this.source&&l.w(`layer.source = ${ci.source} does not equal this.source = ${this.source}`),ci.minzoom&&this.zoom<Math.floor(ci.minzoom)||ci.maxzoom&&this.zoom>=ci.maxzoom||ci.visibility!=="none"&&(ye(Wt,this.zoom,F),(W[ci.id]=ci.createBucket({index:Q.bucketLayerIDs.length,layers:Wt,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:mi,sourceID:this.source})).populate(It,ie,this.tileID.canonical),Q.bucketLayerIDs.push(Wt.map((nr=>nr.id))))}}let de,ge,Ge,Qe;const Oe=l.aH(ie.glyphDependencies,(dt=>Object.keys(dt).map(Number)));this.inFlightDependencies.forEach((dt=>dt==null?void 0:dt.cancel())),this.inFlightDependencies=[];const Xe=++this.dependencySentinel;Object.keys(Oe).length?this.inFlightDependencies.push(j.send("getGlyphs",{uid:this.uid,stacks:Oe,source:this.source,tileID:this.tileID,type:"glyphs"},((dt,pt)=>{Xe===this.dependencySentinel&&(de||(de=dt,ge=pt,wt.call(this)))}))):ge={};const tt=Object.keys(ie.iconDependencies);tt.length?this.inFlightDependencies.push(j.send("getImages",{icons:tt,source:this.source,tileID:this.tileID,type:"icons"},((dt,pt)=>{Xe===this.dependencySentinel&&(de||(de=dt,Ge=pt,wt.call(this)))}))):Ge={};const yt=Object.keys(ie.patternDependencies);function wt(){if(de)return Z(de);if(ge&&Ge&&Qe){const dt=new X(ge),pt=new l.bp(Ge,Qe);for(const mi in W){const It=W[mi];It instanceof l.a4?(ye(It.layers,this.zoom,F),l.bq({bucket:It,glyphMap:ge,glyphPositions:dt.positions,imageMap:Ge,imagePositions:pt.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):It.hasPattern&&(It instanceof l.br||It instanceof l.bs||It instanceof l.bt)&&(ye(It.layers,this.zoom,F),It.addFeatures(ie,this.tileID.canonical,pt.patternPositions))}this.status="done",Z(null,{buckets:Object.values(W).filter((mi=>!mi.isEmpty())),featureIndex:Q,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:dt.image,imageAtlas:pt,glyphMap:this.returnDependencies?ge:null,iconMap:this.returnDependencies?Ge:null,glyphPositions:this.returnDependencies?dt.positions:null})}}yt.length?this.inFlightDependencies.push(j.send("getImages",{icons:yt,source:this.source,tileID:this.tileID,type:"patterns"},((dt,pt)=>{Xe===this.dependencySentinel&&(de||(de=dt,Qe=pt,wt.call(this)))}))):Qe={},wt.call(this)}}function ye(U,C,E){const F=new l.a8(C);for(const j of U)j.recalculate(F,E)}function _e(U,C){const E=l.l(U.request,((F,j,Z,ne)=>{if(F)C(F);else if(j)try{const Q=new l.bw.VectorTile(new l.bv(j));C(null,{vectorTile:Q,rawData:j,cacheControl:Z,expires:ne})}catch(Q){const W=new Uint8Array(j);let ie=`Unable to parse the tile at ${U.request.url}, `;ie+=W[0]===31&&W[1]===139?"please make sure the data is not gzipped and that you have configured the relevant header in the server":`got error: ${Q.messge}`,C(new Error(ie))}}));return()=>{E.cancel(),C()}}class we{constructor(C,E,F,j){this.actor=C,this.layerIndex=E,this.availableImages=F,this.loadVectorData=j||_e,this.fetching={},this.loading={},this.loaded={}}loadTile(C,E){const F=C.uid;this.loading||(this.loading={});const j=!!(C&&C.request&&C.request.collectResourceTiming)&&new l.bu(C.request),Z=this.loading[F]=new Ee(C);Z.abort=this.loadVectorData(C,((ne,Q)=>{if(delete this.loading[F],ne||!Q)return Z.status="done",this.loaded[F]=Z,E(ne);const W=Q.rawData,ie={};Q.expires&&(ie.expires=Q.expires),Q.cacheControl&&(ie.cacheControl=Q.cacheControl);const pe={};if(j){const de=j.finish();de&&(pe.resourceTiming=JSON.parse(JSON.stringify(de)))}Z.vectorTile=Q.vectorTile,Z.parse(Q.vectorTile,this.layerIndex,this.availableImages,this.actor,((de,ge)=>{if(delete this.fetching[F],de||!ge)return E(de);E(null,l.e({rawTileData:W.slice(0)},ge,ie,pe))})),this.loaded=this.loaded||{},this.loaded[F]=Z,this.fetching[F]={rawTileData:W,cacheControl:ie,resourceTiming:pe}}))}reloadTile(C,E){const F=this.loaded,j=C.uid;if(F&&F[j]){const Z=F[j];Z.showCollisionBoxes=C.showCollisionBoxes,Z.status==="parsing"?Z.parse(Z.vectorTile,this.layerIndex,this.availableImages,this.actor,((ne,Q)=>{if(ne||!Q)return E(ne,Q);let W;if(this.fetching[j]){const{rawTileData:ie,cacheControl:pe,resourceTiming:de}=this.fetching[j];delete this.fetching[j],W=l.e({rawTileData:ie.slice(0)},Q,pe,de)}else W=Q;E(null,W)})):Z.status==="done"&&(Z.vectorTile?Z.parse(Z.vectorTile,this.layerIndex,this.availableImages,this.actor,E):E())}}abortTile(C,E){const F=this.loading,j=C.uid;F&&F[j]&&F[j].abort&&(F[j].abort(),delete F[j]),E()}removeTile(C,E){const F=this.loaded,j=C.uid;F&&F[j]&&delete F[j],E()}}class Le{constructor(){this.loaded={}}loadTile(C,E){return l._(this,void 0,void 0,(function*(){const{uid:F,encoding:j,rawImageData:Z,redFactor:ne,greenFactor:Q,blueFactor:W,baseShift:ie}=C,pe=Z.width+2,de=Z.height+2,ge=l.a(Z)?new l.R({width:pe,height:de},yield l.bx(Z,-1,-1,pe,de)):Z,Ge=new l.by(F,ge,j,ne,Q,W,ie);this.loaded=this.loaded||{},this.loaded[F]=Ge,E(null,Ge)}))}removeTile(C){const E=this.loaded,F=C.uid;E&&E[F]&&delete E[F]}}function We(U,C){if(U.length!==0){qe(U[0],C);for(var E=1;E<U.length;E++)qe(U[E],!C)}}function qe(U,C){for(var E=0,F=0,j=0,Z=U.length,ne=Z-1;j<Z;ne=j++){var Q=(U[j][0]-U[ne][0])*(U[ne][1]+U[j][1]),W=E+Q;F+=Math.abs(E)>=Math.abs(Q)?E-W+Q:Q-W+E,E=W}E+F>=0!=!!C&&U.reverse()}var Be=l.bz((function U(C,E){var F,j=C&&C.type;if(j==="FeatureCollection")for(F=0;F<C.features.length;F++)U(C.features[F],E);else if(j==="GeometryCollection")for(F=0;F<C.geometries.length;F++)U(C.geometries[F],E);else if(j==="Feature")U(C.geometry,E);else if(j==="Polygon")We(C.coordinates,E);else if(j==="MultiPolygon")for(F=0;F<C.coordinates.length;F++)We(C.coordinates[F],E);return C}));const Ze=l.bw.VectorTileFeature.prototype.toGeoJSON;var fi={exports:{}},cn=l.bA,qr=l.bw.VectorTileFeature,er=un;function un(U,C){this.options=C||{},this.features=U,this.length=U.length}function Yt(U,C){this.id=typeof U.id=="number"?U.id:void 0,this.type=U.type,this.rawGeometry=U.type===1?[U.geometry]:U.geometry,this.properties=U.tags,this.extent=C||4096}un.prototype.feature=function(U){return new Yt(this.features[U],this.options.extent)},Yt.prototype.loadGeometry=function(){var U=this.rawGeometry;this.geometry=[];for(var C=0;C<U.length;C++){for(var E=U[C],F=[],j=0;j<E.length;j++)F.push(new cn(E[j][0],E[j][1]));this.geometry.push(F)}return this.geometry},Yt.prototype.bbox=function(){this.geometry||this.loadGeometry();for(var U=this.geometry,C=1/0,E=-1/0,F=1/0,j=-1/0,Z=0;Z<U.length;Z++)for(var ne=U[Z],Q=0;Q<ne.length;Q++){var W=ne[Q];C=Math.min(C,W.x),E=Math.max(E,W.x),F=Math.min(F,W.y),j=Math.max(j,W.y)}return[C,F,E,j]},Yt.prototype.toGeoJSON=qr.prototype.toGeoJSON;var Rn=l.bB,kt=er;function Zr(U){var C=new Rn;return(function(E,F){for(var j in E.layers)F.writeMessage(3,xt,E.layers[j])})(U,C),C.finish()}function xt(U,C){var E;C.writeVarintField(15,U.version||1),C.writeStringField(1,U.name||""),C.writeVarintField(5,U.extent||4096);var F={keys:[],values:[],keycache:{},valuecache:{}};for(E=0;E<U.length;E++)F.feature=U.feature(E),C.writeMessage(2,wi,F);var j=F.keys;for(E=0;E<j.length;E++)C.writeStringField(3,j[E]);var Z=F.values;for(E=0;E<Z.length;E++)C.writeMessage(4,hn,Z[E])}function wi(U,C){var E=U.feature;E.id!==void 0&&C.writeVarintField(1,E.id),C.writeMessage(2,li,U),C.writeVarintField(3,E.type),C.writeMessage(4,tr,E)}function li(U,C){var E=U.feature,F=U.keys,j=U.values,Z=U.keycache,ne=U.valuecache;for(var Q in E.properties){var W=E.properties[Q],ie=Z[Q];if(W!==null){ie===void 0&&(F.push(Q),Z[Q]=ie=F.length-1),C.writeVarint(ie);var pe=typeof W;pe!=="string"&&pe!=="boolean"&&pe!=="number"&&(W=JSON.stringify(W));var de=pe+":"+W,ge=ne[de];ge===void 0&&(j.push(W),ne[de]=ge=j.length-1),C.writeVarint(ge)}}}function $i(U,C){return(C<<3)+(7&U)}function Mr(U){return U<<1^U>>31}function tr(U,C){for(var E=U.loadGeometry(),F=U.type,j=0,Z=0,ne=E.length,Q=0;Q<ne;Q++){var W=E[Q],ie=1;F===1&&(ie=W.length),C.writeVarint($i(1,ie));for(var pe=F===3?W.length-1:W.length,de=0;de<pe;de++){de===1&&F!==1&&C.writeVarint($i(2,pe-1));var ge=W[de].x-j,Ge=W[de].y-Z;C.writeVarint(Mr(ge)),C.writeVarint(Mr(Ge)),j+=ge,Z+=Ge}F===3&&C.writeVarint($i(7,1))}}function hn(U,C){var E=typeof U;E==="string"?C.writeStringField(1,U):E==="boolean"?C.writeBooleanField(7,U):E==="number"&&(U%1!=0?C.writeDoubleField(3,U):U<0?C.writeSVarintField(6,U):C.writeVarintField(5,U))}fi.exports=Zr,fi.exports.fromVectorTileJs=Zr,fi.exports.fromGeojsonVt=function(U,C){C=C||{};var E={};for(var F in U)E[F]=new kt(U[F].features,C),E[F].name=F,E[F].version=C.version,E[F].extent=C.extent;return Zr({layers:E})},fi.exports.GeoJSONWrapper=kt;var la=l.bz(fi.exports);const Oa={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:U=>U},ca=Math.fround||(_r=new Float32Array(1),U=>(_r[0]=+U,_r[0]));var _r;const Ct=3,Pi=5,pn=6;class Fn{constructor(C){this.options=Object.assign(Object.create(Oa),C),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(C){const{log:E,minZoom:F,maxZoom:j}=this.options;E&&console.time("total time");const Z=`prepare ${C.length} points`;E&&console.time(Z),this.points=C;const ne=[];for(let W=0;W<C.length;W++){const ie=C[W];if(!ie.geometry)continue;const[pe,de]=ie.geometry.coordinates,ge=ca(pr(pe)),Ge=ca(ir(de));ne.push(ge,Ge,1/0,W,-1,1),this.options.reduce&&ne.push(0)}let Q=this.trees[j+1]=this._createTree(ne);E&&console.timeEnd(Z);for(let W=j;W>=F;W--){const ie=+Date.now();Q=this.trees[W]=this._createTree(this._cluster(Q,W)),E&&console.log("z%d: %d clusters in %dms",W,Q.numItems,+Date.now()-ie)}return E&&console.timeEnd("total time"),this}getClusters(C,E){let F=((C[0]+180)%360+360)%360-180;const j=Math.max(-90,Math.min(90,C[1]));let Z=C[2]===180?180:((C[2]+180)%360+360)%360-180;const ne=Math.max(-90,Math.min(90,C[3]));if(C[2]-C[0]>=360)F=-180,Z=180;else if(F>Z){const de=this.getClusters([F,j,180,ne],E),ge=this.getClusters([-180,j,Z,ne],E);return de.concat(ge)}const Q=this.trees[this._limitZoom(E)],W=Q.range(pr(F),ir(ne),pr(Z),ir(j)),ie=Q.data,pe=[];for(const de of W){const ge=this.stride*de;pe.push(ie[ge+Pi]>1?Bn(ie,ge,this.clusterProps):this.points[ie[ge+Ct]])}return pe}getChildren(C){const E=this._getOriginId(C),F=this._getOriginZoom(C),j="No cluster with the specified id.",Z=this.trees[F];if(!Z)throw new Error(j);const ne=Z.data;if(E*this.stride>=ne.length)throw new Error(j);const Q=this.options.radius/(this.options.extent*Math.pow(2,F-1)),W=Z.within(ne[E*this.stride],ne[E*this.stride+1],Q),ie=[];for(const pe of W){const de=pe*this.stride;ne[de+4]===C&&ie.push(ne[de+Pi]>1?Bn(ne,de,this.clusterProps):this.points[ne[de+Ct]])}if(ie.length===0)throw new Error(j);return ie}getLeaves(C,E,F){const j=[];return this._appendLeaves(j,C,E=E||10,F=F||0,0),j}getTile(C,E,F){const j=this.trees[this._limitZoom(C)],Z=Math.pow(2,C),{extent:ne,radius:Q}=this.options,W=Q/ne,ie=(F-W)/Z,pe=(F+1+W)/Z,de={features:[]};return this._addTileFeatures(j.range((E-W)/Z,ie,(E+1+W)/Z,pe),j.data,E,F,Z,de),E===0&&this._addTileFeatures(j.range(1-W/Z,ie,1,pe),j.data,Z,F,Z,de),E===Z-1&&this._addTileFeatures(j.range(0,ie,W/Z,pe),j.data,-1,F,Z,de),de.features.length?de:null}getClusterExpansionZoom(C){let E=this._getOriginZoom(C)-1;for(;E<=this.options.maxZoom;){const F=this.getChildren(C);if(E++,F.length!==1)break;C=F[0].properties.cluster_id}return E}_appendLeaves(C,E,F,j,Z){const ne=this.getChildren(E);for(const Q of ne){const W=Q.properties;if(W&&W.cluster?Z+W.point_count<=j?Z+=W.point_count:Z=this._appendLeaves(C,W.cluster_id,F,j,Z):Z<j?Z++:C.push(Q),C.length===F)break}return Z}_createTree(C){const E=new l.av(C.length/this.stride|0,this.options.nodeSize,Float32Array);for(let F=0;F<C.length;F+=this.stride)E.add(C[F],C[F+1]);return E.finish(),E.data=C,E}_addTileFeatures(C,E,F,j,Z,ne){for(const Q of C){const W=Q*this.stride,ie=E[W+Pi]>1;let pe,de,ge;if(ie)pe=Gr(E,W,this.clusterProps),de=E[W],ge=E[W+1];else{const Oe=this.points[E[W+Ct]];pe=Oe.properties;const[Xe,tt]=Oe.geometry.coordinates;de=pr(Xe),ge=ir(tt)}const Ge={type:1,geometry:[[Math.round(this.options.extent*(de*Z-F)),Math.round(this.options.extent*(ge*Z-j))]],tags:pe};let Qe;Qe=ie||this.options.generateId?E[W+Ct]:this.points[E[W+Ct]].id,Qe!==void 0&&(Ge.id=Qe),ne.features.push(Ge)}}_limitZoom(C){return Math.max(this.options.minZoom,Math.min(Math.floor(+C),this.options.maxZoom+1))}_cluster(C,E){const{radius:F,extent:j,reduce:Z,minPoints:ne}=this.options,Q=F/(j*Math.pow(2,E)),W=C.data,ie=[],pe=this.stride;for(let de=0;de<W.length;de+=pe){if(W[de+2]<=E)continue;W[de+2]=E;const ge=W[de],Ge=W[de+1],Qe=C.within(W[de],W[de+1],Q),Oe=W[de+Pi];let Xe=Oe;for(const tt of Qe){const yt=tt*pe;W[yt+2]>E&&(Xe+=W[yt+Pi])}if(Xe>Oe&&Xe>=ne){let tt,yt=ge*Oe,wt=Ge*Oe,dt=-1;const pt=((de/pe|0)<<5)+(E+1)+this.points.length;for(const mi of Qe){const It=mi*pe;if(W[It+2]<=E)continue;W[It+2]=E;const Wt=W[It+Pi];yt+=W[It]*Wt,wt+=W[It+1]*Wt,W[It+4]=pt,Z&&(tt||(tt=this._map(W,de,!0),dt=this.clusterProps.length,this.clusterProps.push(tt)),Z(tt,this._map(W,It)))}W[de+4]=pt,ie.push(yt/Xe,wt/Xe,1/0,pt,-1,Xe),Z&&ie.push(dt)}else{for(let tt=0;tt<pe;tt++)ie.push(W[de+tt]);if(Xe>1)for(const tt of Qe){const yt=tt*pe;if(!(W[yt+2]<=E)){W[yt+2]=E;for(let wt=0;wt<pe;wt++)ie.push(W[yt+wt])}}}}return ie}_getOriginId(C){return C-this.points.length>>5}_getOriginZoom(C){return(C-this.points.length)%32}_map(C,E,F){if(C[E+Pi]>1){const ne=this.clusterProps[C[E+pn]];return F?Object.assign({},ne):ne}const j=this.points[C[E+Ct]].properties,Z=this.options.map(j);return F&&Z===j?Object.assign({},Z):Z}}function Bn(U,C,E){return{type:"Feature",id:U[C+Ct],properties:Gr(U,C,E),geometry:{type:"Point",coordinates:[(F=U[C],360*(F-.5)),ua(U[C+1])]}};var F}function Gr(U,C,E){const F=U[C+Pi],j=F>=1e4?`${Math.round(F/1e3)}k`:F>=1e3?Math.round(F/100)/10+"k":F,Z=U[C+pn],ne=Z===-1?{}:Object.assign({},E[Z]);return Object.assign(ne,{cluster:!0,cluster_id:U[C+Ct],point_count:F,point_count_abbreviated:j})}function pr(U){return U/360+.5}function ir(U){const C=Math.sin(U*Math.PI/180),E=.5-.25*Math.log((1+C)/(1-C))/Math.PI;return E<0?0:E>1?1:E}function ua(U){const C=(180-360*U)*Math.PI/180;return 360*Math.atan(Math.exp(C))/Math.PI-90}function Hr(U,C,E,F){for(var j,Z=F,ne=E-C>>1,Q=E-C,W=U[C],ie=U[C+1],pe=U[E],de=U[E+1],ge=C+3;ge<E;ge+=3){var Ge=ha(U[ge],U[ge+1],W,ie,pe,de);if(Ge>Z)j=ge,Z=Ge;else if(Ge===Z){var Qe=Math.abs(ge-ne);Qe<Q&&(j=ge,Q=Qe)}}Z>F&&(j-C>3&&Hr(U,C,j,F),U[j+2]=Z,E-j>3&&Hr(U,j,E,F))}function ha(U,C,E,F,j,Z){var ne=j-E,Q=Z-F;if(ne!==0||Q!==0){var W=((U-E)*ne+(C-F)*Q)/(ne*ne+Q*Q);W>1?(E=j,F=Z):W>0&&(E+=ne*W,F+=Q*W)}return(ne=U-E)*ne+(Q=C-F)*Q}function Er(U,C,E,F){var j={id:U===void 0?null:U,type:C,geometry:E,tags:F,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return(function(Z){var ne=Z.geometry,Q=Z.type;if(Q==="Point"||Q==="MultiPoint"||Q==="LineString")On(Z,ne);else if(Q==="Polygon"||Q==="MultiLineString")for(var W=0;W<ne.length;W++)On(Z,ne[W]);else if(Q==="MultiPolygon")for(W=0;W<ne.length;W++)for(var ie=0;ie<ne[W].length;ie++)On(Z,ne[W][ie])})(j),j}function On(U,C){for(var E=0;E<C.length;E+=3)U.minX=Math.min(U.minX,C[E]),U.minY=Math.min(U.minY,C[E+1]),U.maxX=Math.max(U.maxX,C[E]),U.maxY=Math.max(U.maxY,C[E+1])}function dn(U,C,E,F){if(C.geometry){var j=C.geometry.coordinates,Z=C.geometry.type,ne=Math.pow(E.tolerance/((1<<E.maxZoom)*E.extent),2),Q=[],W=C.id;if(E.promoteId?W=C.properties[E.promoteId]:E.generateId&&(W=F||0),Z==="Point")Wr(j,Q);else if(Z==="MultiPoint")for(var ie=0;ie<j.length;ie++)Wr(j[ie],Q);else if(Z==="LineString")Xr(j,Q,ne,!1);else if(Z==="MultiLineString"){if(E.lineMetrics){for(ie=0;ie<j.length;ie++)Xr(j[ie],Q=[],ne,!1),U.push(Er(W,"LineString",Q,C.properties));return}fn(j,Q,ne,!1)}else if(Z==="Polygon")fn(j,Q,ne,!0);else{if(Z!=="MultiPolygon"){if(Z==="GeometryCollection"){for(ie=0;ie<C.geometry.geometries.length;ie++)dn(U,{id:W,geometry:C.geometry.geometries[ie],properties:C.properties},E,F);return}throw new Error("Input data is not a valid GeoJSON object.")}for(ie=0;ie<j.length;ie++){var pe=[];fn(j[ie],pe,ne,!0),Q.push(pe)}}U.push(Er(W,Z,Q,C.properties))}}function Wr(U,C){C.push(he(U[0])),C.push(zi(U[1])),C.push(0)}function Xr(U,C,E,F){for(var j,Z,ne=0,Q=0;Q<U.length;Q++){var W=he(U[Q][0]),ie=zi(U[Q][1]);C.push(W),C.push(ie),C.push(0),Q>0&&(ne+=F?(j*ie-W*Z)/2:Math.sqrt(Math.pow(W-j,2)+Math.pow(ie-Z,2))),j=W,Z=ie}var pe=C.length-3;C[2]=1,Hr(C,0,pe,E),C[pe+2]=1,C.size=Math.abs(ne),C.start=0,C.end=C.size}function fn(U,C,E,F){for(var j=0;j<U.length;j++){var Z=[];Xr(U[j],Z,E,F),C.push(Z)}}function he(U){return U/360+.5}function zi(U){var C=Math.sin(U*Math.PI/180),E=.5-.25*Math.log((1+C)/(1-C))/Math.PI;return E<0?0:E>1?1:E}function rr(U,C,E,F,j,Z,ne,Q){if(F/=C,Z>=(E/=C)&&ne<F)return U;if(ne<E||Z>=F)return null;for(var W=[],ie=0;ie<U.length;ie++){var pe=U[ie],de=pe.geometry,ge=pe.type,Ge=j===0?pe.minX:pe.minY,Qe=j===0?pe.maxX:pe.maxY;if(Ge>=E&&Qe<F)W.push(pe);else if(!(Qe<E||Ge>=F)){var Oe=[];if(ge==="Point"||ge==="MultiPoint")Tt(de,Oe,E,F,j);else if(ge==="LineString")ft(de,Oe,E,F,j,!1,Q.lineMetrics);else if(ge==="MultiLineString")Nn(de,Oe,E,F,j,!1);else if(ge==="Polygon")Nn(de,Oe,E,F,j,!0);else if(ge==="MultiPolygon")for(var Xe=0;Xe<de.length;Xe++){var tt=[];Nn(de[Xe],tt,E,F,j,!0),tt.length&&Oe.push(tt)}if(Oe.length){if(Q.lineMetrics&&ge==="LineString"){for(Xe=0;Xe<Oe.length;Xe++)W.push(Er(pe.id,ge,Oe[Xe],pe.tags));continue}ge!=="LineString"&&ge!=="MultiLineString"||(Oe.length===1?(ge="LineString",Oe=Oe[0]):ge="MultiLineString"),ge!=="Point"&&ge!=="MultiPoint"||(ge=Oe.length===3?"Point":"MultiPoint"),W.push(Er(pe.id,ge,Oe,pe.tags))}}}return W.length?W:null}function Tt(U,C,E,F,j){for(var Z=0;Z<U.length;Z+=3){var ne=U[Z+j];ne>=E&&ne<=F&&(C.push(U[Z]),C.push(U[Z+1]),C.push(U[Z+2]))}}function ft(U,C,E,F,j,Z,ne){for(var Q,W,ie=yr(U),pe=j===0?Na:Vn,de=U.start,ge=0;ge<U.length-3;ge+=3){var Ge=U[ge],Qe=U[ge+1],Oe=U[ge+2],Xe=U[ge+3],tt=U[ge+4],yt=j===0?Ge:Qe,wt=j===0?Xe:tt,dt=!1;ne&&(Q=Math.sqrt(Math.pow(Ge-Xe,2)+Math.pow(Qe-tt,2))),yt<E?wt>E&&(W=pe(ie,Ge,Qe,Xe,tt,E),ne&&(ie.start=de+Q*W)):yt>F?wt<F&&(W=pe(ie,Ge,Qe,Xe,tt,F),ne&&(ie.start=de+Q*W)):Pr(ie,Ge,Qe,Oe),wt<E&&yt>=E&&(W=pe(ie,Ge,Qe,Xe,tt,E),dt=!0),wt>F&&yt<=F&&(W=pe(ie,Ge,Qe,Xe,tt,F),dt=!0),!Z&&dt&&(ne&&(ie.end=de+Q*W),C.push(ie),ie=yr(U)),ne&&(de+=Q)}var pt=U.length-3;Ge=U[pt],Qe=U[pt+1],Oe=U[pt+2],(yt=j===0?Ge:Qe)>=E&&yt<=F&&Pr(ie,Ge,Qe,Oe),pt=ie.length-3,Z&&pt>=3&&(ie[pt]!==ie[0]||ie[pt+1]!==ie[1])&&Pr(ie,ie[0],ie[1],ie[2]),ie.length&&C.push(ie)}function yr(U){var C=[];return C.size=U.size,C.start=U.start,C.end=U.end,C}function Nn(U,C,E,F,j,Z){for(var ne=0;ne<U.length;ne++)ft(U[ne],C,E,F,j,Z,!1)}function Pr(U,C,E,F){U.push(C),U.push(E),U.push(F)}function Na(U,C,E,F,j,Z){var ne=(Z-C)/(F-C);return U.push(Z),U.push(E+(j-E)*ne),U.push(1),ne}function Vn(U,C,E,F,j,Z){var ne=(Z-E)/(j-E);return U.push(C+(F-C)*ne),U.push(Z),U.push(1),ne}function Kr(U,C){for(var E=[],F=0;F<U.length;F++){var j,Z=U[F],ne=Z.type;if(ne==="Point"||ne==="MultiPoint"||ne==="LineString")j=mn(Z.geometry,C);else if(ne==="MultiLineString"||ne==="Polygon"){j=[];for(var Q=0;Q<Z.geometry.length;Q++)j.push(mn(Z.geometry[Q],C))}else if(ne==="MultiPolygon")for(j=[],Q=0;Q<Z.geometry.length;Q++){for(var W=[],ie=0;ie<Z.geometry[Q].length;ie++)W.push(mn(Z.geometry[Q][ie],C));j.push(W)}E.push(Er(Z.id,ne,j,Z.tags))}return E}function mn(U,C){var E=[];E.size=U.size,U.start!==void 0&&(E.start=U.start,E.end=U.end);for(var F=0;F<U.length;F+=3)E.push(U[F]+C,U[F+1],U[F+2]);return E}function Ie(U,C){if(U.transformed)return U;var E,F,j,Z=1<<U.z,ne=U.x,Q=U.y;for(E=0;E<U.features.length;E++){var W=U.features[E],ie=W.geometry,pe=W.type;if(W.geometry=[],pe===1)for(F=0;F<ie.length;F+=2)W.geometry.push(xr(ie[F],ie[F+1],C,Z,ne,Q));else for(F=0;F<ie.length;F++){var de=[];for(j=0;j<ie[F].length;j+=2)de.push(xr(ie[F][j],ie[F][j+1],C,Z,ne,Q));W.geometry.push(de)}}return U.transformed=!0,U}function xr(U,C,E,F,j,Z){return[Math.round(E*(U*F-j)),Math.round(E*(C*F-Z))]}function Ot(U,C,E,F,j){for(var Z=C===j.maxZoom?0:j.tolerance/((1<<C)*j.extent),ne={features:[],numPoints:0,numSimplified:0,numFeatures:0,source:null,x:E,y:F,z:C,transformed:!1,minX:2,minY:1,maxX:-1,maxY:0},Q=0;Q<U.length;Q++){ne.numFeatures++,gn(ne,U[Q],Z,j);var W=U[Q].minX,ie=U[Q].minY,pe=U[Q].maxX,de=U[Q].maxY;W<ne.minX&&(ne.minX=W),ie<ne.minY&&(ne.minY=ie),pe>ne.maxX&&(ne.maxX=pe),de>ne.maxY&&(ne.maxY=de)}return ne}function gn(U,C,E,F){var j=C.geometry,Z=C.type,ne=[];if(Z==="Point"||Z==="MultiPoint")for(var Q=0;Q<j.length;Q+=3)ne.push(j[Q]),ne.push(j[Q+1]),U.numPoints++,U.numSimplified++;else if(Z==="LineString")zr(ne,j,U,E,!1,!1);else if(Z==="MultiLineString"||Z==="Polygon")for(Q=0;Q<j.length;Q++)zr(ne,j[Q],U,E,Z==="Polygon",Q===0);else if(Z==="MultiPolygon")for(var W=0;W<j.length;W++){var ie=j[W];for(Q=0;Q<ie.length;Q++)zr(ne,ie[Q],U,E,!0,Q===0)}if(ne.length){var pe=C.tags||null;if(Z==="LineString"&&F.lineMetrics){for(var de in pe={},C.tags)pe[de]=C.tags[de];pe.mapbox_clip_start=j.start/j.size,pe.mapbox_clip_end=j.end/j.size}var ge={geometry:ne,type:Z==="Polygon"||Z==="MultiPolygon"?3:Z==="LineString"||Z==="MultiLineString"?2:1,tags:pe};C.id!==null&&(ge.id=C.id),U.features.push(ge)}}function zr(U,C,E,F,j,Z){var ne=F*F;if(F>0&&C.size<(j?ne:F))E.numPoints+=C.length/3;else{for(var Q=[],W=0;W<C.length;W+=3)(F===0||C[W+2]>ne)&&(E.numSimplified++,Q.push(C[W]),Q.push(C[W+1])),E.numPoints++;j&&(function(ie,pe){for(var de=0,ge=0,Ge=ie.length,Qe=Ge-2;ge<Ge;Qe=ge,ge+=2)de+=(ie[ge]-ie[Qe])*(ie[ge+1]+ie[Qe+1]);if(de>0===pe)for(ge=0,Ge=ie.length;ge<Ge/2;ge+=2){var Oe=ie[ge],Xe=ie[ge+1];ie[ge]=ie[Ge-2-ge],ie[ge+1]=ie[Ge-1-ge],ie[Ge-2-ge]=Oe,ie[Ge-1-ge]=Xe}})(Q,Z),U.push(Q)}}function ke(U,C){var E=(C=this.options=(function(j,Z){for(var ne in Z)j[ne]=Z[ne];return j})(Object.create(this.options),C)).debug;if(E&&console.time("preprocess data"),C.maxZoom<0||C.maxZoom>24)throw new Error("maxZoom should be in the 0-24 range");if(C.promoteId&&C.generateId)throw new Error("promoteId and generateId cannot be used together.");var F=(function(j,Z){var ne=[];if(j.type==="FeatureCollection")for(var Q=0;Q<j.features.length;Q++)dn(ne,j.features[Q],Z,Q);else dn(ne,j.type==="Feature"?j:{geometry:j},Z);return ne})(U,C);this.tiles={},this.tileCoords=[],E&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",C.indexMaxZoom,C.indexMaxPoints),console.time("generate tiles"),this.stats={},this.total=0),F=(function(j,Z){var ne=Z.buffer/Z.extent,Q=j,W=rr(j,1,-1-ne,ne,0,-1,2,Z),ie=rr(j,1,1-ne,2+ne,0,-1,2,Z);return(W||ie)&&(Q=rr(j,1,-ne,1+ne,0,-1,2,Z)||[],W&&(Q=Kr(W,1).concat(Q)),ie&&(Q=Q.concat(Kr(ie,-1)))),Q})(F,C),F.length&&this.splitTile(F,0,0,0),E&&(F.length&&console.log("features: %d, points: %d",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd("generate tiles"),console.log("tiles generated:",this.total,JSON.stringify(this.stats)))}function nt(U,C,E){return 32*((1<<U)*E+C)+U}function et(U,C){return C?U.properties[C]:U.id}function Si(U,C){if(U==null)return!0;if(U.type==="Feature")return et(U,C)!=null;if(U.type==="FeatureCollection"){const E=new Set;for(const F of U.features){const j=et(F,C);if(j==null||E.has(j))return!1;E.add(j)}return!0}return!1}function vr(U,C){const E=new Map;if(U!=null)if(U.type==="Feature")E.set(et(U,C),U);else for(const F of U.features)E.set(et(F,C),F);return E}ke.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},ke.prototype.splitTile=function(U,C,E,F,j,Z,ne){for(var Q=[U,C,E,F],W=this.options,ie=W.debug;Q.length;){F=Q.pop(),E=Q.pop(),C=Q.pop(),U=Q.pop();var pe=1<<C,de=nt(C,E,F),ge=this.tiles[de];if(!ge&&(ie>1&&console.time("creation"),ge=this.tiles[de]=Ot(U,C,E,F,W),this.tileCoords.push({z:C,x:E,y:F}),ie)){ie>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",C,E,F,ge.numFeatures,ge.numPoints,ge.numSimplified),console.timeEnd("creation"));var Ge="z"+C;this.stats[Ge]=(this.stats[Ge]||0)+1,this.total++}if(ge.source=U,j){if(C===W.maxZoom||C===j)continue;var Qe=1<<j-C;if(E!==Math.floor(Z/Qe)||F!==Math.floor(ne/Qe))continue}else if(C===W.indexMaxZoom||ge.numPoints<=W.indexMaxPoints)continue;if(ge.source=null,U.length!==0){ie>1&&console.time("clipping");var Oe,Xe,tt,yt,wt,dt,pt=.5*W.buffer/W.extent,mi=.5-pt,It=.5+pt,Wt=1+pt;Oe=Xe=tt=yt=null,wt=rr(U,pe,E-pt,E+It,0,ge.minX,ge.maxX,W),dt=rr(U,pe,E+mi,E+Wt,0,ge.minX,ge.maxX,W),U=null,wt&&(Oe=rr(wt,pe,F-pt,F+It,1,ge.minY,ge.maxY,W),Xe=rr(wt,pe,F+mi,F+Wt,1,ge.minY,ge.maxY,W),wt=null),dt&&(tt=rr(dt,pe,F-pt,F+It,1,ge.minY,ge.maxY,W),yt=rr(dt,pe,F+mi,F+Wt,1,ge.minY,ge.maxY,W),dt=null),ie>1&&console.timeEnd("clipping"),Q.push(Oe||[],C+1,2*E,2*F),Q.push(Xe||[],C+1,2*E,2*F+1),Q.push(tt||[],C+1,2*E+1,2*F),Q.push(yt||[],C+1,2*E+1,2*F+1)}}},ke.prototype.getTile=function(U,C,E){var F=this.options,j=F.extent,Z=F.debug;if(U<0||U>24)return null;var ne=1<<U,Q=nt(U,C=(C%ne+ne)%ne,E);if(this.tiles[Q])return Ie(this.tiles[Q],j);Z>1&&console.log("drilling down to z%d-%d-%d",U,C,E);for(var W,ie=U,pe=C,de=E;!W&&ie>0;)ie--,pe=Math.floor(pe/2),de=Math.floor(de/2),W=this.tiles[nt(ie,pe,de)];return W&&W.source?(Z>1&&console.log("found parent tile z%d-%d-%d",ie,pe,de),Z>1&&console.time("drilling down"),this.splitTile(W.source,ie,pe,de,U,C,E),Z>1&&console.timeEnd("drilling down"),this.tiles[Q]?Ie(this.tiles[Q],j):null):null};class it extends we{constructor(C,E,F,j){super(C,E,F),this._dataUpdateable=new Map,this.loadGeoJSON=(Z,ne)=>{const{promoteId:Q}=Z;if(Z.request)return l.f(Z.request,((W,ie,pe,de)=>{this._dataUpdateable=Si(ie,Q)?vr(ie,Q):void 0,ne(W,ie,pe,de)}));if(typeof Z.data=="string")try{const W=JSON.parse(Z.data);this._dataUpdateable=Si(W,Q)?vr(W,Q):void 0,ne(null,W)}catch{ne(new Error(`Input data given to '${Z.source}' is not a valid GeoJSON object.`))}else Z.dataDiff?this._dataUpdateable?((function(W,ie,pe){var de,ge,Ge,Qe;if(ie.removeAll&&W.clear(),ie.remove)for(const Oe of ie.remove)W.delete(Oe);if(ie.add)for(const Oe of ie.add){const Xe=et(Oe,pe);Xe!=null&&W.set(Xe,Oe)}if(ie.update)for(const Oe of ie.update){let Xe=W.get(Oe.id);if(Xe==null)continue;const tt=!Oe.removeAllProperties&&(((de=Oe.removeProperties)===null||de===void 0?void 0:de.length)>0||((ge=Oe.addOrUpdateProperties)===null||ge===void 0?void 0:ge.length)>0);if((Oe.newGeometry||Oe.removeAllProperties||tt)&&(Xe=Object.assign({},Xe),W.set(Oe.id,Xe),tt&&(Xe.properties=Object.assign({},Xe.properties))),Oe.newGeometry&&(Xe.geometry=Oe.newGeometry),Oe.removeAllProperties)Xe.properties={};else if(((Ge=Oe.removeProperties)===null||Ge===void 0?void 0:Ge.length)>0)for(const yt of Oe.removeProperties)Object.prototype.hasOwnProperty.call(Xe.properties,yt)&&delete Xe.properties[yt];if(((Qe=Oe.addOrUpdateProperties)===null||Qe===void 0?void 0:Qe.length)>0)for(const{key:yt,value:wt}of Oe.addOrUpdateProperties)Xe.properties[yt]=wt}})(this._dataUpdateable,Z.dataDiff,Q),ne(null,{type:"FeatureCollection",features:Array.from(this._dataUpdateable.values())})):ne(new Error(`Cannot update existing geojson data in ${Z.source}`)):ne(new Error(`Input data given to '${Z.source}' is not a valid GeoJSON object.`));return{cancel:()=>{}}},this.loadVectorData=this.loadGeoJSONTile,j&&(this.loadGeoJSON=j)}loadGeoJSONTile(C,E){const F=C.tileID.canonical;if(!this._geoJSONIndex)return E(null,null);const j=this._geoJSONIndex.getTile(F.z,F.x,F.y);if(!j)return E(null,null);const Z=new class{constructor(Q){this.layers={_geojsonTileLayer:this},this.name="_geojsonTileLayer",this.extent=l.N,this.length=Q.length,this._features=Q}feature(Q){return new class{constructor(W){this._feature=W,this.extent=l.N,this.type=W.type,this.properties=W.tags,"id"in W&&!isNaN(W.id)&&(this.id=parseInt(W.id,10))}loadGeometry(){if(this._feature.type===1){const W=[];for(const ie of this._feature.geometry)W.push([new l.P(ie[0],ie[1])]);return W}{const W=[];for(const ie of this._feature.geometry){const pe=[];for(const de of ie)pe.push(new l.P(de[0],de[1]));W.push(pe)}return W}}toGeoJSON(W,ie,pe){return Ze.call(this,W,ie,pe)}}(this._features[Q])}}(j.features);let ne=la(Z);ne.byteOffset===0&&ne.byteLength===ne.buffer.byteLength||(ne=new Uint8Array(ne)),E(null,{vectorTile:Z,rawData:ne.buffer})}loadData(C,E){var F;(F=this._pendingRequest)===null||F===void 0||F.cancel(),this._pendingCallback&&this._pendingCallback(null,{abandoned:!0});const j=!!(C&&C.request&&C.request.collectResourceTiming)&&new l.bu(C.request);this._pendingCallback=E,this._pendingRequest=this.loadGeoJSON(C,((Z,ne)=>{if(delete this._pendingCallback,delete this._pendingRequest,Z||!ne)return E(Z);if(typeof ne!="object")return E(new Error(`Input data given to '${C.source}' is not a valid GeoJSON object.`));{Be(ne,!0);try{if(C.filter){const W=l.bC(C.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if(W.result==="error")throw new Error(W.value.map((pe=>`${pe.key}: ${pe.message}`)).join(", "));ne={type:"FeatureCollection",features:ne.features.filter((pe=>W.value.evaluate({zoom:0},pe)))}}this._geoJSONIndex=C.cluster?new Fn((function({superclusterOptions:W,clusterProperties:ie}){if(!ie||!W)return W;const pe={},de={},ge={accumulated:null,zoom:0},Ge={properties:null},Qe=Object.keys(ie);for(const Oe of Qe){const[Xe,tt]=ie[Oe],yt=l.bC(tt),wt=l.bC(typeof Xe=="string"?[Xe,["accumulated"],["get",Oe]]:Xe);pe[Oe]=yt.value,de[Oe]=wt.value}return W.map=Oe=>{Ge.properties=Oe;const Xe={};for(const tt of Qe)Xe[tt]=pe[tt].evaluate(ge,Ge);return Xe},W.reduce=(Oe,Xe)=>{Ge.properties=Xe;for(const tt of Qe)ge.accumulated=Oe[tt],Oe[tt]=de[tt].evaluate(ge,Ge)},W})(C)).load(ne.features):(function(W,ie){return new ke(W,ie)})(ne,C.geojsonVtOptions)}catch(W){return E(W)}this.loaded={};const Q={};if(j){const W=j.finish();W&&(Q.resourceTiming={},Q.resourceTiming[C.source]=JSON.parse(JSON.stringify(W)))}E(null,Q)}}))}reloadTile(C,E){const F=this.loaded;return F&&F[C.uid]?super.reloadTile(C,E):this.loadTile(C,E)}removeSource(C,E){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),E()}getClusterExpansionZoom(C,E){try{E(null,this._geoJSONIndex.getClusterExpansionZoom(C.clusterId))}catch(F){E(F)}}getClusterChildren(C,E){try{E(null,this._geoJSONIndex.getChildren(C.clusterId))}catch(F){E(F)}}getClusterLeaves(C,E){try{E(null,this._geoJSONIndex.getLeaves(C.clusterId,C.limit,C.offset))}catch(F){E(F)}}}class Dr{constructor(C){this.self=C,this.actor=new l.C(C,this),this.layerIndexes={},this.availableImages={},this.workerSourceTypes={vector:we,geojson:it},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(E,F)=>{if(this.workerSourceTypes[E])throw new Error(`Worker source with name "${E}" already registered.`);this.workerSourceTypes[E]=F},this.self.registerRTLTextPlugin=E=>{if(l.bD.isParsed())throw new Error("RTL text plugin already registered.");l.bD.applyArabicShaping=E.applyArabicShaping,l.bD.processBidirectionalText=E.processBidirectionalText,l.bD.processStyledBidirectionalText=E.processStyledBidirectionalText}}setReferrer(C,E){this.referrer=E}setImages(C,E,F){this.availableImages[C]=E;for(const j in this.workerSources[C]){const Z=this.workerSources[C][j];for(const ne in Z)Z[ne].availableImages=E}F()}setLayers(C,E,F){this.getLayerIndex(C).replace(E),F()}updateLayers(C,E,F){this.getLayerIndex(C).update(E.layers,E.removedIds),F()}loadTile(C,E,F){this.getWorkerSource(C,E.type,E.source).loadTile(E,F)}loadDEMTile(C,E,F){this.getDEMWorkerSource(C,E.source).loadTile(E,F)}reloadTile(C,E,F){this.getWorkerSource(C,E.type,E.source).reloadTile(E,F)}abortTile(C,E,F){this.getWorkerSource(C,E.type,E.source).abortTile(E,F)}removeTile(C,E,F){this.getWorkerSource(C,E.type,E.source).removeTile(E,F)}removeDEMTile(C,E){this.getDEMWorkerSource(C,E.source).removeTile(E)}removeSource(C,E,F){if(!this.workerSources[C]||!this.workerSources[C][E.type]||!this.workerSources[C][E.type][E.source])return;const j=this.workerSources[C][E.type][E.source];delete this.workerSources[C][E.type][E.source],j.removeSource!==void 0?j.removeSource(E,F):F()}loadWorkerSource(C,E,F){try{this.self.importScripts(E.url),F()}catch(j){F(j.toString())}}syncRTLPluginState(C,E,F){try{l.bD.setState(E);const j=l.bD.getPluginURL();if(l.bD.isLoaded()&&!l.bD.isParsed()&&j!=null){this.self.importScripts(j);const Z=l.bD.isParsed();F(Z?void 0:new Error(`RTL Text Plugin failed to import scripts from ${j}`),Z)}}catch(j){F(j.toString())}}getAvailableImages(C){let E=this.availableImages[C];return E||(E=[]),E}getLayerIndex(C){let E=this.layerIndexes[C];return E||(E=this.layerIndexes[C]=new le),E}getWorkerSource(C,E,F){return this.workerSources[C]||(this.workerSources[C]={}),this.workerSources[C][E]||(this.workerSources[C][E]={}),this.workerSources[C][E][F]||(this.workerSources[C][E][F]=new this.workerSourceTypes[E]({send:(j,Z,ne)=>{this.actor.send(j,Z,ne,C)}},this.getLayerIndex(C),this.getAvailableImages(C))),this.workerSources[C][E][F]}getDEMWorkerSource(C,E){return this.demWorkerSources[C]||(this.demWorkerSources[C]={}),this.demWorkerSources[C][E]||(this.demWorkerSources[C][E]=new Le),this.demWorkerSources[C][E]}}return l.i()&&(self.worker=new Dr(self)),Dr})),J(["./shared"],(function(l){var le="3.6.2";class X{static testProp(t){if(!X.docStyle)return t[0];for(let n=0;n<t.length;n++)if(t[n]in X.docStyle)return t[n];return t[0]}static create(t,n,s){const c=window.document.createElement(t);return n!==void 0&&(c.className=n),s&&s.appendChild(c),c}static createNS(t,n){return window.document.createElementNS(t,n)}static disableDrag(){X.docStyle&&X.selectProp&&(X.userSelect=X.docStyle[X.selectProp],X.docStyle[X.selectProp]="none")}static enableDrag(){X.docStyle&&X.selectProp&&(X.docStyle[X.selectProp]=X.userSelect)}static setTransform(t,n){t.style[X.transformProp]=n}static addEventListener(t,n,s,c={}){t.addEventListener(n,s,"passive"in c?c:c.capture)}static removeEventListener(t,n,s,c={}){t.removeEventListener(n,s,"passive"in c?c:c.capture)}static suppressClickInternal(t){t.preventDefault(),t.stopPropagation(),window.removeEventListener("click",X.suppressClickInternal,!0)}static suppressClick(){window.addEventListener("click",X.suppressClickInternal,!0),window.setTimeout((()=>{window.removeEventListener("click",X.suppressClickInternal,!0)}),0)}static mousePos(t,n){const s=t.getBoundingClientRect();return new l.P(n.clientX-s.left-t.clientLeft,n.clientY-s.top-t.clientTop)}static touchPos(t,n){const s=t.getBoundingClientRect(),c=[];for(let h=0;h<n.length;h++)c.push(new l.P(n[h].clientX-s.left-t.clientLeft,n[h].clientY-s.top-t.clientTop));return c}static mouseButton(t){return t.button}static remove(t){t.parentNode&&t.parentNode.removeChild(t)}}X.docStyle=typeof window<"u"&&window.document&&window.document.documentElement.style,X.selectProp=X.testProp(["userSelect","MozUserSelect","WebkitUserSelect","msUserSelect"]),X.transformProp=X.testProp(["transform","WebkitTransform"]);const Ee={supported:!1,testSupport:function(u){!we&&_e&&(Le?We(u):ye=u)}};let ye,_e,we=!1,Le=!1;function We(u){const t=u.createTexture();u.bindTexture(u.TEXTURE_2D,t);try{if(u.texImage2D(u.TEXTURE_2D,0,u.RGBA,u.RGBA,u.UNSIGNED_BYTE,_e),u.isContextLost())return;Ee.supported=!0}catch{}u.deleteTexture(t),we=!0}var qe,Be;typeof document<"u"&&(_e=document.createElement("img"),_e.onload=function(){ye&&We(ye),ye=null,Le=!0},_e.onerror=function(){we=!0,ye=null},_e.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA="),(function(u){let t,n,s,c;u.resetRequestQueue=()=>{t=[],n=0,s=0,c={}},u.addThrottleControl=w=>{const T=s++;return c[T]=w,T},u.removeThrottleControl=w=>{delete c[w],_()},u.getImage=(w,T,I=!0)=>{Ee.supported&&(w.headers||(w.headers={}),w.headers.accept="image/webp,*/*");const P={requestParameters:w,supportImageRefresh:I,callback:T,cancelled:!1,completed:!1,cancel:()=>{P.completed||P.cancelled||(P.cancelled=!0,P.innerRequest&&(P.innerRequest.cancel(),n--),_())}};return t.push(P),_(),P};const h=w=>{const{requestParameters:T,supportImageRefresh:I,callback:P}=w;return l.e(T,{type:"image"}),(I!==!1||l.i()||l.g(T.url)||T.headers&&!Object.keys(T.headers).reduce(((V,N)=>V&&N==="accept"),!0)?l.m:x)(T,((V,N,$,B)=>{g(w,P,V,N,$,B)}))},g=(w,T,I,P,V,N)=>{I?T(I):P instanceof HTMLImageElement||l.a(P)?T(null,P):P&&(($,B)=>{typeof createImageBitmap=="function"?l.b($,B):l.d($,B)})(P,(($,B)=>{$!=null?T($):B!=null&&T(null,B,{cacheControl:V,expires:N})})),w.cancelled||(w.completed=!0,n--,_())},_=()=>{const w=(()=>{const T=Object.keys(c);let I=!1;if(T.length>0){for(const P of T)if(I=c[P](),I)break}return I})()?l.c.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:l.c.MAX_PARALLEL_IMAGE_REQUESTS;for(let T=n;T<w&&t.length>0;T++){const I=t.shift();if(I.cancelled){T--;continue}const P=h(I);n++,I.innerRequest=P}},x=(w,T)=>{const I=new Image,P=w.url;let V=!1;const N=w.credentials;return N&&N==="include"?I.crossOrigin="use-credentials":(N&&N==="same-origin"||!l.s(P))&&(I.crossOrigin="anonymous"),I.fetchPriority="high",I.onload=()=>{T(null,I),I.onerror=I.onload=null},I.onerror=()=>{V||T(new 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.onerror=I.onload=null},I.src=P,{cancel:()=>{V=!0,I.src=""}}}})(qe||(qe={})),qe.resetRequestQueue(),(function(u){u.Glyphs="Glyphs",u.Image="Image",u.Source="Source",u.SpriteImage="SpriteImage",u.SpriteJSON="SpriteJSON",u.Style="Style",u.Tile="Tile",u.Unknown="Unknown"})(Be||(Be={}));class Ze{constructor(t){this._transformRequestFn=t}transformRequest(t,n){return this._transformRequestFn&&this._transformRequestFn(t,n)||{url:t}}normalizeSpriteURL(t,n,s){const c=(function(h){const g=h.match(fi);if(!g)throw new Error(`Unable to parse URL "${h}"`);return{protocol:g[1],authority:g[2],path:g[3]||"/",params:g[4]?g[4].split("&"):[]}})(t);return c.path+=`${n}${s}`,(function(h){const g=h.params.length?`?${h.params.join("&")}`:"";return`${h.protocol}://${h.authority}${h.path}${g}`})(c)}setTransformRequest(t){this._transformRequestFn=t}}const fi=/^(\w+):\/\/([^/?]*)(\/[^?]+)?\??(.+)?/;function cn(u){var t=new l.A(3);return t[0]=u[0],t[1]=u[1],t[2]=u[2],t}var qr,er=function(u,t,n){return u[0]=t[0]-n[0],u[1]=t[1]-n[1],u[2]=t[2]-n[2],u};qr=new l.A(3),l.A!=Float32Array&&(qr[0]=0,qr[1]=0,qr[2]=0);var un=function(u){var t=u[0],n=u[1];return t*t+n*n};function Yt(u){const t=[];if(typeof u=="string")t.push({id:"default",url:u});else if(u&&u.length>0){const n=[];for(const{id:s,url:c}of u){const h=`${s}${c}`;n.indexOf(h)===-1&&(n.push(h),t.push({id:s,url:c}))}}return t}function Rn(u,t,n,s,c){if(s)return void u(s);if(c!==Object.values(t).length||c!==Object.values(n).length)return;const h={};for(const g in t){h[g]={};const _=l.h.getImageCanvasContext(n[g]),x=t[g];for(const w in x){const{width:T,height:I,x:P,y:V,sdf:N,pixelRatio:$,stretchX:B,stretchY:ee,content:se}=x[w];h[g][w]={data:null,pixelRatio:$,sdf:N,stretchX:B,stretchY:ee,content:se,spriteData:{width:T,height:I,x:P,y:V,context:_}}}}u(null,h)}(function(){var u=new l.A(2);l.A!=Float32Array&&(u[0]=0,u[1]=0)})();class kt{constructor(t,n,s,c){this.context=t,this.format=s,this.texture=t.gl.createTexture(),this.update(n,c)}update(t,n,s){const{width:c,height:h}=t,g=!(this.size&&this.size[0]===c&&this.size[1]===h||s),{context:_}=this,{gl:x}=_;if(this.useMipmap=!!(n&&n.useMipmap),x.bindTexture(x.TEXTURE_2D,this.texture),_.pixelStoreUnpackFlipY.set(!1),_.pixelStoreUnpack.set(1),_.pixelStoreUnpackPremultiplyAlpha.set(this.format===x.RGBA&&(!n||n.premultiply!==!1)),g)this.size=[c,h],t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement||t instanceof ImageData||l.a(t)?x.texImage2D(x.TEXTURE_2D,0,this.format,this.format,x.UNSIGNED_BYTE,t):x.texImage2D(x.TEXTURE_2D,0,this.format,c,h,0,this.format,x.UNSIGNED_BYTE,t.data);else{const{x:w,y:T}=s||{x:0,y:0};t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement||t instanceof ImageData||l.a(t)?x.texSubImage2D(x.TEXTURE_2D,0,w,T,x.RGBA,x.UNSIGNED_BYTE,t):x.texSubImage2D(x.TEXTURE_2D,0,w,T,c,h,x.RGBA,x.UNSIGNED_BYTE,t.data)}this.useMipmap&&this.isSizePowerOfTwo()&&x.generateMipmap(x.TEXTURE_2D)}bind(t,n,s){const{context:c}=this,{gl:h}=c;h.bindTexture(h.TEXTURE_2D,this.texture),s!==h.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(s=h.LINEAR),t!==this.filter&&(h.texParameteri(h.TEXTURE_2D,h.TEXTURE_MAG_FILTER,t),h.texParameteri(h.TEXTURE_2D,h.TEXTURE_MIN_FILTER,s||t),this.filter=t),n!==this.wrap&&(h.texParameteri(h.TEXTURE_2D,h.TEXTURE_WRAP_S,n),h.texParameteri(h.TEXTURE_2D,h.TEXTURE_WRAP_T,n),this.wrap=n)}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){const{gl:t}=this.context;t.deleteTexture(this.texture),this.texture=null}}function Zr(u){const{userImage:t}=u;return!!(t&&t.render&&t.render())&&(u.data.replace(new Uint8Array(t.data.buffer)),!0)}class xt extends l.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new l.R({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(t){if(this.loaded!==t&&(this.loaded=t,t)){for(const{ids:n,callback:s}of this.requestors)this._notify(n,s);this.requestors=[]}}getImage(t){const n=this.images[t];if(n&&!n.data&&n.spriteData){const s=n.spriteData;n.data=new l.R({width:s.width,height:s.height},s.context.getImageData(s.x,s.y,s.width,s.height).data),n.spriteData=null}return n}addImage(t,n){if(this.images[t])throw new Error(`Image id ${t} already exist, use updateImage instead`);this._validate(t,n)&&(this.images[t]=n)}_validate(t,n){let s=!0;const c=n.data||n.spriteData;return this._validateStretch(n.stretchX,c&&c.width)||(this.fire(new l.j(new Error(`Image "${t}" has invalid "stretchX" value`))),s=!1),this._validateStretch(n.stretchY,c&&c.height)||(this.fire(new l.j(new Error(`Image "${t}" has invalid "stretchY" value`))),s=!1),this._validateContent(n.content,n)||(this.fire(new l.j(new Error(`Image "${t}" has invalid "content" value`))),s=!1),s}_validateStretch(t,n){if(!t)return!0;let s=0;for(const c of t){if(c[0]<s||c[1]<c[0]||n<c[1])return!1;s=c[1]}return!0}_validateContent(t,n){if(!t)return!0;if(t.length!==4)return!1;const s=n.spriteData,c=s&&s.width||n.data.width,h=s&&s.height||n.data.height;return!(t[0]<0||c<t[0]||t[1]<0||h<t[1]||t[2]<0||c<t[2]||t[3]<0||h<t[3]||t[2]<t[0]||t[3]<t[1])}updateImage(t,n,s=!0){const c=this.getImage(t);if(s&&(c.data.width!==n.data.width||c.data.height!==n.data.height))throw new Error(`size mismatch between old image (${c.data.width}x${c.data.height}) and new image (${n.data.width}x${n.data.height}).`);n.version=c.version+1,this.images[t]=n,this.updatedImages[t]=!0}removeImage(t){const n=this.images[t];delete this.images[t],delete this.patterns[t],n.userImage&&n.userImage.onRemove&&n.userImage.onRemove()}listImages(){return Object.keys(this.images)}getImages(t,n){let s=!0;if(!this.isLoaded())for(const c of t)this.images[c]||(s=!1);this.isLoaded()||s?this._notify(t,n):this.requestors.push({ids:t,callback:n})}_notify(t,n){const s={};for(const c of t){let h=this.getImage(c);h||(this.fire(new l.k("styleimagemissing",{id:c})),h=this.getImage(c)),h?s[c]={data:h.data.clone(),pixelRatio:h.pixelRatio,sdf:h.sdf,version:h.version,stretchX:h.stretchX,stretchY:h.stretchY,content:h.content,hasRenderCallback:!!(h.userImage&&h.userImage.render)}:l.w(`Image "${c}" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.`)}n(null,s)}getPixelSize(){const{width:t,height:n}=this.atlasImage;return{width:t,height:n}}getPattern(t){const n=this.patterns[t],s=this.getImage(t);if(!s)return null;if(n&&n.position.version===s.version)return n.position;if(n)n.position.version=s.version;else{const c={w:s.data.width+2,h:s.data.height+2,x:0,y:0},h=new l.I(c,s);this.patterns[t]={bin:c,position:h}}return this._updatePatternAtlas(),this.patterns[t].position}bind(t){const n=t.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new kt(t,this.atlasImage,n.RGBA),this.atlasTexture.bind(n.LINEAR,n.CLAMP_TO_EDGE)}_updatePatternAtlas(){const t=[];for(const h in this.patterns)t.push(this.patterns[h].bin);const{w:n,h:s}=l.p(t),c=this.atlasImage;c.resize({width:n||1,height:s||1});for(const h in this.patterns){const{bin:g}=this.patterns[h],_=g.x+1,x=g.y+1,w=this.getImage(h).data,T=w.width,I=w.height;l.R.copy(w,c,{x:0,y:0},{x:_,y:x},{width:T,height:I}),l.R.copy(w,c,{x:0,y:I-1},{x:_,y:x-1},{width:T,height:1}),l.R.copy(w,c,{x:0,y:0},{x:_,y:x+I},{width:T,height:1}),l.R.copy(w,c,{x:T-1,y:0},{x:_-1,y:x},{width:1,height:I}),l.R.copy(w,c,{x:0,y:0},{x:_+T,y:x},{width:1,height:I})}this.dirty=!0}beginFrame(){this.callbackDispatchedThisFrame={}}dispatchRenderCallbacks(t){for(const n of t){if(this.callbackDispatchedThisFrame[n])continue;this.callbackDispatchedThisFrame[n]=!0;const s=this.getImage(n);s||l.w(`Image with ID: "${n}" was not found`),Zr(s)&&this.updateImage(n,s)}}}const wi=1e20;function li(u,t,n,s,c,h,g,_,x){for(let w=t;w<t+s;w++)$i(u,n*h+w,h,c,g,_,x);for(let w=n;w<n+c;w++)$i(u,w*h+t,1,s,g,_,x)}function $i(u,t,n,s,c,h,g){h[0]=0,g[0]=-wi,g[1]=wi,c[0]=u[t];for(let _=1,x=0,w=0;_<s;_++){c[_]=u[t+_*n];const T=_*_;do{const I=h[x];w=(c[_]-c[I]+T-I*I)/(_-I)/2}while(w<=g[x]&&--x>-1);x++,h[x]=_,g[x]=w,g[x+1]=wi}for(let _=0,x=0;_<s;_++){for(;g[x+1]<_;)x++;const w=h[x],T=_-w;u[t+_*n]=c[w]+T*T}}class Mr{constructor(t,n){this.requestManager=t,this.localIdeographFontFamily=n,this.entries={}}setURL(t){this.url=t}getGlyphs(t,n){const s=[];for(const c in t)for(const h of t[c])s.push({stack:c,id:h});l.o(s,(({stack:c,id:h},g)=>{let _=this.entries[c];_||(_=this.entries[c]={glyphs:{},requests:{},ranges:{}});let x=_.glyphs[h];if(x!==void 0)return void g(null,{stack:c,id:h,glyph:x});if(x=this._tinySDF(_,c,h),x)return _.glyphs[h]=x,void g(null,{stack:c,id:h,glyph:x});const w=Math.floor(h/256);if(256*w>65535)return void g(new Error("glyphs > 65535 not supported"));if(_.ranges[w])return void g(null,{stack:c,id:h,glyph:x});if(!this.url)return void g(new Error("glyphsUrl is not set"));let T=_.requests[w];T||(T=_.requests[w]=[],Mr.loadGlyphRange(c,w,this.url,this.requestManager,((I,P)=>{if(P){for(const V in P)this._doesCharSupportLocalGlyph(+V)||(_.glyphs[+V]=P[+V]);_.ranges[w]=!0}for(const V of T)V(I,P);delete _.requests[w]}))),T.push(((I,P)=>{I?g(I):P&&g(null,{stack:c,id:h,glyph:P[h]||null})}))}),((c,h)=>{if(c)n(c);else if(h){const g={};for(const{stack:_,id:x,glyph:w}of h)(g[_]||(g[_]={}))[x]=w&&{id:w.id,bitmap:w.bitmap.clone(),metrics:w.metrics};n(null,g)}}))}_doesCharSupportLocalGlyph(t){return!!this.localIdeographFontFamily&&(l.u["CJK Unified Ideographs"](t)||l.u["Hangul Syllables"](t)||l.u.Hiragana(t)||l.u.Katakana(t))}_tinySDF(t,n,s){const c=this.localIdeographFontFamily;if(!c||!this._doesCharSupportLocalGlyph(s))return;let h=t.tinySDF;if(!h){let _="400";/bold/i.test(n)?_="900":/medium/i.test(n)?_="500":/light/i.test(n)&&(_="200"),h=t.tinySDF=new Mr.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:c,fontWeight:_})}const g=h.draw(String.fromCharCode(s));return{id:s,bitmap:new l.q({width:g.width||60,height:g.height||60},g.data),metrics:{width:g.glyphWidth/2||24,height:g.glyphHeight/2||24,left:g.glyphLeft/2+.5||0,top:g.glyphTop/2-27.5||-8,advance:g.glyphAdvance/2||24,isDoubleResolution:!0}}}}Mr.loadGlyphRange=function(u,t,n,s,c){const h=256*t,g=h+255,_=s.transformRequest(n.replace("{fontstack}",u).replace("{range}",`${h}-${g}`),Be.Glyphs);l.l(_,((x,w)=>{if(x)c(x);else if(w){const T={};for(const I of l.n(w))T[I.id]=I;c(null,T)}}))},Mr.TinySDF=class{constructor({fontSize:u=24,buffer:t=3,radius:n=8,cutoff:s=.25,fontFamily:c="sans-serif",fontWeight:h="normal",fontStyle:g="normal"}={}){this.buffer=t,this.cutoff=s,this.radius=n;const _=this.size=u+4*t,x=this._createCanvas(_),w=this.ctx=x.getContext("2d",{willReadFrequently:!0});w.font=`${g} ${h} ${u}px ${c}`,w.textBaseline="alphabetic",w.textAlign="left",w.fillStyle="black",this.gridOuter=new Float64Array(_*_),this.gridInner=new Float64Array(_*_),this.f=new Float64Array(_),this.z=new Float64Array(_+1),this.v=new Uint16Array(_)}_createCanvas(u){const t=document.createElement("canvas");return t.width=t.height=u,t}draw(u){const{width:t,actualBoundingBoxAscent:n,actualBoundingBoxDescent:s,actualBoundingBoxLeft:c,actualBoundingBoxRight:h}=this.ctx.measureText(u),g=Math.ceil(n),_=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(h-c))),x=Math.min(this.size-this.buffer,g+Math.ceil(s)),w=_+2*this.buffer,T=x+2*this.buffer,I=Math.max(w*T,0),P=new Uint8ClampedArray(I),V={data:P,width:w,height:T,glyphWidth:_,glyphHeight:x,glyphTop:g,glyphLeft:0,glyphAdvance:t};if(_===0||x===0)return V;const{ctx:N,buffer:$,gridInner:B,gridOuter:ee}=this;N.clearRect($,$,_,x),N.fillText(u,$,$+g);const se=N.getImageData($,$,_,x);ee.fill(wi,0,I),B.fill(0,0,I);for(let G=0;G<x;G++)for(let te=0;te<_;te++){const ce=se.data[4*(G*_+te)+3]/255;if(ce===0)continue;const ue=(G+$)*w+te+$;if(ce===1)ee[ue]=0,B[ue]=wi;else{const fe=.5-ce;ee[ue]=fe>0?fe*fe:0,B[ue]=fe<0?fe*fe:0}}li(ee,0,0,w,T,w,this.f,this.v,this.z),li(B,$,$,_,x,w,this.f,this.v,this.z);for(let G=0;G<I;G++){const te=Math.sqrt(ee[G])-Math.sqrt(B[G]);P[G]=Math.round(255-255*(te/this.radius+this.cutoff))}return V}};class tr{constructor(){this.specification=l.v.light.position}possiblyEvaluate(t,n){return l.z(t.expression.evaluate(n))}interpolate(t,n,s){return{x:l.B.number(t.x,n.x,s),y:l.B.number(t.y,n.y,s),z:l.B.number(t.z,n.z,s)}}}let hn;class la extends l.E{constructor(t){super(),hn=hn||new l.r({anchor:new l.D(l.v.light.anchor),position:new tr,color:new l.D(l.v.light.color),intensity:new l.D(l.v.light.intensity)}),this._transitionable=new l.T(hn),this.setLight(t),this._transitioning=this._transitionable.untransitioned()}getLight(){return this._transitionable.serialize()}setLight(t,n={}){if(!this._validate(l.t,t,n))for(const s in t){const c=t[s];s.endsWith("-transition")?this._transitionable.setTransition(s.slice(0,-11),c):this._transitionable.setValue(s,c)}}updateTransitions(t){this._transitioning=this._transitionable.transitioned(t,this._transitioning)}hasTransition(){return this._transitioning.hasTransition()}recalculate(t){this.properties=this._transitioning.possiblyEvaluate(t)}_validate(t,n,s){return(!s||s.validate!==!1)&&l.x(this,t.call(l.y,l.e({value:n,style:{glyphs:!0,sprite:!0},styleSpec:l.v})))}}class Oa{constructor(t,n){this.width=t,this.height=n,this.nextRow=0,this.data=new Uint8Array(this.width*this.height),this.dashEntry={}}getDash(t,n){const s=t.join(",")+String(n);return this.dashEntry[s]||(this.dashEntry[s]=this.addDash(t,n)),this.dashEntry[s]}getDashRanges(t,n,s){const c=[];let h=t.length%2==1?-t[t.length-1]*s:0,g=t[0]*s,_=!0;c.push({left:h,right:g,isDash:_,zeroLength:t[0]===0});let x=t[0];for(let w=1;w<t.length;w++){_=!_;const T=t[w];h=x*s,x+=T,g=x*s,c.push({left:h,right:g,isDash:_,zeroLength:T===0})}return c}addRoundDash(t,n,s){const c=n/2;for(let h=-s;h<=s;h++){const g=this.width*(this.nextRow+s+h);let _=0,x=t[_];for(let w=0;w<this.width;w++){w/x.right>1&&(x=t[++_]);const T=Math.abs(w-x.left),I=Math.abs(w-x.right),P=Math.min(T,I);let V;const N=h/s*(c+1);if(x.isDash){const $=c-Math.abs(N);V=Math.sqrt(P*P+$*$)}else V=c-Math.sqrt(P*P+N*N);this.data[g+w]=Math.max(0,Math.min(255,V+128))}}}addRegularDash(t){for(let _=t.length-1;_>=0;--_){const x=t[_],w=t[_+1];x.zeroLength?t.splice(_,1):w&&w.isDash===x.isDash&&(w.left=x.left,t.splice(_,1))}const n=t[0],s=t[t.length-1];n.isDash===s.isDash&&(n.left=s.left-this.width,s.right=n.right+this.width);const c=this.width*this.nextRow;let h=0,g=t[h];for(let _=0;_<this.width;_++){_/g.right>1&&(g=t[++h]);const x=Math.abs(_-g.left),w=Math.abs(_-g.right),T=Math.min(x,w);this.data[c+_]=Math.max(0,Math.min(255,(g.isDash?T:-T)+128))}}addDash(t,n){const s=n?7:0,c=2*s+1;if(this.nextRow+c>this.height)return l.w("LineAtlas out of space"),null;let h=0;for(let _=0;_<t.length;_++)h+=t[_];if(h!==0){const _=this.width/h,x=this.getDashRanges(t,this.width,_);n?this.addRoundDash(x,_,s):this.addRegularDash(x)}const g={y:(this.nextRow+s+.5)/this.height,height:2*s/this.height,width:h};return this.nextRow+=c,this.dirty=!0,g}bind(t){const n=t.gl;this.texture?(n.bindTexture(n.TEXTURE_2D,this.texture),this.dirty&&(this.dirty=!1,n.texSubImage2D(n.TEXTURE_2D,0,0,0,this.width,this.height,n.ALPHA,n.UNSIGNED_BYTE,this.data))):(this.texture=n.createTexture(),n.bindTexture(n.TEXTURE_2D,this.texture),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.REPEAT),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.REPEAT),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.LINEAR),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,n.LINEAR),n.texImage2D(n.TEXTURE_2D,0,n.ALPHA,this.width,this.height,0,n.ALPHA,n.UNSIGNED_BYTE,this.data))}}class ca{constructor(t,n,s){this.workerPool=t,this.actors=[],this.currentActor=0,this.id=s;const c=this.workerPool.acquire(s);for(let h=0;h<c.length;h++){const g=new l.C(c[h],n,s);g.name=`Worker ${h}`,this.actors.push(g)}if(!this.actors.length)throw new Error("No actors found")}broadcast(t,n,s){l.o(this.actors,((c,h)=>{c.send(t,n,h)}),s=s||function(){})}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(t=!0){this.actors.forEach((n=>{n.remove()})),this.actors=[],t&&this.workerPool.release(this.id)}}function _r(u,t,n){const s=function(c,h){if(c)return n(c);if(h){const g=l.F(l.e(h,u),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);h.vector_layers&&(g.vectorLayers=h.vector_layers,g.vectorLayerIds=g.vectorLayers.map((_=>_.id))),n(null,g)}};return u.url?l.f(t.transformRequest(u.url,Be.Source),s):l.h.frame((()=>s(null,u)))}class Ct{constructor(t,n){t&&(n?this.setSouthWest(t).setNorthEast(n):Array.isArray(t)&&(t.length===4?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1])))}setNorthEast(t){return this._ne=t instanceof l.L?new l.L(t.lng,t.lat):l.L.convert(t),this}setSouthWest(t){return this._sw=t instanceof l.L?new l.L(t.lng,t.lat):l.L.convert(t),this}extend(t){const n=this._sw,s=this._ne;let c,h;if(t instanceof l.L)c=t,h=t;else{if(!(t instanceof Ct))return Array.isArray(t)?t.length===4||t.every(Array.isArray)?this.extend(Ct.convert(t)):this.extend(l.L.convert(t)):t&&("lng"in t||"lon"in t)&&"lat"in t?this.extend(l.L.convert(t)):this;if(c=t._sw,h=t._ne,!c||!h)return this}return n||s?(n.lng=Math.min(c.lng,n.lng),n.lat=Math.min(c.lat,n.lat),s.lng=Math.max(h.lng,s.lng),s.lat=Math.max(h.lat,s.lat)):(this._sw=new l.L(c.lng,c.lat),this._ne=new l.L(h.lng,h.lat)),this}getCenter(){return new l.L((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 l.L(this.getWest(),this.getNorth())}getSouthEast(){return new l.L(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(t){const{lng:n,lat:s}=l.L.convert(t);let c=this._sw.lng<=n&&n<=this._ne.lng;return this._sw.lng>this._ne.lng&&(c=this._sw.lng>=n&&n>=this._ne.lng),this._sw.lat<=s&&s<=this._ne.lat&&c}static convert(t){return t instanceof Ct?t:t&&new Ct(t)}static fromLngLat(t,n=0){const s=360*n/40075017,c=s/Math.cos(Math.PI/180*t.lat);return new Ct(new l.L(t.lng-c,t.lat-s),new l.L(t.lng+c,t.lat+s))}}class Pi{constructor(t,n,s){this.bounds=Ct.convert(this.validateBounds(t)),this.minzoom=n||0,this.maxzoom=s||24}validateBounds(t){return Array.isArray(t)&&t.length===4?[Math.max(-180,t[0]),Math.max(-90,t[1]),Math.min(180,t[2]),Math.min(90,t[3])]:[-180,-90,180,90]}contains(t){const n=Math.pow(2,t.z),s=Math.floor(l.G(this.bounds.getWest())*n),c=Math.floor(l.H(this.bounds.getNorth())*n),h=Math.ceil(l.G(this.bounds.getEast())*n),g=Math.ceil(l.H(this.bounds.getSouth())*n);return t.x>=s&&t.x<h&&t.y>=c&&t.y<g}}class pn extends l.E{constructor(t,n,s,c){if(super(),this.load=()=>{this._loaded=!1,this.fire(new l.k("dataloading",{dataType:"source"})),this._tileJSONRequest=_r(this._options,this.map._requestManager,((h,g)=>{this._tileJSONRequest=null,this._loaded=!0,this.map.style.sourceCaches[this.id].clearTiles(),h?this.fire(new l.j(h)):g&&(l.e(this,g),g.bounds&&(this.tileBounds=new Pi(g.bounds,this.minzoom,this.maxzoom)),this.fire(new l.k("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new l.k("data",{dataType:"source",sourceDataType:"content"})))}))},this.serialize=()=>l.e({},this._options),this.id=t,this.dispatcher=s,this.type="vector",this.minzoom=0,this.maxzoom=22,this.scheme="xyz",this.tileSize=512,this.reparseOverscaled=!0,this.isTileClipped=!0,this._loaded=!1,l.e(this,l.F(n,["url","scheme","tileSize","promoteId"])),this._options=l.e({type:"vector"},n),this._collectResourceTiming=n.collectResourceTiming,this.tileSize!==512)throw new Error("vector tile sources must have a tileSize of 512");this.setEventedParent(c)}loaded(){return this._loaded}hasTile(t){return!this.tileBounds||this.tileBounds.contains(t.canonical)}onAdd(t){this.map=t,this.load()}setSourceProperty(t){this._tileJSONRequest&&this._tileJSONRequest.cancel(),t(),this.load()}setTiles(t){return this.setSourceProperty((()=>{this._options.tiles=t})),this}setUrl(t){return this.setSourceProperty((()=>{this.url=t,this._options.url=t})),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}loadTile(t,n){const s=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),c={request:this.map._requestManager.transformRequest(s,Be.Tile),uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,tileSize:this.tileSize*t.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};function h(g,_){return delete t.request,t.aborted?n(null):g&&g.status!==404?n(g):(_&&_.resourceTiming&&(t.resourceTiming=_.resourceTiming),this.map._refreshExpiredTiles&&_&&t.setExpiryData(_),t.loadVectorData(_,this.map.painter),n(null),void(t.reloadCallback&&(this.loadTile(t,t.reloadCallback),t.reloadCallback=null)))}c.request.collectResourceTiming=this._collectResourceTiming,t.actor&&t.state!=="expired"?t.state==="loading"?t.reloadCallback=n:t.request=t.actor.send("reloadTile",c,h.bind(this)):(t.actor=this.dispatcher.getActor(),t.request=t.actor.send("loadTile",c,h.bind(this)))}abortTile(t){t.request&&(t.request.cancel(),delete t.request),t.actor&&t.actor.send("abortTile",{uid:t.uid,type:this.type,source:this.id},void 0)}unloadTile(t){t.unloadVectorData(),t.actor&&t.actor.send("removeTile",{uid:t.uid,type:this.type,source:this.id},void 0)}hasTransition(){return!1}}class Fn extends l.E{constructor(t,n,s,c){super(),this.id=t,this.dispatcher=s,this.setEventedParent(c),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=l.e({type:"raster"},n),l.e(this,l.F(n,["url","scheme","tileSize"]))}load(){this._loaded=!1,this.fire(new l.k("dataloading",{dataType:"source"})),this._tileJSONRequest=_r(this._options,this.map._requestManager,((t,n)=>{this._tileJSONRequest=null,this._loaded=!0,t?this.fire(new l.j(t)):n&&(l.e(this,n),n.bounds&&(this.tileBounds=new Pi(n.bounds,this.minzoom,this.maxzoom)),this.fire(new l.k("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new l.k("data",{dataType:"source",sourceDataType:"content"})))}))}loaded(){return this._loaded}onAdd(t){this.map=t,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}setSourceProperty(t){this._tileJSONRequest&&this._tileJSONRequest.cancel(),t(),this.load()}setTiles(t){return this.setSourceProperty((()=>{this._options.tiles=t})),this}serialize(){return l.e({},this._options)}hasTile(t){return!this.tileBounds||this.tileBounds.contains(t.canonical)}loadTile(t,n){const s=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);t.request=qe.getImage(this.map._requestManager.transformRequest(s,Be.Tile),((c,h,g)=>{if(delete t.request,t.aborted)t.state="unloaded",n(null);else if(c)t.state="errored",n(c);else if(h){this.map._refreshExpiredTiles&&g&&t.setExpiryData(g);const _=this.map.painter.context,x=_.gl;t.texture=this.map.painter.getTileTexture(h.width),t.texture?t.texture.update(h,{useMipmap:!0}):(t.texture=new kt(_,h,x.RGBA,{useMipmap:!0}),t.texture.bind(x.LINEAR,x.CLAMP_TO_EDGE,x.LINEAR_MIPMAP_NEAREST),_.extTextureFilterAnisotropic&&x.texParameterf(x.TEXTURE_2D,_.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,_.extTextureFilterAnisotropicMax)),t.state="loaded",n(null)}}),this.map._refreshExpiredTiles)}abortTile(t,n){t.request&&(t.request.cancel(),delete t.request),n()}unloadTile(t,n){t.texture&&this.map.painter.saveTileTexture(t.texture),n()}hasTransition(){return!1}}class Bn extends Fn{constructor(t,n,s,c){super(t,n,s,c),this.type="raster-dem",this.maxzoom=22,this._options=l.e({type:"raster-dem"},n),this.encoding=n.encoding||"mapbox",this.redFactor=n.redFactor,this.greenFactor=n.greenFactor,this.blueFactor=n.blueFactor,this.baseShift=n.baseShift}loadTile(t,n){const s=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),c=this.map._requestManager.transformRequest(s,Be.Tile);function h(g,_){g&&(t.state="errored",n(g)),_&&(t.dem=_,t.needsHillshadePrepare=!0,t.needsTerrainPrepare=!0,t.state="loaded",n(null))}t.neighboringTiles=this._getNeighboringTiles(t.tileID),t.request=qe.getImage(c,((g,_,x)=>l._(this,void 0,void 0,(function*(){if(delete t.request,t.aborted)t.state="unloaded",n(null);else if(g)t.state="errored",n(g);else if(_){this.map._refreshExpiredTiles&&t.setExpiryData(x);const w=l.a(_)&&l.J()?_:yield(function(I){return l._(this,void 0,void 0,(function*(){if(typeof VideoFrame<"u"&&l.K()){const P=I.width+2,V=I.height+2;try{return new l.R({width:P,height:V},yield l.M(I,-1,-1,P,V))}catch{}}return l.h.getImageData(I,1)}))})(_),T={uid:t.uid,coord:t.tileID,source:this.id,rawImageData:w,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};t.actor&&t.state!=="expired"||(t.actor=this.dispatcher.getActor(),t.actor.send("loadDEMTile",T,h))}}))),this.map._refreshExpiredTiles)}_getNeighboringTiles(t){const n=t.canonical,s=Math.pow(2,n.z),c=(n.x-1+s)%s,h=n.x===0?t.wrap-1:t.wrap,g=(n.x+1+s)%s,_=n.x+1===s?t.wrap+1:t.wrap,x={};return x[new l.O(t.overscaledZ,h,n.z,c,n.y).key]={backfilled:!1},x[new l.O(t.overscaledZ,_,n.z,g,n.y).key]={backfilled:!1},n.y>0&&(x[new l.O(t.overscaledZ,h,n.z,c,n.y-1).key]={backfilled:!1},x[new l.O(t.overscaledZ,t.wrap,n.z,n.x,n.y-1).key]={backfilled:!1},x[new l.O(t.overscaledZ,_,n.z,g,n.y-1).key]={backfilled:!1}),n.y+1<s&&(x[new l.O(t.overscaledZ,h,n.z,c,n.y+1).key]={backfilled:!1},x[new l.O(t.overscaledZ,t.wrap,n.z,n.x,n.y+1).key]={backfilled:!1},x[new l.O(t.overscaledZ,_,n.z,g,n.y+1).key]={backfilled:!1}),x}unloadTile(t){t.demTexture&&this.map.painter.saveTileTexture(t.demTexture),t.fbo&&(t.fbo.destroy(),delete t.fbo),t.dem&&delete t.dem,delete t.neighboringTiles,t.state="unloaded",t.actor&&t.actor.send("removeDEMTile",{uid:t.uid,source:this.id})}}class Gr extends l.E{constructor(t,n,s,c){super(),this.load=()=>{this._updateWorkerData()},this.serialize=()=>l.e({},this._options,{type:this.type,data:this._data}),this.id=t,this.type="geojson",this.minzoom=0,this.maxzoom=18,this.tileSize=512,this.isTileClipped=!0,this.reparseOverscaled=!0,this._removed=!1,this._pendingLoads=0,this.actor=s.getActor(),this.setEventedParent(c),this._data=n.data,this._options=l.e({},n),this._collectResourceTiming=n.collectResourceTiming,n.maxzoom!==void 0&&(this.maxzoom=n.maxzoom),n.type&&(this.type=n.type),n.attribution&&(this.attribution=n.attribution),this.promoteId=n.promoteId;const h=l.N/this.tileSize;this.workerOptions=l.e({source:this.id,cluster:n.cluster||!1,geojsonVtOptions:{buffer:(n.buffer!==void 0?n.buffer:128)*h,tolerance:(n.tolerance!==void 0?n.tolerance:.375)*h,extent:l.N,maxZoom:this.maxzoom,lineMetrics:n.lineMetrics||!1,generateId:n.generateId||!1},superclusterOptions:{maxZoom:n.clusterMaxZoom!==void 0?n.clusterMaxZoom:this.maxzoom-1,minPoints:Math.max(2,n.clusterMinPoints||2),extent:l.N,radius:(n.clusterRadius||50)*h,log:!1,generateId:n.generateId||!1},clusterProperties:n.clusterProperties,filter:n.filter},n.workerOptions),typeof this.promoteId=="string"&&(this.workerOptions.promoteId=this.promoteId)}onAdd(t){this.map=t,this.load()}setData(t){return this._data=t,this._updateWorkerData(),this}updateData(t){return this._updateWorkerData(t),this}setClusterOptions(t){return this.workerOptions.cluster=t.cluster,t&&(t.clusterRadius!==void 0&&(this.workerOptions.superclusterOptions.radius=t.clusterRadius),t.clusterMaxZoom!==void 0&&(this.workerOptions.superclusterOptions.maxZoom=t.clusterMaxZoom)),this._updateWorkerData(),this}getClusterExpansionZoom(t,n){return this.actor.send("geojson.getClusterExpansionZoom",{clusterId:t,source:this.id},n),this}getClusterChildren(t,n){return this.actor.send("geojson.getClusterChildren",{clusterId:t,source:this.id},n),this}getClusterLeaves(t,n,s,c){return this.actor.send("geojson.getClusterLeaves",{source:this.id,clusterId:t,limit:n,offset:s},c),this}_updateWorkerData(t){const n=l.e({},this.workerOptions);t?n.dataDiff=t:typeof this._data=="string"?(n.request=this.map._requestManager.transformRequest(l.h.resolveURL(this._data),Be.Source),n.request.collectResourceTiming=this._collectResourceTiming):n.data=JSON.stringify(this._data),this._pendingLoads++,this.fire(new l.k("dataloading",{dataType:"source"})),this.actor.send(`${this.type}.loadData`,n,((s,c)=>{if(this._pendingLoads--,this._removed||c&&c.abandoned)return void this.fire(new l.k("dataabort",{dataType:"source"}));let h=null;if(c&&c.resourceTiming&&c.resourceTiming[this.id]&&(h=c.resourceTiming[this.id].slice(0)),s)return void this.fire(new l.j(s));const g={dataType:"source"};this._collectResourceTiming&&h&&h.length>0&&l.e(g,{resourceTiming:h}),this.fire(new l.k("data",Object.assign(Object.assign({},g),{sourceDataType:"metadata"}))),this.fire(new l.k("data",Object.assign(Object.assign({},g),{sourceDataType:"content"})))}))}loaded(){return this._pendingLoads===0}loadTile(t,n){const s=t.actor?"reloadTile":"loadTile";t.actor=this.actor;const c={type:this.type,uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};t.request=this.actor.send(s,c,((h,g)=>(delete t.request,t.unloadVectorData(),t.aborted?n(null):h?n(h):(t.loadVectorData(g,this.map.painter,s==="reloadTile"),n(null)))))}abortTile(t){t.request&&(t.request.cancel(),delete t.request),t.aborted=!0}unloadTile(t){t.unloadVectorData(),this.actor.send("removeTile",{uid:t.uid,type:this.type,source:this.id})}onRemove(){this._removed=!0,this.actor.send("removeSource",{type:this.type,source:this.id})}hasTransition(){return!1}}var pr=l.Q([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class ir extends l.E{constructor(t,n,s,c){super(),this.load=(h,g)=>{this._loaded=!1,this.fire(new l.k("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=qe.getImage(this.map._requestManager.transformRequest(this.url,Be.Image),((_,x)=>{this._request=null,this._loaded=!0,_?this.fire(new l.j(_)):x&&(this.image=x,h&&(this.coordinates=h),g&&g(),this._finishLoading())}))},this.prepare=()=>{if(Object.keys(this.tiles).length===0||!this.image)return;const h=this.map.painter.context,g=h.gl;this.boundsBuffer||(this.boundsBuffer=h.createVertexBuffer(this._boundsArray,pr.members)),this.boundsSegments||(this.boundsSegments=l.S.simpleSegment(0,0,4,2)),this.texture||(this.texture=new kt(h,this.image,g.RGBA),this.texture.bind(g.LINEAR,g.CLAMP_TO_EDGE));let _=!1;for(const x in this.tiles){const w=this.tiles[x];w.state!=="loaded"&&(w.state="loaded",w.texture=this.texture,_=!0)}_&&this.fire(new l.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))},this.serialize=()=>({type:"image",url:this.options.url,coordinates:this.coordinates}),this.id=t,this.dispatcher=s,this.coordinates=n.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(c),this.options=n}loaded(){return this._loaded}updateImage(t){return t.url?(this._request&&(this._request.cancel(),this._request=null),this.options.url=t.url,this.load(t.coordinates,(()=>{this.texture=null})),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new l.k("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(t){this.map=t,this.load()}onRemove(){this._request&&(this._request.cancel(),this._request=null)}setCoordinates(t){this.coordinates=t;const n=t.map(l.U.fromLngLat);this.tileID=(function(c){let h=1/0,g=1/0,_=-1/0,x=-1/0;for(const P of c)h=Math.min(h,P.x),g=Math.min(g,P.y),_=Math.max(_,P.x),x=Math.max(x,P.y);const w=Math.max(_-h,x-g),T=Math.max(0,Math.floor(-Math.log(w)/Math.LN2)),I=Math.pow(2,T);return new l.W(T,Math.floor((h+_)/2*I),Math.floor((g+x)/2*I))})(n),this.minzoom=this.maxzoom=this.tileID.z;const s=n.map((c=>this.tileID.getTilePoint(c)._round()));return this._boundsArray=new l.V,this._boundsArray.emplaceBack(s[0].x,s[0].y,0,0),this._boundsArray.emplaceBack(s[1].x,s[1].y,l.N,0),this._boundsArray.emplaceBack(s[3].x,s[3].y,0,l.N),this._boundsArray.emplaceBack(s[2].x,s[2].y,l.N,l.N),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new l.k("data",{dataType:"source",sourceDataType:"content"})),this}loadTile(t,n){this.tileID&&this.tileID.equals(t.tileID.canonical)?(this.tiles[String(t.tileID.wrap)]=t,t.buckets={},n(null)):(t.state="errored",n(null))}hasTransition(){return!1}}class ua extends ir{constructor(t,n,s,c){super(t,n,s,c),this.load=()=>{this._loaded=!1;const h=this.options;this.urls=[];for(const g of h.urls)this.urls.push(this.map._requestManager.transformRequest(g,Be.Source).url);l.X(this.urls,((g,_)=>{this._loaded=!0,g?this.fire(new l.j(g)):_&&(this.video=_,this.video.loop=!0,this.video.addEventListener("playing",(()=>{this.map.triggerRepaint()})),this.map&&this.video.play(),this._finishLoading())}))},this.prepare=()=>{if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;const h=this.map.painter.context,g=h.gl;this.boundsBuffer||(this.boundsBuffer=h.createVertexBuffer(this._boundsArray,pr.members)),this.boundsSegments||(this.boundsSegments=l.S.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(g.LINEAR,g.CLAMP_TO_EDGE),g.texSubImage2D(g.TEXTURE_2D,0,0,0,g.RGBA,g.UNSIGNED_BYTE,this.video)):(this.texture=new kt(h,this.video,g.RGBA),this.texture.bind(g.LINEAR,g.CLAMP_TO_EDGE));let _=!1;for(const x in this.tiles){const w=this.tiles[x];w.state!=="loaded"&&(w.state="loaded",w.texture=this.texture,_=!0)}_&&this.fire(new l.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))},this.serialize=()=>({type:"video",urls:this.urls,coordinates:this.coordinates}),this.roundZoom=!0,this.type="video",this.options=n}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(t){if(this.video){const n=this.video.seekable;t<n.start(0)||t>n.end(0)?this.fire(new l.j(new l.Y(`sources.${this.id}`,null,`Playback for this video can be set only between the ${n.start(0)} and ${n.end(0)}-second mark.`))):this.video.currentTime=t}}getVideo(){return this.video}onAdd(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}hasTransition(){return this.video&&!this.video.paused}}class Hr extends ir{constructor(t,n,s,c){super(t,n,s,c),this.load=()=>{this._loaded=!0,this.canvas||(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 l.j(new 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(),this._playing=!1)},this._finishLoading())},this.prepare=()=>{let h=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,h=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,h=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;const g=this.map.painter.context,_=g.gl;this.boundsBuffer||(this.boundsBuffer=g.createVertexBuffer(this._boundsArray,pr.members)),this.boundsSegments||(this.boundsSegments=l.S.simpleSegment(0,0,4,2)),this.texture?(h||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new kt(g,this.canvas,_.RGBA,{premultiply:!0});let x=!1;for(const w in this.tiles){const T=this.tiles[w];T.state!=="loaded"&&(T.state="loaded",T.texture=this.texture,x=!0)}x&&this.fire(new l.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))},this.serialize=()=>({type:"canvas",coordinates:this.coordinates}),n.coordinates?Array.isArray(n.coordinates)&&n.coordinates.length===4&&!n.coordinates.some((h=>!Array.isArray(h)||h.length!==2||h.some((g=>typeof g!="number"))))||this.fire(new l.j(new l.Y(`sources.${t}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new l.j(new l.Y(`sources.${t}`,null,'missing required property "coordinates"'))),n.animate&&typeof n.animate!="boolean"&&this.fire(new l.j(new l.Y(`sources.${t}`,null,'optional "animate" property must be a boolean value'))),n.canvas?typeof n.canvas=="string"||n.canvas instanceof HTMLCanvasElement||this.fire(new l.j(new l.Y(`sources.${t}`,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 l.j(new l.Y(`sources.${t}`,null,'missing required property "canvas"'))),this.options=n,this.animate=n.animate===void 0||n.animate}getCanvas(){return this.canvas}onAdd(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const t of[this.canvas.width,this.canvas.height])if(isNaN(t)||t<=0)return!0;return!1}}const ha={},Er=u=>{switch(u){case"geojson":return Gr;case"image":return ir;case"raster":return Fn;case"raster-dem":return Bn;case"vector":return pn;case"video":return ua;case"canvas":return Hr}return ha[u]};function On(u,t){const n=l.Z();return l.$(n,n,[1,1,0]),l.a0(n,n,[.5*u.width,.5*u.height,1]),l.a1(n,n,u.calculatePosMatrix(t.toUnwrapped()))}function dn(u,t,n,s,c,h){const g=(function(I,P,V){if(I)for(const N of I){const $=P[N];if($&&$.source===V&&$.type==="fill-extrusion")return!0}else for(const N in P){const $=P[N];if($.source===V&&$.type==="fill-extrusion")return!0}return!1})(c&&c.layers,t,u.id),_=h.maxPitchScaleFactor(),x=u.tilesIn(s,_,g);x.sort(Wr);const w=[];for(const I of x)w.push({wrappedTileID:I.tileID.wrapped().key,queryResults:I.tile.queryRenderedFeatures(t,n,u._state,I.queryGeometry,I.cameraQueryGeometry,I.scale,c,h,_,On(u.transform,I.tileID))});const T=(function(I){const P={},V={};for(const N of I){const $=N.queryResults,B=N.wrappedTileID,ee=V[B]=V[B]||{};for(const se in $){const G=$[se],te=ee[se]=ee[se]||{},ce=P[se]=P[se]||[];for(const ue of G)te[ue.featureIndex]||(te[ue.featureIndex]=!0,ce.push(ue))}}return P})(w);for(const I in T)T[I].forEach((P=>{const V=P.feature,N=u.getFeatureState(V.layer["source-layer"],V.id);V.source=V.layer.source,V.layer["source-layer"]&&(V.sourceLayer=V.layer["source-layer"]),V.state=N}));return T}function Wr(u,t){const n=u.tileID,s=t.tileID;return n.overscaledZ-s.overscaledZ||n.canonical.y-s.canonical.y||n.wrap-s.wrap||n.canonical.x-s.canonical.x}class Xr{constructor(t,n){this.timeAdded=0,this.fadeEndTime=0,this.tileID=t,this.uid=l.a2(),this.uses=0,this.tileSize=n,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttCoords={},this.expiredRequestCount=0,this.state="loading"}registerFadeDuration(t){const n=t+this.timeAdded;n<this.fadeEndTime||(this.fadeEndTime=n)}wasRequested(){return this.state==="errored"||this.state==="loaded"||this.state==="reloading"}clearTextures(t){this.demTexture&&t.saveTileTexture(this.demTexture),this.demTexture=null}loadVectorData(t,n,s){if(this.hasData()&&this.unloadVectorData(),this.state="loaded",t){t.featureIndex&&(this.latestFeatureIndex=t.featureIndex,t.rawTileData?(this.latestRawTileData=t.rawTileData,this.latestFeatureIndex.rawTileData=t.rawTileData):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData)),this.collisionBoxArray=t.collisionBoxArray,this.buckets=(function(c,h){const g={};if(!h)return g;for(const _ of c){const x=_.layerIds.map((w=>h.getLayer(w))).filter(Boolean);if(x.length!==0){_.layers=x,_.stateDependentLayerIds&&(_.stateDependentLayers=_.stateDependentLayerIds.map((w=>x.filter((T=>T.id===w))[0])));for(const w of x)g[w.id]=_}}return g})(t.buckets,n.style),this.hasSymbolBuckets=!1;for(const c in this.buckets){const h=this.buckets[c];if(h instanceof l.a4){if(this.hasSymbolBuckets=!0,!s)break;h.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const c in this.buckets){const h=this.buckets[c];if(h instanceof l.a4&&h.hasRTLText){this.hasRTLText=!0,l.a5();break}}this.queryPadding=0;for(const c in this.buckets){const h=this.buckets[c];this.queryPadding=Math.max(this.queryPadding,n.style.getLayer(c).queryRadius(h))}t.imageAtlas&&(this.imageAtlas=t.imageAtlas),t.glyphAtlasImage&&(this.glyphAtlasImage=t.glyphAtlasImage)}else this.collisionBoxArray=new l.a3}unloadVectorData(){for(const t in this.buckets)this.buckets[t].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state="unloaded"}getBucket(t){return this.buckets[t.id]}upload(t){for(const s in this.buckets){const c=this.buckets[s];c.uploadPending()&&c.upload(t)}const n=t.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new kt(t,this.imageAtlas.image,n.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new kt(t,this.glyphAtlasImage,n.ALPHA),this.glyphAtlasImage=null)}prepare(t){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(t,this.imageAtlasTexture)}queryRenderedFeatures(t,n,s,c,h,g,_,x,w,T){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:c,cameraQueryGeometry:h,scale:g,tileSize:this.tileSize,pixelPosMatrix:T,transform:x,params:_,queryPadding:this.queryPadding*w},t,n,s):{}}querySourceFeatures(t,n){const s=this.latestFeatureIndex;if(!s||!s.rawTileData)return;const c=s.loadVTLayers(),h=n&&n.sourceLayer?n.sourceLayer:"",g=c._geojsonTileLayer||c[h];if(!g)return;const _=l.a6(n&&n.filter),{z:x,x:w,y:T}=this.tileID.canonical,I={z:x,x:w,y:T};for(let P=0;P<g.length;P++){const V=g.feature(P);if(_.needGeometry){const B=l.a7(V,!0);if(!_.filter(new l.a8(this.tileID.overscaledZ),B,this.tileID.canonical))continue}else if(!_.filter(new l.a8(this.tileID.overscaledZ),V))continue;const N=s.getId(V,h),$=new l.a9(V,x,w,T,N);$.tile=I,t.push($)}}hasData(){return this.state==="loaded"||this.state==="reloading"||this.state==="expired"}patternsLoaded(){return this.imageAtlas&&!!Object.keys(this.imageAtlas.patternPositions).length}setExpiryData(t){const n=this.expirationTime;if(t.cacheControl){const s=l.aa(t.cacheControl);s["max-age"]&&(this.expirationTime=Date.now()+1e3*s["max-age"])}else t.expires&&(this.expirationTime=new Date(t.expires).getTime());if(this.expirationTime){const s=Date.now();let c=!1;if(this.expirationTime>s)c=!1;else if(n)if(this.expirationTime<n)c=!0;else{const h=this.expirationTime-n;h?this.expirationTime=s+Math.max(h,3e4):c=!0}else c=!0;c?(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(),Math.pow(2,31)-1)}setFeatureState(t,n){if(!this.latestFeatureIndex||!this.latestFeatureIndex.rawTileData||Object.keys(t).length===0)return;const s=this.latestFeatureIndex.loadVTLayers();for(const c in this.buckets){if(!n.style.hasLayer(c))continue;const h=this.buckets[c],g=h.layers[0].sourceLayer||"_geojsonTileLayer",_=s[g],x=t[g];if(!_||!x||Object.keys(x).length===0)continue;h.update(x,_,this.imageAtlas&&this.imageAtlas.patternPositions||{});const w=n&&n.style&&n.style.getLayer(c);w&&(this.queryPadding=Math.max(this.queryPadding,w.queryRadius(h)))}}holdingForFade(){return this.symbolFadeHoldUntil!==void 0}symbolFadeFinished(){return!this.symbolFadeHoldUntil||this.symbolFadeHoldUntil<l.h.now()}clearFadeHold(){this.symbolFadeHoldUntil=void 0}setHoldDuration(t){this.symbolFadeHoldUntil=l.h.now()+t}setDependencies(t,n){const s={};for(const c of n)s[c]=!0;this.dependencies[t]=s}hasDependency(t,n){for(const s of t){const c=this.dependencies[s];if(c){for(const h of n)if(c[h])return!0}}return!1}}class fn{constructor(t,n){this.max=t,this.onRemove=n,this.reset()}reset(){for(const t in this.data)for(const n of this.data[t])n.timeout&&clearTimeout(n.timeout),this.onRemove(n.value);return this.data={},this.order=[],this}add(t,n,s){const c=t.wrapped().key;this.data[c]===void 0&&(this.data[c]=[]);const h={value:n,timeout:void 0};if(s!==void 0&&(h.timeout=setTimeout((()=>{this.remove(t,h)}),s)),this.data[c].push(h),this.order.push(c),this.order.length>this.max){const g=this._getAndRemoveByKey(this.order[0]);g&&this.onRemove(g)}return this}has(t){return t.wrapped().key in this.data}getAndRemove(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null}_getAndRemoveByKey(t){const n=this.data[t].shift();return n.timeout&&clearTimeout(n.timeout),this.data[t].length===0&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),n.value}getByKey(t){const n=this.data[t];return n?n[0].value:null}get(t){return this.has(t)?this.data[t.wrapped().key][0].value:null}remove(t,n){if(!this.has(t))return this;const s=t.wrapped().key,c=n===void 0?0:this.data[s].indexOf(n),h=this.data[s][c];return this.data[s].splice(c,1),h.timeout&&clearTimeout(h.timeout),this.data[s].length===0&&delete this.data[s],this.onRemove(h.value),this.order.splice(this.order.indexOf(s),1),this}setMaxSize(t){for(this.max=t;this.order.length>this.max;){const n=this._getAndRemoveByKey(this.order[0]);n&&this.onRemove(n)}return this}filter(t){const n=[];for(const s in this.data)for(const c of this.data[s])t(c.value)||n.push(c);for(const s of n)this.remove(s.value.tileID,s)}}class he{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(t,n,s){const c=String(n);if(this.stateChanges[t]=this.stateChanges[t]||{},this.stateChanges[t][c]=this.stateChanges[t][c]||{},l.e(this.stateChanges[t][c],s),this.deletedStates[t]===null){this.deletedStates[t]={};for(const h in this.state[t])h!==c&&(this.deletedStates[t][h]=null)}else if(this.deletedStates[t]&&this.deletedStates[t][c]===null){this.deletedStates[t][c]={};for(const h in this.state[t][c])s[h]||(this.deletedStates[t][c][h]=null)}else for(const h in s)this.deletedStates[t]&&this.deletedStates[t][c]&&this.deletedStates[t][c][h]===null&&delete this.deletedStates[t][c][h]}removeFeatureState(t,n,s){if(this.deletedStates[t]===null)return;const c=String(n);if(this.deletedStates[t]=this.deletedStates[t]||{},s&&n!==void 0)this.deletedStates[t][c]!==null&&(this.deletedStates[t][c]=this.deletedStates[t][c]||{},this.deletedStates[t][c][s]=null);else if(n!==void 0)if(this.stateChanges[t]&&this.stateChanges[t][c])for(s in this.deletedStates[t][c]={},this.stateChanges[t][c])this.deletedStates[t][c][s]=null;else this.deletedStates[t][c]=null;else this.deletedStates[t]=null}getState(t,n){const s=String(n),c=l.e({},(this.state[t]||{})[s],(this.stateChanges[t]||{})[s]);if(this.deletedStates[t]===null)return{};if(this.deletedStates[t]){const h=this.deletedStates[t][n];if(h===null)return{};for(const g in h)delete c[g]}return c}initializeTileState(t,n){t.setFeatureState(this.state,n)}coalesceChanges(t,n){const s={};for(const c in this.stateChanges){this.state[c]=this.state[c]||{};const h={};for(const g in this.stateChanges[c])this.state[c][g]||(this.state[c][g]={}),l.e(this.state[c][g],this.stateChanges[c][g]),h[g]=this.state[c][g];s[c]=h}for(const c in this.deletedStates){this.state[c]=this.state[c]||{};const h={};if(this.deletedStates[c]===null)for(const g in this.state[c])h[g]={},this.state[c][g]={};else for(const g in this.deletedStates[c]){if(this.deletedStates[c][g]===null)this.state[c][g]={};else for(const _ of Object.keys(this.deletedStates[c][g]))delete this.state[c][g][_];h[g]=this.state[c][g]}s[c]=s[c]||{},l.e(s[c],h)}if(this.stateChanges={},this.deletedStates={},Object.keys(s).length!==0)for(const c in t)t[c].setFeatureState(s,n)}}class zi extends l.E{constructor(t,n,s){super(),this.id=t,this.dispatcher=s,this.on("data",(c=>{c.dataType==="source"&&c.sourceDataType==="metadata"&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&c.dataType==="source"&&c.sourceDataType==="content"&&(this.reload(),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0)})),this.on("dataloading",(()=>{this._sourceErrored=!1})),this.on("error",(()=>{this._sourceErrored=this._source.loaded()})),this._source=((c,h,g,_)=>{const x=new(Er(h.type))(c,h,g,_);if(x.id!==c)throw new Error(`Expected Source id to be ${c} instead of ${x.id}`);return x})(t,n,s,this),this._tiles={},this._cache=new fn(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new he,this._didEmitContent=!1,this._updated=!1}onAdd(t){this.map=t,this._maxTileCacheSize=t?t._maxTileCacheSize:null,this._maxTileCacheZoomLevels=t?t._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(t)}onRemove(t){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(t)}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(const t in this._tiles){const n=this._tiles[t];if(n.state!=="loaded"&&n.state!=="errored")return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;const t=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,t&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}_loadTile(t,n){return this._source.loadTile(t,n)}_unloadTile(t){if(this._source.unloadTile)return this._source.unloadTile(t,(()=>{}))}_abortTile(t){this._source.abortTile&&this._source.abortTile(t,(()=>{})),this._source.fire(new l.k("dataabort",{tile:t,coord:t.tileID,dataType:"source"}))}serialize(){return this._source.serialize()}prepare(t){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(const n in this._tiles){const s=this._tiles[n];s.upload(t),s.prepare(this.map.style.imageManager)}}getIds(){return Object.values(this._tiles).map((t=>t.tileID)).sort(rr).map((t=>t.key))}getRenderableIds(t){const n=[];for(const s in this._tiles)this._isIdRenderable(s,t)&&n.push(this._tiles[s]);return t?n.sort(((s,c)=>{const h=s.tileID,g=c.tileID,_=new l.P(h.canonical.x,h.canonical.y)._rotate(this.transform.angle),x=new l.P(g.canonical.x,g.canonical.y)._rotate(this.transform.angle);return h.overscaledZ-g.overscaledZ||x.y-_.y||x.x-_.x})).map((s=>s.tileID.key)):n.map((s=>s.tileID)).sort(rr).map((s=>s.key))}hasRenderableParent(t){const n=this.findLoadedParent(t,0);return!!n&&this._isIdRenderable(n.tileID.key)}_isIdRenderable(t,n){return this._tiles[t]&&this._tiles[t].hasData()&&!this._coveredTiles[t]&&(n||!this._tiles[t].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(const t in this._tiles)this._tiles[t].state!=="errored"&&this._reloadTile(t,"reloading")}}_reloadTile(t,n){const s=this._tiles[t];s&&(s.state!=="loading"&&(s.state=n),this._loadTile(s,this._tileLoaded.bind(this,s,t,n)))}_tileLoaded(t,n,s,c){if(c)return t.state="errored",void(c.status!==404?this._source.fire(new l.j(c,{tile:t})):this.update(this.transform,this.terrain));t.timeAdded=l.h.now(),s==="expired"&&(t.refreshedUponExpiration=!0),this._setTileReloadTimer(n,t),this.getSource().type==="raster-dem"&&t.dem&&this._backfillDEM(t),this._state.initializeTileState(t,this.map?this.map.painter:null),t.aborted||this._source.fire(new l.k("data",{dataType:"source",tile:t,coord:t.tileID}))}_backfillDEM(t){const n=this.getRenderableIds();for(let c=0;c<n.length;c++){const h=n[c];if(t.neighboringTiles&&t.neighboringTiles[h]){const g=this.getTileByID(h);s(t,g),s(g,t)}}function s(c,h){c.needsHillshadePrepare=!0,c.needsTerrainPrepare=!0;let g=h.tileID.canonical.x-c.tileID.canonical.x;const _=h.tileID.canonical.y-c.tileID.canonical.y,x=Math.pow(2,c.tileID.canonical.z),w=h.tileID.key;g===0&&_===0||Math.abs(_)>1||(Math.abs(g)>1&&(Math.abs(g+x)===1?g+=x:Math.abs(g-x)===1&&(g-=x)),h.dem&&c.dem&&(c.dem.backfillBorder(h.dem,g,_),c.neighboringTiles&&c.neighboringTiles[w]&&(c.neighboringTiles[w].backfilled=!0)))}}getTile(t){return this.getTileByID(t.key)}getTileByID(t){return this._tiles[t]}_retainLoadedChildren(t,n,s,c){for(const h in this._tiles){let g=this._tiles[h];if(c[h]||!g.hasData()||g.tileID.overscaledZ<=n||g.tileID.overscaledZ>s)continue;let _=g.tileID;for(;g&&g.tileID.overscaledZ>n+1;){const w=g.tileID.scaledTo(g.tileID.overscaledZ-1);g=this._tiles[w.key],g&&g.hasData()&&(_=w)}let x=_;for(;x.overscaledZ>n;)if(x=x.scaledTo(x.overscaledZ-1),t[x.key]){c[_.key]=_;break}}}findLoadedParent(t,n){if(t.key in this._loadedParentTiles){const s=this._loadedParentTiles[t.key];return s&&s.tileID.overscaledZ>=n?s:null}for(let s=t.overscaledZ-1;s>=n;s--){const c=t.scaledTo(s),h=this._getLoadedTile(c);if(h)return h}}_getLoadedTile(t){const n=this._tiles[t.key];return n&&n.hasData()?n:this._cache.getByKey(t.wrapped().key)}updateCacheSize(t){const n=Math.ceil(t.width/this._source.tileSize)+1,s=Math.ceil(t.height/this._source.tileSize)+1,c=Math.floor(n*s*(this._maxTileCacheZoomLevels===null?l.c.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),h=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,c):c;this._cache.setMaxSize(h)}handleWrapJump(t){const n=Math.round((t-(this._prevLng===void 0?t:this._prevLng))/360);if(this._prevLng=t,n){const s={};for(const c in this._tiles){const h=this._tiles[c];h.tileID=h.tileID.unwrapTo(h.tileID.wrap+n),s[h.tileID.key]=h}this._tiles=s;for(const c in this._timers)clearTimeout(this._timers[c]),delete this._timers[c];for(const c in this._tiles)this._setTileReloadTimer(c,this._tiles[c])}}update(t,n){if(this.transform=t,this.terrain=n,!this._sourceLoaded||this._paused)return;let s;this.updateCacheSize(t),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?s=t.getVisibleUnwrappedCoordinates(this._source.tileID).map((T=>new l.O(T.canonical.z,T.wrap,T.canonical.z,T.canonical.x,T.canonical.y))):(s=t.coveringTiles({tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:n}),this._source.hasTile&&(s=s.filter((T=>this._source.hasTile(T))))):s=[];const c=t.coveringZoomLevel(this._source),h=Math.max(c-zi.maxOverzooming,this._source.minzoom),g=Math.max(c+zi.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){const T={};for(const I of s)if(I.canonical.z>this._source.minzoom){const P=I.scaledTo(I.canonical.z-1);T[P.key]=P;const V=I.scaledTo(Math.max(this._source.minzoom,Math.min(I.canonical.z,5)));T[V.key]=V}s=s.concat(Object.values(T))}const _=s.length===0&&!this._updated&&this._didEmitContent;this._updated=!0,_&&this.fire(new l.k("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));const x=this._updateRetainedTiles(s,c);if(Tt(this._source.type)){const T={},I={},P=Object.keys(x),V=l.h.now();for(const N of P){const $=x[N],B=this._tiles[N];if(!B||B.fadeEndTime!==0&&B.fadeEndTime<=V)continue;const ee=this.findLoadedParent($,h);ee&&(this._addTile(ee.tileID),T[ee.tileID.key]=ee.tileID),I[N]=$}this._retainLoadedChildren(I,c,g,x);for(const N in T)x[N]||(this._coveredTiles[N]=!0,x[N]=T[N]);if(n){const N={},$={};for(const B of s)this._tiles[B.key].hasData()?N[B.key]=B:$[B.key]=B;for(const B in $){const ee=$[B].children(this._source.maxzoom);this._tiles[ee[0].key]&&this._tiles[ee[1].key]&&this._tiles[ee[2].key]&&this._tiles[ee[3].key]&&(N[ee[0].key]=x[ee[0].key]=ee[0],N[ee[1].key]=x[ee[1].key]=ee[1],N[ee[2].key]=x[ee[2].key]=ee[2],N[ee[3].key]=x[ee[3].key]=ee[3],delete $[B])}for(const B in $){const ee=this.findLoadedParent($[B],this._source.minzoom);if(ee){N[ee.tileID.key]=x[ee.tileID.key]=ee.tileID;for(const se in N)N[se].isChildOf(ee.tileID)&&delete N[se]}}for(const B in this._tiles)N[B]||(this._coveredTiles[B]=!0)}}for(const T in x)this._tiles[T].clearFadeHold();const w=l.ab(this._tiles,x);for(const T of w){const I=this._tiles[T];I.hasSymbolBuckets&&!I.holdingForFade()?I.setHoldDuration(this.map._fadeDuration):I.hasSymbolBuckets&&!I.symbolFadeFinished()||this._removeTile(T)}this._updateLoadedParentTileCache()}releaseSymbolFadeTiles(){for(const t in this._tiles)this._tiles[t].holdingForFade()&&this._removeTile(t)}_updateRetainedTiles(t,n){const s={},c={},h=Math.max(n-zi.maxOverzooming,this._source.minzoom),g=Math.max(n+zi.maxUnderzooming,this._source.minzoom),_={};for(const x of t){const w=this._addTile(x);s[x.key]=x,w.hasData()||n<this._source.maxzoom&&(_[x.key]=x)}this._retainLoadedChildren(_,n,g,s);for(const x of t){let w=this._tiles[x.key];if(w.hasData())continue;if(n+1>this._source.maxzoom){const I=x.children(this._source.maxzoom)[0],P=this.getTile(I);if(P&&P.hasData()){s[I.key]=I;continue}}else{const I=x.children(this._source.maxzoom);if(s[I[0].key]&&s[I[1].key]&&s[I[2].key]&&s[I[3].key])continue}let T=w.wasRequested();for(let I=x.overscaledZ-1;I>=h;--I){const P=x.scaledTo(I);if(c[P.key])break;if(c[P.key]=!0,w=this.getTile(P),!w&&T&&(w=this._addTile(P)),w){const V=w.hasData();if((T||V)&&(s[P.key]=P),T=w.wasRequested(),V)break}}}return s}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(const t in this._tiles){const n=[];let s,c=this._tiles[t].tileID;for(;c.overscaledZ>0;){if(c.key in this._loadedParentTiles){s=this._loadedParentTiles[c.key];break}n.push(c.key);const h=c.scaledTo(c.overscaledZ-1);if(s=this._getLoadedTile(h),s)break;c=h}for(const h of n)this._loadedParentTiles[h]=s}}_addTile(t){let n=this._tiles[t.key];if(n)return n;n=this._cache.getAndRemove(t),n&&(this._setTileReloadTimer(t.key,n),n.tileID=t,this._state.initializeTileState(n,this.map?this.map.painter:null),this._cacheTimers[t.key]&&(clearTimeout(this._cacheTimers[t.key]),delete this._cacheTimers[t.key],this._setTileReloadTimer(t.key,n)));const s=n;return n||(n=new Xr(t,this._source.tileSize*t.overscaleFactor()),this._loadTile(n,this._tileLoaded.bind(this,n,t.key,n.state))),n.uses++,this._tiles[t.key]=n,s||this._source.fire(new l.k("dataloading",{tile:n,coord:n.tileID,dataType:"source"})),n}_setTileReloadTimer(t,n){t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);const s=n.getExpiryTimeout();s&&(this._timers[t]=setTimeout((()=>{this._reloadTile(t,"expired"),delete this._timers[t]}),s))}_removeTile(t){const n=this._tiles[t];n&&(n.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),n.uses>0||(n.hasData()&&n.state!=="reloading"?this._cache.add(n.tileID,n,n.getExpiryTimeout()):(n.aborted=!0,this._abortTile(n),this._unloadTile(n))))}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const t in this._tiles)this._removeTile(t);this._cache.reset()}tilesIn(t,n,s){const c=[],h=this.transform;if(!h)return c;const g=s?h.getCameraQueryGeometry(t):t,_=t.map((N=>h.pointCoordinate(N,this.terrain))),x=g.map((N=>h.pointCoordinate(N,this.terrain))),w=this.getIds();let T=1/0,I=1/0,P=-1/0,V=-1/0;for(const N of x)T=Math.min(T,N.x),I=Math.min(I,N.y),P=Math.max(P,N.x),V=Math.max(V,N.y);for(let N=0;N<w.length;N++){const $=this._tiles[w[N]];if($.holdingForFade())continue;const B=$.tileID,ee=Math.pow(2,h.zoom-$.tileID.overscaledZ),se=n*$.queryPadding*l.N/$.tileSize/ee,G=[B.getTilePoint(new l.U(T,I)),B.getTilePoint(new l.U(P,V))];if(G[0].x-se<l.N&&G[0].y-se<l.N&&G[1].x+se>=0&&G[1].y+se>=0){const te=_.map((ue=>B.getTilePoint(ue))),ce=x.map((ue=>B.getTilePoint(ue)));c.push({tile:$,tileID:B,queryGeometry:te,cameraQueryGeometry:ce,scale:ee})}}return c}getVisibleCoordinates(t){const n=this.getRenderableIds(t).map((s=>this._tiles[s].tileID));for(const s of n)s.posMatrix=this.transform.calculatePosMatrix(s.toUnwrapped());return n}hasTransition(){if(this._source.hasTransition())return!0;if(Tt(this._source.type)){const t=l.h.now();for(const n in this._tiles)if(this._tiles[n].fadeEndTime>=t)return!0}return!1}setFeatureState(t,n,s){this._state.updateState(t=t||"_geojsonTileLayer",n,s)}removeFeatureState(t,n,s){this._state.removeFeatureState(t=t||"_geojsonTileLayer",n,s)}getFeatureState(t,n){return this._state.getState(t=t||"_geojsonTileLayer",n)}setDependencies(t,n,s){const c=this._tiles[t];c&&c.setDependencies(n,s)}reloadTilesForDependencies(t,n){for(const s in this._tiles)this._tiles[s].hasDependency(t,n)&&this._reloadTile(s,"reloading");this._cache.filter((s=>!s.hasDependency(t,n)))}}function rr(u,t){const n=Math.abs(2*u.wrap)-+(u.wrap<0),s=Math.abs(2*t.wrap)-+(t.wrap<0);return u.overscaledZ-t.overscaledZ||s-n||t.canonical.y-u.canonical.y||t.canonical.x-u.canonical.x}function Tt(u){return u==="raster"||u==="image"||u==="video"}zi.maxOverzooming=10,zi.maxUnderzooming=3;const ft="mapboxgl_preloaded_worker_pool";class yr{constructor(){this.active={}}acquire(t){if(!this.workers)for(this.workers=[];this.workers.length<yr.workerCount;)this.workers.push(new Worker(l.c.WORKER_URL));return this.active[t]=!0,this.workers.slice()}release(t){delete this.active[t],this.numActive()===0&&(this.workers.forEach((n=>{n.terminate()})),this.workers=null)}isPreloaded(){return!!this.active[ft]}numActive(){return Object.keys(this.active).length}}const Nn=Math.floor(l.h.hardwareConcurrency/2);let Pr;function Na(){return Pr||(Pr=new yr),Pr}yr.workerCount=l.ac(globalThis)?Math.max(Math.min(Nn,3),1):1;class Vn{constructor(t,n){this.reset(t,n)}reset(t,n){this.points=t||[],this._distances=[0];for(let s=1;s<this.points.length;s++)this._distances[s]=this._distances[s-1]+this.points[s].dist(this.points[s-1]);this.length=this._distances[this._distances.length-1],this.padding=Math.min(n||0,.5*this.length),this.paddedLength=this.length-2*this.padding}lerp(t){if(this.points.length===1)return this.points[0];t=l.ad(t,0,1);let n=1,s=this._distances[n];const c=t*this.paddedLength+this.padding;for(;s<c&&n<this._distances.length;)s=this._distances[++n];const h=n-1,g=this._distances[h],_=s-g,x=_>0?(c-g)/_:0;return this.points[h].mult(1-x).add(this.points[n].mult(x))}}function Kr(u,t){let n=!0;return u==="always"||u!=="never"&&t!=="never"||(n=!1),n}class mn{constructor(t,n,s){const c=this.boxCells=[],h=this.circleCells=[];this.xCellCount=Math.ceil(t/s),this.yCellCount=Math.ceil(n/s);for(let g=0;g<this.xCellCount*this.yCellCount;g++)c.push([]),h.push([]);this.circleKeys=[],this.boxKeys=[],this.bboxes=[],this.circles=[],this.width=t,this.height=n,this.xScale=this.xCellCount/t,this.yScale=this.yCellCount/n,this.boxUid=0,this.circleUid=0}keysLength(){return this.boxKeys.length+this.circleKeys.length}insert(t,n,s,c,h){this._forEachCell(n,s,c,h,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(n),this.bboxes.push(s),this.bboxes.push(c),this.bboxes.push(h)}insertCircle(t,n,s,c){this._forEachCell(n-c,s-c,n+c,s+c,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(n),this.circles.push(s),this.circles.push(c)}_insertBoxCell(t,n,s,c,h,g){this.boxCells[h].push(g)}_insertCircleCell(t,n,s,c,h,g){this.circleCells[h].push(g)}_query(t,n,s,c,h,g,_){if(s<0||t>this.width||c<0||n>this.height)return[];const x=[];if(t<=0&&n<=0&&this.width<=s&&this.height<=c){if(h)return[{key:null,x1:t,y1:n,x2:s,y2:c}];for(let w=0;w<this.boxKeys.length;w++)x.push({key:this.boxKeys[w],x1:this.bboxes[4*w],y1:this.bboxes[4*w+1],x2:this.bboxes[4*w+2],y2:this.bboxes[4*w+3]});for(let w=0;w<this.circleKeys.length;w++){const T=this.circles[3*w],I=this.circles[3*w+1],P=this.circles[3*w+2];x.push({key:this.circleKeys[w],x1:T-P,y1:I-P,x2:T+P,y2:I+P})}}else this._forEachCell(t,n,s,c,this._queryCell,x,{hitTest:h,overlapMode:g,seenUids:{box:{},circle:{}}},_);return x}query(t,n,s,c){return this._query(t,n,s,c,!1,null)}hitTest(t,n,s,c,h,g){return this._query(t,n,s,c,!0,h,g).length>0}hitTestCircle(t,n,s,c,h){const g=t-s,_=t+s,x=n-s,w=n+s;if(_<0||g>this.width||w<0||x>this.height)return!1;const T=[];return this._forEachCell(g,x,_,w,this._queryCellCircle,T,{hitTest:!0,overlapMode:c,circle:{x:t,y:n,radius:s},seenUids:{box:{},circle:{}}},h),T.length>0}_queryCell(t,n,s,c,h,g,_,x){const{seenUids:w,hitTest:T,overlapMode:I}=_,P=this.boxCells[h];if(P!==null){const N=this.bboxes;for(const $ of P)if(!w.box[$]){w.box[$]=!0;const B=4*$,ee=this.boxKeys[$];if(t<=N[B+2]&&n<=N[B+3]&&s>=N[B+0]&&c>=N[B+1]&&(!x||x(ee))&&(!T||!Kr(I,ee.overlapMode))&&(g.push({key:ee,x1:N[B],y1:N[B+1],x2:N[B+2],y2:N[B+3]}),T))return!0}}const V=this.circleCells[h];if(V!==null){const N=this.circles;for(const $ of V)if(!w.circle[$]){w.circle[$]=!0;const B=3*$,ee=this.circleKeys[$];if(this._circleAndRectCollide(N[B],N[B+1],N[B+2],t,n,s,c)&&(!x||x(ee))&&(!T||!Kr(I,ee.overlapMode))){const se=N[B],G=N[B+1],te=N[B+2];if(g.push({key:ee,x1:se-te,y1:G-te,x2:se+te,y2:G+te}),T)return!0}}}return!1}_queryCellCircle(t,n,s,c,h,g,_,x){const{circle:w,seenUids:T,overlapMode:I}=_,P=this.boxCells[h];if(P!==null){const N=this.bboxes;for(const $ of P)if(!T.box[$]){T.box[$]=!0;const B=4*$,ee=this.boxKeys[$];if(this._circleAndRectCollide(w.x,w.y,w.radius,N[B+0],N[B+1],N[B+2],N[B+3])&&(!x||x(ee))&&!Kr(I,ee.overlapMode))return g.push(!0),!0}}const V=this.circleCells[h];if(V!==null){const N=this.circles;for(const $ of V)if(!T.circle[$]){T.circle[$]=!0;const B=3*$,ee=this.circleKeys[$];if(this._circlesCollide(N[B],N[B+1],N[B+2],w.x,w.y,w.radius)&&(!x||x(ee))&&!Kr(I,ee.overlapMode))return g.push(!0),!0}}}_forEachCell(t,n,s,c,h,g,_,x){const w=this._convertToXCellCoord(t),T=this._convertToYCellCoord(n),I=this._convertToXCellCoord(s),P=this._convertToYCellCoord(c);for(let V=w;V<=I;V++)for(let N=T;N<=P;N++)if(h.call(this,t,n,s,c,this.xCellCount*N+V,g,_,x))return}_convertToXCellCoord(t){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(t*this.xScale)))}_convertToYCellCoord(t){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(t*this.yScale)))}_circlesCollide(t,n,s,c,h,g){const _=c-t,x=h-n,w=s+g;return w*w>_*_+x*x}_circleAndRectCollide(t,n,s,c,h,g,_){const x=(g-c)/2,w=Math.abs(t-(c+x));if(w>x+s)return!1;const T=(_-h)/2,I=Math.abs(n-(h+T));if(I>T+s)return!1;if(w<=x||I<=T)return!0;const P=w-x,V=I-T;return P*P+V*V<=s*s}}function Ie(u,t,n,s,c){const h=l.Z();return t?(l.a0(h,h,[1/c,1/c,1]),n||l.ae(h,h,s.angle)):l.a1(h,s.labelPlaneMatrix,u),h}function xr(u,t,n,s,c){if(t){const h=l.af(u);return l.a0(h,h,[c,c,1]),n||l.ae(h,h,-s.angle),h}return s.glCoordMatrix}function Ot(u,t,n){let s;n?(s=[u.x,u.y,n(u.x,u.y),1],l.ag(s,s,t)):(s=[u.x,u.y,0,1],j(s,s,t));const c=s[3];return{point:new l.P(s[0]/c,s[1]/c),signedDistanceFromCamera:c}}function gn(u,t){return .5+u/t*.5}function zr(u,t){const n=u[0]/u[3],s=u[1]/u[3];return n>=-t[0]&&n<=t[0]&&s>=-t[1]&&s<=t[1]}function ke(u,t,n,s,c,h,g,_,x,w){const T=s?u.textSizeData:u.iconSizeData,I=l.ah(T,n.transform.zoom),P=[256/n.width*2+1,256/n.height*2+1],V=s?u.text.dynamicLayoutVertexArray:u.icon.dynamicLayoutVertexArray;V.clear();const N=u.lineVertexArray,$=s?u.text.placedSymbolArray:u.icon.placedSymbolArray,B=n.transform.width/n.transform.height;let ee=!1;for(let se=0;se<$.length;se++){const G=$.get(se);if(G.hidden||G.writingMode===l.ai.vertical&&!ee){F(G.numGlyphs,V);continue}let te;if(ee=!1,w?(te=[G.anchorX,G.anchorY,w(G.anchorX,G.anchorY),1],l.ag(te,te,t)):(te=[G.anchorX,G.anchorY,0,1],j(te,te,t)),!zr(te,P)){F(G.numGlyphs,V);continue}const ce=gn(n.transform.cameraToCenterDistance,te[3]),ue=l.aj(T,I,G),fe=g?ue/ce:ue*ce,ve=new l.P(G.anchorX,G.anchorY),xe=Ot(ve,c,w).point,Se={projections:{},offsets:{}},Ne=Si(G,fe,!1,_,t,c,h,u.glyphOffsetArray,N,V,xe,ve,Se,B,x,w);ee=Ne.useVertical,(Ne.notEnoughRoom||ee||Ne.needsFlipping&&Si(G,fe,!0,_,t,c,h,u.glyphOffsetArray,N,V,xe,ve,Se,B,x,w).notEnoughRoom)&&F(G.numGlyphs,V)}s?u.text.dynamicLayoutVertexBuffer.updateData(V):u.icon.dynamicLayoutVertexBuffer.updateData(V)}function nt(u,t,n,s,c,h,g,_,x,w,T,I,P){const V=_.glyphStartIndex+_.numGlyphs,N=_.lineStartIndex,$=_.lineStartIndex+_.lineLength,B=t.getoffsetX(_.glyphStartIndex),ee=t.getoffsetX(V-1),se=C(u*B,n,s,c,h,g,_.segment,N,$,x,w,T,I,P);if(!se)return null;const G=C(u*ee,n,s,c,h,g,_.segment,N,$,x,w,T,I,P);return G?{first:se,last:G}:null}function et(u,t,n,s){return u===l.ai.horizontal&&Math.abs(n.y-t.y)>Math.abs(n.x-t.x)*s?{useVertical:!0}:(u===l.ai.vertical?t.y<n.y:t.x>n.x)?{needsFlipping:!0}:null}function Si(u,t,n,s,c,h,g,_,x,w,T,I,P,V,N,$){const B=t/24,ee=u.lineOffsetX*B,se=u.lineOffsetY*B;let G;if(u.numGlyphs>1){const te=u.glyphStartIndex+u.numGlyphs,ce=u.lineStartIndex,ue=u.lineStartIndex+u.lineLength,fe=nt(B,_,ee,se,n,T,I,u,x,h,P,N,$);if(!fe)return{notEnoughRoom:!0};const ve=Ot(fe.first.point,g,$).point,xe=Ot(fe.last.point,g,$).point;if(s&&!n){const Se=et(u.writingMode,ve,xe,V);if(Se)return Se}G=[fe.first];for(let Se=u.glyphStartIndex+1;Se<te-1;Se++)G.push(C(B*_.getoffsetX(Se),ee,se,n,T,I,u.segment,ce,ue,x,h,P,N,$));G.push(fe.last)}else{if(s&&!n){const ce=Ot(I,c,$).point,ue=u.lineStartIndex+u.segment+1,fe=new l.P(x.getx(ue),x.gety(ue)),ve=Ot(fe,c,$),xe=ve.signedDistanceFromCamera>0?ve.point:vr(I,fe,ce,1,c,$),Se=et(u.writingMode,ce,xe,V);if(Se)return Se}const te=C(B*_.getoffsetX(u.glyphStartIndex),ee,se,n,T,I,u.segment,u.lineStartIndex,u.lineStartIndex+u.lineLength,x,h,P,N,$);if(!te)return{notEnoughRoom:!0};G=[te]}for(const te of G)l.ak(w,te.point,te.angle);return{}}function vr(u,t,n,s,c,h){const g=Ot(u.add(u.sub(t)._unit()),c,h).point,_=n.sub(g);return n.add(_._mult(s/_.mag()))}function it(u,t){const{projectionCache:n,lineVertexArray:s,labelPlaneMatrix:c,tileAnchorPoint:h,distanceFromAnchor:g,getElevation:_,previousVertex:x,direction:w,absOffsetX:T}=t;if(n.projections[u])return n.projections[u];const I=new l.P(s.getx(u),s.gety(u)),P=Ot(I,c,_);if(P.signedDistanceFromCamera>0)return n.projections[u]=P.point,P.point;const V=u-w;return vr(g===0?h:new l.P(s.getx(V),s.gety(V)),I,x,T-g+1,c,_)}function Dr(u,t,n){return u._unit()._perp()._mult(t*n)}function U(u,t,n,s,c,h,g,_){const{projectionCache:x,direction:w}=_;if(x.offsets[u])return x.offsets[u];const T=n.add(t);if(u+w<s||u+w>=c)return x.offsets[u]=T,T;const I=it(u+w,_),P=Dr(I.sub(n),g,w),V=n.add(P),N=I.add(P);return x.offsets[u]=l.al(h,T,V,N)||T,x.offsets[u]}function C(u,t,n,s,c,h,g,_,x,w,T,I,P,V){const N=s?u-t:u+t;let $=N>0?1:-1,B=0;s&&($*=-1,B=Math.PI),$<0&&(B+=Math.PI);let ee,se,G=$>0?_+g:_+g+1,te=c,ce=c,ue=0,fe=0;const ve=Math.abs(N),xe=[];let Se;for(;ue+fe<=ve;){if(G+=$,G<_||G>=x)return null;ue+=fe,ce=te,se=ee;const Ce={projectionCache:I,lineVertexArray:w,labelPlaneMatrix:T,tileAnchorPoint:h,distanceFromAnchor:ue,getElevation:V,previousVertex:ce,direction:$,absOffsetX:ve};if(te=it(G,Ce),n===0)xe.push(ce),Se=te.sub(ce);else{let Ye;const Ue=te.sub(ce);Ye=Ue.mag()===0?Dr(it(G+$,Ce).sub(te),n,$):Dr(Ue,n,$),se||(se=ce.add(Ye)),ee=U(G,Ye,te,_,x,se,n,Ce),xe.push(se),Se=ee.sub(se)}fe=Se.mag()}const Ne=Se._mult((ve-ue)/fe)._add(se||ce),ot=B+Math.atan2(te.y-ce.y,te.x-ce.x);return xe.push(Ne),{point:Ne,angle:P?ot:0,path:xe}}const E=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function F(u,t){for(let n=0;n<u;n++){const s=t.length;t.resize(s+4),t.float32.set(E,3*s)}}function j(u,t,n){const s=t[0],c=t[1];return u[0]=n[0]*s+n[4]*c+n[12],u[1]=n[1]*s+n[5]*c+n[13],u[3]=n[3]*s+n[7]*c+n[15],u}const Z=100;class ne{constructor(t,n=new mn(t.width+200,t.height+200,25),s=new mn(t.width+200,t.height+200,25)){this.transform=t,this.grid=n,this.ignoredGrid=s,this.pitchfactor=Math.cos(t._pitch)*t.cameraToCenterDistance,this.screenRightBoundary=t.width+Z,this.screenBottomBoundary=t.height+Z,this.gridRightBoundary=t.width+200,this.gridBottomBoundary=t.height+200,this.perspectiveRatioCutoff=.6}placeCollisionBox(t,n,s,c,h,g){const _=this.projectAndGetPerspectiveRatio(c,t.anchorPointX,t.anchorPointY,g),x=s*_.perspectiveRatio,w=t.x1*x+_.point.x,T=t.y1*x+_.point.y,I=t.x2*x+_.point.x,P=t.y2*x+_.point.y;return!this.isInsideGrid(w,T,I,P)||n!=="always"&&this.grid.hitTest(w,T,I,P,n,h)||_.perspectiveRatio<this.perspectiveRatioCutoff?{box:[],offscreen:!1}:{box:[w,T,I,P],offscreen:this.isOffscreen(w,T,I,P)}}placeCollisionCircles(t,n,s,c,h,g,_,x,w,T,I,P,V,N){const $=[],B=new l.P(n.anchorX,n.anchorY),ee=Ot(B,g,N),se=gn(this.transform.cameraToCenterDistance,ee.signedDistanceFromCamera),G=(T?h/se:h*se)/l.ap,te=Ot(B,_,N).point,ce=nt(G,c,n.lineOffsetX*G,n.lineOffsetY*G,!1,te,B,n,s,_,{projections:{},offsets:{}},!1,N);let ue=!1,fe=!1,ve=!0;if(ce){const xe=.5*P*se+V,Se=new l.P(-100,-100),Ne=new l.P(this.screenRightBoundary,this.screenBottomBoundary),ot=new Vn,Ce=ce.first,Ye=ce.last;let Ue=[];for(let rt=Ce.path.length-1;rt>=1;rt--)Ue.push(Ce.path[rt]);for(let rt=1;rt<Ye.path.length;rt++)Ue.push(Ye.path[rt]);const bt=2.5*xe;if(x){const rt=Ue.map((lt=>Ot(lt,x,N)));Ue=rt.some((lt=>lt.signedDistanceFromCamera<=0))?[]:rt.map((lt=>lt.point))}let st=[];if(Ue.length>0){const rt=Ue[0].clone(),lt=Ue[0].clone();for(let $t=1;$t<Ue.length;$t++)rt.x=Math.min(rt.x,Ue[$t].x),rt.y=Math.min(rt.y,Ue[$t].y),lt.x=Math.max(lt.x,Ue[$t].x),lt.y=Math.max(lt.y,Ue[$t].y);st=rt.x>=Se.x&&lt.x<=Ne.x&&rt.y>=Se.y&&lt.y<=Ne.y?[Ue]:lt.x<Se.x||rt.x>Ne.x||lt.y<Se.y||rt.y>Ne.y?[]:l.am([Ue],Se.x,Se.y,Ne.x,Ne.y)}for(const rt of st){ot.reset(rt,.25*xe);let lt=0;lt=ot.length<=.5*xe?1:Math.ceil(ot.paddedLength/bt)+1;for(let $t=0;$t<lt;$t++){const At=$t/Math.max(lt-1,1),hi=ot.lerp(At),Jt=hi.x+Z,Gt=hi.y+Z;$.push(Jt,Gt,xe,0);const Wi=Jt-xe,Et=Gt-xe,wr=Jt+xe,Sr=Gt+xe;if(ve=ve&&this.isOffscreen(Wi,Et,wr,Sr),fe=fe||this.isInsideGrid(Wi,Et,wr,Sr),t!=="always"&&this.grid.hitTestCircle(Jt,Gt,xe,t,I)&&(ue=!0,!w))return{circles:[],offscreen:!1,collisionDetected:ue}}}}return{circles:!w&&ue||!fe||se<this.perspectiveRatioCutoff?[]:$,offscreen:ve,collisionDetected:ue}}queryRenderedSymbols(t){if(t.length===0||this.grid.keysLength()===0&&this.ignoredGrid.keysLength()===0)return{};const n=[];let s=1/0,c=1/0,h=-1/0,g=-1/0;for(const T of t){const I=new l.P(T.x+Z,T.y+Z);s=Math.min(s,I.x),c=Math.min(c,I.y),h=Math.max(h,I.x),g=Math.max(g,I.y),n.push(I)}const _=this.grid.query(s,c,h,g).concat(this.ignoredGrid.query(s,c,h,g)),x={},w={};for(const T of _){const I=T.key;if(x[I.bucketInstanceId]===void 0&&(x[I.bucketInstanceId]={}),x[I.bucketInstanceId][I.featureIndex])continue;const P=[new l.P(T.x1,T.y1),new l.P(T.x2,T.y1),new l.P(T.x2,T.y2),new l.P(T.x1,T.y2)];l.an(n,P)&&(x[I.bucketInstanceId][I.featureIndex]=!0,w[I.bucketInstanceId]===void 0&&(w[I.bucketInstanceId]=[]),w[I.bucketInstanceId].push(I.featureIndex))}return w}insertCollisionBox(t,n,s,c,h,g){(s?this.ignoredGrid:this.grid).insert({bucketInstanceId:c,featureIndex:h,collisionGroupID:g,overlapMode:n},t[0],t[1],t[2],t[3])}insertCollisionCircles(t,n,s,c,h,g){const _=s?this.ignoredGrid:this.grid,x={bucketInstanceId:c,featureIndex:h,collisionGroupID:g,overlapMode:n};for(let w=0;w<t.length;w+=4)_.insertCircle(x,t[w],t[w+1],t[w+2])}projectAndGetPerspectiveRatio(t,n,s,c){let h;return c?(h=[n,s,c(n,s),1],l.ag(h,h,t)):(h=[n,s,0,1],j(h,h,t)),{point:new l.P((h[0]/h[3]+1)/2*this.transform.width+Z,(-h[1]/h[3]+1)/2*this.transform.height+Z),perspectiveRatio:.5+this.transform.cameraToCenterDistance/h[3]*.5}}isOffscreen(t,n,s,c){return s<Z||t>=this.screenRightBoundary||c<Z||n>this.screenBottomBoundary}isInsideGrid(t,n,s,c){return s>=0&&t<this.gridRightBoundary&&c>=0&&n<this.gridBottomBoundary}getViewportMatrix(){const t=l.ao([]);return l.$(t,t,[-100,-100,0]),t}}function Q(u,t,n){return t*(l.N/(u.tileSize*Math.pow(2,n-u.tileID.overscaledZ)))}class W{constructor(t,n,s,c){this.opacity=t?Math.max(0,Math.min(1,t.opacity+(t.placed?n:-n))):c&&s?1:0,this.placed=s}isHidden(){return this.opacity===0&&!this.placed}}class ie{constructor(t,n,s,c,h){this.text=new W(t?t.text:null,n,s,h),this.icon=new W(t?t.icon:null,n,c,h)}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class pe{constructor(t,n,s){this.text=t,this.icon=n,this.skipFade=s}}class de{constructor(){this.invProjMatrix=l.Z(),this.viewportMatrix=l.Z(),this.circles=[]}}class ge{constructor(t,n,s,c,h){this.bucketInstanceId=t,this.featureIndex=n,this.sourceLayerIndex=s,this.bucketIndex=c,this.tileID=h}}class Ge{constructor(t){this.crossSourceCollisions=t,this.maxGroupID=0,this.collisionGroups={}}get(t){if(this.crossSourceCollisions)return{ID:0,predicate:null};if(!this.collisionGroups[t]){const n=++this.maxGroupID;this.collisionGroups[t]={ID:n,predicate:s=>s.collisionGroupID===n}}return this.collisionGroups[t]}}function Qe(u,t,n,s,c){const{horizontalAlign:h,verticalAlign:g}=l.au(u);return new l.P(-(h-.5)*t+s[0]*c,-(g-.5)*n+s[1]*c)}function Oe(u,t,n,s,c,h){const{x1:g,x2:_,y1:x,y2:w,anchorPointX:T,anchorPointY:I}=u,P=new l.P(t,n);return s&&P._rotate(c?h:-h),{x1:g+P.x,y1:x+P.y,x2:_+P.x,y2:w+P.y,anchorPointX:T,anchorPointY:I}}class Xe{constructor(t,n,s,c,h){this.transform=t.clone(),this.terrain=n,this.collisionIndex=new ne(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=s,this.retainedQueryData={},this.collisionGroups=new Ge(c),this.collisionCircleArrays={},this.prevPlacement=h,h&&(h.prevPlacement=void 0),this.placedOrientations={}}getBucketParts(t,n,s,c){const h=s.getBucket(n),g=s.latestFeatureIndex;if(!h||!g||n.id!==h.layerIds[0])return;const _=s.collisionBoxArray,x=h.layers[0].layout,w=Math.pow(2,this.transform.zoom-s.tileID.overscaledZ),T=s.tileSize/l.N,I=this.transform.calculatePosMatrix(s.tileID.toUnwrapped()),P=x.get("text-pitch-alignment")==="map",V=x.get("text-rotation-alignment")==="map",N=Q(s,1,this.transform.zoom),$=Ie(I,P,V,this.transform,N);let B=null;if(P){const se=xr(I,P,V,this.transform,N);B=l.a1([],this.transform.labelPlaneMatrix,se)}this.retainedQueryData[h.bucketInstanceId]=new ge(h.bucketInstanceId,g,h.sourceLayerIndex,h.index,s.tileID);const ee={bucket:h,layout:x,posMatrix:I,textLabelPlaneMatrix:$,labelToScreenMatrix:B,scale:w,textPixelRatio:T,holdingForFade:s.holdingForFade(),collisionBoxArray:_,partiallyEvaluatedTextSize:l.ah(h.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(h.sourceID)};if(c)for(const se of h.sortKeyRanges){const{sortKey:G,symbolInstanceStart:te,symbolInstanceEnd:ce}=se;t.push({sortKey:G,symbolInstanceStart:te,symbolInstanceEnd:ce,parameters:ee})}else t.push({symbolInstanceStart:0,symbolInstanceEnd:h.symbolInstances.length,parameters:ee})}attemptAnchorPlacement(t,n,s,c,h,g,_,x,w,T,I,P,V,N,$,B){const ee=l.aq[t.textAnchor],se=[t.textOffset0,t.textOffset1],G=Qe(ee,s,c,se,h),te=this.collisionIndex.placeCollisionBox(Oe(n,G.x,G.y,g,_,this.transform.angle),I,x,w,T.predicate,B);if((!$||this.collisionIndex.placeCollisionBox(Oe($,G.x,G.y,g,_,this.transform.angle),I,x,w,T.predicate,B).box.length!==0)&&te.box.length>0){let ce;if(this.prevPlacement&&this.prevPlacement.variableOffsets[P.crossTileID]&&this.prevPlacement.placements[P.crossTileID]&&this.prevPlacement.placements[P.crossTileID].text&&(ce=this.prevPlacement.variableOffsets[P.crossTileID].anchor),P.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[P.crossTileID]={textOffset:se,width:s,height:c,anchor:ee,textBoxScale:h,prevAnchor:ce},this.markUsedJustification(V,ee,P,N),V.allowVerticalPlacement&&(this.markUsedOrientation(V,N,P),this.placedOrientations[P.crossTileID]=N),{shift:G,placedGlyphBoxes:te}}}placeLayerBucketPart(t,n,s){const{bucket:c,layout:h,posMatrix:g,textLabelPlaneMatrix:_,labelToScreenMatrix:x,textPixelRatio:w,holdingForFade:T,collisionBoxArray:I,partiallyEvaluatedTextSize:P,collisionGroup:V}=t.parameters,N=h.get("text-optional"),$=h.get("icon-optional"),B=l.ar(h,"text-overlap","text-allow-overlap"),ee=B==="always",se=l.ar(h,"icon-overlap","icon-allow-overlap"),G=se==="always",te=h.get("text-rotation-alignment")==="map",ce=h.get("text-pitch-alignment")==="map",ue=h.get("icon-text-fit")!=="none",fe=h.get("symbol-z-order")==="viewport-y",ve=ee&&(G||!c.hasIconData()||$),xe=G&&(ee||!c.hasTextData()||N);!c.collisionArrays&&I&&c.deserializeCollisionBoxes(I);const Se=this.retainedQueryData[c.bucketInstanceId].tileID,Ne=this.terrain?(Ce,Ye)=>this.terrain.getElevation(Se,Ce,Ye):null,ot=(Ce,Ye)=>{var Ue,bt;if(n[Ce.crossTileID])return;if(T)return void(this.placements[Ce.crossTileID]=new pe(!1,!1,!1));let st=!1,rt=!1,lt=!0,$t=null,At={box:null,offscreen:null},hi={box:null},Jt=null,Gt=null,Wi=null,Et=0,wr=0,Sr=0;Ye.textFeatureIndex?Et=Ye.textFeatureIndex:Ce.useRuntimeCollisionCircles&&(Et=Ce.featureIndex),Ye.verticalTextFeatureIndex&&(wr=Ye.verticalTextFeatureIndex);const an=Ye.textBox;if(an){const _i=jt=>{let Qt=l.ai.horizontal;if(c.allowVerticalPlacement&&!jt&&this.prevPlacement){const Ri=this.prevPlacement.placedOrientations[Ce.crossTileID];Ri&&(this.placedOrientations[Ce.crossTileID]=Ri,Qt=Ri,this.markUsedOrientation(c,Qt,Ce))}return Qt},pi=(jt,Qt)=>{if(c.allowVerticalPlacement&&Ce.numVerticalGlyphVertices>0&&Ye.verticalTextBox){for(const Ri of c.writingModes)if(Ri===l.ai.vertical?(At=Qt(),hi=At):At=jt(),At&&At.box&&At.box.length)break}else At=jt()},Ii=Ce.textAnchorOffsetStartIndex,An=Ce.textAnchorOffsetEndIndex;if(An===Ii){const jt=(Qt,Ri)=>{const qt=this.collisionIndex.placeCollisionBox(Qt,B,w,g,V.predicate,Ne);return qt&&qt.box&&qt.box.length&&(this.markUsedOrientation(c,Ri,Ce),this.placedOrientations[Ce.crossTileID]=Ri),qt};pi((()=>jt(an,l.ai.horizontal)),(()=>{const Qt=Ye.verticalTextBox;return c.allowVerticalPlacement&&Ce.numVerticalGlyphVertices>0&&Qt?jt(Qt,l.ai.vertical):{box:null,offscreen:null}})),_i(At&&At.box&&At.box.length)}else{let jt=l.aq[(bt=(Ue=this.prevPlacement)===null||Ue===void 0?void 0:Ue.variableOffsets[Ce.crossTileID])===null||bt===void 0?void 0:bt.anchor];const Qt=(qt,kn,fs)=>{const El=qt.x2-qt.x1,Pl=qt.y2-qt.y1,Ec=Ce.textBoxScale,vo=ue&&se==="never"?kn:null;let Tr={box:[],offscreen:!1},Cn=B==="never"?1:2,Ir="never";jt&&Cn++;for(let ur=0;ur<Cn;ur++){for(let Ar=Ii;Ar<An;Ar++){const bo=c.textAnchorOffsets.get(Ar);if(jt&&bo.textAnchor!==jt)continue;const Or=this.attemptAnchorPlacement(bo,qt,El,Pl,Ec,te,ce,w,g,V,Ir,Ce,c,fs,vo,Ne);if(Or&&(Tr=Or.placedGlyphBoxes,Tr&&Tr.box&&Tr.box.length))return st=!0,$t=Or.shift,Tr}jt?jt=null:Ir=B}return Tr};pi((()=>Qt(an,Ye.iconBox,l.ai.horizontal)),(()=>{const qt=Ye.verticalTextBox;return c.allowVerticalPlacement&&!(At&&At.box&&At.box.length)&&Ce.numVerticalGlyphVertices>0&&qt?Qt(qt,Ye.verticalIconBox,l.ai.vertical):{box:null,offscreen:null}})),At&&(st=At.box,lt=At.offscreen);const Ri=_i(At&&At.box);if(!st&&this.prevPlacement){const qt=this.prevPlacement.variableOffsets[Ce.crossTileID];qt&&(this.variableOffsets[Ce.crossTileID]=qt,this.markUsedJustification(c,qt.anchor,Ce,Ri))}}}if(Jt=At,st=Jt&&Jt.box&&Jt.box.length>0,lt=Jt&&Jt.offscreen,Ce.useRuntimeCollisionCircles){const _i=c.text.placedSymbolArray.get(Ce.centerJustifiedTextSymbolIndex),pi=l.aj(c.textSizeData,P,_i),Ii=h.get("text-padding");Gt=this.collisionIndex.placeCollisionCircles(B,_i,c.lineVertexArray,c.glyphOffsetArray,pi,g,_,x,s,ce,V.predicate,Ce.collisionCircleDiameter,Ii,Ne),Gt.circles.length&&Gt.collisionDetected&&!s&&l.w("Collisions detected, but collision boxes are not shown"),st=ee||Gt.circles.length>0&&!Gt.collisionDetected,lt=lt&&Gt.offscreen}if(Ye.iconFeatureIndex&&(Sr=Ye.iconFeatureIndex),Ye.iconBox){const _i=pi=>{const Ii=ue&&$t?Oe(pi,$t.x,$t.y,te,ce,this.transform.angle):pi;return this.collisionIndex.placeCollisionBox(Ii,se,w,g,V.predicate,Ne)};hi&&hi.box&&hi.box.length&&Ye.verticalIconBox?(Wi=_i(Ye.verticalIconBox),rt=Wi.box.length>0):(Wi=_i(Ye.iconBox),rt=Wi.box.length>0),lt=lt&&Wi.offscreen}const In=N||Ce.numHorizontalGlyphVertices===0&&Ce.numVerticalGlyphVertices===0,ea=$||Ce.numIconVertices===0;if(In||ea?ea?In||(rt=rt&&st):st=rt&&st:rt=st=rt&&st,st&&Jt&&Jt.box&&this.collisionIndex.insertCollisionBox(Jt.box,B,h.get("text-ignore-placement"),c.bucketInstanceId,hi&&hi.box&&wr?wr:Et,V.ID),rt&&Wi&&this.collisionIndex.insertCollisionBox(Wi.box,se,h.get("icon-ignore-placement"),c.bucketInstanceId,Sr,V.ID),Gt&&(st&&this.collisionIndex.insertCollisionCircles(Gt.circles,B,h.get("text-ignore-placement"),c.bucketInstanceId,Et,V.ID),s)){const _i=c.bucketInstanceId;let pi=this.collisionCircleArrays[_i];pi===void 0&&(pi=this.collisionCircleArrays[_i]=new de);for(let Ii=0;Ii<Gt.circles.length;Ii+=4)pi.circles.push(Gt.circles[Ii+0]),pi.circles.push(Gt.circles[Ii+1]),pi.circles.push(Gt.circles[Ii+2]),pi.circles.push(Gt.collisionDetected?1:0)}if(Ce.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");if(c.bucketInstanceId===0)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[Ce.crossTileID]=new pe(st||ve,rt||xe,lt||c.justReloaded),n[Ce.crossTileID]=!0};if(fe){if(t.symbolInstanceStart!==0)throw new Error("bucket.bucketInstanceId should be 0");const Ce=c.getSortedSymbolIndexes(this.transform.angle);for(let Ye=Ce.length-1;Ye>=0;--Ye){const Ue=Ce[Ye];ot(c.symbolInstances.get(Ue),c.collisionArrays[Ue])}}else for(let Ce=t.symbolInstanceStart;Ce<t.symbolInstanceEnd;Ce++)ot(c.symbolInstances.get(Ce),c.collisionArrays[Ce]);if(s&&c.bucketInstanceId in this.collisionCircleArrays){const Ce=this.collisionCircleArrays[c.bucketInstanceId];l.as(Ce.invProjMatrix,g),Ce.viewportMatrix=this.collisionIndex.getViewportMatrix()}c.justReloaded=!1}markUsedJustification(t,n,s,c){let h;h=c===l.ai.vertical?s.verticalPlacedTextSymbolIndex:{left:s.leftJustifiedTextSymbolIndex,center:s.centerJustifiedTextSymbolIndex,right:s.rightJustifiedTextSymbolIndex}[l.at(n)];const g=[s.leftJustifiedTextSymbolIndex,s.centerJustifiedTextSymbolIndex,s.rightJustifiedTextSymbolIndex,s.verticalPlacedTextSymbolIndex];for(const _ of g)_>=0&&(t.text.placedSymbolArray.get(_).crossTileID=h>=0&&_!==h?0:s.crossTileID)}markUsedOrientation(t,n,s){const c=n===l.ai.horizontal||n===l.ai.horizontalOnly?n:0,h=n===l.ai.vertical?n:0,g=[s.leftJustifiedTextSymbolIndex,s.centerJustifiedTextSymbolIndex,s.rightJustifiedTextSymbolIndex];for(const _ of g)t.text.placedSymbolArray.get(_).placedOrientation=c;s.verticalPlacedTextSymbolIndex&&(t.text.placedSymbolArray.get(s.verticalPlacedTextSymbolIndex).placedOrientation=h)}commit(t){this.commitTime=t,this.zoomAtLastRecencyCheck=this.transform.zoom;const n=this.prevPlacement;let s=!1;this.prevZoomAdjustment=n?n.zoomAdjustment(this.transform.zoom):0;const c=n?n.symbolFadeChange(t):1,h=n?n.opacities:{},g=n?n.variableOffsets:{},_=n?n.placedOrientations:{};for(const x in this.placements){const w=this.placements[x],T=h[x];T?(this.opacities[x]=new ie(T,c,w.text,w.icon),s=s||w.text!==T.text.placed||w.icon!==T.icon.placed):(this.opacities[x]=new ie(null,c,w.text,w.icon,w.skipFade),s=s||w.text||w.icon)}for(const x in h){const w=h[x];if(!this.opacities[x]){const T=new ie(w,c,!1,!1);T.isHidden()||(this.opacities[x]=T,s=s||w.text.placed||w.icon.placed)}}for(const x in g)this.variableOffsets[x]||!this.opacities[x]||this.opacities[x].isHidden()||(this.variableOffsets[x]=g[x]);for(const x in _)this.placedOrientations[x]||!this.opacities[x]||this.opacities[x].isHidden()||(this.placedOrientations[x]=_[x]);if(n&&n.lastPlacementChangeTime===void 0)throw new Error("Last placement time for previous placement is not defined");s?this.lastPlacementChangeTime=t:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=n?n.lastPlacementChangeTime:t)}updateLayerOpacities(t,n){const s={};for(const c of n){const h=c.getBucket(t);h&&c.latestFeatureIndex&&t.id===h.layerIds[0]&&this.updateBucketOpacities(h,s,c.collisionBoxArray)}}updateBucketOpacities(t,n,s){t.hasTextData()&&(t.text.opacityVertexArray.clear(),t.text.hasVisibleVertices=!1),t.hasIconData()&&(t.icon.opacityVertexArray.clear(),t.icon.hasVisibleVertices=!1),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexArray.clear(),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexArray.clear();const c=t.layers[0],h=c.layout,g=new ie(null,0,!1,!1,!0),_=h.get("text-allow-overlap"),x=h.get("icon-allow-overlap"),w=c._unevaluatedLayout.hasValue("text-variable-anchor")||c._unevaluatedLayout.hasValue("text-variable-anchor-offset"),T=h.get("text-rotation-alignment")==="map",I=h.get("text-pitch-alignment")==="map",P=h.get("icon-text-fit")!=="none",V=new ie(null,0,_&&(x||!t.hasIconData()||h.get("icon-optional")),x&&(_||!t.hasTextData()||h.get("text-optional")),!0);!t.collisionArrays&&s&&(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData())&&t.deserializeCollisionBoxes(s);const N=($,B,ee)=>{for(let se=0;se<B/4;se++)$.opacityVertexArray.emplaceBack(ee);$.hasVisibleVertices=$.hasVisibleVertices||ee!==nr};for(let $=0;$<t.symbolInstances.length;$++){const B=t.symbolInstances.get($),{numHorizontalGlyphVertices:ee,numVerticalGlyphVertices:se,crossTileID:G}=B;let te=this.opacities[G];n[G]?te=g:te||(te=V,this.opacities[G]=te),n[G]=!0;const ce=B.numIconVertices>0,ue=this.placedOrientations[B.crossTileID],fe=ue===l.ai.vertical,ve=ue===l.ai.horizontal||ue===l.ai.horizontalOnly;if(ee>0||se>0){const xe=ci(te.text);N(t.text,ee,fe?nr:xe),N(t.text,se,ve?nr:xe);const Se=te.text.isHidden();[B.rightJustifiedTextSymbolIndex,B.centerJustifiedTextSymbolIndex,B.leftJustifiedTextSymbolIndex].forEach((Ce=>{Ce>=0&&(t.text.placedSymbolArray.get(Ce).hidden=Se||fe?1:0)})),B.verticalPlacedTextSymbolIndex>=0&&(t.text.placedSymbolArray.get(B.verticalPlacedTextSymbolIndex).hidden=Se||ve?1:0);const Ne=this.variableOffsets[B.crossTileID];Ne&&this.markUsedJustification(t,Ne.anchor,B,ue);const ot=this.placedOrientations[B.crossTileID];ot&&(this.markUsedJustification(t,"left",B,ot),this.markUsedOrientation(t,ot,B))}if(ce){const xe=ci(te.icon),Se=!(P&&B.verticalPlacedIconSymbolIndex&&fe);B.placedIconSymbolIndex>=0&&(N(t.icon,B.numIconVertices,Se?xe:nr),t.icon.placedSymbolArray.get(B.placedIconSymbolIndex).hidden=te.icon.isHidden()),B.verticalPlacedIconSymbolIndex>=0&&(N(t.icon,B.numVerticalIconVertices,Se?nr:xe),t.icon.placedSymbolArray.get(B.verticalPlacedIconSymbolIndex).hidden=te.icon.isHidden())}if(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData()){const xe=t.collisionArrays[$];if(xe){let Se=new l.P(0,0);if(xe.textBox||xe.verticalTextBox){let ot=!0;if(w){const Ce=this.variableOffsets[G];Ce?(Se=Qe(Ce.anchor,Ce.width,Ce.height,Ce.textOffset,Ce.textBoxScale),T&&Se._rotate(I?this.transform.angle:-this.transform.angle)):ot=!1}xe.textBox&&tt(t.textCollisionBox.collisionVertexArray,te.text.placed,!ot||fe,Se.x,Se.y),xe.verticalTextBox&&tt(t.textCollisionBox.collisionVertexArray,te.text.placed,!ot||ve,Se.x,Se.y)}const Ne=!!(!ve&&xe.verticalIconBox);xe.iconBox&&tt(t.iconCollisionBox.collisionVertexArray,te.icon.placed,Ne,P?Se.x:0,P?Se.y:0),xe.verticalIconBox&&tt(t.iconCollisionBox.collisionVertexArray,te.icon.placed,!Ne,P?Se.x:0,P?Se.y:0)}}}if(t.sortFeatures(this.transform.angle),this.retainedQueryData[t.bucketInstanceId]&&(this.retainedQueryData[t.bucketInstanceId].featureSortOrder=t.featureSortOrder),t.hasTextData()&&t.text.opacityVertexBuffer&&t.text.opacityVertexBuffer.updateData(t.text.opacityVertexArray),t.hasIconData()&&t.icon.opacityVertexBuffer&&t.icon.opacityVertexBuffer.updateData(t.icon.opacityVertexArray),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexBuffer&&t.iconCollisionBox.collisionVertexBuffer.updateData(t.iconCollisionBox.collisionVertexArray),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexBuffer&&t.textCollisionBox.collisionVertexBuffer.updateData(t.textCollisionBox.collisionVertexArray),t.text.opacityVertexArray.length!==t.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${t.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${t.text.layoutVertexArray.length}) / 4`);if(t.icon.opacityVertexArray.length!==t.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${t.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${t.icon.layoutVertexArray.length}) / 4`);if(t.bucketInstanceId in this.collisionCircleArrays){const $=this.collisionCircleArrays[t.bucketInstanceId];t.placementInvProjMatrix=$.invProjMatrix,t.placementViewportMatrix=$.viewportMatrix,t.collisionCircleArray=$.circles,delete this.collisionCircleArrays[t.bucketInstanceId]}}symbolFadeChange(t){return this.fadeDuration===0?1:(t-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(t){return Math.max(0,(this.transform.zoom-t)/1.5)}hasTransitions(t){return this.stale||t-this.lastPlacementChangeTime<this.fadeDuration}stillRecent(t,n){const s=this.zoomAtLastRecencyCheck===n?1-this.zoomAdjustment(n):1;return this.zoomAtLastRecencyCheck=n,this.commitTime+this.fadeDuration*s>t}setStale(){this.stale=!0}}function tt(u,t,n,s,c){u.emplaceBack(t?1:0,n?1:0,s||0,c||0),u.emplaceBack(t?1:0,n?1:0,s||0,c||0),u.emplaceBack(t?1:0,n?1:0,s||0,c||0),u.emplaceBack(t?1:0,n?1:0,s||0,c||0)}const yt=Math.pow(2,25),wt=Math.pow(2,24),dt=Math.pow(2,17),pt=Math.pow(2,16),mi=Math.pow(2,9),It=Math.pow(2,8),Wt=Math.pow(2,1);function ci(u){if(u.opacity===0&&!u.placed)return 0;if(u.opacity===1&&u.placed)return 4294967295;const t=u.placed?1:0,n=Math.floor(127*u.opacity);return n*yt+t*wt+n*dt+t*pt+n*mi+t*It+n*Wt+t}const nr=0;class Go{constructor(t){this._sortAcrossTiles=t.layout.get("symbol-z-order")!=="viewport-y"&&!t.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(t,n,s,c,h){const g=this._bucketParts;for(;this._currentTileIndex<t.length;)if(n.getBucketParts(g,c,t[this._currentTileIndex],this._sortAcrossTiles),this._currentTileIndex++,h())return!0;for(this._sortAcrossTiles&&(this._sortAcrossTiles=!1,g.sort(((_,x)=>_.sortKey-x.sortKey)));this._currentPartIndex<g.length;)if(n.placeLayerBucketPart(g[this._currentPartIndex],this._seenCrossTileIDs,s),this._currentPartIndex++,h())return!0;return!1}}class Un{constructor(t,n,s,c,h,g,_,x){this.placement=new Xe(t,n,g,_,x),this._currentPlacementIndex=s.length-1,this._forceFullPlacement=c,this._showCollisionBoxes=h,this._done=!1}isDone(){return this._done}continuePlacement(t,n,s){const c=l.h.now(),h=()=>!this._forceFullPlacement&&l.h.now()-c>2;for(;this._currentPlacementIndex>=0;){const g=n[t[this._currentPlacementIndex]],_=this.placement.collisionIndex.transform.zoom;if(g.type==="symbol"&&(!g.minzoom||g.minzoom<=_)&&(!g.maxzoom||g.maxzoom>_)){if(this._inProgressLayer||(this._inProgressLayer=new Go(g)),this._inProgressLayer.continuePlacement(s[g.source],this.placement,this._showCollisionBoxes,g,h))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(t){return this.placement.commit(t),this.placement}}const $n=512/l.N/2;class dc{constructor(t,n,s){this.tileID=t,this.bucketInstanceId=s,this._symbolsByKey={};const c=new Map;for(let h=0;h<n.length;h++){const g=n.get(h),_=g.key,x=c.get(_);x?x.push(g):c.set(_,[g])}for(const[h,g]of c){const _={positions:g.map((x=>({x:Math.floor(x.anchorX*$n),y:Math.floor(x.anchorY*$n)}))),crossTileIDs:g.map((x=>x.crossTileID))};if(_.positions.length>128){const x=new l.av(_.positions.length,16,Uint16Array);for(const{x:w,y:T}of _.positions)x.add(w,T);x.finish(),delete _.positions,_.index=x}this._symbolsByKey[h]=_}}getScaledCoordinates(t,n){const{x:s,y:c,z:h}=this.tileID.canonical,{x:g,y:_,z:x}=n.canonical,w=$n/Math.pow(2,x-h),T=(_*l.N+t.anchorY)*w,I=c*l.N*$n;return{x:Math.floor((g*l.N+t.anchorX)*w-s*l.N*$n),y:Math.floor(T-I)}}findMatches(t,n,s){const c=this.tileID.canonical.z<n.canonical.z?1:Math.pow(2,this.tileID.canonical.z-n.canonical.z);for(let h=0;h<t.length;h++){const g=t.get(h);if(g.crossTileID)continue;const _=this._symbolsByKey[g.key];if(!_)continue;const x=this.getScaledCoordinates(g,n);if(_.index){const w=_.index.range(x.x-c,x.y-c,x.x+c,x.y+c).sort();for(const T of w){const I=_.crossTileIDs[T];if(!s[I]){s[I]=!0,g.crossTileID=I;break}}}else if(_.positions)for(let w=0;w<_.positions.length;w++){const T=_.positions[w],I=_.crossTileIDs[w];if(Math.abs(T.x-x.x)<=c&&Math.abs(T.y-x.y)<=c&&!s[I]){s[I]=!0,g.crossTileID=I;break}}}}getCrossTileIDsLists(){return Object.values(this._symbolsByKey).map((({crossTileIDs:t})=>t))}}class vt{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class zs{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(t){const n=Math.round((t-this.lng)/360);if(n!==0)for(const s in this.indexes){const c=this.indexes[s],h={};for(const g in c){const _=c[g];_.tileID=_.tileID.unwrapTo(_.tileID.wrap+n),h[_.tileID.key]=_}this.indexes[s]=h}this.lng=t}addBucket(t,n,s){if(this.indexes[t.overscaledZ]&&this.indexes[t.overscaledZ][t.key]){if(this.indexes[t.overscaledZ][t.key].bucketInstanceId===n.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(t.overscaledZ,this.indexes[t.overscaledZ][t.key])}for(let h=0;h<n.symbolInstances.length;h++)n.symbolInstances.get(h).crossTileID=0;this.usedCrossTileIDs[t.overscaledZ]||(this.usedCrossTileIDs[t.overscaledZ]={});const c=this.usedCrossTileIDs[t.overscaledZ];for(const h in this.indexes){const g=this.indexes[h];if(Number(h)>t.overscaledZ)for(const _ in g){const x=g[_];x.tileID.isChildOf(t)&&x.findMatches(n.symbolInstances,t,c)}else{const _=g[t.scaledTo(Number(h)).key];_&&_.findMatches(n.symbolInstances,t,c)}}for(let h=0;h<n.symbolInstances.length;h++){const g=n.symbolInstances.get(h);g.crossTileID||(g.crossTileID=s.generate(),c[g.crossTileID]=!0)}return this.indexes[t.overscaledZ]===void 0&&(this.indexes[t.overscaledZ]={}),this.indexes[t.overscaledZ][t.key]=new dc(t,n.symbolInstances,n.bucketInstanceId),!0}removeBucketCrossTileIDs(t,n){for(const s of n.getCrossTileIDsLists())for(const c of s)delete this.usedCrossTileIDs[t][c]}removeStaleBuckets(t){let n=!1;for(const s in this.indexes){const c=this.indexes[s];for(const h in c)t[c[h].bucketInstanceId]||(this.removeBucketCrossTileIDs(s,c[h]),delete c[h],n=!0)}return n}}class Va{constructor(){this.layerIndexes={},this.crossTileIDs=new vt,this.maxBucketInstanceId=0,this.bucketsInCurrentPlacement={}}addLayer(t,n,s){let c=this.layerIndexes[t.id];c===void 0&&(c=this.layerIndexes[t.id]=new zs);let h=!1;const g={};c.handleWrapJump(s);for(const _ of n){const x=_.getBucket(t);x&&t.id===x.layerIds[0]&&(x.bucketInstanceId||(x.bucketInstanceId=++this.maxBucketInstanceId),c.addBucket(_.tileID,x,this.crossTileIDs)&&(h=!0),g[x.bucketInstanceId]=!0)}return c.removeStaleBuckets(g)&&(h=!0),h}pruneUnusedLayers(t){const n={};t.forEach((s=>{n[s]=!0}));for(const s in this.layerIndexes)n[s]||delete this.layerIndexes[s]}}const gi=(u,t)=>l.x(u,t&&t.filter((n=>n.identifier!=="source.canvas"))),ji=l.F(l.ax,["addLayer","removeLayer","setPaintProperty","setLayoutProperty","setFilter","addSource","removeSource","setLayerZoomRange","setLight","setTransition","setGeoJSONSourceData","setGlyphs","setSprite"]),fc=l.F(l.ax,["setCenter","setZoom","setBearing","setPitch"]),ar=l.aw();class ui extends l.E{constructor(t,n={}){super(),this.map=t,this.dispatcher=new ca(Na(),this,t._getMapId()),this.imageManager=new xt,this.imageManager.setEventedParent(this),this.glyphManager=new Mr(t._requestManager,n.localIdeographFontFamily),this.lineAtlas=new Oa(256,512),this.crossTileSymbolIndex=new Va,this._spritesImagesIds={},this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new l.ay,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast("setReferrer",l.az());const s=this;this._rtlTextPluginCallback=ui.registerForPluginStateChange((c=>{s.dispatcher.broadcast("syncRTLPluginState",{pluginStatus:c.pluginStatus,pluginURL:c.pluginURL},((h,g)=>{if(l.aA(h),g&&g.every((_=>_)))for(const _ in s.sourceCaches){const x=s.sourceCaches[_].getSource().type;x!=="vector"&&x!=="geojson"||s.sourceCaches[_].reload()}}))})),this.on("data",(c=>{if(c.dataType!=="source"||c.sourceDataType!=="metadata")return;const h=this.sourceCaches[c.sourceId];if(!h)return;const g=h.getSource();if(g&&g.vectorLayerIds)for(const _ in this._layers){const x=this._layers[_];x.source===g.id&&this._validateLayer(x)}}))}loadURL(t,n={},s){this.fire(new l.k("dataloading",{dataType:"style"})),n.validate=typeof n.validate!="boolean"||n.validate;const c=this.map._requestManager.transformRequest(t,Be.Style);this._request=l.f(c,((h,g)=>{this._request=null,h?this.fire(new l.j(h)):g&&this._load(g,n,s)}))}loadJSON(t,n={},s){this.fire(new l.k("dataloading",{dataType:"style"})),this._request=l.h.frame((()=>{this._request=null,n.validate=n.validate!==!1,this._load(t,n,s)}))}loadEmpty(){this.fire(new l.k("dataloading",{dataType:"style"})),this._load(ar,{validate:!1})}_load(t,n,s){var c;const h=n.transformStyle?n.transformStyle(s,t):t;if(!n.validate||!gi(this,l.y(h))){this._loaded=!0,this.stylesheet=h;for(const g in h.sources)this.addSource(g,h.sources[g],{validate:!1});h.sprite?this._loadSprite(h.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(h.glyphs),this._createLayers(),this.light=new la(this.stylesheet.light),this.map.setTerrain((c=this.stylesheet.terrain)!==null&&c!==void 0?c:null),this.fire(new l.k("data",{dataType:"style"})),this.fire(new l.k("style.load"))}}_createLayers(){const t=l.aB(this.stylesheet.layers);this.dispatcher.broadcast("setLayers",t),this._order=t.map((n=>n.id)),this._layers={},this._serializedLayers=null;for(const n of t){const s=l.aC(n);s.setEventedParent(this,{layer:{id:n.id}}),this._layers[n.id]=s}}_loadSprite(t,n=!1,s=void 0){this.imageManager.setLoaded(!1),this._spriteRequest=(function(c,h,g,_){const x=Yt(c),w=x.length,T=g>1?"@2x":"",I={},P={},V={};for(const{id:N,url:$}of x){const B=h.transformRequest(h.normalizeSpriteURL($,T,".json"),Be.SpriteJSON),ee=`${N}_${B.url}`;I[ee]=l.f(B,((te,ce)=>{delete I[ee],P[N]=ce,Rn(_,P,V,te,w)}));const se=h.transformRequest(h.normalizeSpriteURL($,T,".png"),Be.SpriteImage),G=`${N}_${se.url}`;I[G]=qe.getImage(se,((te,ce)=>{delete I[G],V[N]=ce,Rn(_,P,V,te,w)}))}return{cancel(){for(const N of Object.values(I))N.cancel()}}})(t,this.map._requestManager,this.map.getPixelRatio(),((c,h)=>{if(this._spriteRequest=null,c)this.fire(new l.j(c));else if(h)for(const g in h){this._spritesImagesIds[g]=[];const _=this._spritesImagesIds[g]?this._spritesImagesIds[g].filter((x=>!(x in h))):[];for(const x of _)this.imageManager.removeImage(x),this._changedImages[x]=!0;for(const x in h[g]){const w=g==="default"?x:`${g}:${x}`;this._spritesImagesIds[g].push(w),w in this.imageManager.images?this.imageManager.updateImage(w,h[g][x],!1):this.imageManager.addImage(w,h[g][x]),n&&(this._changedImages[w]=!0)}}this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),n&&(this._changed=!0),this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new l.k("data",{dataType:"style"})),s&&s(c)}))}_unloadSprite(){for(const t of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(t),this._changedImages[t]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new l.k("data",{dataType:"style"}))}_validateLayer(t){const n=this.sourceCaches[t.source];if(!n)return;const s=t.sourceLayer;if(!s)return;const c=n.getSource();(c.type==="geojson"||c.vectorLayerIds&&c.vectorLayerIds.indexOf(s)===-1)&&this.fire(new l.j(new Error(`Source layer "${s}" does not exist on source "${c.id}" as specified by style layer "${t.id}".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(const t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeByIds(t){const n=this._serializedAllLayers();if(!t||t.length===0)return Object.values(n);const s=[];for(const c of t)n[c]&&s.push(n[c]);return s}_serializedAllLayers(){let t=this._serializedLayers;if(t)return t;t=this._serializedLayers={};const n=Object.keys(this._layers);for(const s of n){const c=this._layers[s];c.type!=="custom"&&(t[s]=c.serialize())}return t}hasTransitions(){if(this.light&&this.light.hasTransition())return!0;for(const t in this.sourceCaches)if(this.sourceCaches[t].hasTransition())return!0;for(const t in this._layers)if(this._layers[t].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(t){if(!this._loaded)return;const n=this._changed;if(this._changed){const c=Object.keys(this._updatedLayers),h=Object.keys(this._removedLayers);(c.length||h.length)&&this._updateWorkerLayers(c,h);for(const g in this._updatedSources){const _=this._updatedSources[g];if(_==="reload")this._reloadSource(g);else{if(_!=="clear")throw new Error(`Invalid action ${_}`);this._clearSource(g)}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(const g in this._updatedPaintProps)this._layers[g].updateTransitions(t);this.light.updateTransitions(t),this._resetUpdates()}const s={};for(const c in this.sourceCaches){const h=this.sourceCaches[c];s[c]=h.used,h.used=!1}for(const c of this._order){const h=this._layers[c];h.recalculate(t,this._availableImages),!h.isHidden(t.zoom)&&h.source&&(this.sourceCaches[h.source].used=!0)}for(const c in s){const h=this.sourceCaches[c];s[c]!==h.used&&h.fire(new l.k("data",{sourceDataType:"visibility",dataType:"source",sourceId:c}))}this.light.recalculate(t),this.z=t.zoom,n&&this.fire(new l.k("data",{dataType:"style"}))}_updateTilesForChangedImages(){const t=Object.keys(this._changedImages);if(t.length){for(const n in this.sourceCaches)this.sourceCaches[n].reloadTilesForDependencies(["icons","patterns"],t);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(const t in this.sourceCaches)this.sourceCaches[t].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1}}_updateWorkerLayers(t,n){this.dispatcher.broadcast("updateLayers",{layers:this._serializeByIds(t),removedIds:n})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(t,n={}){this._checkLoaded();const s=this.serialize();if(t=n.transformStyle?n.transformStyle(s,t):t,gi(this,l.y(t)))return!1;(t=l.aD(t)).layers=l.aB(t.layers);const c=l.aE(s,t).filter((g=>!(g.command in fc)));if(c.length===0)return!1;const h=c.filter((g=>!(g.command in ji)));if(h.length>0)throw new Error(`Unimplemented: ${h.map((g=>g.command)).join(", ")}.`);for(const g of c)g.command!=="setTransition"&&this[g.command].apply(this,g.args);return this.stylesheet=t,this._serializedLayers=null,!0}addImage(t,n){if(this.getImage(t))return this.fire(new l.j(new Error(`An image named "${t}" already exists.`)));this.imageManager.addImage(t,n),this._afterImageUpdated(t)}updateImage(t,n){this.imageManager.updateImage(t,n)}getImage(t){return this.imageManager.getImage(t)}removeImage(t){if(!this.getImage(t))return this.fire(new l.j(new Error(`An image named "${t}" does not exist.`)));this.imageManager.removeImage(t),this._afterImageUpdated(t)}_afterImageUpdated(t){this._availableImages=this.imageManager.listImages(),this._changedImages[t]=!0,this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new l.k("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(t,n,s={}){if(this._checkLoaded(),this.sourceCaches[t]!==void 0)throw new Error(`Source "${t}" already exists.`);if(!n.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(n).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(n.type)>=0&&this._validate(l.y.source,`sources.${t}`,n,null,s))return;this.map&&this.map._collectResourceTiming&&(n.collectResourceTiming=!0);const c=this.sourceCaches[t]=new zi(t,n,this.dispatcher);c.style=this,c.setEventedParent(this,(()=>({isSourceLoaded:c.loaded(),source:c.serialize(),sourceId:t}))),c.onAdd(this.map),this._changed=!0}removeSource(t){if(this._checkLoaded(),this.sourceCaches[t]===void 0)throw new Error("There is no source with this ID");for(const s in this._layers)if(this._layers[s].source===t)return this.fire(new l.j(new Error(`Source "${t}" cannot be removed while layer "${s}" is using it.`)));const n=this.sourceCaches[t];delete this.sourceCaches[t],delete this._updatedSources[t],n.fire(new l.k("data",{sourceDataType:"metadata",dataType:"source",sourceId:t})),n.setEventedParent(null),n.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(t,n){if(this._checkLoaded(),this.sourceCaches[t]===void 0)throw new Error(`There is no source with this ID=${t}`);const s=this.sourceCaches[t].getSource();if(s.type!=="geojson")throw new Error(`geojsonSource.type is ${s.type}, which is !== 'geojson`);s.setData(n),this._changed=!0}getSource(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()}addLayer(t,n,s={}){this._checkLoaded();const c=t.id;if(this.getLayer(c))return void this.fire(new l.j(new Error(`Layer "${c}" already exists on this map.`)));let h;if(t.type==="custom"){if(gi(this,l.aF(t)))return;h=l.aC(t)}else{if("source"in t&&typeof t.source=="object"&&(this.addSource(c,t.source),t=l.aD(t),t=l.e(t,{source:c})),this._validate(l.y.layer,`layers.${c}`,t,{arrayIndex:-1},s))return;h=l.aC(t),this._validateLayer(h),h.setEventedParent(this,{layer:{id:c}})}const g=n?this._order.indexOf(n):this._order.length;if(n&&g===-1)this.fire(new l.j(new Error(`Cannot add layer "${c}" before non-existing layer "${n}".`)));else{if(this._order.splice(g,0,c),this._layerOrderChanged=!0,this._layers[c]=h,this._removedLayers[c]&&h.source&&h.type!=="custom"){const _=this._removedLayers[c];delete this._removedLayers[c],_.type!==h.type?this._updatedSources[h.source]="clear":(this._updatedSources[h.source]="reload",this.sourceCaches[h.source].pause())}this._updateLayer(h),h.onAdd&&h.onAdd(this.map)}}moveLayer(t,n){if(this._checkLoaded(),this._changed=!0,!this._layers[t])return void this.fire(new l.j(new Error(`The layer '${t}' does not exist in the map's style and cannot be moved.`)));if(t===n)return;const s=this._order.indexOf(t);this._order.splice(s,1);const c=n?this._order.indexOf(n):this._order.length;n&&c===-1?this.fire(new l.j(new Error(`Cannot move layer "${t}" before non-existing layer "${n}".`))):(this._order.splice(c,0,t),this._layerOrderChanged=!0)}removeLayer(t){this._checkLoaded();const n=this._layers[t];if(!n)return void this.fire(new l.j(new Error(`Cannot remove non-existing layer "${t}".`)));n.setEventedParent(null);const s=this._order.indexOf(t);this._order.splice(s,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[t]=n,delete this._layers[t],this._serializedLayers&&delete this._serializedLayers[t],delete this._updatedLayers[t],delete this._updatedPaintProps[t],n.onRemove&&n.onRemove(this.map)}getLayer(t){return this._layers[t]}getLayersOrder(){return[...this._order]}hasLayer(t){return t in this._layers}setLayerZoomRange(t,n,s){this._checkLoaded();const c=this.getLayer(t);c?c.minzoom===n&&c.maxzoom===s||(n!=null&&(c.minzoom=n),s!=null&&(c.maxzoom=s),this._updateLayer(c)):this.fire(new l.j(new Error(`Cannot set the zoom range of non-existing layer "${t}".`)))}setFilter(t,n,s={}){this._checkLoaded();const c=this.getLayer(t);if(c){if(!l.aG(c.filter,n))return n==null?(c.filter=void 0,void this._updateLayer(c)):void(this._validate(l.y.filter,`layers.${c.id}.filter`,n,null,s)||(c.filter=l.aD(n),this._updateLayer(c)))}else this.fire(new l.j(new Error(`Cannot filter non-existing layer "${t}".`)))}getFilter(t){return l.aD(this.getLayer(t).filter)}setLayoutProperty(t,n,s,c={}){this._checkLoaded();const h=this.getLayer(t);h?l.aG(h.getLayoutProperty(n),s)||(h.setLayoutProperty(n,s,c),this._updateLayer(h)):this.fire(new l.j(new Error(`Cannot style non-existing layer "${t}".`)))}getLayoutProperty(t,n){const s=this.getLayer(t);if(s)return s.getLayoutProperty(n);this.fire(new l.j(new Error(`Cannot get style of non-existing layer "${t}".`)))}setPaintProperty(t,n,s,c={}){this._checkLoaded();const h=this.getLayer(t);h?l.aG(h.getPaintProperty(n),s)||(h.setPaintProperty(n,s,c)&&this._updateLayer(h),this._changed=!0,this._updatedPaintProps[t]=!0):this.fire(new l.j(new Error(`Cannot style non-existing layer "${t}".`)))}getPaintProperty(t,n){return this.getLayer(t).getPaintProperty(n)}setFeatureState(t,n){this._checkLoaded();const s=t.source,c=t.sourceLayer,h=this.sourceCaches[s];if(h===void 0)return void this.fire(new l.j(new Error(`The source '${s}' does not exist in the map's style.`)));const g=h.getSource().type;g==="geojson"&&c?this.fire(new l.j(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):g!=="vector"||c?(t.id===void 0&&this.fire(new l.j(new Error("The feature id parameter must be provided."))),h.setFeatureState(c,t.id,n)):this.fire(new l.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}removeFeatureState(t,n){this._checkLoaded();const s=t.source,c=this.sourceCaches[s];if(c===void 0)return void this.fire(new l.j(new Error(`The source '${s}' does not exist in the map's style.`)));const h=c.getSource().type,g=h==="vector"?t.sourceLayer:void 0;h!=="vector"||g?n&&typeof t.id!="string"&&typeof t.id!="number"?this.fire(new l.j(new Error("A feature id is required to remove its specific state property."))):c.removeFeatureState(g,t.id,n):this.fire(new l.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}getFeatureState(t){this._checkLoaded();const n=t.source,s=t.sourceLayer,c=this.sourceCaches[n];if(c!==void 0)return c.getSource().type!=="vector"||s?(t.id===void 0&&this.fire(new l.j(new Error("The feature id parameter must be provided."))),c.getFeatureState(s,t.id)):void this.fire(new l.j(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new l.j(new Error(`The source '${n}' does not exist in the map's style.`)))}getTransition(){return l.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;const t=l.aH(this.sourceCaches,(h=>h.serialize())),n=this._serializeByIds(this._order),s=this.map.getTerrain()||void 0,c=this.stylesheet;return l.aI({version:c.version,name:c.name,metadata:c.metadata,light:c.light,center:c.center,zoom:c.zoom,bearing:c.bearing,pitch:c.pitch,sprite:c.sprite,glyphs:c.glyphs,transition:c.transition,sources:t,layers:n,terrain:s},(h=>h!==void 0))}_updateLayer(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&this.sourceCaches[t.source].getSource().type!=="raster"&&(this._updatedSources[t.source]="reload",this.sourceCaches[t.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(t){const n=g=>this._layers[g].type==="fill-extrusion",s={},c=[];for(let g=this._order.length-1;g>=0;g--){const _=this._order[g];if(n(_)){s[_]=g;for(const x of t){const w=x[_];if(w)for(const T of w)c.push(T)}}}c.sort(((g,_)=>_.intersectionZ-g.intersectionZ));const h=[];for(let g=this._order.length-1;g>=0;g--){const _=this._order[g];if(n(_))for(let x=c.length-1;x>=0;x--){const w=c[x].feature;if(s[w.layer.id]<g)break;h.push(w),c.pop()}else for(const x of t){const w=x[_];if(w)for(const T of w)h.push(T.feature)}}return h}queryRenderedFeatures(t,n,s){n&&n.filter&&this._validate(l.y.filter,"queryRenderedFeatures.filter",n.filter,null,n);const c={};if(n&&n.layers){if(!Array.isArray(n.layers))return this.fire(new l.j(new Error("parameters.layers must be an Array."))),[];for(const _ of n.layers){const x=this._layers[_];if(!x)return this.fire(new l.j(new Error(`The layer '${_}' does not exist in the map's style and cannot be queried for features.`))),[];c[x.source]=!0}}const h=[];n.availableImages=this._availableImages;const g=this._serializedAllLayers();for(const _ in this.sourceCaches)n.layers&&!c[_]||h.push(dn(this.sourceCaches[_],this._layers,g,t,n,s));return this.placement&&h.push((function(_,x,w,T,I,P,V){const N={},$=P.queryRenderedSymbols(T),B=[];for(const ee of Object.keys($).map(Number))B.push(V[ee]);B.sort(Wr);for(const ee of B){const se=ee.featureIndex.lookupSymbolFeatures($[ee.bucketInstanceId],x,ee.bucketIndex,ee.sourceLayerIndex,I.filter,I.layers,I.availableImages,_);for(const G in se){const te=N[G]=N[G]||[],ce=se[G];ce.sort(((ue,fe)=>{const ve=ee.featureSortOrder;if(ve){const xe=ve.indexOf(ue.featureIndex);return ve.indexOf(fe.featureIndex)-xe}return fe.featureIndex-ue.featureIndex}));for(const ue of ce)te.push(ue)}}for(const ee in N)N[ee].forEach((se=>{const G=se.feature,te=w[_[ee].source].getFeatureState(G.layer["source-layer"],G.id);G.source=G.layer.source,G.layer["source-layer"]&&(G.sourceLayer=G.layer["source-layer"]),G.state=te}));return N})(this._layers,g,this.sourceCaches,t,n,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(h)}querySourceFeatures(t,n){n&&n.filter&&this._validate(l.y.filter,"querySourceFeatures.filter",n.filter,null,n);const s=this.sourceCaches[t];return s?(function(c,h){const g=c.getRenderableIds().map((w=>c.getTileByID(w))),_=[],x={};for(let w=0;w<g.length;w++){const T=g[w],I=T.tileID.canonical.key;x[I]||(x[I]=!0,T.querySourceFeatures(_,h))}return _})(s,n):[]}addSourceType(t,n,s){return Er(t)?s(new Error(`A source type called "${t}" already exists.`)):(((c,h)=>{ha[c]=h})(t,n),n.workerSourceURL?void this.dispatcher.broadcast("loadWorkerSource",{name:t,url:n.workerSourceURL},s):s(null,null))}getLight(){return this.light.getLight()}setLight(t,n={}){this._checkLoaded();const s=this.light.getLight();let c=!1;for(const g in t)if(!l.aG(t[g],s[g])){c=!0;break}if(!c)return;const h={now:l.h.now(),transition:l.e({duration:300,delay:0},this.stylesheet.transition)};this.light.setLight(t,n),this.light.updateTransitions(h)}_validate(t,n,s,c,h={}){return(!h||h.validate!==!1)&&gi(this,t.call(l.y,l.e({key:n,style:this.serialize(),value:s,styleSpec:l.v},c)))}_remove(t=!0){this._request&&(this._request.cancel(),this._request=null),this._spriteRequest&&(this._spriteRequest.cancel(),this._spriteRequest=null),l.aJ.off("pluginStateChange",this._rtlTextPluginCallback);for(const n in this._layers)this._layers[n].setEventedParent(null);for(const n in this.sourceCaches){const s=this.sourceCaches[n];s.setEventedParent(null),s.onRemove(this.map)}this.imageManager.setEventedParent(null),this.setEventedParent(null),this.dispatcher.remove(t)}_clearSource(t){this.sourceCaches[t].clearTiles()}_reloadSource(t){this.sourceCaches[t].resume(),this.sourceCaches[t].reload()}_updateSources(t){for(const n in this.sourceCaches)this.sourceCaches[n].update(t,this.map.terrain)}_generateCollisionBoxes(){for(const t in this.sourceCaches)this._reloadSource(t)}_updatePlacement(t,n,s,c,h=!1){let g=!1,_=!1;const x={};for(const w of this._order){const T=this._layers[w];if(T.type!=="symbol")continue;if(!x[T.source]){const P=this.sourceCaches[T.source];x[T.source]=P.getRenderableIds(!0).map((V=>P.getTileByID(V))).sort(((V,N)=>N.tileID.overscaledZ-V.tileID.overscaledZ||(V.tileID.isLessThan(N.tileID)?-1:1)))}const I=this.crossTileSymbolIndex.addLayer(T,x[T.source],t.center.lng);g=g||I}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((h=h||this._layerOrderChanged||s===0)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(l.h.now(),t.zoom))&&(this.pauseablePlacement=new Un(t,this.map.terrain,this._order,h,n,s,c,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,x),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(l.h.now()),_=!0),g&&this.pauseablePlacement.placement.setStale()),_||g)for(const w of this._order){const T=this._layers[w];T.type==="symbol"&&this.placement.updateLayerOpacities(T,x[T.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(l.h.now())}_releaseSymbolFadeTiles(){for(const t in this.sourceCaches)this.sourceCaches[t].releaseSymbolFadeTiles()}getImages(t,n,s){this.imageManager.getImages(n.icons,s),this._updateTilesForChangedImages();const c=this.sourceCaches[n.source];c&&c.setDependencies(n.tileID.key,n.type,n.icons)}getGlyphs(t,n,s){this.glyphManager.getGlyphs(n.stacks,s);const c=this.sourceCaches[n.source];c&&c.setDependencies(n.tileID.key,n.type,[""])}getResource(t,n,s){return l.m(n,s)}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(t,n={}){this._checkLoaded(),t&&this._validate(l.y.glyphs,"glyphs",t,null,n)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=t,this.glyphManager.entries={},this.glyphManager.setURL(t))}addSprite(t,n,s={},c){this._checkLoaded();const h=[{id:t,url:n}],g=[...Yt(this.stylesheet.sprite),...h];this._validate(l.y.sprite,"sprite",g,null,s)||(this.stylesheet.sprite=g,this._loadSprite(h,!0,c))}removeSprite(t){this._checkLoaded();const n=Yt(this.stylesheet.sprite);if(n.find((s=>s.id===t))){if(this._spritesImagesIds[t])for(const s of this._spritesImagesIds[t])this.imageManager.removeImage(s),this._changedImages[s]=!0;n.splice(n.findIndex((s=>s.id===t)),1),this.stylesheet.sprite=n.length>0?n:void 0,delete this._spritesImagesIds[t],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new l.k("data",{dataType:"style"}))}else this.fire(new l.j(new Error(`Sprite "${t}" doesn't exists on this map.`)))}getSprite(){return Yt(this.stylesheet.sprite)}setSprite(t,n={},s){this._checkLoaded(),t&&this._validate(l.y.sprite,"sprite",t,null,n)||(this.stylesheet.sprite=t,t?this._loadSprite(t,!0,s):(this._unloadSprite(),s&&s(null)))}}ui.registerForPluginStateChange=l.aK;var Ua=l.Q([{name:"a_pos",type:"Int16",components:2}]),jn="attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;varying float v_depth;void main() {float extent=8192.0;float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/extent;gl_Position=u_matrix*vec4(a_pos3d.xy,get_elevation(a_pos3d.xy)-ele_delta,1.0);v_depth=gl_Position.z/gl_Position.w;}";const Lt={prelude:mt(`#ifdef GL_ES
precision mediump float;
#else
#if !defined(lowp)
#define lowp
#endif
#if !defined(mediump)
#define mediump
#endif
#if !defined(highp)
#define highp
#endif
#endif
`,`#ifdef GL_ES
precision highp float;
#else
#if !defined(lowp)
#define lowp
#endif
#if !defined(mediump)
#define mediump
#endif
#if !defined(highp)
#define highp
#endif
#endif
vec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0
);}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;}
#ifdef TERRAIN3D
uniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth;
#endif
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) {
#ifdef TERRAIN3D
highp float d=unpack(texture2D(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0));
#else
return 1.0;
#endif
}float calculate_visibility(vec4 pos) {
#ifdef TERRAIN3D
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;
#else
return 1.0;
#endif
}float ele(vec2 pos) {
#ifdef TERRAIN3D
vec4 rgb=(texture2D(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;
#else
return 0.0;
#endif
}float get_elevation(vec2 pos) {
#ifdef TERRAIN3D
vec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration;
#else
return 0.0;
#endif
}`),background:mt(`uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),backgroundPattern:mt(`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;varying vec2 v_pos_a;varying 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=texture2D(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=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,"uniform mat4 u_matrix;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;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);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);}"),circle:mt(`varying vec3 v_data;varying float v_visibility;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define mediump float radius
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define highp vec4 stroke_color
#pragma mapbox: define mediump float stroke_width
#pragma mapbox: define lowp float stroke_opacity
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize mediump float radius
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize highp vec4 stroke_color
#pragma mapbox: initialize mediump float stroke_width
#pragma mapbox: initialize lowp float stroke_opacity
vec2 extrude=v_data.xy;float extrude_length=length(extrude);lowp float antialiasblur=v_data.z;float antialiased_blur=-max(blur,antialiasblur);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));gl_FragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;varying float v_visibility;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define mediump float radius
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define highp vec4 stroke_color
#pragma mapbox: define mediump float stroke_width
#pragma mapbox: define lowp float stroke_opacity
void main(void) {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize mediump float radius
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize highp vec4 stroke_color
#pragma mapbox: initialize mediump float stroke_width
#pragma mapbox: initialize lowp float stroke_opacity
vec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);float ele=get_elevation(circle_center);v_visibility=calculate_visibility(u_matrix*vec4(circle_center,ele,1.0));if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,ele,1);} else {gl_Position=u_matrix*vec4(circle_center,ele,1);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;}}lowp float antialiasblur=1.0/u_device_pixel_ratio/(radius+stroke_width);v_data=vec3(extrude.x,extrude.y,antialiasblur);}`),clippingMask:mt("void main() {gl_FragColor=vec4(1.0);}","attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),heatmap:mt(`uniform highp float u_intensity;varying vec2 v_extrude;
#pragma mapbox: define highp float weight
#define GAUSS_COEF 0.3989422804014327
void main() {
#pragma mapbox: initialize highp float weight
float d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude;
#pragma mapbox: define highp float weight
#pragma mapbox: define mediump float radius
const highp float ZERO=1.0/255.0/16.0;
#define GAUSS_COEF 0.3989422804014327
void main(void) {
#pragma mapbox: initialize highp float weight
#pragma mapbox: initialize mediump float radius
vec2 unscaled_extrude=vec2(mod(a_pos,2.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;vec4 pos=vec4(floor(a_pos*0.5)+extrude,0,1);gl_Position=u_matrix*pos;}`),heatmapTexture:mt(`uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(0.0);
#endif
}`,"uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}"),collisionBox:mt("varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}","attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,get_elevation(a_pos),1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}"),collisionCircle:mt("varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);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);gl_FragColor=color*alpha*opacity_t;}","attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;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;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),debug:mt("uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}","attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,get_elevation(a_pos),1);}"),fill:mt(`#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float opacity
gl_FragColor=color*opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`attribute vec2 a_pos;uniform mat4 u_matrix;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float opacity
gl_Position=u_matrix*vec4(a_pos,0,1);}`),fillOutline:mt(`varying vec2 v_pos;
#pragma mapbox: define highp vec4 outline_color
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 outline_color
#pragma mapbox: initialize lowp float opacity
float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;
#pragma mapbox: define highp vec4 outline_color
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 outline_color
#pragma mapbox: initialize lowp float opacity
gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillOutlinePattern:mt(`uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
void main() {
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
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=texture2D(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=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
#pragma mapbox: define lowp float pixel_ratio_from
#pragma mapbox: define lowp float pixel_ratio_to
void main() {
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
#pragma mapbox: initialize lowp float pixel_ratio_from
#pragma mapbox: initialize lowp float pixel_ratio_to
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=u_matrix*vec4(a_pos,0,1);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;}`),fillPattern:mt(`#ifdef GL_ES
precision highp float;
#endif
uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
void main() {
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
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=texture2D(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=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
#pragma mapbox: define lowp float pixel_ratio_from
#pragma mapbox: define lowp float pixel_ratio_to
void main() {
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
#pragma mapbox: initialize lowp float pixel_ratio_from
#pragma mapbox: initialize lowp float pixel_ratio_to
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=u_matrix*vec4(a_pos,0,1);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:mt(`varying vec4 v_color;void main() {gl_FragColor=v_color;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;
#ifdef TERRAIN3D
attribute vec2 a_centroid;
#endif
varying vec4 v_color;
#pragma mapbox: define highp float base
#pragma mapbox: define highp float height
#pragma mapbox: define highp vec4 color
void main() {
#pragma mapbox: initialize highp float base
#pragma mapbox: initialize highp float height
#pragma mapbox: initialize highp vec4 color
vec3 normal=a_normal_ed.xyz;
#ifdef TERRAIN3D
float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);
#else
float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;
#endif
base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);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;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(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:mt(`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;
#pragma mapbox: define lowp float base
#pragma mapbox: define lowp float height
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
#pragma mapbox: define lowp float pixel_ratio_from
#pragma mapbox: define lowp float pixel_ratio_to
void main() {
#pragma mapbox: initialize lowp float base
#pragma mapbox: initialize lowp float height
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
#pragma mapbox: initialize lowp float pixel_ratio_from
#pragma mapbox: initialize lowp float pixel_ratio_to
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=texture2D(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=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`uniform mat4 u_matrix;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 vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;
#ifdef TERRAIN3D
attribute vec2 a_centroid;
#endif
varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;
#pragma mapbox: define lowp float base
#pragma mapbox: define lowp float height
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
#pragma mapbox: define lowp float pixel_ratio_from
#pragma mapbox: define lowp float pixel_ratio_to
void main() {
#pragma mapbox: initialize lowp float base
#pragma mapbox: initialize lowp float height
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
#pragma mapbox: initialize lowp float pixel_ratio_from
#pragma mapbox: initialize lowp float pixel_ratio_to
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=a_normal_ed.xyz;float edgedistance=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;
#ifdef TERRAIN3D
float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);
#else
float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;
#endif
base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0
? a_pos
: vec2(edgedistance,z*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.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(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:mt(`#ifdef GL_ES
precision highp float;
#endif
uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);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))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying 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:mt(`uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;
#define PI 3.141592653589793
void main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;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_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}"),line:mt(`uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
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);gl_FragColor=color*(alpha*opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`
#define scale 0.015873016
attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define mediump float gapwidth
#pragma mapbox: define lowp float offset
#pragma mapbox: define mediump float width
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump float gapwidth
#pragma mapbox: initialize lowp float offset
#pragma mapbox: initialize mediump float width
float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;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 float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;
#ifdef TERRAIN3D
v_gamma_scale=1.0;
#else
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
#endif
v_width2=vec2(outset,inset);}`),lineGradient:mt(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv;
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
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=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`
#define scale 0.015873016
attribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv;
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define mediump float gapwidth
#pragma mapbox: define lowp float offset
#pragma mapbox: define mediump float width
void main() {
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump float gapwidth
#pragma mapbox: initialize lowp float offset
#pragma mapbox: initialize mediump float width
float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;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=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;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 float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;
#ifdef TERRAIN3D
v_gamma_scale=1.0;
#else
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
#endif
v_width2=vec2(outset,inset);}`),linePattern:mt(`#ifdef GL_ES
precision highp float;
#endif
uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
#pragma mapbox: define lowp float pixel_ratio_from
#pragma mapbox: define lowp float pixel_ratio_to
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
#pragma mapbox: initialize lowp float pixel_ratio_from
#pragma mapbox: initialize lowp float pixel_ratio_to
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
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(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`
#define scale 0.015873016
#define LINE_DISTANCE_SCALE 2.0
attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float offset
#pragma mapbox: define mediump float gapwidth
#pragma mapbox: define mediump float width
#pragma mapbox: define lowp float floorwidth
#pragma mapbox: define lowp vec4 pattern_from
#pragma mapbox: define lowp vec4 pattern_to
#pragma mapbox: define lowp float pixel_ratio_from
#pragma mapbox: define lowp float pixel_ratio_to
void main() {
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float offset
#pragma mapbox: initialize mediump float gapwidth
#pragma mapbox: initialize mediump float width
#pragma mapbox: initialize lowp float floorwidth
#pragma mapbox: initialize mediump vec4 pattern_from
#pragma mapbox: initialize mediump vec4 pattern_to
#pragma mapbox: initialize lowp float pixel_ratio_from
#pragma mapbox: initialize lowp float pixel_ratio_to
float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;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 float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;
#ifdef TERRAIN3D
v_gamma_scale=1.0;
#else
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
#endif
v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`),lineSDF:mt(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define mediump float width
#pragma mapbox: define lowp float floorwidth
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump float width
#pragma mapbox: initialize lowp float floorwidth
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=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`
#define scale 0.015873016
#define LINE_DISTANCE_SCALE 2.0
attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;
#pragma mapbox: define highp vec4 color
#pragma mapbox: define lowp float blur
#pragma mapbox: define lowp float opacity
#pragma mapbox: define mediump float gapwidth
#pragma mapbox: define lowp float offset
#pragma mapbox: define mediump float width
#pragma mapbox: define lowp float floorwidth
void main() {
#pragma mapbox: initialize highp vec4 color
#pragma mapbox: initialize lowp float blur
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize mediump float gapwidth
#pragma mapbox: initialize lowp float offset
#pragma mapbox: initialize mediump float width
#pragma mapbox: initialize lowp float floorwidth
float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;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 float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;
#ifdef TERRAIN3D
v_gamma_scale=1.0;
#else
float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;
#endif
v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}`),raster:mt(`uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 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=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);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);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}"),symbolIcon:mt(`uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize lowp float opacity
lowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;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 highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;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;varying vec2 v_tex;varying float v_fade_opacity;
#pragma mapbox: define lowp float opacity
void main() {
#pragma mapbox: initialize lowp float opacity
vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);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;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?
camera_to_anchor_distance/u_camera_to_center_distance :
u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);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=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),z,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float visibility=calculate_visibility(projectedPoint);v_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));}`),symbolSDF:mt(`#define SDF_PX 8.0
uniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;
#pragma mapbox: define highp vec4 fill_color
#pragma mapbox: define highp vec4 halo_color
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float halo_width
#pragma mapbox: define lowp float halo_blur
void main() {
#pragma mapbox: initialize highp vec4 fill_color
#pragma mapbox: initialize highp vec4 halo_color
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float halo_width
#pragma mapbox: initialize lowp float halo_blur
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 fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);inner_edge=inner_edge+gamma*gamma_scale;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);if (u_is_halo) {lowp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha=min(smoothstep(halo_edge-gamma_scaled,halo_edge+gamma_scaled,dist),1.0-alpha);}gl_FragColor=color*(alpha*opacity*fade_opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;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_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;
#pragma mapbox: define highp vec4 fill_color
#pragma mapbox: define highp vec4 halo_color
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float halo_width
#pragma mapbox: define lowp float halo_blur
void main() {
#pragma mapbox: initialize highp vec4 fill_color
#pragma mapbox: initialize highp vec4 halo_color
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float halo_width
#pragma mapbox: initialize lowp float halo_blur
vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;float ele=get_elevation(a_pos);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;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?
camera_to_anchor_distance/u_camera_to_center_distance :
u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);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=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),z,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}`),symbolTextAndIcon:mt(`#define SDF_PX 8.0
#define SDF 1.0
#define ICON 0.0
uniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;
#pragma mapbox: define highp vec4 fill_color
#pragma mapbox: define highp vec4 halo_color
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float halo_width
#pragma mapbox: define lowp float halo_blur
void main() {
#pragma mapbox: initialize highp vec4 fill_color
#pragma mapbox: initialize highp vec4 halo_color
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float halo_width
#pragma mapbox: initialize lowp float halo_blur
float fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
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;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);
#ifdef OVERDRAW_INSPECTOR
gl_FragColor=vec4(1.0);
#endif
}`,`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;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_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;
#pragma mapbox: define highp vec4 fill_color
#pragma mapbox: define highp vec4 halo_color
#pragma mapbox: define lowp float opacity
#pragma mapbox: define lowp float halo_width
#pragma mapbox: define lowp float halo_blur
void main() {
#pragma mapbox: initialize highp vec4 fill_color
#pragma mapbox: initialize highp vec4 halo_color
#pragma mapbox: initialize lowp float opacity
#pragma mapbox: initialize lowp float halo_width
#pragma mapbox: initialize lowp float halo_blur
vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);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;}vec4 projectedPoint=u_matrix*vec4(a_pos,ele,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?
camera_to_anchor_distance/u_camera_to_center_distance :
u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),ele,1);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=u_label_plane_matrix*vec4(a_projected_pos.xy,ele,1.0);float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),z,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`),terrain:mt("uniform sampler2D u_texture;varying vec2 v_texture_pos;void main() {gl_FragColor=texture2D(u_texture,v_texture_pos);}",jn),terrainDepth:mt("varying 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() {gl_FragColor=pack(v_depth);}",jn),terrainCoords:mt("precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;varying vec2 v_texture_pos;void main() {vec4 rgba=texture2D(u_texture,v_texture_pos);gl_FragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}",jn)};function mt(u,t){const n=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,s=t.match(/attribute ([\w]+) ([\w]+)/g),c=u.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),h=t.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),g=h?h.concat(c):c,_={};return{fragmentSource:u=u.replace(n,((x,w,T,I,P)=>(_[P]=!0,w==="define"?`
#ifndef HAS_UNIFORM_u_${P}
varying ${T} ${I} ${P};
#else
uniform ${T} ${I} u_${P};
#endif
`:`
#ifdef HAS_UNIFORM_u_${P}
${T} ${I} ${P} = u_${P};
#endif
`))),vertexSource:t=t.replace(n,((x,w,T,I,P)=>{const V=I==="float"?"vec2":"vec4",N=P.match(/color/)?"color":V;return _[P]?w==="define"?`
#ifndef HAS_UNIFORM_u_${P}
uniform lowp float u_${P}_t;
attribute ${T} ${V} a_${P};
varying ${T} ${I} ${P};
#else
uniform ${T} ${I} u_${P};
#endif
`:N==="vec4"?`
#ifndef HAS_UNIFORM_u_${P}
${P} = a_${P};
#else
${T} ${I} ${P} = u_${P};
#endif
`:`
#ifndef HAS_UNIFORM_u_${P}
${P} = unpack_mix_${N}(a_${P}, u_${P}_t);
#else
${T} ${I} ${P} = u_${P};
#endif
`:w==="define"?`
#ifndef HAS_UNIFORM_u_${P}
uniform lowp float u_${P}_t;
attribute ${T} ${V} a_${P};
#else
uniform ${T} ${I} u_${P};
#endif
`:N==="vec4"?`
#ifndef HAS_UNIFORM_u_${P}
${T} ${I} ${P} = a_${P};
#else
${T} ${I} ${P} = u_${P};
#endif
`:`
#ifndef HAS_UNIFORM_u_${P}
${T} ${I} ${P} = unpack_mix_${N}(a_${P}, u_${P}_t);
#else
${T} ${I} ${P} = u_${P};
#endif
`})),staticAttributes:s,staticUniforms:g}}class _n{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(t,n,s,c,h,g,_,x,w){this.context=t;let T=this.boundPaintVertexBuffers.length!==c.length;for(let I=0;!T&&I<c.length;I++)this.boundPaintVertexBuffers[I]!==c[I]&&(T=!0);!this.vao||this.boundProgram!==n||this.boundLayoutVertexBuffer!==s||T||this.boundIndexBuffer!==h||this.boundVertexOffset!==g||this.boundDynamicVertexBuffer!==_||this.boundDynamicVertexBuffer2!==x||this.boundDynamicVertexBuffer3!==w?this.freshBind(n,s,c,h,g,_,x,w):(t.bindVertexArray.set(this.vao),_&&_.bind(),h&&h.dynamicDraw&&h.bind(),x&&x.bind(),w&&w.bind())}freshBind(t,n,s,c,h,g,_,x){const w=t.numAttributes,T=this.context,I=T.gl;this.vao&&this.destroy(),this.vao=T.createVertexArray(),T.bindVertexArray.set(this.vao),this.boundProgram=t,this.boundLayoutVertexBuffer=n,this.boundPaintVertexBuffers=s,this.boundIndexBuffer=c,this.boundVertexOffset=h,this.boundDynamicVertexBuffer=g,this.boundDynamicVertexBuffer2=_,this.boundDynamicVertexBuffer3=x,n.enableAttributes(I,t);for(const P of s)P.enableAttributes(I,t);g&&g.enableAttributes(I,t),_&&_.enableAttributes(I,t),x&&x.enableAttributes(I,t),n.bind(),n.setVertexAttribPointers(I,t,h);for(const P of s)P.bind(),P.setVertexAttribPointers(I,t,h);g&&(g.bind(),g.setVertexAttribPointers(I,t,h)),c&&c.bind(),_&&(_.bind(),_.setVertexAttribPointers(I,t,h)),x&&(x.bind(),x.setVertexAttribPointers(I,t,h)),T.currentNumAttributes=w}destroy(){this.vao&&(this.context.deleteVertexArray(this.vao),this.vao=null)}}function Nt(u){const t=[];for(let n=0;n<u.length;n++){if(u[n]===null)continue;const s=u[n].split(" ");t.push(s.pop())}return t}class $a{constructor(t,n,s,c,h,g){const _=t.gl;this.program=_.createProgram();const x=Nt(n.staticAttributes),w=s?s.getBinderAttributes():[],T=x.concat(w),I=Lt.prelude.staticUniforms?Nt(Lt.prelude.staticUniforms):[],P=n.staticUniforms?Nt(n.staticUniforms):[],V=s?s.getBinderUniforms():[],N=I.concat(P).concat(V),$=[];for(const ue of N)$.indexOf(ue)<0&&$.push(ue);const B=s?s.defines():[];h&&B.push("#define OVERDRAW_INSPECTOR;"),g&&B.push("#define TERRAIN3D;");const ee=B.concat(Lt.prelude.fragmentSource,n.fragmentSource).join(`
`),se=B.concat(Lt.prelude.vertexSource,n.vertexSource).join(`
`),G=_.createShader(_.FRAGMENT_SHADER);if(_.isContextLost())return void(this.failedToCreate=!0);if(_.shaderSource(G,ee),_.compileShader(G),!_.getShaderParameter(G,_.COMPILE_STATUS))throw new Error(`Could not compile fragment shader: ${_.getShaderInfoLog(G)}`);_.attachShader(this.program,G);const te=_.createShader(_.VERTEX_SHADER);if(_.isContextLost())return void(this.failedToCreate=!0);if(_.shaderSource(te,se),_.compileShader(te),!_.getShaderParameter(te,_.COMPILE_STATUS))throw new Error(`Could not compile vertex shader: ${_.getShaderInfoLog(te)}`);_.attachShader(this.program,te),this.attributes={};const ce={};this.numAttributes=T.length;for(let ue=0;ue<this.numAttributes;ue++)T[ue]&&(_.bindAttribLocation(this.program,ue,T[ue]),this.attributes[T[ue]]=ue);if(_.linkProgram(this.program),!_.getProgramParameter(this.program,_.LINK_STATUS))throw new Error(`Program failed to link: ${_.getProgramInfoLog(this.program)}`);_.deleteShader(te),_.deleteShader(G);for(let ue=0;ue<$.length;ue++){const fe=$[ue];if(fe&&!ce[fe]){const ve=_.getUniformLocation(this.program,fe);ve&&(ce[fe]=ve)}}this.fixedUniforms=c(t,ce),this.terrainUniforms=((ue,fe)=>({u_depth:new l.aL(ue,fe.u_depth),u_terrain:new l.aL(ue,fe.u_terrain),u_terrain_dim:new l.aM(ue,fe.u_terrain_dim),u_terrain_matrix:new l.aN(ue,fe.u_terrain_matrix),u_terrain_unpack:new l.aO(ue,fe.u_terrain_unpack),u_terrain_exaggeration:new l.aM(ue,fe.u_terrain_exaggeration)}))(t,ce),this.binderUniforms=s?s.getUniforms(t,ce):[]}draw(t,n,s,c,h,g,_,x,w,T,I,P,V,N,$,B,ee,se){const G=t.gl;if(this.failedToCreate)return;if(t.program.set(this.program),t.setDepthMode(s),t.setStencilMode(c),t.setColorMode(h),t.setCullFace(g),x){t.activeTexture.set(G.TEXTURE2),G.bindTexture(G.TEXTURE_2D,x.depthTexture),t.activeTexture.set(G.TEXTURE3),G.bindTexture(G.TEXTURE_2D,x.texture);for(const ce in this.terrainUniforms)this.terrainUniforms[ce].set(x[ce])}for(const ce in this.fixedUniforms)this.fixedUniforms[ce].set(_[ce]);$&&$.setUniforms(t,this.binderUniforms,V,{zoom:N});let te=0;switch(n){case G.LINES:te=2;break;case G.TRIANGLES:te=3;break;case G.LINE_STRIP:te=1}for(const ce of P.get()){const ue=ce.vaos||(ce.vaos={});(ue[w]||(ue[w]=new _n)).bind(t,this,T,$?$.getPaintVertexBuffers():[],I,ce.vertexOffset,B,ee,se),G.drawElements(n,ce.primitiveLength*te,G.UNSIGNED_SHORT,ce.primitiveOffset*te*2)}}}function sr(u,t,n){const s=1/Q(n,1,t.transform.tileZoom),c=Math.pow(2,n.tileID.overscaledZ),h=n.tileSize*Math.pow(2,t.transform.tileZoom)/c,g=h*(n.tileID.canonical.x+n.tileID.wrap*c),_=h*n.tileID.canonical.y;return{u_image:0,u_texsize:n.imageAtlasTexture.size,u_scale:[s,u.fromScale,u.toScale],u_fade:u.t,u_pixel_coord_upper:[g>>16,_>>16],u_pixel_coord_lower:[65535&g,65535&_]}}const Ds=(u,t,n,s)=>{const c=t.style.light,h=c.properties.get("position"),g=[h.x,h.y,h.z],_=(function(){var w=new l.A(9);return l.A!=Float32Array&&(w[1]=0,w[2]=0,w[3]=0,w[5]=0,w[6]=0,w[7]=0),w[0]=1,w[4]=1,w[8]=1,w})();c.properties.get("anchor")==="viewport"&&(function(w,T){var I=Math.sin(T),P=Math.cos(T);w[0]=P,w[1]=I,w[2]=0,w[3]=-I,w[4]=P,w[5]=0,w[6]=0,w[7]=0,w[8]=1})(_,-t.transform.angle),(function(w,T,I){var P=T[0],V=T[1],N=T[2];w[0]=P*I[0]+V*I[3]+N*I[6],w[1]=P*I[1]+V*I[4]+N*I[7],w[2]=P*I[2]+V*I[5]+N*I[8]})(g,g,_);const x=c.properties.get("color");return{u_matrix:u,u_lightpos:g,u_lightintensity:c.properties.get("intensity"),u_lightcolor:[x.r,x.g,x.b],u_vertical_gradient:+n,u_opacity:s}},Yr=(u,t,n,s,c,h,g)=>l.e(Ds(u,t,n,s),sr(h,t,g),{u_height_factor:-Math.pow(2,c.overscaledZ)/g.tileSize/8}),Ho=u=>({u_matrix:u}),Ls=(u,t,n,s)=>l.e(Ho(u),sr(n,t,s)),ja=(u,t)=>({u_matrix:u,u_world:t}),qa=(u,t,n,s,c)=>l.e(Ls(u,t,n,s),{u_world:c}),Jr=(u,t,n,s)=>{const c=u.transform;let h,g;if(s.paint.get("circle-pitch-alignment")==="map"){const _=Q(n,1,c.zoom);h=!0,g=[_,_]}else h=!1,g=c.pixelsToGLUnits;return{u_camera_to_center_distance:c.cameraToCenterDistance,u_scale_with_map:+(s.paint.get("circle-pitch-scale")==="map"),u_matrix:u.translatePosMatrix(t.posMatrix,n,s.paint.get("circle-translate"),s.paint.get("circle-translate-anchor")),u_pitch_with_map:+h,u_device_pixel_ratio:u.pixelRatio,u_extrude_scale:g}},Rs=(u,t,n)=>{const s=Q(n,1,t.zoom),c=Math.pow(2,t.zoom-n.tileID.overscaledZ),h=n.tileID.overscaleFactor();return{u_matrix:u,u_camera_to_center_distance:t.cameraToCenterDistance,u_pixels_to_tile_units:s,u_extrude_scale:[t.pixelsToGLUnits[0]/(s*c),t.pixelsToGLUnits[1]/(s*c)],u_overscale_factor:h}},pa=(u,t,n=1)=>({u_matrix:u,u_color:t,u_overlay:0,u_overlay_scale:n}),Wo=u=>({u_matrix:u}),mc=(u,t,n,s)=>({u_matrix:u,u_extrude_scale:Q(t,1,n),u_intensity:s});function Fs(u,t){const n=Math.pow(2,t.canonical.z),s=t.canonical.y;return[new l.U(0,s/n).toLngLat().lat,new l.U(0,(s+1)/n).toLngLat().lat]}const Bs=(u,t,n,s)=>{const c=u.transform;return{u_matrix:Za(u,t,n,s),u_ratio:1/Q(t,1,c.zoom),u_device_pixel_ratio:u.pixelRatio,u_units_to_pixels:[1/c.pixelsToGLUnits[0],1/c.pixelsToGLUnits[1]]}},Xo=(u,t,n,s,c)=>l.e(Bs(u,t,n,c),{u_image:0,u_image_height:s}),gc=(u,t,n,s,c)=>{const h=u.transform,g=Yo(t,h);return{u_matrix:Za(u,t,n,c),u_texsize:t.imageAtlasTexture.size,u_ratio:1/Q(t,1,h.zoom),u_device_pixel_ratio:u.pixelRatio,u_image:0,u_scale:[g,s.fromScale,s.toScale],u_fade:s.t,u_units_to_pixels:[1/h.pixelsToGLUnits[0],1/h.pixelsToGLUnits[1]]}},Ko=(u,t,n,s,c,h)=>{const g=u.lineAtlas,_=Yo(t,u.transform),x=n.layout.get("line-cap")==="round",w=g.getDash(s.from,x),T=g.getDash(s.to,x),I=w.width*c.fromScale,P=T.width*c.toScale;return l.e(Bs(u,t,n,h),{u_patternscale_a:[_/I,-w.height/2],u_patternscale_b:[_/P,-T.height/2],u_sdfgamma:g.width/(256*Math.min(I,P)*u.pixelRatio)/2,u_image:0,u_tex_y_a:w.y,u_tex_y_b:T.y,u_mix:c.t})};function Yo(u,t){return 1/Q(u,1,t.tileZoom)}function Za(u,t,n,s){return u.translatePosMatrix(s?s.posMatrix:t.tileID.posMatrix,t,n.paint.get("line-translate"),n.paint.get("line-translate-anchor"))}const Jo=(u,t,n,s,c)=>{return{u_matrix:u,u_tl_parent:t,u_scale_parent:n,u_buffer_scale:1,u_fade_t:s.mix,u_opacity:s.opacity*c.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:c.paint.get("raster-brightness-min"),u_brightness_high:c.paint.get("raster-brightness-max"),u_saturation_factor:(g=c.paint.get("raster-saturation"),g>0?1-1/(1.001-g):-g),u_contrast_factor:(h=c.paint.get("raster-contrast"),h>0?1/(1-h):1+h),u_spin_weights:Qo(c.paint.get("raster-hue-rotate"))};var h,g};function Qo(u){u*=Math.PI/180;const t=Math.sin(u),n=Math.cos(u);return[(2*n+1)/3,(-Math.sqrt(3)*t-n+1)/3,(Math.sqrt(3)*t-n+1)/3]}const Os=(u,t,n,s,c,h,g,_,x,w)=>{const T=c.transform;return{u_is_size_zoom_constant:+(u==="constant"||u==="source"),u_is_size_feature_constant:+(u==="constant"||u==="camera"),u_size_t:t?t.uSizeT:0,u_size:t?t.uSize:0,u_camera_to_center_distance:T.cameraToCenterDistance,u_pitch:T.pitch/360*2*Math.PI,u_rotate_symbol:+n,u_aspect_ratio:T.width/T.height,u_fade_change:c.options.fadeDuration?c.symbolFadeChange:1,u_matrix:h,u_label_plane_matrix:g,u_coord_matrix:_,u_is_text:+x,u_pitch_with_map:+s,u_texsize:w,u_texture:0}},Ns=(u,t,n,s,c,h,g,_,x,w,T)=>{const I=c.transform;return l.e(Os(u,t,n,s,c,h,g,_,x,w),{u_gamma_scale:s?Math.cos(I._pitch)*I.cameraToCenterDistance:1,u_device_pixel_ratio:c.pixelRatio,u_is_halo:1})},yn=(u,t,n,s,c,h,g,_,x,w)=>l.e(Ns(u,t,n,s,c,h,g,_,!0,x),{u_texsize_icon:w,u_texture_icon:1}),Ga=(u,t,n)=>({u_matrix:u,u_opacity:t,u_color:n}),or=(u,t,n,s,c,h)=>l.e((function(g,_,x,w){const T=x.imageManager.getPattern(g.from.toString()),I=x.imageManager.getPattern(g.to.toString()),{width:P,height:V}=x.imageManager.getPixelSize(),N=Math.pow(2,w.tileID.overscaledZ),$=w.tileSize*Math.pow(2,x.transform.tileZoom)/N,B=$*(w.tileID.canonical.x+w.tileID.wrap*N),ee=$*w.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:T.tl,u_pattern_br_a:T.br,u_pattern_tl_b:I.tl,u_pattern_br_b:I.br,u_texsize:[P,V],u_mix:_.t,u_pattern_size_a:T.displaySize,u_pattern_size_b:I.displaySize,u_scale_a:_.fromScale,u_scale_b:_.toScale,u_tile_units_to_pixels:1/Q(w,1,x.transform.tileZoom),u_pixel_coord_upper:[B>>16,ee>>16],u_pixel_coord_lower:[65535&B,65535&ee]}})(s,h,n,c),{u_matrix:u,u_opacity:t}),Ha={fillExtrusion:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_lightpos:new l.aP(u,t.u_lightpos),u_lightintensity:new l.aM(u,t.u_lightintensity),u_lightcolor:new l.aP(u,t.u_lightcolor),u_vertical_gradient:new l.aM(u,t.u_vertical_gradient),u_opacity:new l.aM(u,t.u_opacity)}),fillExtrusionPattern:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_lightpos:new l.aP(u,t.u_lightpos),u_lightintensity:new l.aM(u,t.u_lightintensity),u_lightcolor:new l.aP(u,t.u_lightcolor),u_vertical_gradient:new l.aM(u,t.u_vertical_gradient),u_height_factor:new l.aM(u,t.u_height_factor),u_image:new l.aL(u,t.u_image),u_texsize:new l.aQ(u,t.u_texsize),u_pixel_coord_upper:new l.aQ(u,t.u_pixel_coord_upper),u_pixel_coord_lower:new l.aQ(u,t.u_pixel_coord_lower),u_scale:new l.aP(u,t.u_scale),u_fade:new l.aM(u,t.u_fade),u_opacity:new l.aM(u,t.u_opacity)}),fill:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix)}),fillPattern:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_image:new l.aL(u,t.u_image),u_texsize:new l.aQ(u,t.u_texsize),u_pixel_coord_upper:new l.aQ(u,t.u_pixel_coord_upper),u_pixel_coord_lower:new l.aQ(u,t.u_pixel_coord_lower),u_scale:new l.aP(u,t.u_scale),u_fade:new l.aM(u,t.u_fade)}),fillOutline:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_world:new l.aQ(u,t.u_world)}),fillOutlinePattern:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_world:new l.aQ(u,t.u_world),u_image:new l.aL(u,t.u_image),u_texsize:new l.aQ(u,t.u_texsize),u_pixel_coord_upper:new l.aQ(u,t.u_pixel_coord_upper),u_pixel_coord_lower:new l.aQ(u,t.u_pixel_coord_lower),u_scale:new l.aP(u,t.u_scale),u_fade:new l.aM(u,t.u_fade)}),circle:(u,t)=>({u_camera_to_center_distance:new l.aM(u,t.u_camera_to_center_distance),u_scale_with_map:new l.aL(u,t.u_scale_with_map),u_pitch_with_map:new l.aL(u,t.u_pitch_with_map),u_extrude_scale:new l.aQ(u,t.u_extrude_scale),u_device_pixel_ratio:new l.aM(u,t.u_device_pixel_ratio),u_matrix:new l.aN(u,t.u_matrix)}),collisionBox:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_camera_to_center_distance:new l.aM(u,t.u_camera_to_center_distance),u_pixels_to_tile_units:new l.aM(u,t.u_pixels_to_tile_units),u_extrude_scale:new l.aQ(u,t.u_extrude_scale),u_overscale_factor:new l.aM(u,t.u_overscale_factor)}),collisionCircle:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_inv_matrix:new l.aN(u,t.u_inv_matrix),u_camera_to_center_distance:new l.aM(u,t.u_camera_to_center_distance),u_viewport_size:new l.aQ(u,t.u_viewport_size)}),debug:(u,t)=>({u_color:new l.aR(u,t.u_color),u_matrix:new l.aN(u,t.u_matrix),u_overlay:new l.aL(u,t.u_overlay),u_overlay_scale:new l.aM(u,t.u_overlay_scale)}),clippingMask:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix)}),heatmap:(u,t)=>({u_extrude_scale:new l.aM(u,t.u_extrude_scale),u_intensity:new l.aM(u,t.u_intensity),u_matrix:new l.aN(u,t.u_matrix)}),heatmapTexture:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_world:new l.aQ(u,t.u_world),u_image:new l.aL(u,t.u_image),u_color_ramp:new l.aL(u,t.u_color_ramp),u_opacity:new l.aM(u,t.u_opacity)}),hillshade:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_image:new l.aL(u,t.u_image),u_latrange:new l.aQ(u,t.u_latrange),u_light:new l.aQ(u,t.u_light),u_shadow:new l.aR(u,t.u_shadow),u_highlight:new l.aR(u,t.u_highlight),u_accent:new l.aR(u,t.u_accent)}),hillshadePrepare:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_image:new l.aL(u,t.u_image),u_dimension:new l.aQ(u,t.u_dimension),u_zoom:new l.aM(u,t.u_zoom),u_unpack:new l.aO(u,t.u_unpack)}),line:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_ratio:new l.aM(u,t.u_ratio),u_device_pixel_ratio:new l.aM(u,t.u_device_pixel_ratio),u_units_to_pixels:new l.aQ(u,t.u_units_to_pixels)}),lineGradient:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_ratio:new l.aM(u,t.u_ratio),u_device_pixel_ratio:new l.aM(u,t.u_device_pixel_ratio),u_units_to_pixels:new l.aQ(u,t.u_units_to_pixels),u_image:new l.aL(u,t.u_image),u_image_height:new l.aM(u,t.u_image_height)}),linePattern:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_texsize:new l.aQ(u,t.u_texsize),u_ratio:new l.aM(u,t.u_ratio),u_device_pixel_ratio:new l.aM(u,t.u_device_pixel_ratio),u_image:new l.aL(u,t.u_image),u_units_to_pixels:new l.aQ(u,t.u_units_to_pixels),u_scale:new l.aP(u,t.u_scale),u_fade:new l.aM(u,t.u_fade)}),lineSDF:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_ratio:new l.aM(u,t.u_ratio),u_device_pixel_ratio:new l.aM(u,t.u_device_pixel_ratio),u_units_to_pixels:new l.aQ(u,t.u_units_to_pixels),u_patternscale_a:new l.aQ(u,t.u_patternscale_a),u_patternscale_b:new l.aQ(u,t.u_patternscale_b),u_sdfgamma:new l.aM(u,t.u_sdfgamma),u_image:new l.aL(u,t.u_image),u_tex_y_a:new l.aM(u,t.u_tex_y_a),u_tex_y_b:new l.aM(u,t.u_tex_y_b),u_mix:new l.aM(u,t.u_mix)}),raster:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_tl_parent:new l.aQ(u,t.u_tl_parent),u_scale_parent:new l.aM(u,t.u_scale_parent),u_buffer_scale:new l.aM(u,t.u_buffer_scale),u_fade_t:new l.aM(u,t.u_fade_t),u_opacity:new l.aM(u,t.u_opacity),u_image0:new l.aL(u,t.u_image0),u_image1:new l.aL(u,t.u_image1),u_brightness_low:new l.aM(u,t.u_brightness_low),u_brightness_high:new l.aM(u,t.u_brightness_high),u_saturation_factor:new l.aM(u,t.u_saturation_factor),u_contrast_factor:new l.aM(u,t.u_contrast_factor),u_spin_weights:new l.aP(u,t.u_spin_weights)}),symbolIcon:(u,t)=>({u_is_size_zoom_constant:new l.aL(u,t.u_is_size_zoom_constant),u_is_size_feature_constant:new l.aL(u,t.u_is_size_feature_constant),u_size_t:new l.aM(u,t.u_size_t),u_size:new l.aM(u,t.u_size),u_camera_to_center_distance:new l.aM(u,t.u_camera_to_center_distance),u_pitch:new l.aM(u,t.u_pitch),u_rotate_symbol:new l.aL(u,t.u_rotate_symbol),u_aspect_ratio:new l.aM(u,t.u_aspect_ratio),u_fade_change:new l.aM(u,t.u_fade_change),u_matrix:new l.aN(u,t.u_matrix),u_label_plane_matrix:new l.aN(u,t.u_label_plane_matrix),u_coord_matrix:new l.aN(u,t.u_coord_matrix),u_is_text:new l.aL(u,t.u_is_text),u_pitch_with_map:new l.aL(u,t.u_pitch_with_map),u_texsize:new l.aQ(u,t.u_texsize),u_texture:new l.aL(u,t.u_texture)}),symbolSDF:(u,t)=>({u_is_size_zoom_constant:new l.aL(u,t.u_is_size_zoom_constant),u_is_size_feature_constant:new l.aL(u,t.u_is_size_feature_constant),u_size_t:new l.aM(u,t.u_size_t),u_size:new l.aM(u,t.u_size),u_camera_to_center_distance:new l.aM(u,t.u_camera_to_center_distance),u_pitch:new l.aM(u,t.u_pitch),u_rotate_symbol:new l.aL(u,t.u_rotate_symbol),u_aspect_ratio:new l.aM(u,t.u_aspect_ratio),u_fade_change:new l.aM(u,t.u_fade_change),u_matrix:new l.aN(u,t.u_matrix),u_label_plane_matrix:new l.aN(u,t.u_label_plane_matrix),u_coord_matrix:new l.aN(u,t.u_coord_matrix),u_is_text:new l.aL(u,t.u_is_text),u_pitch_with_map:new l.aL(u,t.u_pitch_with_map),u_texsize:new l.aQ(u,t.u_texsize),u_texture:new l.aL(u,t.u_texture),u_gamma_scale:new l.aM(u,t.u_gamma_scale),u_device_pixel_ratio:new l.aM(u,t.u_device_pixel_ratio),u_is_halo:new l.aL(u,t.u_is_halo)}),symbolTextAndIcon:(u,t)=>({u_is_size_zoom_constant:new l.aL(u,t.u_is_size_zoom_constant),u_is_size_feature_constant:new l.aL(u,t.u_is_size_feature_constant),u_size_t:new l.aM(u,t.u_size_t),u_size:new l.aM(u,t.u_size),u_camera_to_center_distance:new l.aM(u,t.u_camera_to_center_distance),u_pitch:new l.aM(u,t.u_pitch),u_rotate_symbol:new l.aL(u,t.u_rotate_symbol),u_aspect_ratio:new l.aM(u,t.u_aspect_ratio),u_fade_change:new l.aM(u,t.u_fade_change),u_matrix:new l.aN(u,t.u_matrix),u_label_plane_matrix:new l.aN(u,t.u_label_plane_matrix),u_coord_matrix:new l.aN(u,t.u_coord_matrix),u_is_text:new l.aL(u,t.u_is_text),u_pitch_with_map:new l.aL(u,t.u_pitch_with_map),u_texsize:new l.aQ(u,t.u_texsize),u_texsize_icon:new l.aQ(u,t.u_texsize_icon),u_texture:new l.aL(u,t.u_texture),u_texture_icon:new l.aL(u,t.u_texture_icon),u_gamma_scale:new l.aM(u,t.u_gamma_scale),u_device_pixel_ratio:new l.aM(u,t.u_device_pixel_ratio),u_is_halo:new l.aL(u,t.u_is_halo)}),background:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_opacity:new l.aM(u,t.u_opacity),u_color:new l.aR(u,t.u_color)}),backgroundPattern:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_opacity:new l.aM(u,t.u_opacity),u_image:new l.aL(u,t.u_image),u_pattern_tl_a:new l.aQ(u,t.u_pattern_tl_a),u_pattern_br_a:new l.aQ(u,t.u_pattern_br_a),u_pattern_tl_b:new l.aQ(u,t.u_pattern_tl_b),u_pattern_br_b:new l.aQ(u,t.u_pattern_br_b),u_texsize:new l.aQ(u,t.u_texsize),u_mix:new l.aM(u,t.u_mix),u_pattern_size_a:new l.aQ(u,t.u_pattern_size_a),u_pattern_size_b:new l.aQ(u,t.u_pattern_size_b),u_scale_a:new l.aM(u,t.u_scale_a),u_scale_b:new l.aM(u,t.u_scale_b),u_pixel_coord_upper:new l.aQ(u,t.u_pixel_coord_upper),u_pixel_coord_lower:new l.aQ(u,t.u_pixel_coord_lower),u_tile_units_to_pixels:new l.aM(u,t.u_tile_units_to_pixels)}),terrain:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_texture:new l.aL(u,t.u_texture),u_ele_delta:new l.aM(u,t.u_ele_delta)}),terrainDepth:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_ele_delta:new l.aM(u,t.u_ele_delta)}),terrainCoords:(u,t)=>({u_matrix:new l.aN(u,t.u_matrix),u_texture:new l.aL(u,t.u_texture),u_terrain_coords_id:new l.aM(u,t.u_terrain_coords_id),u_ele_delta:new l.aM(u,t.u_ele_delta)})};class Wa{constructor(t,n,s){this.context=t;const c=t.gl;this.buffer=c.createBuffer(),this.dynamicDraw=!!s,this.context.unbindVAO(),t.bindElementBuffer.set(this.buffer),c.bufferData(c.ELEMENT_ARRAY_BUFFER,n.arrayBuffer,this.dynamicDraw?c.DYNAMIC_DRAW:c.STATIC_DRAW),this.dynamicDraw||delete n.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(t){const n=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),n.bufferSubData(n.ELEMENT_ARRAY_BUFFER,0,t.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}const da={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class Xa{constructor(t,n,s,c){this.length=n.length,this.attributes=s,this.itemSize=n.bytesPerElement,this.dynamicDraw=c,this.context=t;const h=t.gl;this.buffer=h.createBuffer(),t.bindVertexBuffer.set(this.buffer),h.bufferData(h.ARRAY_BUFFER,n.arrayBuffer,this.dynamicDraw?h.DYNAMIC_DRAW:h.STATIC_DRAW),this.dynamicDraw||delete n.arrayBuffer}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(t){if(t.length!==this.length)throw new Error(`Length of new data is ${t.length}, which doesn't match current length of ${this.length}`);const n=this.context.gl;this.bind(),n.bufferSubData(n.ARRAY_BUFFER,0,t.arrayBuffer)}enableAttributes(t,n){for(let s=0;s<this.attributes.length;s++){const c=n.attributes[this.attributes[s].name];c!==void 0&&t.enableVertexAttribArray(c)}}setVertexAttribPointers(t,n,s){for(let c=0;c<this.attributes.length;c++){const h=this.attributes[c],g=n.attributes[h.name];g!==void 0&&t.vertexAttribPointer(g,h.components,t[da[h.type]],!1,this.itemSize,h.offset+this.itemSize*(s||0))}}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}const qn=new WeakMap;function Qr(u){var t;if(qn.has(u))return qn.get(u);{const n=(t=u.getParameter(u.VERSION))===null||t===void 0?void 0:t.startsWith("WebGL 2.0");return qn.set(u,n),n}}class ut{constructor(t){this.gl=t.gl,this.default=this.getDefault(),this.current=this.default,this.dirty=!1}get(){return this.current}set(t){}getDefault(){return this.default}setDefault(){this.set(this.default)}}class Ka extends ut{getDefault(){return l.aT.transparent}set(t){const n=this.current;(t.r!==n.r||t.g!==n.g||t.b!==n.b||t.a!==n.a||this.dirty)&&(this.gl.clearColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1)}}class qi extends ut{getDefault(){return 1}set(t){(t!==this.current||this.dirty)&&(this.gl.clearDepth(t),this.current=t,this.dirty=!1)}}class Zi extends ut{getDefault(){return 0}set(t){(t!==this.current||this.dirty)&&(this.gl.clearStencil(t),this.current=t,this.dirty=!1)}}class Vs extends ut{getDefault(){return[!0,!0,!0,!0]}set(t){const n=this.current;(t[0]!==n[0]||t[1]!==n[1]||t[2]!==n[2]||t[3]!==n[3]||this.dirty)&&(this.gl.colorMask(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1)}}class Ya extends ut{getDefault(){return!0}set(t){(t!==this.current||this.dirty)&&(this.gl.depthMask(t),this.current=t,this.dirty=!1)}}class Ja extends ut{getDefault(){return 255}set(t){(t!==this.current||this.dirty)&&(this.gl.stencilMask(t),this.current=t,this.dirty=!1)}}class Us extends ut{getDefault(){return{func:this.gl.ALWAYS,ref:0,mask:255}}set(t){const n=this.current;(t.func!==n.func||t.ref!==n.ref||t.mask!==n.mask||this.dirty)&&(this.gl.stencilFunc(t.func,t.ref,t.mask),this.current=t,this.dirty=!1)}}class $s extends ut{getDefault(){const t=this.gl;return[t.KEEP,t.KEEP,t.KEEP]}set(t){const n=this.current;(t[0]!==n[0]||t[1]!==n[1]||t[2]!==n[2]||this.dirty)&&(this.gl.stencilOp(t[0],t[1],t[2]),this.current=t,this.dirty=!1)}}class Qa extends ut{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;t?n.enable(n.STENCIL_TEST):n.disable(n.STENCIL_TEST),this.current=t,this.dirty=!1}}class js extends ut{getDefault(){return[0,1]}set(t){const n=this.current;(t[0]!==n[0]||t[1]!==n[1]||this.dirty)&&(this.gl.depthRange(t[0],t[1]),this.current=t,this.dirty=!1)}}class qs extends ut{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;t?n.enable(n.DEPTH_TEST):n.disable(n.DEPTH_TEST),this.current=t,this.dirty=!1}}class es extends ut{getDefault(){return this.gl.LESS}set(t){(t!==this.current||this.dirty)&&(this.gl.depthFunc(t),this.current=t,this.dirty=!1)}}class el extends ut{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;t?n.enable(n.BLEND):n.disable(n.BLEND),this.current=t,this.dirty=!1}}class tl extends ut{getDefault(){const t=this.gl;return[t.ONE,t.ZERO]}set(t){const n=this.current;(t[0]!==n[0]||t[1]!==n[1]||this.dirty)&&(this.gl.blendFunc(t[0],t[1]),this.current=t,this.dirty=!1)}}class Zn extends ut{getDefault(){return l.aT.transparent}set(t){const n=this.current;(t.r!==n.r||t.g!==n.g||t.b!==n.b||t.a!==n.a||this.dirty)&&(this.gl.blendColor(t.r,t.g,t.b,t.a),this.current=t,this.dirty=!1)}}class _c extends ut{getDefault(){return this.gl.FUNC_ADD}set(t){(t!==this.current||this.dirty)&&(this.gl.blendEquation(t),this.current=t,this.dirty=!1)}}class yc extends ut{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;t?n.enable(n.CULL_FACE):n.disable(n.CULL_FACE),this.current=t,this.dirty=!1}}class xc extends ut{getDefault(){return this.gl.BACK}set(t){(t!==this.current||this.dirty)&&(this.gl.cullFace(t),this.current=t,this.dirty=!1)}}class vc extends ut{getDefault(){return this.gl.CCW}set(t){(t!==this.current||this.dirty)&&(this.gl.frontFace(t),this.current=t,this.dirty=!1)}}class bc extends ut{getDefault(){return null}set(t){(t!==this.current||this.dirty)&&(this.gl.useProgram(t),this.current=t,this.dirty=!1)}}class wc extends ut{getDefault(){return this.gl.TEXTURE0}set(t){(t!==this.current||this.dirty)&&(this.gl.activeTexture(t),this.current=t,this.dirty=!1)}}class Zs extends ut{getDefault(){const t=this.gl;return[0,0,t.drawingBufferWidth,t.drawingBufferHeight]}set(t){const n=this.current;(t[0]!==n[0]||t[1]!==n[1]||t[2]!==n[2]||t[3]!==n[3]||this.dirty)&&(this.gl.viewport(t[0],t[1],t[2],t[3]),this.current=t,this.dirty=!1)}}class ts extends ut{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;n.bindFramebuffer(n.FRAMEBUFFER,t),this.current=t,this.dirty=!1}}class Gs extends ut{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;n.bindRenderbuffer(n.RENDERBUFFER,t),this.current=t,this.dirty=!1}}class Hs extends ut{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;n.bindTexture(n.TEXTURE_2D,t),this.current=t,this.dirty=!1}}class Gn extends ut{getDefault(){return null}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;n.bindBuffer(n.ARRAY_BUFFER,t),this.current=t,this.dirty=!1}}class il extends ut{getDefault(){return null}set(t){const n=this.gl;n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,t),this.current=t,this.dirty=!1}}class rl extends ut{getDefault(){return null}set(t){var n;if(t===this.current&&!this.dirty)return;const s=this.gl;Qr(s)?s.bindVertexArray(t):(n=s.getExtension("OES_vertex_array_object"))===null||n===void 0||n.bindVertexArrayOES(t),this.current=t,this.dirty=!1}}class Ws extends ut{getDefault(){return 4}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;n.pixelStorei(n.UNPACK_ALIGNMENT,t),this.current=t,this.dirty=!1}}class xn extends ut{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t),this.current=t,this.dirty=!1}}class nl extends ut{getDefault(){return!1}set(t){if(t===this.current&&!this.dirty)return;const n=this.gl;n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,t),this.current=t,this.dirty=!1}}class en extends ut{constructor(t,n){super(t),this.context=t,this.parent=n}getDefault(){return null}}class Hn extends en{setDirty(){this.dirty=!0}set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const n=this.gl;n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,t,0),this.current=t,this.dirty=!1}}class al extends en{set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const n=this.gl;n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.RENDERBUFFER,t),this.current=t,this.dirty=!1}}class Xs extends en{set(t){if(t===this.current&&!this.dirty)return;this.context.bindFramebuffer.set(this.parent);const n=this.gl;n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.RENDERBUFFER,t),this.current=t,this.dirty=!1}}class gt{constructor(t,n,s,c,h){this.context=t,this.width=n,this.height=s;const g=t.gl,_=this.framebuffer=g.createFramebuffer();if(this.colorAttachment=new Hn(t,_),c)this.depthAttachment=h?new Xs(t,_):new al(t,_);else if(h)throw new Error("Stencil cannot be setted without depth");if(g.checkFramebufferStatus(g.FRAMEBUFFER)!==g.FRAMEBUFFER_COMPLETE)throw new Error("Framebuffer is not complete")}destroy(){const t=this.context.gl,n=this.colorAttachment.get();if(n&&t.deleteTexture(n),this.depthAttachment){const s=this.depthAttachment.get();s&&t.deleteRenderbuffer(s)}t.deleteFramebuffer(this.framebuffer)}}class Rt{constructor(t,n,s){this.blendFunction=t,this.blendColor=n,this.mask=s}}Rt.Replace=[1,0],Rt.disabled=new Rt(Rt.Replace,l.aT.transparent,[!1,!1,!1,!1]),Rt.unblended=new Rt(Rt.Replace,l.aT.transparent,[!0,!0,!0,!0]),Rt.alphaBlended=new Rt([1,771],l.aT.transparent,[!0,!0,!0,!0]);class Sc{constructor(t){var n,s;if(this.gl=t,this.clearColor=new Ka(this),this.clearDepth=new qi(this),this.clearStencil=new Zi(this),this.colorMask=new Vs(this),this.depthMask=new Ya(this),this.stencilMask=new Ja(this),this.stencilFunc=new Us(this),this.stencilOp=new $s(this),this.stencilTest=new Qa(this),this.depthRange=new js(this),this.depthTest=new qs(this),this.depthFunc=new es(this),this.blend=new el(this),this.blendFunc=new tl(this),this.blendColor=new Zn(this),this.blendEquation=new _c(this),this.cullFace=new yc(this),this.cullFaceSide=new xc(this),this.frontFace=new vc(this),this.program=new bc(this),this.activeTexture=new wc(this),this.viewport=new Zs(this),this.bindFramebuffer=new ts(this),this.bindRenderbuffer=new Gs(this),this.bindTexture=new Hs(this),this.bindVertexBuffer=new Gn(this),this.bindElementBuffer=new il(this),this.bindVertexArray=new rl(this),this.pixelStoreUnpack=new Ws(this),this.pixelStoreUnpackPremultiplyAlpha=new xn(this),this.pixelStoreUnpackFlipY=new nl(this),this.extTextureFilterAnisotropic=t.getExtension("EXT_texture_filter_anisotropic")||t.getExtension("MOZ_EXT_texture_filter_anisotropic")||t.getExtension("WEBKIT_EXT_texture_filter_anisotropic"),this.extTextureFilterAnisotropic&&(this.extTextureFilterAnisotropicMax=t.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),this.maxTextureSize=t.getParameter(t.MAX_TEXTURE_SIZE),Qr(t)){this.HALF_FLOAT=t.HALF_FLOAT;const c=t.getExtension("EXT_color_buffer_half_float");this.RGBA16F=(n=t.RGBA16F)!==null&&n!==void 0?n:c==null?void 0:c.RGBA16F_EXT,this.RGB16F=(s=t.RGB16F)!==null&&s!==void 0?s:c==null?void 0:c.RGB16F_EXT,t.getExtension("EXT_color_buffer_float")}else{t.getExtension("EXT_color_buffer_half_float"),t.getExtension("OES_texture_half_float_linear");const c=t.getExtension("OES_texture_half_float");this.HALF_FLOAT=c==null?void 0:c.HALF_FLOAT_OES}}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}createIndexBuffer(t,n){return new Wa(this,t,n)}createVertexBuffer(t,n,s){return new Xa(this,t,n,s)}createRenderbuffer(t,n,s){const c=this.gl,h=c.createRenderbuffer();return this.bindRenderbuffer.set(h),c.renderbufferStorage(c.RENDERBUFFER,t,n,s),this.bindRenderbuffer.set(null),h}createFramebuffer(t,n,s,c){return new gt(this,t,n,s,c)}clear({color:t,depth:n,stencil:s}){const c=this.gl;let h=0;t&&(h|=c.COLOR_BUFFER_BIT,this.clearColor.set(t),this.colorMask.set([!0,!0,!0,!0])),n!==void 0&&(h|=c.DEPTH_BUFFER_BIT,this.depthRange.set([0,1]),this.clearDepth.set(n),this.depthMask.set(!0)),s!==void 0&&(h|=c.STENCIL_BUFFER_BIT,this.clearStencil.set(s),this.stencilMask.set(255)),c.clear(h)}setCullFace(t){t.enable===!1?this.cullFace.set(!1):(this.cullFace.set(!0),this.cullFaceSide.set(t.mode),this.frontFace.set(t.frontFace))}setDepthMode(t){t.func!==this.gl.ALWAYS||t.mask?(this.depthTest.set(!0),this.depthFunc.set(t.func),this.depthMask.set(t.mask),this.depthRange.set(t.range)):this.depthTest.set(!1)}setStencilMode(t){t.test.func!==this.gl.ALWAYS||t.mask?(this.stencilTest.set(!0),this.stencilMask.set(t.mask),this.stencilOp.set([t.fail,t.depthFail,t.pass]),this.stencilFunc.set({func:t.test.func,ref:t.ref,mask:t.test.mask})):this.stencilTest.set(!1)}setColorMode(t){l.aG(t.blendFunction,Rt.Replace)?this.blend.set(!1):(this.blend.set(!0),this.blendFunc.set(t.blendFunction),this.blendColor.set(t.blendColor)),this.colorMask.set(t.mask)}createVertexArray(){var t;return Qr(this.gl)?this.gl.createVertexArray():(t=this.gl.getExtension("OES_vertex_array_object"))===null||t===void 0?void 0:t.createVertexArrayOES()}deleteVertexArray(t){var n;return Qr(this.gl)?this.gl.deleteVertexArray(t):(n=this.gl.getExtension("OES_vertex_array_object"))===null||n===void 0?void 0:n.deleteVertexArrayOES(t)}unbindVAO(){this.bindVertexArray.set(null)}}class ht{constructor(t,n,s){this.func=t,this.mask=n,this.range=s}}ht.ReadOnly=!1,ht.ReadWrite=!0,ht.disabled=new ht(519,ht.ReadOnly,[0,1]);const vn=7680;class Ft{constructor(t,n,s,c,h,g){this.test=t,this.ref=n,this.mask=s,this.fail=c,this.depthFail=h,this.pass=g}}Ft.disabled=new Ft({func:519,mask:0},0,0,vn,vn,vn);class zt{constructor(t,n,s){this.enable=t,this.mode=n,this.frontFace=s}}let fa;function sl(u,t,n,s,c,h,g){const _=u.context,x=_.gl,w=u.useProgram("collisionBox"),T=[];let I=0,P=0;for(let G=0;G<s.length;G++){const te=s[G],ce=t.getTile(te),ue=ce.getBucket(n);if(!ue)continue;let fe=te.posMatrix;c[0]===0&&c[1]===0||(fe=u.translatePosMatrix(te.posMatrix,ce,c,h));const ve=g?ue.textCollisionBox:ue.iconCollisionBox,xe=ue.collisionCircleArray;if(xe.length>0){const Se=l.Z(),Ne=fe;l.aU(Se,ue.placementInvProjMatrix,u.transform.glCoordMatrix),l.aU(Se,Se,ue.placementViewportMatrix),T.push({circleArray:xe,circleOffset:P,transform:Ne,invTransform:Se,coord:te}),I+=xe.length/4,P=I}ve&&w.draw(_,x.LINES,ht.disabled,Ft.disabled,u.colorModeForRenderPass(),zt.disabled,Rs(fe,u.transform,ce),u.style.map.terrain&&u.style.map.terrain.getTerrainData(te),n.id,ve.layoutVertexBuffer,ve.indexBuffer,ve.segments,null,u.transform.zoom,null,null,ve.collisionVertexBuffer)}if(!g||!T.length)return;const V=u.useProgram("collisionCircle"),N=new l.aV;N.resize(4*I),N._trim();let $=0;for(const G of T)for(let te=0;te<G.circleArray.length/4;te++){const ce=4*te,ue=G.circleArray[ce+0],fe=G.circleArray[ce+1],ve=G.circleArray[ce+2],xe=G.circleArray[ce+3];N.emplace($++,ue,fe,ve,xe,0),N.emplace($++,ue,fe,ve,xe,1),N.emplace($++,ue,fe,ve,xe,2),N.emplace($++,ue,fe,ve,xe,3)}(!fa||fa.length<2*I)&&(fa=(function(G){const te=2*G,ce=new l.aX;ce.resize(te),ce._trim();for(let ue=0;ue<te;ue++){const fe=6*ue;ce.uint16[fe+0]=4*ue+0,ce.uint16[fe+1]=4*ue+1,ce.uint16[fe+2]=4*ue+2,ce.uint16[fe+3]=4*ue+2,ce.uint16[fe+4]=4*ue+3,ce.uint16[fe+5]=4*ue+0}return ce})(I));const B=_.createIndexBuffer(fa,!0),ee=_.createVertexBuffer(N,l.aW.members,!0);for(const G of T){const te={u_matrix:G.transform,u_inv_matrix:G.invTransform,u_camera_to_center_distance:(se=u.transform).cameraToCenterDistance,u_viewport_size:[se.width,se.height]};V.draw(_,x.TRIANGLES,ht.disabled,Ft.disabled,u.colorModeForRenderPass(),zt.disabled,te,u.style.map.terrain&&u.style.map.terrain.getTerrainData(G.coord),n.id,ee,B,l.S.simpleSegment(0,2*G.circleOffset,G.circleArray.length,G.circleArray.length/2),null,u.transform.zoom,null,null,null)}var se;ee.destroy(),B.destroy()}zt.disabled=new zt(!1,1029,2305),zt.backCCW=new zt(!0,1029,2305);const Ks=l.ao(new Float32Array(16));function is(u,t,n,s,c,h){const{horizontalAlign:g,verticalAlign:_}=l.au(u);return new l.P((-(g-.5)*t/c+s[0])*h,(-(_-.5)*n/c+s[1])*h)}function rs(u,t,n,s,c,h,g,_,x,w,T){const I=u.text.placedSymbolArray,P=u.text.dynamicLayoutVertexArray,V=u.icon.dynamicLayoutVertexArray,N={};P.clear();for(let $=0;$<I.length;$++){const B=I.get($),ee=B.hidden||!B.crossTileID||u.allowVerticalPlacement&&!B.placedOrientation?null:s[B.crossTileID];if(ee){const se=new l.P(B.anchorX,B.anchorY),G=Ot(se,n?g:h,T),te=gn(c.cameraToCenterDistance,G.signedDistanceFromCamera);let ce=l.aj(u.textSizeData,x,B)*te/l.ap;n&&(ce*=u.tilePixelRatio/_);const{width:ue,height:fe,anchor:ve,textOffset:xe,textBoxScale:Se}=ee,Ne=is(ve,ue,fe,xe,Se,ce),ot=n?Ot(se.add(Ne),h,T).point:G.point.add(t?Ne.rotate(-c.angle):Ne),Ce=u.allowVerticalPlacement&&B.placedOrientation===l.ai.vertical?Math.PI/2:0;for(let Ye=0;Ye<B.numGlyphs;Ye++)l.ak(P,ot,Ce);w&&B.associatedIconIndex>=0&&(N[B.associatedIconIndex]={shiftedAnchor:ot,angle:Ce})}else F(B.numGlyphs,P)}if(w){V.clear();const $=u.icon.placedSymbolArray;for(let B=0;B<$.length;B++){const ee=$.get(B);if(ee.hidden)F(ee.numGlyphs,V);else{const se=N[B];if(se)for(let G=0;G<ee.numGlyphs;G++)l.ak(V,se.shiftedAnchor,se.angle);else F(ee.numGlyphs,V)}}u.icon.dynamicLayoutVertexBuffer.updateData(V)}u.text.dynamicLayoutVertexBuffer.updateData(P)}function Ys(u,t,n){return n.iconsInText&&t?"symbolTextAndIcon":u?"symbolSDF":"symbolIcon"}function ns(u,t,n,s,c,h,g,_,x,w,T,I){const P=u.context,V=P.gl,N=u.transform,$=_==="map",B=x==="map",ee=_!=="viewport"&&n.layout.get("symbol-placement")!=="point",se=$&&!B&&!ee,G=!n.layout.get("symbol-sort-key").isConstant();let te=!1;const ce=u.depthModeForSublayer(0,ht.ReadOnly),ue=n._unevaluatedLayout.hasValue("text-variable-anchor")||n._unevaluatedLayout.hasValue("text-variable-anchor-offset"),fe=[];for(const ve of s){const xe=t.getTile(ve),Se=xe.getBucket(n);if(!Se)continue;const Ne=c?Se.text:Se.icon;if(!Ne||!Ne.segments.get().length||!Ne.hasVisibleVertices)continue;const ot=Ne.programConfigurations.get(n.id),Ce=c||Se.sdfIcons,Ye=c?Se.textSizeData:Se.iconSizeData,Ue=B||N.pitch!==0,bt=u.useProgram(Ys(Ce,c,Se),ot),st=l.ah(Ye,N.zoom),rt=u.style.map.terrain&&u.style.map.terrain.getTerrainData(ve);let lt,$t,At,hi,Jt=[0,0],Gt=null;if(c)$t=xe.glyphAtlasTexture,At=V.LINEAR,lt=xe.glyphAtlasTexture.size,Se.iconsInText&&(Jt=xe.imageAtlasTexture.size,Gt=xe.imageAtlasTexture,hi=Ue||u.options.rotating||u.options.zooming||Ye.kind==="composite"||Ye.kind==="camera"?V.LINEAR:V.NEAREST);else{const jt=n.layout.get("icon-size").constantOr(0)!==1||Se.iconsNeedLinear;$t=xe.imageAtlasTexture,At=Ce||u.options.rotating||u.options.zooming||jt||Ue?V.LINEAR:V.NEAREST,lt=xe.imageAtlasTexture.size}const Wi=Q(xe,1,u.transform.zoom),Et=Ie(ve.posMatrix,B,$,u.transform,Wi),wr=xr(ve.posMatrix,B,$,u.transform,Wi),Sr=ue&&Se.hasTextData(),an=n.layout.get("icon-text-fit")!=="none"&&Sr&&Se.hasIconData();if(ee){const jt=u.style.map.terrain?(Ri,qt)=>u.style.map.terrain.getElevation(ve,Ri,qt):null,Qt=n.layout.get("text-rotation-alignment")==="map";ke(Se,ve.posMatrix,u,c,Et,wr,B,w,Qt,jt)}const In=u.translatePosMatrix(ve.posMatrix,xe,h,g),ea=ee||c&&ue||an?Ks:Et,_i=u.translatePosMatrix(wr,xe,h,g,!0),pi=Ce&&n.paint.get(c?"text-halo-width":"icon-halo-width").constantOr(1)!==0;let Ii;Ii=Ce?Se.iconsInText?yn(Ye.kind,st,se,B,u,In,ea,_i,lt,Jt):Ns(Ye.kind,st,se,B,u,In,ea,_i,c,lt):Os(Ye.kind,st,se,B,u,In,ea,_i,c,lt);const An={program:bt,buffers:Ne,uniformValues:Ii,atlasTexture:$t,atlasTextureIcon:Gt,atlasInterpolation:At,atlasInterpolationIcon:hi,isSDF:Ce,hasHalo:pi};if(G&&Se.canOverlap){te=!0;const jt=Ne.segments.get();for(const Qt of jt)fe.push({segments:new l.S([Qt]),sortKey:Qt.sortKey,state:An,terrainData:rt})}else fe.push({segments:Ne.segments,sortKey:0,state:An,terrainData:rt})}te&&fe.sort(((ve,xe)=>ve.sortKey-xe.sortKey));for(const ve of fe){const xe=ve.state;if(P.activeTexture.set(V.TEXTURE0),xe.atlasTexture.bind(xe.atlasInterpolation,V.CLAMP_TO_EDGE),xe.atlasTextureIcon&&(P.activeTexture.set(V.TEXTURE1),xe.atlasTextureIcon&&xe.atlasTextureIcon.bind(xe.atlasInterpolationIcon,V.CLAMP_TO_EDGE)),xe.isSDF){const Se=xe.uniformValues;xe.hasHalo&&(Se.u_is_halo=1,Js(xe.buffers,ve.segments,n,u,xe.program,ce,T,I,Se,ve.terrainData)),Se.u_is_halo=0}Js(xe.buffers,ve.segments,n,u,xe.program,ce,T,I,xe.uniformValues,ve.terrainData)}}function Js(u,t,n,s,c,h,g,_,x,w){const T=s.context;c.draw(T,T.gl.TRIANGLES,h,g,_,zt.disabled,x,w,n.id,u.layoutVertexBuffer,u.indexBuffer,t,n.paint,s.transform.zoom,u.programConfigurations.get(n.id),u.dynamicLayoutVertexBuffer,u.opacityVertexBuffer)}function ma(u,t,n,s,c){if(!n||!s||!s.imageAtlas)return;const h=s.imageAtlas.patternPositions;let g=h[n.to.toString()],_=h[n.from.toString()];if(!g&&_&&(g=_),!_&&g&&(_=g),!g||!_){const x=c.getPaintProperty(t);g=h[x],_=h[x]}g&&_&&u.setConstantPatternPositions(g,_)}function ga(u,t,n,s,c,h,g){const _=u.context.gl,x="fill-pattern",w=n.paint.get(x),T=w&&w.constantOr(1),I=n.getCrossfadeParameters();let P,V,N,$,B;g?(V=T&&!n.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",P=_.LINES):(V=T?"fillPattern":"fill",P=_.TRIANGLES);const ee=w.constantOr(null);for(const se of s){const G=t.getTile(se);if(T&&!G.patternsLoaded())continue;const te=G.getBucket(n);if(!te)continue;const ce=te.programConfigurations.get(n.id),ue=u.useProgram(V,ce),fe=u.style.map.terrain&&u.style.map.terrain.getTerrainData(se);T&&(u.context.activeTexture.set(_.TEXTURE0),G.imageAtlasTexture.bind(_.LINEAR,_.CLAMP_TO_EDGE),ce.updatePaintBuffers(I)),ma(ce,x,ee,G,n);const ve=fe?se:null,xe=u.translatePosMatrix(ve?ve.posMatrix:se.posMatrix,G,n.paint.get("fill-translate"),n.paint.get("fill-translate-anchor"));if(g){$=te.indexBuffer2,B=te.segments2;const Se=[_.drawingBufferWidth,_.drawingBufferHeight];N=V==="fillOutlinePattern"&&T?qa(xe,u,I,G,Se):ja(xe,Se)}else $=te.indexBuffer,B=te.segments,N=T?Ls(xe,u,I,G):Ho(xe);ue.draw(u.context,P,c,u.stencilModeForClipping(se),h,zt.disabled,N,fe,n.id,te.layoutVertexBuffer,$,B,n.paint,u.transform.zoom,ce)}}function _a(u,t,n,s,c,h,g){const _=u.context,x=_.gl,w="fill-extrusion-pattern",T=n.paint.get(w),I=T.constantOr(1),P=n.getCrossfadeParameters(),V=n.paint.get("fill-extrusion-opacity"),N=T.constantOr(null);for(const $ of s){const B=t.getTile($),ee=B.getBucket(n);if(!ee)continue;const se=u.style.map.terrain&&u.style.map.terrain.getTerrainData($),G=ee.programConfigurations.get(n.id),te=u.useProgram(I?"fillExtrusionPattern":"fillExtrusion",G);I&&(u.context.activeTexture.set(x.TEXTURE0),B.imageAtlasTexture.bind(x.LINEAR,x.CLAMP_TO_EDGE),G.updatePaintBuffers(P)),ma(G,w,N,B,n);const ce=u.translatePosMatrix($.posMatrix,B,n.paint.get("fill-extrusion-translate"),n.paint.get("fill-extrusion-translate-anchor")),ue=n.paint.get("fill-extrusion-vertical-gradient"),fe=I?Yr(ce,u,ue,V,$,P,B):Ds(ce,u,ue,V);te.draw(_,_.gl.TRIANGLES,c,h,g,zt.backCCW,fe,se,n.id,ee.layoutVertexBuffer,ee.indexBuffer,ee.segments,n.paint,u.transform.zoom,G,u.style.map.terrain&&ee.centroidVertexBuffer)}}function Tc(u,t,n,s,c,h,g){const _=u.context,x=_.gl,w=n.fbo;if(!w)return;const T=u.useProgram("hillshade"),I=u.style.map.terrain&&u.style.map.terrain.getTerrainData(t);_.activeTexture.set(x.TEXTURE0),x.bindTexture(x.TEXTURE_2D,w.colorAttachment.get()),T.draw(_,x.TRIANGLES,c,h,g,zt.disabled,((P,V,N,$)=>{const B=N.paint.get("hillshade-shadow-color"),ee=N.paint.get("hillshade-highlight-color"),se=N.paint.get("hillshade-accent-color");let G=N.paint.get("hillshade-illumination-direction")*(Math.PI/180);N.paint.get("hillshade-illumination-anchor")==="viewport"&&(G-=P.transform.angle);const te=!P.options.moving;return{u_matrix:$?$.posMatrix:P.transform.calculatePosMatrix(V.tileID.toUnwrapped(),te),u_image:0,u_latrange:Fs(0,V.tileID),u_light:[N.paint.get("hillshade-exaggeration"),G],u_shadow:B,u_highlight:ee,u_accent:se}})(u,n,s,I?t:null),I,s.id,u.rasterBoundsBuffer,u.quadTriangleIndexBuffer,u.rasterBoundsSegments)}function Qs(u,t,n,s,c,h){const g=u.context,_=g.gl,x=t.dem;if(x&&x.data){const w=x.dim,T=x.stride,I=x.getPixels();if(g.activeTexture.set(_.TEXTURE1),g.pixelStoreUnpackPremultiplyAlpha.set(!1),t.demTexture=t.demTexture||u.getTileTexture(T),t.demTexture){const V=t.demTexture;V.update(I,{premultiply:!1}),V.bind(_.NEAREST,_.CLAMP_TO_EDGE)}else t.demTexture=new kt(g,I,_.RGBA,{premultiply:!1}),t.demTexture.bind(_.NEAREST,_.CLAMP_TO_EDGE);g.activeTexture.set(_.TEXTURE0);let P=t.fbo;if(!P){const V=new kt(g,{width:w,height:w,data:null},_.RGBA);V.bind(_.LINEAR,_.CLAMP_TO_EDGE),P=t.fbo=g.createFramebuffer(w,w,!0,!1),P.colorAttachment.set(V.texture)}g.bindFramebuffer.set(P.framebuffer),g.viewport.set([0,0,w,w]),u.useProgram("hillshadePrepare").draw(g,_.TRIANGLES,s,c,h,zt.disabled,((V,N)=>{const $=N.stride,B=l.Z();return l.aS(B,0,l.N,-l.N,0,0,1),l.$(B,B,[0,-l.N,0]),{u_matrix:B,u_image:1,u_dimension:[$,$],u_zoom:V.overscaledZ,u_unpack:N.getUnpackVector()}})(t.tileID,x),null,n.id,u.rasterBoundsBuffer,u.quadTriangleIndexBuffer,u.rasterBoundsSegments),t.needsHillshadePrepare=!1}}function Ic(u,t,n,s,c,h){const g=s.paint.get("raster-fade-duration");if(!h&&g>0){const _=l.h.now(),x=(_-u.timeAdded)/g,w=t?(_-t.timeAdded)/g:-1,T=n.getSource(),I=c.coveringZoomLevel({tileSize:T.tileSize,roundZoom:T.roundZoom}),P=!t||Math.abs(t.tileID.overscaledZ-I)>Math.abs(u.tileID.overscaledZ-I),V=P&&u.refreshedUponExpiration?1:l.ad(P?x:1-w,0,1);return u.refreshedUponExpiration&&x>=1&&(u.refreshedUponExpiration=!1),t?{opacity:1,mix:1-V}:{opacity:V,mix:0}}return{opacity:1,mix:0}}const ol=new l.aT(1,0,0,1),as=new l.aT(0,1,0,1),eo=new l.aT(0,0,1,1),ll=new l.aT(1,0,1,1),cl=new l.aT(0,1,1,1);function ya(u,t,n,s){os(u,0,t+n/2,u.transform.width,n,s)}function ss(u,t,n,s){os(u,t-n/2,0,n,u.transform.height,s)}function os(u,t,n,s,c,h){const g=u.context,_=g.gl;_.enable(_.SCISSOR_TEST),_.scissor(t*u.pixelRatio,n*u.pixelRatio,s*u.pixelRatio,c*u.pixelRatio),g.clear({color:h}),_.disable(_.SCISSOR_TEST)}function ul(u,t,n){const s=u.context,c=s.gl,h=n.posMatrix,g=u.useProgram("debug"),_=ht.disabled,x=Ft.disabled,w=u.colorModeForRenderPass(),T="$debug",I=u.style.map.terrain&&u.style.map.terrain.getTerrainData(n);s.activeTexture.set(c.TEXTURE0);const P=t.getTileByID(n.key).latestRawTileData,V=Math.floor((P&&P.byteLength||0)/1024),N=t.getTile(n).tileSize,$=512/Math.min(N,512)*(n.overscaledZ/u.transform.zoom)*.5;let B=n.canonical.toString();n.overscaledZ!==n.canonical.z&&(B+=` => ${n.overscaledZ}`),(function(ee,se){ee.initDebugOverlayCanvas();const G=ee.debugOverlayCanvas,te=ee.context.gl,ce=ee.debugOverlayCanvas.getContext("2d");ce.clearRect(0,0,G.width,G.height),ce.shadowColor="white",ce.shadowBlur=2,ce.lineWidth=1.5,ce.strokeStyle="white",ce.textBaseline="top",ce.font="bold 36px Open Sans, sans-serif",ce.fillText(se,5,5),ce.strokeText(se,5,5),ee.debugOverlayTexture.update(G),ee.debugOverlayTexture.bind(te.LINEAR,te.CLAMP_TO_EDGE)})(u,`${B} ${V}kB`),g.draw(s,c.TRIANGLES,_,x,Rt.alphaBlended,zt.disabled,pa(h,l.aT.transparent,$),null,T,u.debugBuffer,u.quadTriangleIndexBuffer,u.debugSegments),g.draw(s,c.LINE_STRIP,_,x,w,zt.disabled,pa(h,l.aT.red),I,T,u.debugBuffer,u.tileBorderIndexBuffer,u.debugSegments)}function Vt(u,t,n){const s=u.context,c=s.gl,h=u.colorModeForRenderPass(),g=new ht(c.LEQUAL,ht.ReadWrite,u.depthRangeFor3D),_=u.useProgram("terrain"),x=t.getTerrainMesh();s.bindFramebuffer.set(null),s.viewport.set([0,0,u.width,u.height]);for(const w of n){const T=u.renderToTexture.getTexture(w),I=t.getTerrainData(w.tileID);s.activeTexture.set(c.TEXTURE0),c.bindTexture(c.TEXTURE_2D,T.texture);const P={u_matrix:u.transform.calculatePosMatrix(w.tileID.toUnwrapped()),u_texture:0,u_ele_delta:t.getMeshFrameDelta(u.transform.zoom)};_.draw(s,c.TRIANGLES,g,Ft.disabled,h,zt.backCCW,P,I,"terrain",x.vertexBuffer,x.indexBuffer,x.segments)}}class bn{constructor(t,n){this.context=new Sc(t),this.transform=n,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:l.Z(),renderTime:0},this.setup(),this.numSublayers=zi.maxUnderzooming+zi.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new Va}resize(t,n,s){if(this.width=Math.floor(t*s),this.height=Math.floor(n*s),this.pixelRatio=s,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(const c of this.style._order)this.style._layers[c].resize()}setup(){const t=this.context,n=new l.a_;n.emplaceBack(0,0),n.emplaceBack(l.N,0),n.emplaceBack(0,l.N),n.emplaceBack(l.N,l.N),this.tileExtentBuffer=t.createVertexBuffer(n,Ua.members),this.tileExtentSegments=l.S.simpleSegment(0,0,4,2);const s=new l.a_;s.emplaceBack(0,0),s.emplaceBack(l.N,0),s.emplaceBack(0,l.N),s.emplaceBack(l.N,l.N),this.debugBuffer=t.createVertexBuffer(s,Ua.members),this.debugSegments=l.S.simpleSegment(0,0,4,5);const c=new l.V;c.emplaceBack(0,0,0,0),c.emplaceBack(l.N,0,l.N,0),c.emplaceBack(0,l.N,0,l.N),c.emplaceBack(l.N,l.N,l.N,l.N),this.rasterBoundsBuffer=t.createVertexBuffer(c,pr.members),this.rasterBoundsSegments=l.S.simpleSegment(0,0,4,2);const h=new l.a_;h.emplaceBack(0,0),h.emplaceBack(1,0),h.emplaceBack(0,1),h.emplaceBack(1,1),this.viewportBuffer=t.createVertexBuffer(h,Ua.members),this.viewportSegments=l.S.simpleSegment(0,0,4,2);const g=new l.a$;g.emplaceBack(0),g.emplaceBack(1),g.emplaceBack(3),g.emplaceBack(2),g.emplaceBack(0),this.tileBorderIndexBuffer=t.createIndexBuffer(g);const _=new l.b0;_.emplaceBack(0,1,2),_.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=t.createIndexBuffer(_);const x=this.context.gl;this.stencilClearMode=new Ft({func:x.ALWAYS,mask:0},0,255,x.ZERO,x.ZERO,x.ZERO)}clearStencil(){const t=this.context,n=t.gl;this.nextStencilID=1,this.currentStencilSource=void 0;const s=l.Z();l.aS(s,0,this.width,this.height,0,0,1),l.a0(s,s,[n.drawingBufferWidth,n.drawingBufferHeight,0]),this.useProgram("clippingMask").draw(t,n.TRIANGLES,ht.disabled,this.stencilClearMode,Rt.disabled,zt.disabled,Wo(s),null,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}_renderTileClippingMasks(t,n){if(this.currentStencilSource===t.source||!t.isTileClipped()||!n||!n.length)return;this.currentStencilSource=t.source;const s=this.context,c=s.gl;this.nextStencilID+n.length>256&&this.clearStencil(),s.setColorMode(Rt.disabled),s.setDepthMode(ht.disabled);const h=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(const g of n){const _=this._tileClippingMaskIDs[g.key]=this.nextStencilID++,x=this.style.map.terrain&&this.style.map.terrain.getTerrainData(g);h.draw(s,c.TRIANGLES,ht.disabled,new Ft({func:c.ALWAYS,mask:0},_,255,c.KEEP,c.KEEP,c.REPLACE),Rt.disabled,zt.disabled,Wo(g.posMatrix),x,"$clipping",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const t=this.nextStencilID++,n=this.context.gl;return new Ft({func:n.NOTEQUAL,mask:255},t,255,n.KEEP,n.KEEP,n.REPLACE)}stencilModeForClipping(t){const n=this.context.gl;return new Ft({func:n.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,n.KEEP,n.KEEP,n.REPLACE)}stencilConfigForOverlap(t){const n=this.context.gl,s=t.sort(((g,_)=>_.overscaledZ-g.overscaledZ)),c=s[s.length-1].overscaledZ,h=s[0].overscaledZ-c+1;if(h>1){this.currentStencilSource=void 0,this.nextStencilID+h>256&&this.clearStencil();const g={};for(let _=0;_<h;_++)g[_+c]=new Ft({func:n.GEQUAL,mask:255},_+this.nextStencilID,255,n.KEEP,n.KEEP,n.REPLACE);return this.nextStencilID+=h,[g,s]}return[{[c]:Ft.disabled},s]}colorModeForRenderPass(){const t=this.context.gl;return this._showOverdrawInspector?new Rt([t.CONSTANT_COLOR,t.ONE],new l.aT(.125,.125,.125,0),[!0,!0,!0,!0]):this.renderPass==="opaque"?Rt.unblended:Rt.alphaBlended}depthModeForSublayer(t,n,s){if(!this.opaquePassEnabledForLayer())return ht.disabled;const c=1-((1+this.currentLayer)*this.numSublayers+t)*this.depthEpsilon;return new ht(s||this.context.gl.LEQUAL,n,[c,c])}opaquePassEnabledForLayer(){return this.currentLayer<this.opaquePassCutoff}render(t,n){this.style=t,this.options=n,this.lineAtlas=t.lineAtlas,this.imageManager=t.imageManager,this.glyphManager=t.glyphManager,this.symbolFadeChange=t.placement.symbolFadeChange(l.h.now()),this.imageManager.beginFrame();const s=this.style._order,c=this.style.sourceCaches,h={},g={},_={};for(const x in c){const w=c[x];w.used&&w.prepare(this.context),h[x]=w.getVisibleCoordinates(),g[x]=h[x].slice().reverse(),_[x]=w.getVisibleCoordinates(!0).reverse()}this.opaquePassCutoff=1/0;for(let x=0;x<s.length;x++)if(this.style._layers[s[x]].is3D()){this.opaquePassCutoff=x;break}if(this.renderToTexture){this.renderToTexture.prepareForRender(this.style,this.transform.zoom),this.opaquePassCutoff=0;const x=this.style.map.terrain.sourceCache.tilesAfterTime(this.terrainFacilitator.renderTime);(this.terrainFacilitator.dirty||!l.b1(this.terrainFacilitator.matrix,this.transform.projMatrix)||x.length)&&(l.b2(this.terrainFacilitator.matrix,this.transform.projMatrix),this.terrainFacilitator.renderTime=Date.now(),this.terrainFacilitator.dirty=!1,(function(w,T){const I=w.context,P=I.gl,V=Rt.unblended,N=new ht(P.LEQUAL,ht.ReadWrite,[0,1]),$=T.getTerrainMesh(),B=T.sourceCache.getRenderableTiles(),ee=w.useProgram("terrainDepth");I.bindFramebuffer.set(T.getFramebuffer("depth").framebuffer),I.viewport.set([0,0,w.width/devicePixelRatio,w.height/devicePixelRatio]),I.clear({color:l.aT.transparent,depth:1});for(const se of B){const G=T.getTerrainData(se.tileID),te={u_matrix:w.transform.calculatePosMatrix(se.tileID.toUnwrapped()),u_ele_delta:T.getMeshFrameDelta(w.transform.zoom)};ee.draw(I,P.TRIANGLES,N,Ft.disabled,V,zt.backCCW,te,G,"terrain",$.vertexBuffer,$.indexBuffer,$.segments)}I.bindFramebuffer.set(null),I.viewport.set([0,0,w.width,w.height])})(this,this.style.map.terrain),(function(w,T){const I=w.context,P=I.gl,V=Rt.unblended,N=new ht(P.LEQUAL,ht.ReadWrite,[0,1]),$=T.getTerrainMesh(),B=T.getCoordsTexture(),ee=T.sourceCache.getRenderableTiles(),se=w.useProgram("terrainCoords");I.bindFramebuffer.set(T.getFramebuffer("coords").framebuffer),I.viewport.set([0,0,w.width/devicePixelRatio,w.height/devicePixelRatio]),I.clear({color:l.aT.transparent,depth:1}),T.coordsIndex=[];for(const G of ee){const te=T.getTerrainData(G.tileID);I.activeTexture.set(P.TEXTURE0),P.bindTexture(P.TEXTURE_2D,B.texture);const ce={u_matrix:w.transform.calculatePosMatrix(G.tileID.toUnwrapped()),u_terrain_coords_id:(255-T.coordsIndex.length)/255,u_texture:0,u_ele_delta:T.getMeshFrameDelta(w.transform.zoom)};se.draw(I,P.TRIANGLES,N,Ft.disabled,V,zt.backCCW,ce,te,"terrain",$.vertexBuffer,$.indexBuffer,$.segments),T.coordsIndex.push(G.tileID.key)}I.bindFramebuffer.set(null),I.viewport.set([0,0,w.width,w.height])})(this,this.style.map.terrain))}this.renderPass="offscreen";for(const x of s){const w=this.style._layers[x];if(!w.hasOffscreenPass()||w.isHidden(this.transform.zoom))continue;const T=g[w.source];(w.type==="custom"||T.length)&&this.renderLayer(this,c[w.source],w,T)}if(this.context.bindFramebuffer.set(null),this.context.clear({color:n.showOverdrawInspector?l.aT.black:l.aT.transparent,depth:1}),this.clearStencil(),this._showOverdrawInspector=n.showOverdrawInspector,this.depthRangeFor3D=[0,1-(t._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass="opaque",this.currentLayer=s.length-1;this.currentLayer>=0;this.currentLayer--){const x=this.style._layers[s[this.currentLayer]],w=c[x.source],T=h[x.source];this._renderTileClippingMasks(x,T),this.renderLayer(this,w,x,T)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayer<s.length;this.currentLayer++){const x=this.style._layers[s[this.currentLayer]],w=c[x.source];if(this.renderToTexture&&this.renderToTexture.renderLayer(x))continue;const T=(x.type==="symbol"?_:g)[x.source];this._renderTileClippingMasks(x,h[x.source]),this.renderLayer(this,w,x,T)}if(this.options.showTileBoundaries){const x=(function(w,T){let I=null;const P=Object.values(w._layers).flatMap((B=>B.source&&!B.isHidden(T)?[w.sourceCaches[B.source]]:[])),V=P.filter((B=>B.getSource().type==="vector")),N=P.filter((B=>B.getSource().type!=="vector")),$=B=>{(!I||I.getSource().maxzoom<B.getSource().maxzoom)&&(I=B)};return V.forEach((B=>$(B))),I||N.forEach((B=>$(B))),I})(this.style,this.transform.zoom);x&&(function(w,T,I){for(let P=0;P<I.length;P++)ul(w,T,I[P])})(this,x,x.getVisibleCoordinates())}this.options.showPadding&&(function(x){const w=x.transform.padding;ya(x,x.transform.height-(w.top||0),3,ol),ya(x,w.bottom||0,3,as),ss(x,w.left||0,3,eo),ss(x,x.transform.width-(w.right||0),3,ll);const T=x.transform.centerPoint;(function(I,P,V,N){os(I,P-1,V-10,2,20,N),os(I,P-10,V-1,20,2,N)})(x,T.x,x.transform.height-T.y,cl)})(this),this.context.setDefault()}renderLayer(t,n,s,c){if(!s.isHidden(this.transform.zoom)&&(s.type==="background"||s.type==="custom"||(c||[]).length))switch(this.id=s.id,s.type){case"symbol":(function(h,g,_,x,w){if(h.renderPass!=="translucent")return;const T=Ft.disabled,I=h.colorModeForRenderPass();(_._unevaluatedLayout.hasValue("text-variable-anchor")||_._unevaluatedLayout.hasValue("text-variable-anchor-offset"))&&(function(P,V,N,$,B,ee,se){const G=V.transform,te=B==="map",ce=ee==="map";for(const ue of P){const fe=$.getTile(ue),ve=fe.getBucket(N);if(!ve||!ve.text||!ve.text.segments.get().length)continue;const xe=l.ah(ve.textSizeData,G.zoom),Se=Q(fe,1,V.transform.zoom),Ne=Ie(ue.posMatrix,ce,te,V.transform,Se),ot=N.layout.get("icon-text-fit")!=="none"&&ve.hasIconData();if(xe){const Ce=Math.pow(2,G.zoom-fe.tileID.overscaledZ);rs(ve,te,ce,se,G,Ne,ue.posMatrix,Ce,xe,ot,V.style.map.terrain?(Ye,Ue)=>V.style.map.terrain.getElevation(ue,Ye,Ue):null)}}})(x,h,_,g,_.layout.get("text-rotation-alignment"),_.layout.get("text-pitch-alignment"),w),_.paint.get("icon-opacity").constantOr(1)!==0&&ns(h,g,_,x,!1,_.paint.get("icon-translate"),_.paint.get("icon-translate-anchor"),_.layout.get("icon-rotation-alignment"),_.layout.get("icon-pitch-alignment"),_.layout.get("icon-keep-upright"),T,I),_.paint.get("text-opacity").constantOr(1)!==0&&ns(h,g,_,x,!0,_.paint.get("text-translate"),_.paint.get("text-translate-anchor"),_.layout.get("text-rotation-alignment"),_.layout.get("text-pitch-alignment"),_.layout.get("text-keep-upright"),T,I),g.map.showCollisionBoxes&&(sl(h,g,_,x,_.paint.get("text-translate"),_.paint.get("text-translate-anchor"),!0),sl(h,g,_,x,_.paint.get("icon-translate"),_.paint.get("icon-translate-anchor"),!1))})(t,n,s,c,this.style.placement.variableOffsets);break;case"circle":(function(h,g,_,x){if(h.renderPass!=="translucent")return;const w=_.paint.get("circle-opacity"),T=_.paint.get("circle-stroke-width"),I=_.paint.get("circle-stroke-opacity"),P=!_.layout.get("circle-sort-key").isConstant();if(w.constantOr(1)===0&&(T.constantOr(1)===0||I.constantOr(1)===0))return;const V=h.context,N=V.gl,$=h.depthModeForSublayer(0,ht.ReadOnly),B=Ft.disabled,ee=h.colorModeForRenderPass(),se=[];for(let G=0;G<x.length;G++){const te=x[G],ce=g.getTile(te),ue=ce.getBucket(_);if(!ue)continue;const fe=ue.programConfigurations.get(_.id),ve=h.useProgram("circle",fe),xe=ue.layoutVertexBuffer,Se=ue.indexBuffer,Ne=h.style.map.terrain&&h.style.map.terrain.getTerrainData(te),ot={programConfiguration:fe,program:ve,layoutVertexBuffer:xe,indexBuffer:Se,uniformValues:Jr(h,te,ce,_),terrainData:Ne};if(P){const Ce=ue.segments.get();for(const Ye of Ce)se.push({segments:new l.S([Ye]),sortKey:Ye.sortKey,state:ot})}else se.push({segments:ue.segments,sortKey:0,state:ot})}P&&se.sort(((G,te)=>G.sortKey-te.sortKey));for(const G of se){const{programConfiguration:te,program:ce,layoutVertexBuffer:ue,indexBuffer:fe,uniformValues:ve,terrainData:xe}=G.state;ce.draw(V,N.TRIANGLES,$,B,ee,zt.disabled,ve,xe,_.id,ue,fe,G.segments,_.paint,h.transform.zoom,te)}})(t,n,s,c);break;case"heatmap":(function(h,g,_,x){if(_.paint.get("heatmap-opacity")!==0)if(h.renderPass==="offscreen"){const w=h.context,T=w.gl,I=Ft.disabled,P=new Rt([T.ONE,T.ONE],l.aT.transparent,[!0,!0,!0,!0]);(function(V,N,$){const B=V.gl;V.activeTexture.set(B.TEXTURE1),V.viewport.set([0,0,N.width/4,N.height/4]);let ee=$.heatmapFbo;if(ee)B.bindTexture(B.TEXTURE_2D,ee.colorAttachment.get()),V.bindFramebuffer.set(ee.framebuffer);else{const se=B.createTexture();B.bindTexture(B.TEXTURE_2D,se),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_WRAP_S,B.CLAMP_TO_EDGE),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_WRAP_T,B.CLAMP_TO_EDGE),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_MIN_FILTER,B.LINEAR),B.texParameteri(B.TEXTURE_2D,B.TEXTURE_MAG_FILTER,B.LINEAR),ee=$.heatmapFbo=V.createFramebuffer(N.width/4,N.height/4,!1,!1),(function(G,te,ce,ue){var fe,ve;const xe=G.gl,Se=(fe=G.HALF_FLOAT)!==null&&fe!==void 0?fe:xe.UNSIGNED_BYTE,Ne=(ve=G.RGBA16F)!==null&&ve!==void 0?ve:xe.RGBA;xe.texImage2D(xe.TEXTURE_2D,0,Ne,te.width/4,te.height/4,0,xe.RGBA,Se,null),ue.colorAttachment.set(ce)})(V,N,se,ee)}})(w,h,_),w.clear({color:l.aT.transparent});for(let V=0;V<x.length;V++){const N=x[V];if(g.hasRenderableParent(N))continue;const $=g.getTile(N),B=$.getBucket(_);if(!B)continue;const ee=B.programConfigurations.get(_.id),se=h.useProgram("heatmap",ee),{zoom:G}=h.transform;se.draw(w,T.TRIANGLES,ht.disabled,I,P,zt.disabled,mc(N.posMatrix,$,G,_.paint.get("heatmap-intensity")),null,_.id,B.layoutVertexBuffer,B.indexBuffer,B.segments,_.paint,h.transform.zoom,ee)}w.viewport.set([0,0,h.width,h.height])}else h.renderPass==="translucent"&&(h.context.setColorMode(h.colorModeForRenderPass()),(function(w,T){const I=w.context,P=I.gl,V=T.heatmapFbo;if(!V)return;I.activeTexture.set(P.TEXTURE0),P.bindTexture(P.TEXTURE_2D,V.colorAttachment.get()),I.activeTexture.set(P.TEXTURE1);let N=T.colorRampTexture;N||(N=T.colorRampTexture=new kt(I,T.colorRamp,P.RGBA)),N.bind(P.LINEAR,P.CLAMP_TO_EDGE),w.useProgram("heatmapTexture").draw(I,P.TRIANGLES,ht.disabled,Ft.disabled,w.colorModeForRenderPass(),zt.disabled,(($,B,ee,se)=>{const G=l.Z();l.aS(G,0,$.width,$.height,0,0,1);const te=$.context.gl;return{u_matrix:G,u_world:[te.drawingBufferWidth,te.drawingBufferHeight],u_image:0,u_color_ramp:1,u_opacity:B.paint.get("heatmap-opacity")}})(w,T),null,T.id,w.viewportBuffer,w.quadTriangleIndexBuffer,w.viewportSegments,T.paint,w.transform.zoom)})(h,_))})(t,n,s,c);break;case"line":(function(h,g,_,x){if(h.renderPass!=="translucent")return;const w=_.paint.get("line-opacity"),T=_.paint.get("line-width");if(w.constantOr(1)===0||T.constantOr(1)===0)return;const I=h.depthModeForSublayer(0,ht.ReadOnly),P=h.colorModeForRenderPass(),V=_.paint.get("line-dasharray"),N=_.paint.get("line-pattern"),$=N.constantOr(1),B=_.paint.get("line-gradient"),ee=_.getCrossfadeParameters(),se=$?"linePattern":V?"lineSDF":B?"lineGradient":"line",G=h.context,te=G.gl;let ce=!0;for(const ue of x){const fe=g.getTile(ue);if($&&!fe.patternsLoaded())continue;const ve=fe.getBucket(_);if(!ve)continue;const xe=ve.programConfigurations.get(_.id),Se=h.context.program.get(),Ne=h.useProgram(se,xe),ot=ce||Ne.program!==Se,Ce=h.style.map.terrain&&h.style.map.terrain.getTerrainData(ue),Ye=N.constantOr(null);if(Ye&&fe.imageAtlas){const st=fe.imageAtlas,rt=st.patternPositions[Ye.to.toString()],lt=st.patternPositions[Ye.from.toString()];rt&&lt&&xe.setConstantPatternPositions(rt,lt)}const Ue=Ce?ue:null,bt=$?gc(h,fe,_,ee,Ue):V?Ko(h,fe,_,V,ee,Ue):B?Xo(h,fe,_,ve.lineClipsArray.length,Ue):Bs(h,fe,_,Ue);if($)G.activeTexture.set(te.TEXTURE0),fe.imageAtlasTexture.bind(te.LINEAR,te.CLAMP_TO_EDGE),xe.updatePaintBuffers(ee);else if(V&&(ot||h.lineAtlas.dirty))G.activeTexture.set(te.TEXTURE0),h.lineAtlas.bind(G);else if(B){const st=ve.gradients[_.id];let rt=st.texture;if(_.gradientVersion!==st.version){let lt=256;if(_.stepInterpolant){const $t=g.getSource().maxzoom,At=ue.canonical.z===$t?Math.ceil(1<<h.transform.maxZoom-ue.canonical.z):1;lt=l.ad(l.aY(ve.maxLineLength/l.N*1024*At),256,G.maxTextureSize)}st.gradient=l.aZ({expression:_.gradientExpression(),evaluationKey:"lineProgress",resolution:lt,image:st.gradient||void 0,clips:ve.lineClipsArray}),st.texture?st.texture.update(st.gradient):st.texture=new kt(G,st.gradient,te.RGBA),st.version=_.gradientVersion,rt=st.texture}G.activeTexture.set(te.TEXTURE0),rt.bind(_.stepInterpolant?te.NEAREST:te.LINEAR,te.CLAMP_TO_EDGE)}Ne.draw(G,te.TRIANGLES,I,h.stencilModeForClipping(ue),P,zt.disabled,bt,Ce,_.id,ve.layoutVertexBuffer,ve.indexBuffer,ve.segments,_.paint,h.transform.zoom,xe,ve.layoutVertexBuffer2),ce=!1}})(t,n,s,c);break;case"fill":(function(h,g,_,x){const w=_.paint.get("fill-color"),T=_.paint.get("fill-opacity");if(T.constantOr(1)===0)return;const I=h.colorModeForRenderPass(),P=_.paint.get("fill-pattern"),V=h.opaquePassEnabledForLayer()&&!P.constantOr(1)&&w.constantOr(l.aT.transparent).a===1&&T.constantOr(0)===1?"opaque":"translucent";if(h.renderPass===V){const N=h.depthModeForSublayer(1,h.renderPass==="opaque"?ht.ReadWrite:ht.ReadOnly);ga(h,g,_,x,N,I,!1)}if(h.renderPass==="translucent"&&_.paint.get("fill-antialias")){const N=h.depthModeForSublayer(_.getPaintProperty("fill-outline-color")?2:0,ht.ReadOnly);ga(h,g,_,x,N,I,!0)}})(t,n,s,c);break;case"fill-extrusion":(function(h,g,_,x){const w=_.paint.get("fill-extrusion-opacity");if(w!==0&&h.renderPass==="translucent"){const T=new ht(h.context.gl.LEQUAL,ht.ReadWrite,h.depthRangeFor3D);if(w!==1||_.paint.get("fill-extrusion-pattern").constantOr(1))_a(h,g,_,x,T,Ft.disabled,Rt.disabled),_a(h,g,_,x,T,h.stencilModeFor3D(),h.colorModeForRenderPass());else{const I=h.colorModeForRenderPass();_a(h,g,_,x,T,Ft.disabled,I)}}})(t,n,s,c);break;case"hillshade":(function(h,g,_,x){if(h.renderPass!=="offscreen"&&h.renderPass!=="translucent")return;const w=h.context,T=h.depthModeForSublayer(0,ht.ReadOnly),I=h.colorModeForRenderPass(),[P,V]=h.renderPass==="translucent"?h.stencilConfigForOverlap(x):[{},x];for(const N of V){const $=g.getTile(N);$.needsHillshadePrepare!==void 0&&$.needsHillshadePrepare&&h.renderPass==="offscreen"?Qs(h,$,_,T,Ft.disabled,I):h.renderPass==="translucent"&&Tc(h,N,$,_,T,P[N.overscaledZ],I)}w.viewport.set([0,0,h.width,h.height])})(t,n,s,c);break;case"raster":(function(h,g,_,x){if(h.renderPass!=="translucent"||_.paint.get("raster-opacity")===0||!x.length)return;const w=h.context,T=w.gl,I=g.getSource(),P=h.useProgram("raster"),V=h.colorModeForRenderPass(),[N,$]=I instanceof ir?[{},x]:h.stencilConfigForOverlap(x),B=$[$.length-1].overscaledZ,ee=!h.options.moving;for(const se of $){const G=h.depthModeForSublayer(se.overscaledZ-B,_.paint.get("raster-opacity")===1?ht.ReadWrite:ht.ReadOnly,T.LESS),te=g.getTile(se);te.registerFadeDuration(_.paint.get("raster-fade-duration"));const ce=g.findLoadedParent(se,0),ue=Ic(te,ce,g,_,h.transform,h.style.map.terrain);let fe,ve;const xe=_.paint.get("raster-resampling")==="nearest"?T.NEAREST:T.LINEAR;w.activeTexture.set(T.TEXTURE0),te.texture.bind(xe,T.CLAMP_TO_EDGE,T.LINEAR_MIPMAP_NEAREST),w.activeTexture.set(T.TEXTURE1),ce?(ce.texture.bind(xe,T.CLAMP_TO_EDGE,T.LINEAR_MIPMAP_NEAREST),fe=Math.pow(2,ce.tileID.overscaledZ-te.tileID.overscaledZ),ve=[te.tileID.canonical.x*fe%1,te.tileID.canonical.y*fe%1]):te.texture.bind(xe,T.CLAMP_TO_EDGE,T.LINEAR_MIPMAP_NEAREST);const Se=h.style.map.terrain&&h.style.map.terrain.getTerrainData(se),Ne=Se?se:null,ot=Ne?Ne.posMatrix:h.transform.calculatePosMatrix(se.toUnwrapped(),ee),Ce=Jo(ot,ve||[0,0],fe||1,ue,_);I instanceof ir?P.draw(w,T.TRIANGLES,G,Ft.disabled,V,zt.disabled,Ce,Se,_.id,I.boundsBuffer,h.quadTriangleIndexBuffer,I.boundsSegments):P.draw(w,T.TRIANGLES,G,N[se.overscaledZ],V,zt.disabled,Ce,Se,_.id,h.rasterBoundsBuffer,h.quadTriangleIndexBuffer,h.rasterBoundsSegments)}})(t,n,s,c);break;case"background":(function(h,g,_,x){const w=_.paint.get("background-color"),T=_.paint.get("background-opacity");if(T===0)return;const I=h.context,P=I.gl,V=h.transform,N=V.tileSize,$=_.paint.get("background-pattern");if(h.isPatternMissing($))return;const B=!$&&w.a===1&&T===1&&h.opaquePassEnabledForLayer()?"opaque":"translucent";if(h.renderPass!==B)return;const ee=Ft.disabled,se=h.depthModeForSublayer(0,B==="opaque"?ht.ReadWrite:ht.ReadOnly),G=h.colorModeForRenderPass(),te=h.useProgram($?"backgroundPattern":"background"),ce=x||V.coveringTiles({tileSize:N,terrain:h.style.map.terrain});$&&(I.activeTexture.set(P.TEXTURE0),h.imageManager.bind(h.context));const ue=_.getCrossfadeParameters();for(const fe of ce){const ve=x?fe.posMatrix:h.transform.calculatePosMatrix(fe.toUnwrapped()),xe=$?or(ve,T,h,$,{tileID:fe,tileSize:N},ue):Ga(ve,T,w),Se=h.style.map.terrain&&h.style.map.terrain.getTerrainData(fe);te.draw(I,P.TRIANGLES,se,ee,G,zt.disabled,xe,Se,_.id,h.tileExtentBuffer,h.quadTriangleIndexBuffer,h.tileExtentSegments)}})(t,0,s,c);break;case"custom":(function(h,g,_){const x=h.context,w=_.implementation;if(h.renderPass==="offscreen"){const T=w.prerender;T&&(h.setCustomLayerDefaults(),x.setColorMode(h.colorModeForRenderPass()),T.call(w,x.gl,h.transform.customLayerMatrix()),x.setDirty(),h.setBaseState())}else if(h.renderPass==="translucent"){h.setCustomLayerDefaults(),x.setColorMode(h.colorModeForRenderPass()),x.setStencilMode(Ft.disabled);const T=w.renderingMode==="3d"?new ht(h.context.gl.LEQUAL,ht.ReadWrite,h.depthRangeFor3D):h.depthModeForSublayer(0,ht.ReadOnly);x.setDepthMode(T),w.render(x.gl,h.transform.customLayerMatrix()),x.setDirty(),h.setBaseState(),x.bindFramebuffer.set(null)}})(t,0,s)}}translatePosMatrix(t,n,s,c,h){if(!s[0]&&!s[1])return t;const g=h?c==="map"?this.transform.angle:0:c==="viewport"?-this.transform.angle:0;if(g){const w=Math.sin(g),T=Math.cos(g);s=[s[0]*T-s[1]*w,s[0]*w+s[1]*T]}const _=[h?s[0]:Q(n,s[0],this.transform.zoom),h?s[1]:Q(n,s[1],this.transform.zoom),0],x=new Float32Array(16);return l.$(x,t,_),x}saveTileTexture(t){const n=this._tileTextures[t.size[0]];n?n.push(t):this._tileTextures[t.size[0]]=[t]}getTileTexture(t){const n=this._tileTextures[t];return n&&n.length>0?n.pop():null}isPatternMissing(t){if(!t)return!1;if(!t.from||!t.to)return!0;const n=this.imageManager.getPattern(t.from.toString()),s=this.imageManager.getPattern(t.to.toString());return!n||!s}useProgram(t,n){this.cache=this.cache||{};const s=t+(n?n.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"")+(this.style.map.terrain?"/terrain":"");return this.cache[s]||(this.cache[s]=new $a(this.context,Lt[t],n,Ha[t],this._showOverdrawInspector,this.style.map.terrain)),this.cache[s]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){const t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD)}initDebugOverlayCanvas(){this.debugOverlayCanvas==null&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new kt(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this.debugOverlayTexture&&this.debugOverlayTexture.destroy()}overLimit(){const{drawingBufferWidth:t,drawingBufferHeight:n}=this.context.gl;return this.width!==t||this.height!==n}}class Di{constructor(t,n){this.points=t,this.planes=n}static fromInvProjectionMatrix(t,n,s){const c=Math.pow(2,s),h=[[-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]].map((_=>{const x=1/(_=l.ag([],_,t))[3]/n*c;return l.b3(_,_,[x,x,1/_[3],x])})),g=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((_=>{const x=(function(P,V){var N=V[0],$=V[1],B=V[2],ee=N*N+$*$+B*B;return ee>0&&(ee=1/Math.sqrt(ee)),P[0]=V[0]*ee,P[1]=V[1]*ee,P[2]=V[2]*ee,P})([],(function(P,V,N){var $=V[0],B=V[1],ee=V[2],se=N[0],G=N[1],te=N[2];return P[0]=B*te-ee*G,P[1]=ee*se-$*te,P[2]=$*G-B*se,P})([],er([],h[_[0]],h[_[1]]),er([],h[_[2]],h[_[1]]))),w=-((T=x)[0]*(I=h[_[1]])[0]+T[1]*I[1]+T[2]*I[2]);var T,I;return x.concat(w)}));return new Di(h,g)}}class Wn{constructor(t,n){this.min=t,this.max=n,this.center=(function(s,c,h){return s[0]=.5*c[0],s[1]=.5*c[1],s[2]=.5*c[2],s})([],(function(s,c,h){return s[0]=c[0]+h[0],s[1]=c[1]+h[1],s[2]=c[2]+h[2],s})([],this.min,this.max))}quadrant(t){const n=[t%2==0,t<2],s=cn(this.min),c=cn(this.max);for(let h=0;h<n.length;h++)s[h]=n[h]?this.min[h]:this.center[h],c[h]=n[h]?this.center[h]:this.max[h];return c[2]=this.max[2],new Wn(s,c)}distanceX(t){return Math.max(Math.min(this.max[0],t[0]),this.min[0])-t[0]}distanceY(t){return Math.max(Math.min(this.max[1],t[1]),this.min[1])-t[1]}intersects(t){const n=[[this.min[0],this.min[1],this.min[2],1],[this.max[0],this.min[1],this.min[2],1],[this.max[0],this.max[1],this.min[2],1],[this.min[0],this.max[1],this.min[2],1],[this.min[0],this.min[1],this.max[2],1],[this.max[0],this.min[1],this.max[2],1],[this.max[0],this.max[1],this.max[2],1],[this.min[0],this.max[1],this.max[2],1]];let s=!0;for(let c=0;c<t.planes.length;c++){const h=t.planes[c];let g=0;for(let _=0;_<n.length;_++)l.b4(h,n[_])>=0&&g++;if(g===0)return 0;g!==n.length&&(s=!1)}if(s)return 2;for(let c=0;c<3;c++){let h=Number.MAX_VALUE,g=-Number.MAX_VALUE;for(let _=0;_<t.points.length;_++){const x=t.points[_][c]-this.min[c];h=Math.min(h,x),g=Math.max(g,x)}if(g<0||h>this.max[c]-this.min[c])return 0}return 1}}class xa{constructor(t=0,n=0,s=0,c=0){if(isNaN(t)||t<0||isNaN(n)||n<0||isNaN(s)||s<0||isNaN(c)||c<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=t,this.bottom=n,this.left=s,this.right=c}interpolate(t,n,s){return n.top!=null&&t.top!=null&&(this.top=l.B.number(t.top,n.top,s)),n.bottom!=null&&t.bottom!=null&&(this.bottom=l.B.number(t.bottom,n.bottom,s)),n.left!=null&&t.left!=null&&(this.left=l.B.number(t.left,n.left,s)),n.right!=null&&t.right!=null&&(this.right=l.B.number(t.right,n.right,s)),this}getCenter(t,n){const s=l.ad((this.left+t-this.right)/2,0,t),c=l.ad((this.top+n-this.bottom)/2,0,n);return new l.P(s,c)}equals(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right}clone(){return new xa(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}class ls{constructor(t,n,s,c,h){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=h===void 0||!!h,this._minZoom=t||0,this._maxZoom=n||22,this._minPitch=s??0,this._maxPitch=c??60,this.setMaxBounds(),this.width=0,this.height=0,this._center=new l.L(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new xa,this._posMatrixCache={},this._alignedPosMatrixCache={},this._minEleveationForCurrentTile=0}clone(){const t=new ls(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.apply(this),t}apply(t){this.tileSize=t.tileSize,this.latRange=t.latRange,this.width=t.width,this.height=t.height,this._center=t._center,this._elevation=t._elevation,this._minEleveationForCurrentTile=t._minEleveationForCurrentTile,this.zoom=t.zoom,this.angle=t.angle,this._fov=t._fov,this._pitch=t._pitch,this._unmodified=t._unmodified,this._edgeInsets=t._edgeInsets.clone(),this._calcMatrices()}get minZoom(){return this._minZoom}set minZoom(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))}get maxZoom(){return this._maxZoom}set maxZoom(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))}get minPitch(){return this._minPitch}set minPitch(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t))}get maxPitch(){return this._maxPitch}set maxPitch(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t))}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(t){t===void 0?t=!0:t===null&&(t=!1),this._renderWorldCopies=t}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new l.P(this.width,this.height)}get bearing(){return-this.angle/Math.PI*180}set bearing(t){const n=-l.b5(t,-180,180)*Math.PI/180;this.angle!==n&&(this._unmodified=!1,this.angle=n,this._calcMatrices(),this.rotationMatrix=(function(){var s=new l.A(4);return l.A!=Float32Array&&(s[1]=0,s[2]=0),s[0]=1,s[3]=1,s})(),(function(s,c,h){var g=c[0],_=c[1],x=c[2],w=c[3],T=Math.sin(h),I=Math.cos(h);s[0]=g*I+x*T,s[1]=_*I+w*T,s[2]=g*-T+x*I,s[3]=_*-T+w*I})(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(t){const n=l.ad(t,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==n&&(this._unmodified=!1,this._pitch=n,this._calcMatrices())}get fov(){return this._fov/Math.PI*180}set fov(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())}get zoom(){return this._zoom}set zoom(t){const n=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==n&&(this._unmodified=!1,this._zoom=n,this.tileZoom=Math.max(0,Math.floor(n)),this.scale=this.zoomScale(n),this._constrain(),this._calcMatrices())}get center(){return this._center}set center(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())}get elevation(){return this._elevation}set elevation(t){t!==this._elevation&&(this._elevation=t,this._constrain(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}set padding(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(t){return this._edgeInsets.equals(t)}interpolatePadding(t,n,s){this._unmodified=!1,this._edgeInsets.interpolate(t,n,s),this._constrain(),this._calcMatrices()}coveringZoomLevel(t){const n=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,n)}getVisibleUnwrappedCoordinates(t){const n=[new l.b6(0,t)];if(this._renderWorldCopies){const s=this.pointCoordinate(new l.P(0,0)),c=this.pointCoordinate(new l.P(this.width,0)),h=this.pointCoordinate(new l.P(this.width,this.height)),g=this.pointCoordinate(new l.P(0,this.height)),_=Math.floor(Math.min(s.x,c.x,h.x,g.x)),x=Math.floor(Math.max(s.x,c.x,h.x,g.x)),w=1;for(let T=_-w;T<=x+w;T++)T!==0&&n.push(new l.b6(T,t))}return n}coveringTiles(t){var n,s;let c=this.coveringZoomLevel(t);const h=c;if(t.minzoom!==void 0&&c<t.minzoom)return[];t.maxzoom!==void 0&&c>t.maxzoom&&(c=t.maxzoom);const g=this.pointCoordinate(this.getCameraPoint()),_=l.U.fromLngLat(this.center),x=Math.pow(2,c),w=[x*g.x,x*g.y,0],T=[x*_.x,x*_.y,0],I=Di.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,c);let P=t.minzoom||0;!t.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(P=c);const V=t.terrain?2/Math.min(this.tileSize,t.tileSize)*this.tileSize:3,N=G=>({aabb:new Wn([G*x,0,0],[(G+1)*x,x,0]),zoom:0,x:0,y:0,wrap:G,fullyVisible:!1}),$=[],B=[],ee=c,se=t.reparseOverscaled?h:c;if(this._renderWorldCopies)for(let G=1;G<=3;G++)$.push(N(-G)),$.push(N(G));for($.push(N(0));$.length>0;){const G=$.pop(),te=G.x,ce=G.y;let ue=G.fullyVisible;if(!ue){const Ne=G.aabb.intersects(I);if(Ne===0)continue;ue=Ne===2}const fe=t.terrain?w:T,ve=G.aabb.distanceX(fe),xe=G.aabb.distanceY(fe),Se=Math.max(Math.abs(ve),Math.abs(xe));if(G.zoom===ee||Se>V+(1<<ee-G.zoom)-2&&G.zoom>=P){const Ne=ee-G.zoom,ot=w[0]-.5-(te<<Ne),Ce=w[1]-.5-(ce<<Ne);B.push({tileID:new l.O(G.zoom===ee?se:G.zoom,G.wrap,G.zoom,te,ce),distanceSq:un([T[0]-.5-te,T[1]-.5-ce]),tileDistanceToCamera:Math.sqrt(ot*ot+Ce*Ce)})}else for(let Ne=0;Ne<4;Ne++){const ot=(te<<1)+Ne%2,Ce=(ce<<1)+(Ne>>1),Ye=G.zoom+1;let Ue=G.aabb.quadrant(Ne);if(t.terrain){const bt=new l.O(Ye,G.wrap,Ye,ot,Ce),st=t.terrain.getMinMaxElevation(bt),rt=(n=st.minElevation)!==null&&n!==void 0?n:this.elevation,lt=(s=st.maxElevation)!==null&&s!==void 0?s:this.elevation;Ue=new Wn([Ue.min[0],Ue.min[1],rt],[Ue.max[0],Ue.max[1],lt])}$.push({aabb:Ue,zoom:Ye,x:ot,y:Ce,wrap:G.wrap,fullyVisible:ue})}}return B.sort(((G,te)=>G.distanceSq-te.distanceSq)).map((G=>G.tileID))}resize(t,n){this.width=t,this.height=n,this.pixelsToGLUnits=[2/t,-2/n],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(t){return Math.pow(2,t)}scaleZoom(t){return Math.log(t)/Math.LN2}project(t){const n=l.ad(t.lat,-this.maxValidLatitude,this.maxValidLatitude);return new l.P(l.G(t.lng)*this.worldSize,l.H(n)*this.worldSize)}unproject(t){return new l.U(t.x/this.worldSize,t.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}getCameraPosition(){return{lngLat:this.pointLocation(this.getCameraPoint()),altitude:Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter+this.elevation}}recalculateZoom(t){const n=this.pointLocation(this.centerPoint,t),s=t.getElevationForLngLatZoom(n,this.tileZoom);if(!(this.elevation-s))return;const c=this.getCameraPosition(),h=l.U.fromLngLat(c.lngLat,c.altitude),g=l.U.fromLngLat(n,s),_=h.x-g.x,x=h.y-g.y,w=h.z-g.z,T=Math.sqrt(_*_+x*x+w*w),I=this.scaleZoom(this.cameraToCenterDistance/T/this.tileSize);this._elevation=s,this._center=n,this.zoom=I}setLocationAtPoint(t,n){const s=this.pointCoordinate(n),c=this.pointCoordinate(this.centerPoint),h=this.locationCoordinate(t),g=new l.U(h.x-(s.x-c.x),h.y-(s.y-c.y));this.center=this.coordinateLocation(g),this._renderWorldCopies&&(this.center=this.center.wrap())}locationPoint(t,n){return n?this.coordinatePoint(this.locationCoordinate(t),n.getElevationForLngLatZoom(t,this.tileZoom),this.pixelMatrix3D):this.coordinatePoint(this.locationCoordinate(t))}pointLocation(t,n){return this.coordinateLocation(this.pointCoordinate(t,n))}locationCoordinate(t){return l.U.fromLngLat(t)}coordinateLocation(t){return t&&t.toLngLat()}pointCoordinate(t,n){if(n){const P=n.pointCoordinate(t);if(P!=null)return P}const s=[t.x,t.y,0,1],c=[t.x,t.y,1,1];l.ag(s,s,this.pixelMatrixInverse),l.ag(c,c,this.pixelMatrixInverse);const h=s[3],g=c[3],_=s[1]/h,x=c[1]/g,w=s[2]/h,T=c[2]/g,I=w===T?0:(0-w)/(T-w);return new l.U(l.B.number(s[0]/h,c[0]/g,I)/this.worldSize,l.B.number(_,x,I)/this.worldSize)}coordinatePoint(t,n=0,s=this.pixelMatrix){const c=[t.x*this.worldSize,t.y*this.worldSize,n,1];return l.ag(c,c,s),new l.P(c[0]/c[3],c[1]/c[3])}getBounds(){const t=Math.max(0,this.height/2-this.getHorizon());return new Ct().extend(this.pointLocation(new l.P(0,t))).extend(this.pointLocation(new l.P(this.width,t))).extend(this.pointLocation(new l.P(this.width,this.height))).extend(this.pointLocation(new l.P(0,this.height)))}getMaxBounds(){return this.latRange&&this.latRange.length===2&&this.lngRange&&this.lngRange.length===2?new Ct([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null}getHorizon(){return Math.tan(Math.PI/2-this._pitch)*this.cameraToCenterDistance*.85}setMaxBounds(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])}calculatePosMatrix(t,n=!1){const s=t.key,c=n?this._alignedPosMatrixCache:this._posMatrixCache;if(c[s])return c[s];const h=t.canonical,g=this.worldSize/this.zoomScale(h.z),_=h.x+Math.pow(2,h.z)*t.wrap,x=l.ao(new Float64Array(16));return l.$(x,x,[_*g,h.y*g,0]),l.a0(x,x,[g/l.N,g/l.N,1]),l.a1(x,n?this.alignedProjMatrix:this.projMatrix,x),c[s]=new Float32Array(x),c[s]}customLayerMatrix(){return this.mercatorMatrix.slice()}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;let t,n,s,c,h=-90,g=90,_=-180,x=180;const w=this.size,T=this._unmodified;if(this.latRange){const V=this.latRange;h=l.H(V[1])*this.worldSize,g=l.H(V[0])*this.worldSize,t=g-h<w.y?w.y/(g-h):0}if(this.lngRange){const V=this.lngRange;_=l.b5(l.G(V[0])*this.worldSize,0,this.worldSize),x=l.b5(l.G(V[1])*this.worldSize,0,this.worldSize),x<_&&(x+=this.worldSize),n=x-_<w.x?w.x/(x-_):0}const I=this.point,P=Math.max(n||0,t||0);if(P)return this.center=this.unproject(new l.P(n?(x+_)/2:I.x,t?(g+h)/2:I.y)),this.zoom+=this.scaleZoom(P),this._unmodified=T,void(this._constraining=!1);if(this.latRange){const V=I.y,N=w.y/2;V-N<h&&(c=h+N),V+N>g&&(c=g-N)}if(this.lngRange){const V=(_+x)/2,N=l.b5(I.x,V-this.worldSize/2,V+this.worldSize/2),$=w.x/2;N-$<_&&(s=_+$),N+$>x&&(s=x-$)}s===void 0&&c===void 0||(this.center=this.unproject(new l.P(s!==void 0?s:I.x,c!==void 0?c:I.y)).wrap()),this._unmodified=T,this._constraining=!1}_calcMatrices(){if(!this.height)return;const t=this.centerOffset,n=this.point.x,s=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=l.b7(1,this.center.lat)*this.worldSize;let c=l.ao(new Float64Array(16));l.a0(c,c,[this.width/2,-this.height/2,1]),l.$(c,c,[1,-1,0]),this.labelPlaneMatrix=c,c=l.ao(new Float64Array(16)),l.a0(c,c,[1,-1,1]),l.$(c,c,[-1,-1,0]),l.a0(c,c,[2/this.width,2/this.height,1]),this.glCoordMatrix=c;const h=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch),g=Math.min(this.elevation,this._minEleveationForCurrentTile),_=h-g*this._pixelPerMeter/Math.cos(this._pitch),x=g<0?_:h,w=Math.PI/2+this._pitch,T=this._fov*(.5+t.y/this.height),I=Math.sin(T)*x/Math.sin(l.ad(Math.PI-w-T,.01,Math.PI-.01)),P=this.getHorizon(),V=2*Math.atan(P/this.cameraToCenterDistance)*(.5+t.y/(2*P)),N=Math.sin(V)*x/Math.sin(l.ad(Math.PI-w-V,.01,Math.PI-.01)),$=Math.min(I,N),B=1.01*(Math.cos(Math.PI/2-this._pitch)*$+x),ee=this.height/50;c=new Float64Array(16),l.b8(c,this._fov,this.width/this.height,ee,B),c[8]=2*-t.x/this.width,c[9]=2*t.y/this.height,l.a0(c,c,[1,-1,1]),l.$(c,c,[0,0,-this.cameraToCenterDistance]),l.b9(c,c,this._pitch),l.ae(c,c,this.angle),l.$(c,c,[-n,-s,0]),this.mercatorMatrix=l.a0([],c,[this.worldSize,this.worldSize,this.worldSize]),l.a0(c,c,[1,1,this._pixelPerMeter]),this.pixelMatrix=l.a1(new Float64Array(16),this.labelPlaneMatrix,c),l.$(c,c,[0,0,-this.elevation]),this.projMatrix=c,this.invProjMatrix=l.as([],c),this.pixelMatrix3D=l.a1(new Float64Array(16),this.labelPlaneMatrix,c);const se=this.width%2/2,G=this.height%2/2,te=Math.cos(this.angle),ce=Math.sin(this.angle),ue=n-Math.round(n)+te*se+ce*G,fe=s-Math.round(s)+te*G+ce*se,ve=new Float64Array(c);if(l.$(ve,ve,[ue>.5?ue-1:ue,fe>.5?fe-1:fe,0]),this.alignedProjMatrix=ve,c=l.as(new Float64Array(16),this.pixelMatrix),!c)throw new Error("failed to invert matrix");this.pixelMatrixInverse=c,this._posMatrixCache={},this._alignedPosMatrixCache={}}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;const t=this.pointCoordinate(new l.P(0,0)),n=[t.x*this.worldSize,t.y*this.worldSize,0,1];return l.ag(n,n,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){const t=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new l.P(0,t))}getCameraQueryGeometry(t){const n=this.getCameraPoint();if(t.length===1)return[t[0],n];{let s=n.x,c=n.y,h=n.x,g=n.y;for(const _ of t)s=Math.min(s,_.x),c=Math.min(c,_.y),h=Math.max(h,_.x),g=Math.max(g,_.y);return[new l.P(s,c),new l.P(h,c),new l.P(h,g),new l.P(s,g),new l.P(s,c)]}}}function wn(u,t){let n,s=!1,c=null,h=null;const g=()=>{c=null,s&&(u.apply(h,n),c=setTimeout(g,t),s=!1)};return(..._)=>(s=!0,h=this,n=_,c||g(),c)}class va{constructor(t){this._getCurrentHash=()=>{const n=window.location.hash.replace("#","");if(this._hashName){let s;return n.split("&").map((c=>c.split("="))).forEach((c=>{c[0]===this._hashName&&(s=c)})),(s&&s[1]||"").split("/")}return n.split("/")},this._onHashChange=()=>{const n=this._getCurrentHash();if(n.length>=3&&!n.some((s=>isNaN(s)))){const s=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(n[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+n[2],+n[1]],zoom:+n[0],bearing:s,pitch:+(n[4]||0)}),!0}return!1},this._updateHashUnthrottled=()=>{const n=window.location.href.replace(/(#.+)?$/,this.getHashString());try{window.history.replaceState(window.history.state,null,n)}catch{}},this._updateHash=wn(this._updateHashUnthrottled,300),this._hashName=t&&encodeURIComponent(t)}addTo(t){return this._map=t,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()),delete this._map,this}getHashString(t){const n=this._map.getCenter(),s=Math.round(100*this._map.getZoom())/100,c=Math.ceil((s*Math.LN2+Math.log(512/360/.5))/Math.LN10),h=Math.pow(10,c),g=Math.round(n.lng*h)/h,_=Math.round(n.lat*h)/h,x=this._map.getBearing(),w=this._map.getPitch();let T="";if(T+=t?`/${g}/${_}/${s}`:`${s}/${_}/${g}`,(x||w)&&(T+="/"+Math.round(10*x)/10),w&&(T+=`/${Math.round(w)}`),this._hashName){const I=this._hashName;let P=!1;const V=window.location.hash.slice(1).split("&").map((N=>{const $=N.split("=")[0];return $===I?(P=!0,`${$}=${T}`):N})).filter((N=>N));return P||V.push(`${I}=${T}`),`#${V.join("&")}`}return`#${T}`}}const Xn={linearity:.3,easing:l.ba(0,0,.3,1)},hl=l.e({deceleration:2500,maxSpeed:1400},Xn),pl=l.e({deceleration:20,maxSpeed:1400},Xn),dl=l.e({deceleration:1e3,maxSpeed:360},Xn),fl=l.e({deceleration:1e3,maxSpeed:90},Xn);class ml{constructor(t){this._map=t,this.clear()}clear(){this._inertiaBuffer=[]}record(t){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:l.h.now(),settings:t})}_drainInertiaBuffer(){const t=this._inertiaBuffer,n=l.h.now();for(;t.length>0&&n-t[0].time>160;)t.shift()}_onMoveEnd(t){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;const n={zoom:0,bearing:0,pitch:0,pan:new l.P(0,0),pinchAround:void 0,around:void 0};for(const{settings:h}of this._inertiaBuffer)n.zoom+=h.zoomDelta||0,n.bearing+=h.bearingDelta||0,n.pitch+=h.pitchDelta||0,h.panDelta&&n.pan._add(h.panDelta),h.around&&(n.around=h.around),h.pinchAround&&(n.pinchAround=h.pinchAround);const s=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,c={};if(n.pan.mag()){const h=ba(n.pan.mag(),s,l.e({},hl,t||{}));c.offset=n.pan.mult(h.amount/n.pan.mag()),c.center=this._map.transform.center,br(c,h)}if(n.zoom){const h=ba(n.zoom,s,pl);c.zoom=this._map.transform.zoom+h.amount,br(c,h)}if(n.bearing){const h=ba(n.bearing,s,dl);c.bearing=this._map.transform.bearing+l.ad(h.amount,-179,179),br(c,h)}if(n.pitch){const h=ba(n.pitch,s,fl);c.pitch=this._map.transform.pitch+h.amount,br(c,h)}if(c.zoom||c.bearing){const h=n.pinchAround===void 0?n.around:n.pinchAround;c.around=h?this._map.unproject(h):this._map.getCenter()}return this.clear(),l.e(c,{noMoveStart:!0})}}function br(u,t){(!u.duration||u.duration<t.duration)&&(u.duration=t.duration,u.easing=t.easing)}function ba(u,t,n){const{maxSpeed:s,linearity:c,deceleration:h}=n,g=l.ad(u*c/(t/1e3),-s,s),_=Math.abs(g)/(h*c);return{easing:n.easing,duration:1e3*_,amount:g*(_/2)}}class Gi extends l.k{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(t,n,s,c={}){const h=X.mousePos(n.getCanvasContainer(),s),g=n.unproject(h);super(t,l.e({point:h,lngLat:g,originalEvent:s},c)),this._defaultPrevented=!1,this.target=n}}class wa extends l.k{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(t,n,s){const c=t==="touchend"?s.changedTouches:s.touches,h=X.touchPos(n.getCanvasContainer(),c),g=h.map((x=>n.unproject(x))),_=h.reduce(((x,w,T,I)=>x.add(w.div(I.length))),new l.P(0,0));super(t,{points:h,point:_,lngLats:g,lngLat:n.unproject(_),originalEvent:s}),this._defaultPrevented=!1}}class gl extends l.k{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(t,n,s){super(t,{originalEvent:s}),this._defaultPrevented=!1}}class _l{constructor(t,n){this._map=t,this._clickTolerance=n.clickTolerance}reset(){delete this._mousedownPos}wheel(t){return this._firePreventable(new gl(t.type,this._map,t))}mousedown(t,n){return this._mousedownPos=n,this._firePreventable(new Gi(t.type,this._map,t))}mouseup(t){this._map.fire(new Gi(t.type,this._map,t))}click(t,n){this._mousedownPos&&this._mousedownPos.dist(n)>=this._clickTolerance||this._map.fire(new Gi(t.type,this._map,t))}dblclick(t){return this._firePreventable(new Gi(t.type,this._map,t))}mouseover(t){this._map.fire(new Gi(t.type,this._map,t))}mouseout(t){this._map.fire(new Gi(t.type,this._map,t))}touchstart(t){return this._firePreventable(new wa(t.type,this._map,t))}touchmove(t){this._map.fire(new wa(t.type,this._map,t))}touchend(t){this._map.fire(new wa(t.type,this._map,t))}touchcancel(t){this._map.fire(new wa(t.type,this._map,t))}_firePreventable(t){if(this._map.fire(t),t.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class yl{constructor(t){this._map=t}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(t){this._map.fire(new Gi(t.type,this._map,t))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Gi("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(t){this._delayContextMenu?this._contextMenuEvent=t:this._ignoreContextMenu||this._map.fire(new Gi(t.type,this._map,t)),this._map.listens("contextmenu")&&t.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class tn{constructor(t){this._map=t}get transform(){return this._map._requestedCameraState||this._map.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(t){return this.transform.pointLocation(l.P.convert(t),this._map.terrain)}}class xl{constructor(t,n){this._map=t,this._tr=new tn(t),this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=n.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(t,n){this.isEnabled()&&t.shiftKey&&t.button===0&&(X.disableDrag(),this._startPos=this._lastPos=n,this._active=!0)}mousemoveWindow(t,n){if(!this._active)return;const s=n;if(this._lastPos.equals(s)||!this._box&&s.dist(this._startPos)<this._clickTolerance)return;const c=this._startPos;this._lastPos=s,this._box||(this._box=X.create("div","maplibregl-boxzoom",this._container),this._container.classList.add("maplibregl-crosshair"),this._fireEvent("boxzoomstart",t));const h=Math.min(c.x,s.x),g=Math.max(c.x,s.x),_=Math.min(c.y,s.y),x=Math.max(c.y,s.y);X.setTransform(this._box,`translate(${h}px,${_}px)`),this._box.style.width=g-h+"px",this._box.style.height=x-_+"px"}mouseupWindow(t,n){if(!this._active||t.button!==0)return;const s=this._startPos,c=n;if(this.reset(),X.suppressClick(),s.x!==c.x||s.y!==c.y)return this._map.fire(new l.k("boxzoomend",{originalEvent:t})),{cameraAnimation:h=>h.fitScreenCoordinates(s,c,this._tr.bearing,{linear:!0})};this._fireEvent("boxzoomcancel",t)}keydown(t){this._active&&t.keyCode===27&&(this.reset(),this._fireEvent("boxzoomcancel",t))}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(X.remove(this._box),this._box=null),X.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(t,n){return this._map.fire(new l.k(t,{originalEvent:n}))}}function lr(u,t){if(u.length!==t.length)throw new Error(`The number of touches and points are not equal - touches ${u.length}, points ${t.length}`);const n={};for(let s=0;s<u.length;s++)n[u[s].identifier]=t[s];return n}class Lr{constructor(t){this.reset(),this.numTouches=t.numTouches}reset(){delete this.centroid,delete this.startTime,delete this.touches,this.aborted=!1}touchstart(t,n,s){(this.centroid||s.length>this.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===void 0&&(this.startTime=t.timeStamp),s.length===this.numTouches&&(this.centroid=(function(c){const h=new l.P(0,0);for(const g of c)h._add(g);return h.div(c.length)})(n),this.touches=lr(s,n)))}touchmove(t,n,s){if(this.aborted||!this.centroid)return;const c=lr(s,n);for(const h in this.touches){const g=c[h];(!g||g.dist(this.touches[h])>30)&&(this.aborted=!0)}}touchend(t,n,s){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),s.length===0){const c=!this.aborted&&this.centroid;if(this.reset(),c)return c}}}class cs{constructor(t){this.singleTap=new Lr(t),this.numTaps=t.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(t,n,s){this.singleTap.touchstart(t,n,s)}touchmove(t,n,s){this.singleTap.touchmove(t,n,s)}touchend(t,n,s){const c=this.singleTap.touchend(t,n,s);if(c){const h=t.timeStamp-this.lastTime<500,g=!this.lastTap||this.lastTap.dist(c)<30;if(h&&g||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=c,this.count===this.numTaps)return this.reset(),c}}}class Rr{constructor(t){this._tr=new tn(t),this._zoomIn=new cs({numTouches:1,numTaps:2}),this._zoomOut=new cs({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(t,n,s){this._zoomIn.touchstart(t,n,s),this._zoomOut.touchstart(t,n,s)}touchmove(t,n,s){this._zoomIn.touchmove(t,n,s),this._zoomOut.touchmove(t,n,s)}touchend(t,n,s){const c=this._zoomIn.touchend(t,n,s),h=this._zoomOut.touchend(t,n,s),g=this._tr;return c?(this._active=!0,t.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:_=>_.easeTo({duration:300,zoom:g.zoom+1,around:g.unproject(c)},{originalEvent:t})}):h?(this._active=!0,t.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:_=>_.easeTo({duration:300,zoom:g.zoom-1,around:g.unproject(h)},{originalEvent:t})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Fr{constructor(t){this._enabled=!!t.enable,this._moveStateManager=t.moveStateManager,this._clickTolerance=t.clickTolerance||1,this._moveFunction=t.move,this._activateOnStart=!!t.activateOnStart,t.assignEvents(this),this.reset()}reset(t){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(t)}_move(...t){const n=this._moveFunction(...t);if(n.bearingDelta||n.pitchDelta||n.around||n.panDelta)return this._active=!0,n}dragStart(t,n){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(t)&&(this._moveStateManager.startMove(t),this._lastPoint=n.length?n[0]:n,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(t,n){if(!this.isEnabled())return;const s=this._lastPoint;if(!s)return;if(t.preventDefault(),!this._moveStateManager.isValidMoveEvent(t))return void this.reset(t);const c=n.length?n[0]:n;return!this._moved&&c.dist(s)<this._clickTolerance?void 0:(this._moved=!0,this._lastPoint=c,this._move(s,c))}dragEnd(t){this.isEnabled()&&this._lastPoint&&this._moveStateManager.isValidEndEvent(t)&&(this._moved&&X.suppressClick(),this.reset(t))}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}getClickTolerance(){return this._clickTolerance}}const Ac={0:1,2:2};class to{constructor(t){this._correctEvent=t.checkCorrectEvent}startMove(t){const n=X.mouseButton(t);this._eventButton=n}endMove(t){delete this._eventButton}isValidStartEvent(t){return this._correctEvent(t)}isValidMoveEvent(t){return!(function(n,s){const c=Ac[s];return n.buttons===void 0||(n.buttons&c)!==c})(t,this._eventButton)}isValidEndEvent(t){return X.mouseButton(t)===this._eventButton}}class vl{constructor(){this._firstTouch=void 0}_isOneFingerTouch(t){return t.targetTouches.length===1}_isSameTouchEvent(t){return t.targetTouches[0].identifier===this._firstTouch}startMove(t){this._firstTouch=t.targetTouches[0].identifier}endMove(t){delete this._firstTouch}isValidStartEvent(t){return this._isOneFingerTouch(t)}isValidMoveEvent(t){return this._isOneFingerTouch(t)&&this._isSameTouchEvent(t)}isValidEndEvent(t){return this._isOneFingerTouch(t)&&this._isSameTouchEvent(t)}}const us=u=>{u.mousedown=u.dragStart,u.mousemoveWindow=u.dragMove,u.mouseup=u.dragEnd,u.contextmenu=function(t){t.preventDefault()}},Kn=({enable:u,clickTolerance:t,bearingDegreesPerPixelMoved:n=.8})=>{const s=new to({checkCorrectEvent:c=>X.mouseButton(c)===0&&c.ctrlKey||X.mouseButton(c)===2});return new Fr({clickTolerance:t,move:(c,h)=>({bearingDelta:(h.x-c.x)*n}),moveStateManager:s,enable:u,assignEvents:us})},Br=({enable:u,clickTolerance:t,pitchDegreesPerPixelMoved:n=-.5})=>{const s=new to({checkCorrectEvent:c=>X.mouseButton(c)===0&&c.ctrlKey||X.mouseButton(c)===2});return new Fr({clickTolerance:t,move:(c,h)=>({pitchDelta:(h.y-c.y)*n}),moveStateManager:s,enable:u,assignEvents:us})};class Re{constructor(t,n){this._minTouches=t.cooperativeGestures?2:1,this._clickTolerance=t.clickTolerance||1,this._map=n,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new l.P(0,0),setTimeout((()=>{this._cancelCooperativeMessage=!1}),200)}touchstart(t,n,s){return this._calculateTransform(t,n,s)}touchmove(t,n,s){if(this._map._cooperativeGestures&&(this._minTouches===2&&s.length<2&&!this._cancelCooperativeMessage?this._map._onCooperativeGesture(t,!1,s.length):this._cancelCooperativeMessage||(this._cancelCooperativeMessage=!0)),this._active&&!(s.length<this._minTouches))return t.preventDefault(),this._calculateTransform(t,n,s)}touchend(t,n,s){this._calculateTransform(t,n,s),this._active&&s.length<this._minTouches&&this.reset()}touchcancel(){this.reset()}_calculateTransform(t,n,s){s.length>0&&(this._active=!0);const c=lr(s,n),h=new l.P(0,0),g=new l.P(0,0);let _=0;for(const w in c){const T=c[w],I=this._touches[w];I&&(h._add(T),g._add(T.sub(I)),_++,c[w]=T)}if(this._touches=c,_<this._minTouches||!g.mag())return;const x=g.div(_);return this._sum._add(x),this._sum.mag()<this._clickTolerance?void 0:{around:h.div(_),panDelta:x}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class hs{constructor(){this.reset()}reset(){this._active=!1,delete this._firstTwoTouches}touchstart(t,n,s){this._firstTwoTouches||s.length<2||(this._firstTwoTouches=[s[0].identifier,s[1].identifier],this._start([n[0],n[1]]))}touchmove(t,n,s){if(!this._firstTwoTouches)return;t.preventDefault();const[c,h]=this._firstTwoTouches,g=rn(s,n,c),_=rn(s,n,h);if(!g||!_)return;const x=this._aroundCenter?null:g.add(_).div(2);return this._move([g,_],x,t)}touchend(t,n,s){if(!this._firstTwoTouches)return;const[c,h]=this._firstTwoTouches,g=rn(s,n,c),_=rn(s,n,h);g&&_||(this._active&&X.suppressClick(),this.reset())}touchcancel(){this.reset()}enable(t){this._enabled=!0,this._aroundCenter=!!t&&t.around==="center"}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}function rn(u,t,n){for(let s=0;s<u.length;s++)if(u[s].identifier===n)return t[s]}function Yn(u,t){return Math.log(u/t)/Math.LN2}class bl extends hs{reset(){super.reset(),delete this._distance,delete this._startDistance}_start(t){this._startDistance=this._distance=t[0].dist(t[1])}_move(t,n){const s=this._distance;if(this._distance=t[0].dist(t[1]),this._active||!(Math.abs(Yn(this._distance,this._startDistance))<.1))return this._active=!0,{zoomDelta:Yn(this._distance,s),pinchAround:n}}}function ze(u,t){return 180*u.angleWith(t)/Math.PI}class io extends hs{reset(){super.reset(),delete this._minDiameter,delete this._startVector,delete this._vector}_start(t){this._startVector=this._vector=t[0].sub(t[1]),this._minDiameter=t[0].dist(t[1])}_move(t,n){const s=this._vector;if(this._vector=t[0].sub(t[1]),this._active||!this._isBelowThreshold(this._vector))return this._active=!0,{bearingDelta:ze(this._vector,s),pinchAround:n}}_isBelowThreshold(t){this._minDiameter=Math.min(this._minDiameter,t.mag());const n=25/(Math.PI*this._minDiameter)*360,s=ze(t,this._startVector);return Math.abs(s)<n}}function ro(u){return Math.abs(u.y)>Math.abs(u.x)}class kc extends hs{constructor(t){super(),this._map=t}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(t,n,s){super.touchstart(t,n,s),this._currentTouchCount=s.length}_start(t){this._lastPoints=t,ro(t[0].sub(t[1]))&&(this._valid=!1)}_move(t,n,s){if(this._map._cooperativeGestures&&this._currentTouchCount<3)return;const c=t[0].sub(this._lastPoints[0]),h=t[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(c,h,s.timeStamp),this._valid?(this._lastPoints=t,this._active=!0,{pitchDelta:(c.y+h.y)/2*-.5}):void 0}gestureBeginsVertically(t,n,s){if(this._valid!==void 0)return this._valid;const c=t.mag()>=2,h=n.mag()>=2;if(!c&&!h)return;if(!c||!h)return this._firstMove===void 0&&(this._firstMove=s),s-this._firstMove<100&&void 0;const g=t.y>0==n.y>0;return ro(t)&&ro(n)&&g}}const no={panStep:100,bearingStep:15,pitchStep:10};class wl{constructor(t){this._tr=new tn(t);const n=no;this._panStep=n.panStep,this._bearingStep=n.bearingStep,this._pitchStep=n.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(t){if(t.altKey||t.ctrlKey||t.metaKey)return;let n=0,s=0,c=0,h=0,g=0;switch(t.keyCode){case 61:case 107:case 171:case 187:n=1;break;case 189:case 109:case 173:n=-1;break;case 37:t.shiftKey?s=-1:(t.preventDefault(),h=-1);break;case 39:t.shiftKey?s=1:(t.preventDefault(),h=1);break;case 38:t.shiftKey?c=1:(t.preventDefault(),g=-1);break;case 40:t.shiftKey?c=-1:(t.preventDefault(),g=1);break;default:return}return this._rotationDisabled&&(s=0,c=0),{cameraAnimation:_=>{const x=this._tr;_.easeTo({duration:300,easeId:"keyboardHandler",easing:Sl,zoom:n?Math.round(x.zoom)+n*(t.shiftKey?2:1):x.zoom,bearing:x.bearing+s*this._bearingStep,pitch:x.pitch+c*this._pitchStep,offset:[-h*this._panStep,-g*this._panStep],center:x.center},{originalEvent:t})}}}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 Sl(u){return u*(2-u)}const Tl=4.000244140625;class Cc{constructor(t,n){this._onTimeout=s=>{this._type="wheel",this._delta-=this._lastValue,this._active||this._start(s)},this._map=t,this._tr=new tn(t),this._el=t.getCanvasContainer(),this._triggerRenderFrame=n,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222}setZoomRate(t){this._defaultZoomRate=t}setWheelZoomRate(t){this._wheelZoomRate=t}isEnabled(){return!!this._enabled}isActive(){return!!this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!t&&t.around==="center")}disable(){this.isEnabled()&&(this._enabled=!1)}wheel(t){if(!this.isEnabled())return;if(this._map._cooperativeGestures){if(!t[this._map._metaKey])return;t.preventDefault()}let n=t.deltaMode===WheelEvent.DOM_DELTA_LINE?40*t.deltaY:t.deltaY;const s=l.h.now(),c=s-(this._lastWheelEventTime||0);this._lastWheelEventTime=s,n!==0&&n%Tl==0?this._type="wheel":n!==0&&Math.abs(n)<4?this._type="trackpad":c>400?(this._type=null,this._lastValue=n,this._timeout=setTimeout(this._onTimeout,40,t)):this._type||(this._type=Math.abs(c*n)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,n+=this._lastValue)),t.shiftKey&&n&&(n/=4),this._type&&(this._lastWheelEvent=t,this._delta-=n,this._active||this._start(t)),t.preventDefault()}_start(t){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);const n=X.mousePos(this._el,t),s=this._tr;this._around=l.L.convert(this._aroundCenter?s.center:s.unproject(n)),this._aroundPoint=s.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;const t=this._tr.transform;if(this._delta!==0){const _=this._type==="wheel"&&Math.abs(this._delta)>Tl?this._wheelZoomRate:this._defaultZoomRate;let x=2/(1+Math.exp(-Math.abs(this._delta*_)));this._delta<0&&x!==0&&(x=1/x);const w=typeof this._targetZoom=="number"?t.zoomScale(this._targetZoom):t.scale;this._targetZoom=Math.min(t.maxZoom,Math.max(t.minZoom,t.scaleZoom(w*x))),this._type==="wheel"&&(this._startZoom=t.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}const n=typeof this._targetZoom=="number"?this._targetZoom:t.zoom,s=this._startZoom,c=this._easing;let h,g=!1;if(this._type==="wheel"&&s&&c){const _=Math.min((l.h.now()-this._lastWheelEventTime)/200,1),x=c(_);h=l.B.number(s,n,x),_<1?this._frameId||(this._frameId=!0):g=!0}else h=n,g=!0;return this._active=!0,g&&(this._active=!1,this._finishTimeout=setTimeout((()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout}),200)),{noInertia:!0,needsRenderFrame:!g,zoomDelta:h-t.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(t){let n=l.bb;if(this._prevEase){const s=this._prevEase,c=(l.h.now()-s.start)/s.duration,h=s.easing(c+.01)-s.easing(c),g=.27/Math.sqrt(h*h+1e-4)*.01,_=Math.sqrt(.0729-g*g);n=l.ba(g,_,.25,1)}return this._prevEase={start:l.h.now(),duration:t,easing:n},n}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout)}}class ao{constructor(t,n){this._clickZoom=t,this._tapZoom=n}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()}}class so{constructor(t){this._tr=new tn(t),this.reset()}reset(){this._active=!1}dblclick(t,n){return t.preventDefault(),{cameraAnimation:s=>{s.easeTo({duration:300,zoom:this._tr.zoom+(t.shiftKey?-1:1),around:this._tr.unproject(n)},{originalEvent:t})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class oo{constructor(){this._tap=new cs({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset()}touchstart(t,n,s){if(!this._swipePoint)if(this._tapTime){const c=n[0],h=t.timeStamp-this._tapTime<500,g=this._tapPoint.dist(c)<30;h&&g?s.length>0&&(this._swipePoint=c,this._swipeTouch=s[0].identifier):this.reset()}else this._tap.touchstart(t,n,s)}touchmove(t,n,s){if(this._tapTime){if(this._swipePoint){if(s[0].identifier!==this._swipeTouch)return;const c=n[0],h=c.y-this._swipePoint.y;return this._swipePoint=c,t.preventDefault(),this._active=!0,{zoomDelta:h/128}}}else this._tap.touchmove(t,n,s)}touchend(t,n,s){if(this._tapTime)this._swipePoint&&s.length===0&&this.reset();else{const c=this._tap.touchend(t,n,s);c&&(this._tapTime=t.timeStamp,this._tapPoint=c)}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class lo{constructor(t,n,s){this._el=t,this._mousePan=n,this._touchPan=s}enable(t){this._inertiaOptions=t||{},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()}}class Li{constructor(t,n,s){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=n,this._mousePitch=s}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class nn{constructor(t,n,s,c){this._el=t,this._touchZoom=n,this._touchRotate=s,this._tapDragZoom=c,this._rotationDisabled=!1,this._enabled=!0}enable(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),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()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable()}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()}}const Sa=u=>u.zoom||u.drag||u.pitch||u.rotate;class co extends l.k{}function Ta(u){return u.panDelta&&u.panDelta.mag()||u.zoomDelta||u.bearingDelta||u.pitchDelta}class uo{constructor(t,n){this.handleWindowEvent=c=>{this.handleEvent(c,`${c.type}Window`)},this.handleEvent=(c,h)=>{if(c.type==="blur")return void this.stop(!0);this._updatingCamera=!0;const g=c.type==="renderFrame"?void 0:c,_={needsRenderFrame:!1},x={},w={},T=c.touches,I=T?this._getMapTouches(T):void 0,P=I?X.touchPos(this._el,I):X.mousePos(this._el,c);for(const{handlerName:$,handler:B,allowed:ee}of this._handlers){if(!B.isEnabled())continue;let se;this._blockedByActive(w,ee,$)?B.reset():B[h||c.type]&&(se=B[h||c.type](c,P,I),this.mergeHandlerResult(_,x,se,$,g),se&&se.needsRenderFrame&&this._triggerRenderFrame()),(se||B.isActive())&&(w[$]=B)}const V={};for(const $ in this._previousActiveHandlers)w[$]||(V[$]=g);this._previousActiveHandlers=w,(Object.keys(V).length||Ta(_))&&(this._changes.push([_,x,V]),this._triggerRenderFrame()),(Object.keys(w).length||Ta(_))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:N}=_;N&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],N(this._map))},this._map=t,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new ml(t),this._bearingSnap=n.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(n);const s=this._el;this._listeners=[[s,"touchstart",{passive:!0}],[s,"touchmove",{passive:!1}],[s,"touchend",void 0],[s,"touchcancel",void 0],[s,"mousedown",void 0],[s,"mousemove",void 0],[s,"mouseup",void 0],[document,"mousemove",{capture:!0}],[document,"mouseup",void 0],[s,"mouseover",void 0],[s,"mouseout",void 0],[s,"dblclick",void 0],[s,"click",void 0],[s,"keydown",{capture:!1}],[s,"keyup",void 0],[s,"wheel",{passive:!1}],[s,"contextmenu",void 0],[window,"blur",void 0]];for(const[c,h,g]of this._listeners)X.addEventListener(c,h,c===document?this.handleWindowEvent:this.handleEvent,g)}destroy(){for(const[t,n,s]of this._listeners)X.removeEventListener(t,n,t===document?this.handleWindowEvent:this.handleEvent,s)}_addDefaultHandlers(t){const n=this._map,s=n.getCanvasContainer();this._add("mapEvent",new _l(n,t));const c=n.boxZoom=new xl(n,t);this._add("boxZoom",c),t.interactive&&t.boxZoom&&c.enable();const h=new Rr(n),g=new so(n);n.doubleClickZoom=new ao(g,h),this._add("tapZoom",h),this._add("clickZoom",g),t.interactive&&t.doubleClickZoom&&n.doubleClickZoom.enable();const _=new oo;this._add("tapDragZoom",_);const x=n.touchPitch=new kc(n);this._add("touchPitch",x),t.interactive&&t.touchPitch&&n.touchPitch.enable(t.touchPitch);const w=Kn(t),T=Br(t);n.dragRotate=new Li(t,w,T),this._add("mouseRotate",w,["mousePitch"]),this._add("mousePitch",T,["mouseRotate"]),t.interactive&&t.dragRotate&&n.dragRotate.enable();const I=(({enable:ee,clickTolerance:se})=>{const G=new to({checkCorrectEvent:te=>X.mouseButton(te)===0&&!te.ctrlKey});return new Fr({clickTolerance:se,move:(te,ce)=>({around:ce,panDelta:ce.sub(te)}),activateOnStart:!0,moveStateManager:G,enable:ee,assignEvents:us})})(t),P=new Re(t,n);n.dragPan=new lo(s,I,P),this._add("mousePan",I),this._add("touchPan",P,["touchZoom","touchRotate"]),t.interactive&&t.dragPan&&n.dragPan.enable(t.dragPan);const V=new io,N=new bl;n.touchZoomRotate=new nn(s,N,V,_),this._add("touchRotate",V,["touchPan","touchZoom"]),this._add("touchZoom",N,["touchPan","touchRotate"]),t.interactive&&t.touchZoomRotate&&n.touchZoomRotate.enable(t.touchZoomRotate);const $=n.scrollZoom=new Cc(n,(()=>this._triggerRenderFrame()));this._add("scrollZoom",$,["mousePan"]),t.interactive&&t.scrollZoom&&n.scrollZoom.enable(t.scrollZoom);const B=n.keyboard=new wl(n);this._add("keyboard",B),t.interactive&&t.keyboard&&n.keyboard.enable(),this._add("blockableMapEvent",new yl(n))}_add(t,n,s){this._handlers.push({handlerName:t,handler:n,allowed:s}),this._handlersById[t]=n}stop(t){if(!this._updatingCamera){for(const{handler:n}of this._handlers)n.reset();this._inertia.clear(),this._fireEvents({},{},t),this._changes=[]}}isActive(){for(const{handler:t}of this._handlers)if(t.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!Sa(this._eventsInProgress)||this.isZooming()}_blockedByActive(t,n,s){for(const c in t)if(c!==s&&(!n||n.indexOf(c)<0))return!0;return!1}_getMapTouches(t){const n=[];for(const s of t)this._el.contains(s.target)&&n.push(s);return n}mergeHandlerResult(t,n,s,c,h){if(!s)return;l.e(t,s);const g={handlerName:c,originalEvent:s.originalEvent||h};s.zoomDelta!==void 0&&(n.zoom=g),s.panDelta!==void 0&&(n.drag=g),s.pitchDelta!==void 0&&(n.pitch=g),s.bearingDelta!==void 0&&(n.rotate=g)}_applyChanges(){const t={},n={},s={};for(const[c,h,g]of this._changes)c.panDelta&&(t.panDelta=(t.panDelta||new l.P(0,0))._add(c.panDelta)),c.zoomDelta&&(t.zoomDelta=(t.zoomDelta||0)+c.zoomDelta),c.bearingDelta&&(t.bearingDelta=(t.bearingDelta||0)+c.bearingDelta),c.pitchDelta&&(t.pitchDelta=(t.pitchDelta||0)+c.pitchDelta),c.around!==void 0&&(t.around=c.around),c.pinchAround!==void 0&&(t.pinchAround=c.pinchAround),c.noInertia&&(t.noInertia=c.noInertia),l.e(n,h),l.e(s,g);this._updateMapTransform(t,n,s),this._changes=[]}_updateMapTransform(t,n,s){const c=this._map,h=c._getTransformForUpdate(),g=c.terrain;if(!(Ta(t)||g&&this._terrainMovement))return this._fireEvents(n,s,!0);let{panDelta:_,zoomDelta:x,bearingDelta:w,pitchDelta:T,around:I,pinchAround:P}=t;P!==void 0&&(I=P),c._stop(!0),I=I||c.transform.centerPoint;const V=h.pointLocation(_?I.sub(_):I);w&&(h.bearing+=w),T&&(h.pitch+=T),x&&(h.zoom+=x),g?this._terrainMovement||!n.drag&&!n.zoom?n.drag&&this._terrainMovement?h.center=h.pointLocation(h.centerPoint.sub(_)):h.setLocationAtPoint(V,I):(this._terrainMovement=!0,this._map._elevationFreeze=!0,h.setLocationAtPoint(V,I),this._map.once("moveend",(()=>{this._map._elevationFreeze=!1,this._terrainMovement=!1,h.recalculateZoom(c.terrain)}))):h.setLocationAtPoint(V,I),c._applyUpdatedTransform(h),this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(n,s,!0)}_fireEvents(t,n,s){const c=Sa(this._eventsInProgress),h=Sa(t),g={};for(const T in t){const{originalEvent:I}=t[T];this._eventsInProgress[T]||(g[`${T}start`]=I),this._eventsInProgress[T]=t[T]}!c&&h&&this._fireEvent("movestart",h.originalEvent);for(const T in g)this._fireEvent(T,g[T]);h&&this._fireEvent("move",h.originalEvent);for(const T in t){const{originalEvent:I}=t[T];this._fireEvent(T,I)}const _={};let x;for(const T in this._eventsInProgress){const{handlerName:I,originalEvent:P}=this._eventsInProgress[T];this._handlersById[I].isActive()||(delete this._eventsInProgress[T],x=n[I]||P,_[`${T}end`]=x)}for(const T in _)this._fireEvent(T,_[T]);const w=Sa(this._eventsInProgress);if(s&&(c||h)&&!w){this._updatingCamera=!0;const T=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),I=P=>P!==0&&-this._bearingSnap<P&&P<this._bearingSnap;!T||!T.essential&&l.h.prefersReducedMotion?(this._map.fire(new l.k("moveend",{originalEvent:x})),I(this._map.getBearing())&&this._map.resetNorth()):(I(T.bearing||this._map.getBearing())&&(T.bearing=0),T.freezeElevation=!0,this._map.easeTo(T,{originalEvent:x})),this._updatingCamera=!1}}_fireEvent(t,n){this._map.fire(new l.k(t,n?{originalEvent:n}:{}))}_requestFrame(){return this._map.triggerRepaint(),this._map._renderTaskQueue.add((t=>{delete this._frameId,this.handleEvent(new co("renderFrame",{timeStamp:t})),this._applyChanges()}))}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}class Il extends l.E{constructor(t,n){super(),this._renderFrameCallback=()=>{const s=Math.min((l.h.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(s)),s<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},this._moving=!1,this._zooming=!1,this.transform=t,this._bearingSnap=n.bearingSnap,this.on("moveend",(()=>{delete this._requestedCameraState}))}getCenter(){return new l.L(this.transform.center.lng,this.transform.center.lat)}setCenter(t,n){return this.jumpTo({center:t},n)}panBy(t,n,s){return t=l.P.convert(t).mult(-1),this.panTo(this.transform.center,l.e({offset:t},n),s)}panTo(t,n,s){return this.easeTo(l.e({center:t},n),s)}getZoom(){return this.transform.zoom}setZoom(t,n){return this.jumpTo({zoom:t},n),this}zoomTo(t,n,s){return this.easeTo(l.e({zoom:t},n),s)}zoomIn(t,n){return this.zoomTo(this.getZoom()+1,t,n),this}zoomOut(t,n){return this.zoomTo(this.getZoom()-1,t,n),this}getBearing(){return this.transform.bearing}setBearing(t,n){return this.jumpTo({bearing:t},n),this}getPadding(){return this.transform.padding}setPadding(t,n){return this.jumpTo({padding:t},n),this}rotateTo(t,n,s){return this.easeTo(l.e({bearing:t},n),s)}resetNorth(t,n){return this.rotateTo(0,l.e({duration:1e3},t),n),this}resetNorthPitch(t,n){return this.easeTo(l.e({bearing:0,pitch:0,duration:1e3},t),n),this}snapToNorth(t,n){return Math.abs(this.getBearing())<this._bearingSnap?this.resetNorth(t,n):this}getPitch(){return this.transform.pitch}setPitch(t,n){return this.jumpTo({pitch:t},n),this}cameraForBounds(t,n){t=Ct.convert(t);const s=n&&n.bearing||0;return this._cameraForBoxAndBearing(t.getNorthWest(),t.getSouthEast(),s,n)}_cameraForBoxAndBearing(t,n,s,c){const h={top:0,bottom:0,right:0,left:0};if(typeof(c=l.e({padding:h,offset:[0,0],maxZoom:this.transform.maxZoom},c)).padding=="number"){const ce=c.padding;c.padding={top:ce,bottom:ce,right:ce,left:ce}}c.padding=l.e(h,c.padding);const g=this.transform,_=g.padding,x=g.project(l.L.convert(t)),w=g.project(l.L.convert(n)),T=x.rotate(-s*Math.PI/180),I=w.rotate(-s*Math.PI/180),P=new l.P(Math.max(T.x,I.x),Math.max(T.y,I.y)),V=new l.P(Math.min(T.x,I.x),Math.min(T.y,I.y)),N=P.sub(V),$=(g.width-(_.left+_.right+c.padding.left+c.padding.right))/N.x,B=(g.height-(_.top+_.bottom+c.padding.top+c.padding.bottom))/N.y;if(B<0||$<0)return void l.w("Map cannot fit within canvas with the given bounds, padding, and/or offset.");const ee=Math.min(g.scaleZoom(g.scale*Math.min($,B)),c.maxZoom),se=l.P.convert(c.offset),G=new l.P((c.padding.left-c.padding.right)/2,(c.padding.top-c.padding.bottom)/2).rotate(s*Math.PI/180),te=se.add(G).mult(g.scale/g.zoomScale(ee));return{center:g.unproject(x.add(w).div(2).sub(te)),zoom:ee,bearing:s}}fitBounds(t,n,s){return this._fitInternal(this.cameraForBounds(t,n),n,s)}fitScreenCoordinates(t,n,s,c,h){return this._fitInternal(this._cameraForBoxAndBearing(this.transform.pointLocation(l.P.convert(t)),this.transform.pointLocation(l.P.convert(n)),s,c),c,h)}_fitInternal(t,n,s){return t?(delete(n=l.e(t,n)).padding,n.linear?this.easeTo(n,s):this.flyTo(n,s)):this}jumpTo(t,n){this.stop();const s=this._getTransformForUpdate();let c=!1,h=!1,g=!1;return"zoom"in t&&s.zoom!==+t.zoom&&(c=!0,s.zoom=+t.zoom),t.center!==void 0&&(s.center=l.L.convert(t.center)),"bearing"in t&&s.bearing!==+t.bearing&&(h=!0,s.bearing=+t.bearing),"pitch"in t&&s.pitch!==+t.pitch&&(g=!0,s.pitch=+t.pitch),t.padding==null||s.isPaddingEqual(t.padding)||(s.padding=t.padding),this._applyUpdatedTransform(s),this.fire(new l.k("movestart",n)).fire(new l.k("move",n)),c&&this.fire(new l.k("zoomstart",n)).fire(new l.k("zoom",n)).fire(new l.k("zoomend",n)),h&&this.fire(new l.k("rotatestart",n)).fire(new l.k("rotate",n)).fire(new l.k("rotateend",n)),g&&this.fire(new l.k("pitchstart",n)).fire(new l.k("pitch",n)).fire(new l.k("pitchend",n)),this.fire(new l.k("moveend",n))}calculateCameraOptionsFromTo(t,n,s,c=0){const h=l.U.fromLngLat(t,n),g=l.U.fromLngLat(s,c),_=g.x-h.x,x=g.y-h.y,w=g.z-h.z,T=Math.hypot(_,x,w);if(T===0)throw new Error("Can't calculate camera options with same From and To");const I=Math.hypot(_,x),P=this.transform.scaleZoom(this.transform.cameraToCenterDistance/T/this.transform.tileSize),V=180*Math.atan2(_,-x)/Math.PI;let N=180*Math.acos(I/T)/Math.PI;return N=w<0?90-N:90+N,{center:g.toLngLat(),zoom:P,pitch:N,bearing:V}}easeTo(t,n){this._stop(!1,t.easeId),((t=l.e({offset:[0,0],duration:500,easing:l.bb},t)).animate===!1||!t.essential&&l.h.prefersReducedMotion)&&(t.duration=0);const s=this._getTransformForUpdate(),c=this.getZoom(),h=this.getBearing(),g=this.getPitch(),_=this.getPadding(),x="zoom"in t?+t.zoom:c,w="bearing"in t?this._normalizeBearing(t.bearing,h):h,T="pitch"in t?+t.pitch:g,I="padding"in t?t.padding:s.padding,P=l.P.convert(t.offset);let V=s.centerPoint.add(P);const N=s.pointLocation(V),$=l.L.convert(t.center||N);this._normalizeCenter($);const B=s.project(N),ee=s.project($).sub(B),se=s.zoomScale(x-c);let G,te;t.around&&(G=l.L.convert(t.around),te=s.locationPoint(G));const ce={moving:this._moving,zooming:this._zooming,rotating:this._rotating,pitching:this._pitching};return this._zooming=this._zooming||x!==c,this._rotating=this._rotating||h!==w,this._pitching=this._pitching||T!==g,this._padding=!s.isPaddingEqual(I),this._easeId=t.easeId,this._prepareEase(n,t.noMoveStart,ce),this.terrain&&this._prepareElevation($),this._ease((ue=>{if(this._zooming&&(s.zoom=l.B.number(c,x,ue)),this._rotating&&(s.bearing=l.B.number(h,w,ue)),this._pitching&&(s.pitch=l.B.number(g,T,ue)),this._padding&&(s.interpolatePadding(_,I,ue),V=s.centerPoint.add(P)),this.terrain&&!t.freezeElevation&&this._updateElevation(ue),G)s.setLocationAtPoint(G,te);else{const fe=s.zoomScale(s.zoom-c),ve=x>c?Math.min(2,se):Math.max(.5,se),xe=Math.pow(ve,1-ue),Se=s.unproject(B.add(ee.mult(ue*xe)).mult(fe));s.setLocationAtPoint(s.renderWorldCopies?Se.wrap():Se,V)}this._applyUpdatedTransform(s),this._fireMoveEvents(n)}),(ue=>{this.terrain&&this._finalizeElevation(),this._afterEase(n,ue)}),t),this}_prepareEase(t,n,s={}){this._moving=!0,n||s.moving||this.fire(new l.k("movestart",t)),this._zooming&&!s.zooming&&this.fire(new l.k("zoomstart",t)),this._rotating&&!s.rotating&&this.fire(new l.k("rotatestart",t)),this._pitching&&!s.pitching&&this.fire(new l.k("pitchstart",t))}_prepareElevation(t){this._elevationCenter=t,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(t,this.transform.tileZoom),this._elevationFreeze=!0}_updateElevation(t){this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);const n=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(t<1&&n!==this._elevationTarget){const s=this._elevationTarget-this._elevationStart;this._elevationStart+=t*(s-(n-(s*t+this._elevationStart))/(1-t)),this._elevationTarget=n}this.transform.elevation=l.B.number(this._elevationStart,this._elevationTarget,t)}_finalizeElevation(){this._elevationFreeze=!1,this.transform.recalculateZoom(this.terrain)}_getTransformForUpdate(){return this.transformCameraUpdate?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_applyUpdatedTransform(t){if(!this.transformCameraUpdate)return;const n=t.clone(),{center:s,zoom:c,pitch:h,bearing:g,elevation:_}=this.transformCameraUpdate(n);s&&(n.center=s),c!==void 0&&(n.zoom=c),h!==void 0&&(n.pitch=h),g!==void 0&&(n.bearing=g),_!==void 0&&(n.elevation=_),this.transform.apply(n)}_fireMoveEvents(t){this.fire(new l.k("move",t)),this._zooming&&this.fire(new l.k("zoom",t)),this._rotating&&this.fire(new l.k("rotate",t)),this._pitching&&this.fire(new l.k("pitch",t))}_afterEase(t,n){if(this._easeId&&n&&this._easeId===n)return;delete this._easeId;const s=this._zooming,c=this._rotating,h=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,s&&this.fire(new l.k("zoomend",t)),c&&this.fire(new l.k("rotateend",t)),h&&this.fire(new l.k("pitchend",t)),this.fire(new l.k("moveend",t))}flyTo(t,n){if(!t.essential&&l.h.prefersReducedMotion){const Ue=l.F(t,["center","zoom","bearing","pitch","around"]);return this.jumpTo(Ue,n)}this.stop(),t=l.e({offset:[0,0],speed:1.2,curve:1.42,easing:l.bb},t);const s=this._getTransformForUpdate(),c=this.getZoom(),h=this.getBearing(),g=this.getPitch(),_=this.getPadding(),x="zoom"in t?l.ad(+t.zoom,s.minZoom,s.maxZoom):c,w="bearing"in t?this._normalizeBearing(t.bearing,h):h,T="pitch"in t?+t.pitch:g,I="padding"in t?t.padding:s.padding,P=s.zoomScale(x-c),V=l.P.convert(t.offset);let N=s.centerPoint.add(V);const $=s.pointLocation(N),B=l.L.convert(t.center||$);this._normalizeCenter(B);const ee=s.project($),se=s.project(B).sub(ee);let G=t.curve;const te=Math.max(s.width,s.height),ce=te/P,ue=se.mag();if("minZoom"in t){const Ue=l.ad(Math.min(t.minZoom,c,x),s.minZoom,s.maxZoom),bt=te/s.zoomScale(Ue-c);G=Math.sqrt(bt/ue*2)}const fe=G*G;function ve(Ue){const bt=(ce*ce-te*te+(Ue?-1:1)*fe*fe*ue*ue)/(2*(Ue?ce:te)*fe*ue);return Math.log(Math.sqrt(bt*bt+1)-bt)}function xe(Ue){return(Math.exp(Ue)-Math.exp(-Ue))/2}function Se(Ue){return(Math.exp(Ue)+Math.exp(-Ue))/2}const Ne=ve(!1);let ot=function(Ue){return Se(Ne)/Se(Ne+G*Ue)},Ce=function(Ue){return te*((Se(Ne)*(xe(bt=Ne+G*Ue)/Se(bt))-xe(Ne))/fe)/ue;var bt},Ye=(ve(!0)-Ne)/G;if(Math.abs(ue)<1e-6||!isFinite(Ye)){if(Math.abs(te-ce)<1e-6)return this.easeTo(t,n);const Ue=ce<te?-1:1;Ye=Math.abs(Math.log(ce/te))/G,Ce=function(){return 0},ot=function(bt){return Math.exp(Ue*G*bt)}}return t.duration="duration"in t?+t.duration:1e3*Ye/("screenSpeed"in t?+t.screenSpeed/G:+t.speed),t.maxDuration&&t.duration>t.maxDuration&&(t.duration=0),this._zooming=!0,this._rotating=h!==w,this._pitching=T!==g,this._padding=!s.isPaddingEqual(I),this._prepareEase(n,!1),this.terrain&&this._prepareElevation(B),this._ease((Ue=>{const bt=Ue*Ye,st=1/ot(bt);s.zoom=Ue===1?x:c+s.scaleZoom(st),this._rotating&&(s.bearing=l.B.number(h,w,Ue)),this._pitching&&(s.pitch=l.B.number(g,T,Ue)),this._padding&&(s.interpolatePadding(_,I,Ue),N=s.centerPoint.add(V)),this.terrain&&!t.freezeElevation&&this._updateElevation(Ue);const rt=Ue===1?B:s.unproject(ee.add(se.mult(Ce(bt))).mult(st));s.setLocationAtPoint(s.renderWorldCopies?rt.wrap():rt,N),this._applyUpdatedTransform(s),this._fireMoveEvents(n)}),(()=>{this.terrain&&this._finalizeElevation(),this._afterEase(n)}),t),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(t,n){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){const s=this._onEaseEnd;delete this._onEaseEnd,s.call(this,n)}if(!t){const s=this.handlers;s&&s.stop(!1)}return this}_ease(t,n,s){s.animate===!1||s.duration===0?(t(1),n()):(this._easeStart=l.h.now(),this._easeOptions=s,this._onEaseFrame=t,this._onEaseEnd=n,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_normalizeBearing(t,n){t=l.b5(t,-180,180);const s=Math.abs(t-n);return Math.abs(t-360-n)<s&&(t-=360),Math.abs(t+360-n)<s&&(t+=360),t}_normalizeCenter(t){const n=this.transform;if(!n.renderWorldCopies||n.lngRange)return;const s=t.lng-n.center.lng;t.lng+=s>180?-360:s<-180?360:0}queryTerrainElevation(t){return this.terrain?this.terrain.getElevationForLngLatZoom(l.L.convert(t),this.transform.tileZoom)-this.transform.elevation:null}}class Hi{constructor(t={}){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=n=>{!n||n.sourceDataType!=="metadata"&&n.sourceDataType!=="visibility"&&n.dataType!=="style"&&n.type!=="terrain"||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=t}getDefaultPosition(){return"bottom-right"}onAdd(t){return this._map=t,this._compact=this.options&&this.options.compact,this._container=X.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=X.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=X.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(){X.remove(this._container),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(t,n){const s=this._map._getUIString(`AttributionControl.${n}`);t.title=s,t.setAttribute("aria-label",s)}_updateAttributions(){if(!this._map.style)return;let t=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?t=t.concat(this.options.customAttribution.map((c=>typeof c!="string"?"":c))):typeof this.options.customAttribution=="string"&&t.push(this.options.customAttribution)),this._map.style.stylesheet){const c=this._map.style.stylesheet;this.styleOwner=c.owner,this.styleId=c.id}const n=this._map.style.sourceCaches;for(const c in n){const h=n[c];if(h.used||h.usedForTerrain){const g=h.getSource();g.attribution&&t.indexOf(g.attribution)<0&&t.push(g.attribution)}}t=t.filter((c=>String(c).trim())),t.sort(((c,h)=>c.length-h.length)),t=t.filter(((c,h)=>{for(let g=h+1;g<t.length;g++)if(t[g].indexOf(c)>=0)return!1;return!0}));const s=t.join(" | ");s!==this._attribHTML&&(this._attribHTML=s,t.length?(this._innerContainer.innerHTML=s,this._container.classList.remove("maplibregl-attrib-empty")):this._container.classList.add("maplibregl-attrib-empty"),this._updateCompact(),this._editLink=null)}}class Mt{constructor(t={}){this._updateCompact=()=>{const n=this._container.children;if(n.length){const s=n[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact!==!1&&s.classList.add("maplibregl-compact"):s.classList.remove("maplibregl-compact")}},this.options=t}getDefaultPosition(){return"bottom-left"}onAdd(t){this._map=t,this._compact=this.options&&this.options.compact,this._container=X.create("div","maplibregl-ctrl");const n=X.create("a","maplibregl-ctrl-logo");return n.target="_blank",n.rel="noopener nofollow",n.href="https://maplibre.org/",n.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),n.setAttribute("rel","noopener nofollow"),this._container.appendChild(n),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){X.remove(this._container),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0}}class ps{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(t){const n=++this._id;return this._queue.push({callback:t,id:n,cancelled:!1}),n}remove(t){const n=this._currentlyRunning,s=n?this._queue.concat(n):this._queue;for(const c of s)if(c.id===t)return void(c.cancelled=!0)}run(t=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");const n=this._currentlyRunning=this._queue;this._queue=[];for(const s of n)if(!s.cancelled&&(s.callback(t),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}const ho={"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":"Mapbox logo","NavigationControl.ResetBearing":"Reset bearing to north","NavigationControl.ZoomIn":"Zoom in","NavigationControl.ZoomOut":"Zoom out","ScaleControl.Feet":"ft","ScaleControl.Meters":"m","ScaleControl.Kilometers":"km","ScaleControl.Miles":"mi","ScaleControl.NauticalMiles":"nm","TerrainControl.enableTerrain":"Enable terrain","TerrainControl.disableTerrain":"Disable terrain"};var Al=l.Q([{name:"a_pos3d",type:"Int16",components:3}]);class kl extends l.E{constructor(t){super(),this.sourceCache=t,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.deltaZoom=1,t.usedForTerrain=!0,t.tileSize=this.tileSize*2**this.deltaZoom}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null}update(t,n){this.sourceCache.update(t,n),this._renderableTilesKeys=[];const s={};for(const c of t.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:n}))s[c.key]=!0,this._renderableTilesKeys.push(c.key),this._tiles[c.key]||(c.posMatrix=new Float64Array(16),l.aS(c.posMatrix,0,l.N,0,l.N,0,1),this._tiles[c.key]=new Xr(c,this.tileSize));for(const c in this._tiles)s[c]||delete this._tiles[c]}freeRtt(t){for(const n in this._tiles){const s=this._tiles[n];(!t||s.tileID.equals(t)||s.tileID.isChildOf(t)||t.isChildOf(s.tileID))&&(s.rtt=[])}}getRenderableTiles(){return this._renderableTilesKeys.map((t=>this.getTileByID(t)))}getTileByID(t){return this._tiles[t]}getTerrainCoords(t){const n={};for(const s of this._renderableTilesKeys){const c=this._tiles[s].tileID;if(c.canonical.equals(t.canonical)){const h=t.clone();h.posMatrix=new Float64Array(16),l.aS(h.posMatrix,0,l.N,0,l.N,0,1),n[s]=h}else if(c.canonical.isChildOf(t.canonical)){const h=t.clone();h.posMatrix=new Float64Array(16);const g=c.canonical.z-t.canonical.z,_=c.canonical.x-(c.canonical.x>>g<<g),x=c.canonical.y-(c.canonical.y>>g<<g),w=l.N>>g;l.aS(h.posMatrix,0,w,0,w,0,1),l.$(h.posMatrix,h.posMatrix,[-_*w,-x*w,0]),n[s]=h}else if(t.canonical.isChildOf(c.canonical)){const h=t.clone();h.posMatrix=new Float64Array(16);const g=t.canonical.z-c.canonical.z,_=t.canonical.x-(t.canonical.x>>g<<g),x=t.canonical.y-(t.canonical.y>>g<<g),w=l.N>>g;l.aS(h.posMatrix,0,l.N,0,l.N,0,1),l.$(h.posMatrix,h.posMatrix,[_*w,x*w,0]),l.a0(h.posMatrix,h.posMatrix,[1/2**g,1/2**g,0]),n[s]=h}}return n}getSourceTile(t,n){const s=this.sourceCache._source;let c=t.overscaledZ-this.deltaZoom;if(c>s.maxzoom&&(c=s.maxzoom),c<s.minzoom)return null;this._sourceTileCache[t.key]||(this._sourceTileCache[t.key]=t.scaledTo(c).key);let h=this.sourceCache.getTileByID(this._sourceTileCache[t.key]);if((!h||!h.dem)&&n)for(;c>=s.minzoom&&(!h||!h.dem);)h=this.sourceCache.getTileByID(t.scaledTo(c--).key);return h}tilesAfterTime(t=Date.now()){return Object.values(this._tiles).filter((n=>n.timeAdded>=t))}}class Cl{constructor(t,n,s){this.painter=t,this.sourceCache=new kl(n),this.options=s,this.exaggeration=typeof s.exaggeration=="number"?s.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024}getDEMElevation(t,n,s,c=l.N){var h;if(!(n>=0&&n<c&&s>=0&&s<c))return 0;const g=this.getTerrainData(t),_=(h=g.tile)===null||h===void 0?void 0:h.dem;if(!_)return 0;const x=(function(N,$,B){var ee=$[0],se=$[1];return N[0]=B[0]*ee+B[4]*se+B[12],N[1]=B[1]*ee+B[5]*se+B[13],N})([],[n/c*l.N,s/c*l.N],g.u_terrain_matrix),w=[x[0]*_.dim,x[1]*_.dim],T=Math.floor(w[0]),I=Math.floor(w[1]),P=w[0]-T,V=w[1]-I;return _.get(T,I)*(1-P)*(1-V)+_.get(T+1,I)*P*(1-V)+_.get(T,I+1)*(1-P)*V+_.get(T+1,I+1)*P*V}getElevationForLngLatZoom(t,n){const{tileID:s,mercatorX:c,mercatorY:h}=this._getOverscaledTileIDFromLngLatZoom(t,n);return this.getElevation(s,c%l.N,h%l.N,l.N)}getElevation(t,n,s,c=l.N){return this.getDEMElevation(t,n,s,c)*this.exaggeration}getTerrainData(t){if(!this._emptyDemTexture){const c=this.painter.context,h=new l.R({width:1,height:1},new Uint8Array(4));this._emptyDepthTexture=new kt(c,h,c.gl.RGBA,{premultiply:!1}),this._emptyDemUnpack=[0,0,0,0],this._emptyDemTexture=new kt(c,new l.R({width:1,height:1}),c.gl.RGBA,{premultiply:!1}),this._emptyDemTexture.bind(c.gl.NEAREST,c.gl.CLAMP_TO_EDGE),this._emptyDemMatrix=l.ao([])}const n=this.sourceCache.getSourceTile(t,!0);if(n&&n.dem&&(!n.demTexture||n.needsTerrainPrepare)){const c=this.painter.context;n.demTexture=this.painter.getTileTexture(n.dem.stride),n.demTexture?n.demTexture.update(n.dem.getPixels(),{premultiply:!1}):n.demTexture=new kt(c,n.dem.getPixels(),c.gl.RGBA,{premultiply:!1}),n.demTexture.bind(c.gl.NEAREST,c.gl.CLAMP_TO_EDGE),n.needsTerrainPrepare=!1}const s=n&&n+n.tileID.key+t.key;if(s&&!this._demMatrixCache[s]){const c=this.sourceCache.sourceCache._source.maxzoom;let h=t.canonical.z-n.tileID.canonical.z;t.overscaledZ>t.canonical.z&&(t.canonical.z>=c?h=t.canonical.z-c:l.w("cannot calculate elevation if elevation maxzoom > source.maxzoom"));const g=t.canonical.x-(t.canonical.x>>h<<h),_=t.canonical.y-(t.canonical.y>>h<<h),x=l.bc(new Float64Array(16),[1/(l.N<<h),1/(l.N<<h),0]);l.$(x,x,[g*l.N,_*l.N,0]),this._demMatrixCache[t.key]={matrix:x,coord:t}}return{u_depth:2,u_terrain:3,u_terrain_dim:n&&n.dem&&n.dem.dim||1,u_terrain_matrix:s?this._demMatrixCache[t.key].matrix:this._emptyDemMatrix,u_terrain_unpack:n&&n.dem&&n.dem.getUnpackVector()||this._emptyDemUnpack,u_terrain_exaggeration:this.exaggeration,texture:(n&&n.demTexture||this._emptyDemTexture).texture,depthTexture:(this._fboDepthTexture||this._emptyDepthTexture).texture,tile:n}}getFramebuffer(t){const n=this.painter,s=n.width/devicePixelRatio,c=n.height/devicePixelRatio;return!this._fbo||this._fbo.width===s&&this._fbo.height===c||(this._fbo.destroy(),this._fboCoordsTexture.destroy(),this._fboDepthTexture.destroy(),delete this._fbo,delete this._fboDepthTexture,delete this._fboCoordsTexture),this._fboCoordsTexture||(this._fboCoordsTexture=new kt(n.context,{width:s,height:c,data:null},n.context.gl.RGBA,{premultiply:!1}),this._fboCoordsTexture.bind(n.context.gl.NEAREST,n.context.gl.CLAMP_TO_EDGE)),this._fboDepthTexture||(this._fboDepthTexture=new kt(n.context,{width:s,height:c,data:null},n.context.gl.RGBA,{premultiply:!1}),this._fboDepthTexture.bind(n.context.gl.NEAREST,n.context.gl.CLAMP_TO_EDGE)),this._fbo||(this._fbo=n.context.createFramebuffer(s,c,!0,!1),this._fbo.depthAttachment.set(n.context.createRenderbuffer(n.context.gl.DEPTH_COMPONENT16,s,c))),this._fbo.colorAttachment.set(t==="coords"?this._fboCoordsTexture.texture:this._fboDepthTexture.texture),this._fbo}getCoordsTexture(){const t=this.painter.context;if(this._coordsTexture)return this._coordsTexture;const n=new Uint8Array(this._coordsTextureSize*this._coordsTextureSize*4);for(let h=0,g=0;h<this._coordsTextureSize;h++)for(let _=0;_<this._coordsTextureSize;_++,g+=4)n[g+0]=255&_,n[g+1]=255&h,n[g+2]=_>>8<<4|h>>8,n[g+3]=0;const s=new l.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(n.buffer)),c=new kt(t,s,t.gl.RGBA,{premultiply:!1});return c.bind(t.gl.NEAREST,t.gl.CLAMP_TO_EDGE),this._coordsTexture=c,c}pointCoordinate(t){const n=new Uint8Array(4),s=this.painter.context,c=s.gl;s.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),c.readPixels(t.x,this.painter.height/devicePixelRatio-t.y-1,1,1,c.RGBA,c.UNSIGNED_BYTE,n),s.bindFramebuffer.set(null);const h=n[0]+(n[2]>>4<<8),g=n[1]+((15&n[2])<<8),_=this.coordsIndex[255-n[3]],x=_&&this.sourceCache.getTileByID(_);if(!x)return null;const w=this._coordsTextureSize,T=(1<<x.tileID.canonical.z)*w;return new l.U(this._allowMercatorOverflow(t,(x.tileID.canonical.x*w+h)/T),(x.tileID.canonical.y*w+g)/T,this.getElevation(x.tileID,h,g,w))}getTerrainMesh(){if(this._mesh)return this._mesh;const t=this.painter.context,n=new l.bd,s=new l.b0,c=this.meshSize,h=l.N/c,g=c*c;for(let I=0;I<=c;I++)for(let P=0;P<=c;P++)n.emplaceBack(P*h,I*h,0);for(let I=0;I<g;I+=c+1)for(let P=0;P<c;P++)s.emplaceBack(P+I,c+P+I+1,c+P+I+2),s.emplaceBack(P+I,c+P+I+2,P+I+1);const _=n.length,x=_+2*(c+1);for(const I of[0,1])for(let P=0;P<=c;P++)for(const V of[0,1])n.emplaceBack(P*h,I*l.N,V);for(let I=0;I<2*c;I+=2)s.emplaceBack(x+I,x+I+1,x+I+3),s.emplaceBack(x+I,x+I+3,x+I+2),s.emplaceBack(_+I,_+I+3,_+I+1),s.emplaceBack(_+I,_+I+2,_+I+3);const w=n.length,T=w+2*(c+1);for(const I of[0,1])for(let P=0;P<=c;P++)for(const V of[0,1])n.emplaceBack(I*l.N,P*h,V);for(let I=0;I<2*c;I+=2)s.emplaceBack(w+I,w+I+1,w+I+3),s.emplaceBack(w+I,w+I+3,w+I+2),s.emplaceBack(T+I,T+I+3,T+I+1),s.emplaceBack(T+I,T+I+2,T+I+3);return this._mesh={indexBuffer:t.createIndexBuffer(s),vertexBuffer:t.createVertexBuffer(n,Al.members),segments:l.S.simpleSegment(0,0,n.length,s.length)},this._mesh}getMeshFrameDelta(t){return 2*Math.PI*l.be/Math.pow(2,t)/5}getMinTileElevationForLngLatZoom(t,n){var s;const{tileID:c}=this._getOverscaledTileIDFromLngLatZoom(t,n);return(s=this.getMinMaxElevation(c).minElevation)!==null&&s!==void 0?s:0}getMinMaxElevation(t){const n=this.getTerrainData(t).tile,s={minElevation:null,maxElevation:null};return n&&n.dem&&(s.minElevation=n.dem.min*this.exaggeration,s.maxElevation=n.dem.max*this.exaggeration),s}_getOverscaledTileIDFromLngLatZoom(t,n){const s=l.U.fromLngLat(t.wrap()),c=(1<<n)*l.N,h=s.x*c,g=s.y*c,_=Math.floor(h/l.N),x=Math.floor(g/l.N);return{tileID:new l.O(n,0,n,_,x),mercatorX:h,mercatorY:g}}_allowMercatorOverflow(t,n){const s=t.x<this.painter.width/2;let c=l.bf(n);const h=this.painter.transform.center.lng;return s&&Math.sign(c)>0&&Math.sign(h)<0||!s&&Math.sign(c)<0&&Math.sign(h)>0?(c=360*Math.sign(h)+c,l.G(c)):n}}class Mc{constructor(t,n,s){this._context=t,this._size=n,this._tileSize=s,this._objects=[],this._recentlyUsed=[],this._stamp=0}destruct(){for(const t of this._objects)t.texture.destroy(),t.fbo.destroy()}_createObject(t){const n=this._context.createFramebuffer(this._tileSize,this._tileSize,!0,!0),s=new kt(this._context,{width:this._tileSize,height:this._tileSize,data:null},this._context.gl.RGBA);return s.bind(this._context.gl.LINEAR,this._context.gl.CLAMP_TO_EDGE),n.depthAttachment.set(this._context.createRenderbuffer(this._context.gl.DEPTH_STENCIL,this._tileSize,this._tileSize)),n.colorAttachment.set(s.texture),{id:t,fbo:n,texture:s,stamp:-1,inUse:!1}}getObjectForId(t){return this._objects[t]}useObject(t){t.inUse=!0,this._recentlyUsed=this._recentlyUsed.filter((n=>t.id!==n)),this._recentlyUsed.push(t.id)}stampObject(t){t.stamp=++this._stamp}getOrCreateFreeObject(){for(const n of this._recentlyUsed)if(!this._objects[n].inUse)return this._objects[n];if(this._objects.length>=this._size)throw new Error("No free RenderPool available, call freeAllObjects() required!");const t=this._createObject(this._objects.length);return this._objects.push(t),t}freeObject(t){t.inUse=!1}freeAllObjects(){for(const t of this._objects)this.freeObject(t)}isFull(){return!(this._objects.length<this._size)&&this._objects.some((t=>!t.inUse))===!1}}const Ti={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0};class ds{constructor(t,n){this.painter=t,this.terrain=n,this.pool=new Mc(t.context,30,n.sourceCache.tileSize*n.qualityFactor)}destruct(){this.pool.destruct()}getTexture(t){return this.pool.getObjectForId(t.rtt[this._stacks.length-1].id).texture}prepareForRender(t,n){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=t._order.filter((s=>!t._layers[s].isHidden(n))),this._coordsDescendingInv={};for(const s in t.sourceCaches){this._coordsDescendingInv[s]={};const c=t.sourceCaches[s].getVisibleCoordinates();for(const h of c){const g=this.terrain.sourceCache.getTerrainCoords(h);for(const _ in g)this._coordsDescendingInv[s][_]||(this._coordsDescendingInv[s][_]=[]),this._coordsDescendingInv[s][_].push(g[_])}}this._coordsDescendingInvStr={};for(const s of t._order){const c=t._layers[s],h=c.source;if(Ti[c.type]&&!this._coordsDescendingInvStr[h]){this._coordsDescendingInvStr[h]={};for(const g in this._coordsDescendingInv[h])this._coordsDescendingInvStr[h][g]=this._coordsDescendingInv[h][g].map((_=>_.key)).sort().join()}}for(const s of this._renderableTiles)for(const c in this._coordsDescendingInvStr){const h=this._coordsDescendingInvStr[c][s.tileID.key];h&&h!==s.rttCoords[c]&&(s.rtt=[])}}renderLayer(t){if(t.isHidden(this.painter.transform.zoom))return!1;const n=t.type,s=this.painter,c=this._renderableLayerIds[this._renderableLayerIds.length-1]===t.id;if(Ti[n]&&(this._prevType&&Ti[this._prevType]||this._stacks.push([]),this._prevType=n,this._stacks[this._stacks.length-1].push(t.id),!c))return!0;if(Ti[this._prevType]||Ti[n]&&c){this._prevType=n;const h=this._stacks.length-1,g=this._stacks[h]||[];for(const _ of this._renderableTiles){if(this.pool.isFull()&&(Vt(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(_),_.rtt[h]){const w=this.pool.getObjectForId(_.rtt[h].id);if(w.stamp===_.rtt[h].stamp){this.pool.useObject(w);continue}}const x=this.pool.getOrCreateFreeObject();this.pool.useObject(x),this.pool.stampObject(x),_.rtt[h]={id:x.id,stamp:x.stamp},s.context.bindFramebuffer.set(x.fbo.framebuffer),s.context.clear({color:l.aT.transparent,stencil:0}),s.currentStencilSource=void 0;for(let w=0;w<g.length;w++){const T=s.style._layers[g[w]],I=T.source?this._coordsDescendingInv[T.source][_.tileID.key]:[_.tileID];s.context.viewport.set([0,0,x.fbo.width,x.fbo.height]),s._renderTileClippingMasks(T,I),s.renderLayer(s,s.style.sourceCaches[T.source],T,I),T.source&&(_.rttCoords[T.source]=this._coordsDescendingInvStr[T.source][_.tileID.key])}}return Vt(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects(),Ti[n]}return!1}}const je=le,Ke={center:[0,0],zoom:0,bearing:0,pitch:0,minZoom:-2,maxZoom:22,minPitch:0,maxPitch:60,interactive:!0,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,cooperativeGestures:void 0,bearingSnap:7,clickTolerance:3,pitchWithRotate:!0,hash:!1,attributionControl:!0,maplibreLogo:!1,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1,trackResize:!0,renderWorldCopies:!0,refreshExpiredTiles:!0,maxTileCacheSize:null,maxTileCacheZoomLevels:l.c.MAX_TILE_CACHE_ZOOM_LEVELS,localIdeographFontFamily:"sans-serif",transformRequest:null,transformCameraUpdate:null,fadeDuration:300,crossSourceCollisions:!0,validateStyle:!0,maxCanvasSize:[4096,4096]},Ia=u=>{u.touchstart=u.dragStart,u.touchmoveWindow=u.dragMove,u.touchend=u.dragEnd},po={showCompass:!0,showZoom:!0,visualizePitch:!1};class fo{constructor(t,n,s=!1){this.mousedown=g=>{this.startMouse(l.e({},g,{ctrlKey:!0,preventDefault:()=>g.preventDefault()}),X.mousePos(this.element,g)),X.addEventListener(window,"mousemove",this.mousemove),X.addEventListener(window,"mouseup",this.mouseup)},this.mousemove=g=>{this.moveMouse(g,X.mousePos(this.element,g))},this.mouseup=g=>{this.mouseRotate.dragEnd(g),this.mousePitch&&this.mousePitch.dragEnd(g),this.offTemp()},this.touchstart=g=>{g.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=X.touchPos(this.element,g.targetTouches)[0],this.startTouch(g,this._startPos),X.addEventListener(window,"touchmove",this.touchmove,{passive:!1}),X.addEventListener(window,"touchend",this.touchend))},this.touchmove=g=>{g.targetTouches.length!==1?this.reset():(this._lastPos=X.touchPos(this.element,g.targetTouches)[0],this.moveTouch(g,this._lastPos))},this.touchend=g=>{g.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.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),this.touchRotate.reset(),this.touchPitch&&this.touchPitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp()},this._clickTolerance=10;const c=t.dragRotate._mouseRotate.getClickTolerance(),h=t.dragRotate._mousePitch.getClickTolerance();this.element=n,this.mouseRotate=Kn({clickTolerance:c,enable:!0}),this.touchRotate=(({enable:g,clickTolerance:_,bearingDegreesPerPixelMoved:x=.8})=>{const w=new vl;return new Fr({clickTolerance:_,move:(T,I)=>({bearingDelta:(I.x-T.x)*x}),moveStateManager:w,enable:g,assignEvents:Ia})})({clickTolerance:c,enable:!0}),this.map=t,s&&(this.mousePitch=Br({clickTolerance:h,enable:!0}),this.touchPitch=(({enable:g,clickTolerance:_,pitchDegreesPerPixelMoved:x=-.5})=>{const w=new vl;return new Fr({clickTolerance:_,move:(T,I)=>({pitchDelta:(I.y-T.y)*x}),moveStateManager:w,enable:g,assignEvents:Ia})})({clickTolerance:h,enable:!0})),X.addEventListener(n,"mousedown",this.mousedown),X.addEventListener(n,"touchstart",this.touchstart,{passive:!1}),X.addEventListener(n,"touchcancel",this.reset)}startMouse(t,n){this.mouseRotate.dragStart(t,n),this.mousePitch&&this.mousePitch.dragStart(t,n),X.disableDrag()}startTouch(t,n){this.touchRotate.dragStart(t,n),this.touchPitch&&this.touchPitch.dragStart(t,n),X.disableDrag()}moveMouse(t,n){const s=this.map,{bearingDelta:c}=this.mouseRotate.dragMove(t,n)||{};if(c&&s.setBearing(s.getBearing()+c),this.mousePitch){const{pitchDelta:h}=this.mousePitch.dragMove(t,n)||{};h&&s.setPitch(s.getPitch()+h)}}moveTouch(t,n){const s=this.map,{bearingDelta:c}=this.touchRotate.dragMove(t,n)||{};if(c&&s.setBearing(s.getBearing()+c),this.touchPitch){const{pitchDelta:h}=this.touchPitch.dragMove(t,n)||{};h&&s.setPitch(s.getPitch()+h)}}off(){const t=this.element;X.removeEventListener(t,"mousedown",this.mousedown),X.removeEventListener(t,"touchstart",this.touchstart,{passive:!1}),X.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),X.removeEventListener(window,"touchend",this.touchend),X.removeEventListener(t,"touchcancel",this.reset),this.offTemp()}offTemp(){X.enableDrag(),X.removeEventListener(window,"mousemove",this.mousemove),X.removeEventListener(window,"mouseup",this.mouseup),X.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),X.removeEventListener(window,"touchend",this.touchend)}}let Zt;function mo(u,t,n){if(u=new l.L(u.lng,u.lat),t){const s=new l.L(u.lng-360,u.lat),c=new l.L(u.lng+360,u.lat),h=n.locationPoint(u).distSqr(t);n.locationPoint(s).distSqr(t)<h?u=s:n.locationPoint(c).distSqr(t)<h&&(u=c)}for(;Math.abs(u.lng-n.center.lng)>180;){const s=n.locationPoint(u);if(s.x>=0&&s.y>=0&&s.x<=n.width&&s.y<=n.height)break;u.lng>n.center.lng?u.lng-=360:u.lng+=360}return u}const cr={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 Ml(u,t,n){const s=u.classList;for(const c in cr)s.remove(`maplibregl-${n}-anchor-${c}`);s.add(`maplibregl-${n}-anchor-${t}`)}class Sn extends l.E{constructor(t){if(super(),this._onKeyPress=n=>{const s=n.code,c=n.charCode||n.keyCode;s!=="Space"&&s!=="Enter"&&c!==32&&c!==13||this.togglePopup()},this._onMapClick=n=>{const s=n.originalEvent.target,c=this._element;this._popup&&(s===c||c.contains(s))&&this.togglePopup()},this._update=n=>{if(!this._map)return;const s=this._map.loaded()&&!this._map.isMoving();((n==null?void 0:n.type)==="terrain"||(n==null?void 0:n.type)==="render"&&!s)&&this._map.once("render",this._update),this._map.transform.renderWorldCopies&&(this._lngLat=mo(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset);let c="";this._rotationAlignment==="viewport"||this._rotationAlignment==="auto"?c=`rotateZ(${this._rotation}deg)`:this._rotationAlignment==="map"&&(c=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let h="";this._pitchAlignment==="viewport"||this._pitchAlignment==="auto"?h="rotateX(0deg)":this._pitchAlignment==="map"&&(h=`rotateX(${this._map.getPitch()}deg)`),n&&n.type!=="moveend"||(this._pos=this._pos.round()),X.setTransform(this._element,`${cr[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${h} ${c}`),this._map.terrain&&!this._opacityTimeout&&(this._opacityTimeout=setTimeout((()=>{const g=this._map.unproject(this._pos),_=40075016686e-3*Math.abs(Math.cos(this._lngLat.lat*Math.PI/180))/Math.pow(2,this._map.transform.tileZoom+8);this._element.style.opacity=g.distanceTo(this._lngLat)>20*_?"0.2":"1.0",this._opacityTimeout=null}),100))},this._onMove=n=>{if(!this._isDragging){const s=this._clickTolerance||this._map._clickTolerance;this._isDragging=n.point.dist(this._pointerdownPos)>=s}this._isDragging&&(this._pos=n.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 l.k("dragstart"))),this.fire(new l.k("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 l.k("dragend")),this._state="inactive"},this._addDragHandler=n=>{this._element.contains(n.originalEvent.target)&&(n.preventDefault(),this._positionDelta=n.point.sub(this._pos).add(this._offset),this._pointerdownPos=n.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=t&&t.anchor||"center",this._color=t&&t.color||"#3FB1CE",this._scale=t&&t.scale||1,this._draggable=t&&t.draggable||!1,this._clickTolerance=t&&t.clickTolerance||0,this._isDragging=!1,this._state="inactive",this._rotation=t&&t.rotation||0,this._rotationAlignment=t&&t.rotationAlignment||"auto",this._pitchAlignment=t&&t.pitchAlignment&&t.pitchAlignment!=="auto"?t.pitchAlignment:this._rotationAlignment,t&&t.element)this._element=t.element,this._offset=l.P.convert(t&&t.offset||[0,0]);else{this._defaultMarker=!0,this._element=X.create("div"),this._element.setAttribute("aria-label","Map marker");const n=X.createNS("http://www.w3.org/2000/svg","svg"),s=41,c=27;n.setAttributeNS(null,"display","block"),n.setAttributeNS(null,"height",`${s}px`),n.setAttributeNS(null,"width",`${c}px`),n.setAttributeNS(null,"viewBox",`0 0 ${c} ${s}`);const h=X.createNS("http://www.w3.org/2000/svg","g");h.setAttributeNS(null,"stroke","none"),h.setAttributeNS(null,"stroke-width","1"),h.setAttributeNS(null,"fill","none"),h.setAttributeNS(null,"fill-rule","evenodd");const g=X.createNS("http://www.w3.org/2000/svg","g");g.setAttributeNS(null,"fill-rule","nonzero");const _=X.createNS("http://www.w3.org/2000/svg","g");_.setAttributeNS(null,"transform","translate(3.0, 29.0)"),_.setAttributeNS(null,"fill","#000000");const x=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}];for(const ee of x){const se=X.createNS("http://www.w3.org/2000/svg","ellipse");se.setAttributeNS(null,"opacity","0.04"),se.setAttributeNS(null,"cx","10.5"),se.setAttributeNS(null,"cy","5.80029008"),se.setAttributeNS(null,"rx",ee.rx),se.setAttributeNS(null,"ry",ee.ry),_.appendChild(se)}const w=X.createNS("http://www.w3.org/2000/svg","g");w.setAttributeNS(null,"fill",this._color);const T=X.createNS("http://www.w3.org/2000/svg","path");T.setAttributeNS(null,"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"),w.appendChild(T);const I=X.createNS("http://www.w3.org/2000/svg","g");I.setAttributeNS(null,"opacity","0.25"),I.setAttributeNS(null,"fill","#000000");const P=X.createNS("http://www.w3.org/2000/svg","path");P.setAttributeNS(null,"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"),I.appendChild(P);const V=X.createNS("http://www.w3.org/2000/svg","g");V.setAttributeNS(null,"transform","translate(6.0, 7.0)"),V.setAttributeNS(null,"fill","#FFFFFF");const N=X.createNS("http://www.w3.org/2000/svg","g");N.setAttributeNS(null,"transform","translate(8.0, 8.0)");const $=X.createNS("http://www.w3.org/2000/svg","circle");$.setAttributeNS(null,"fill","#000000"),$.setAttributeNS(null,"opacity","0.25"),$.setAttributeNS(null,"cx","5.5"),$.setAttributeNS(null,"cy","5.5"),$.setAttributeNS(null,"r","5.4999962");const B=X.createNS("http://www.w3.org/2000/svg","circle");B.setAttributeNS(null,"fill","#FFFFFF"),B.setAttributeNS(null,"cx","5.5"),B.setAttributeNS(null,"cy","5.5"),B.setAttributeNS(null,"r","5.4999962"),N.appendChild($),N.appendChild(B),g.appendChild(_),g.appendChild(w),g.appendChild(I),g.appendChild(V),g.appendChild(N),n.appendChild(g),n.setAttributeNS(null,"height",s*this._scale+"px"),n.setAttributeNS(null,"width",c*this._scale+"px"),this._element.appendChild(n),this._offset=l.P.convert(t&&t.offset||[0,-14])}if(this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",(n=>{n.preventDefault()})),this._element.addEventListener("mousedown",(n=>{n.preventDefault()})),Ml(this._element,this._anchor,"marker"),t&&t.className)for(const n of t.className.split(" "))this._element.classList.add(n);this._popup=null}addTo(t){return this.remove(),this._map=t,t.getCanvasContainer().appendChild(this._element),t.on("move",this._update),t.on("moveend",this._update),t.on("terrain",this._update),this.setDraggable(this._draggable),this._update(),this._map.on("click",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off("click",this._onMapClick),this._map.off("move",this._update),this._map.off("moveend",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),X.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(t){return this._lngLat=l.L.convert(t),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(t){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),t){if(!("offset"in t.options)){const c=Math.abs(13.5)/Math.SQRT2;t.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[c,-1*(38.1-13.5+c)],"bottom-right":[-c,-1*(38.1-13.5+c)],left:[13.5,-1*(38.1-13.5)],right:[-13.5,-1*(38.1-13.5)]}:this._offset}this._popup=t,this._lngLat&&this._popup.setLngLat(this._lngLat),this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress)}return this}getPopup(){return this._popup}togglePopup(){const t=this._popup;return t?(t.isOpen()?t.remove():t.addTo(this._map),this):this}getOffset(){return this._offset}setOffset(t){return this._offset=l.P.convert(t),this._update(),this}addClassName(t){this._element.classList.add(t)}removeClassName(t){this._element.classList.remove(t)}toggleClassName(t){return this._element.classList.toggle(t)}setDraggable(t){return this._draggable=!!t,this._map&&(t?(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}isDraggable(){return this._draggable}setRotation(t){return this._rotation=t||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(t){return this._rotationAlignment=t||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(t){return this._pitchAlignment=t&&t!=="auto"?t:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}}const Ut={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0};let Bt=0,Jn=!1;const Aa={maxWidth:100,unit:"metric"};function ka(u,t,n){const s=n&&n.maxWidth||100,c=u._container.clientHeight/2,h=u.unproject([0,c]),g=u.unproject([s,c]),_=h.distanceTo(g);if(n&&n.unit==="imperial"){const x=3.2808*_;x>5280?Tn(t,s,x/5280,u._getUIString("ScaleControl.Miles")):Tn(t,s,x,u._getUIString("ScaleControl.Feet"))}else n&&n.unit==="nautical"?Tn(t,s,_/1852,u._getUIString("ScaleControl.NauticalMiles")):_>=1e3?Tn(t,s,_/1e3,u._getUIString("ScaleControl.Kilometers")):Tn(t,s,_,u._getUIString("ScaleControl.Meters"))}function Tn(u,t,n,s){const c=(function(h){const g=Math.pow(10,`${Math.floor(h)}`.length-1);let _=h/g;return _=_>=10?10:_>=5?5:_>=3?3:_>=2?2:_>=1?1:(function(x){const w=Math.pow(10,Math.ceil(-Math.log(x)/Math.LN10));return Math.round(x*w)/w})(_),g*_})(n);u.style.width=t*(c/n)+"px",u.innerHTML=`${c}&nbsp;${s}`}const go={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px"},_o=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function Qn(u){if(u){if(typeof u=="number"){const t=Math.round(Math.abs(u)/Math.SQRT2);return{center:new l.P(0,0),top:new l.P(0,u),"top-left":new l.P(t,t),"top-right":new l.P(-t,t),bottom:new l.P(0,-u),"bottom-left":new l.P(t,-t),"bottom-right":new l.P(-t,-t),left:new l.P(u,0),right:new l.P(-u,0)}}if(u instanceof l.P||Array.isArray(u)){const t=l.P.convert(u);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:l.P.convert(u.center||[0,0]),top:l.P.convert(u.top||[0,0]),"top-left":l.P.convert(u["top-left"]||[0,0]),"top-right":l.P.convert(u["top-right"]||[0,0]),bottom:l.P.convert(u.bottom||[0,0]),"bottom-left":l.P.convert(u["bottom-left"]||[0,0]),"bottom-right":l.P.convert(u["bottom-right"]||[0,0]),left:l.P.convert(u.left||[0,0]),right:l.P.convert(u.right||[0,0])}}return Qn(new l.P(0,0))}const yo={extend:(u,...t)=>l.e(u,...t),run(u){u()},logToElement(u,t=!1,n="log"){const s=window.document.getElementById(n);s&&(t&&(s.innerHTML=""),s.innerHTML+=`<br>${u}`)}},xo=le;class _t{static get version(){return xo}static get workerCount(){return yr.workerCount}static set workerCount(t){yr.workerCount=t}static get maxParallelImageRequests(){return l.c.MAX_PARALLEL_IMAGE_REQUESTS}static set maxParallelImageRequests(t){l.c.MAX_PARALLEL_IMAGE_REQUESTS=t}static get workerUrl(){return l.c.WORKER_URL}static set workerUrl(t){l.c.WORKER_URL=t}static addProtocol(t,n){l.c.REGISTERED_PROTOCOLS[t]=n}static removeProtocol(t){delete l.c.REGISTERED_PROTOCOLS[t]}}return _t.Map=class extends Il{constructor(u){if(l.bg.mark(l.bh.create),(u=l.e({},Ke,u)).minZoom!=null&&u.maxZoom!=null&&u.minZoom>u.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(u.minPitch!=null&&u.maxPitch!=null&&u.minPitch>u.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(u.minPitch!=null&&u.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(u.maxPitch!=null&&u.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(super(new ls(u.minZoom,u.maxZoom,u.minPitch,u.maxPitch,u.renderWorldCopies),{bearingSnap:u.bearingSnap}),this._cooperativeGesturesOnWheel=t=>{this._onCooperativeGesture(t,t[this._metaKey],1)},this._contextLost=t=>{t.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new l.k("webglcontextlost",{originalEvent:t}))},this._contextRestored=t=>{this._setupPainter(),this.resize(),this._update(),this.fire(new l.k("webglcontextrestored",{originalEvent:t}))},this._onMapScroll=t=>{if(t.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update()},this._interactive=u.interactive,this._cooperativeGestures=u.cooperativeGestures,this._metaKey=navigator.platform.indexOf("Mac")===0?"metaKey":"ctrlKey",this._maxTileCacheSize=u.maxTileCacheSize,this._maxTileCacheZoomLevels=u.maxTileCacheZoomLevels,this._failIfMajorPerformanceCaveat=u.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=u.preserveDrawingBuffer,this._antialias=u.antialias,this._trackResize=u.trackResize,this._bearingSnap=u.bearingSnap,this._refreshExpiredTiles=u.refreshExpiredTiles,this._fadeDuration=u.fadeDuration,this._crossSourceCollisions=u.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=u.collectResourceTiming,this._renderTaskQueue=new ps,this._controls=[],this._mapId=l.a2(),this._locale=l.e({},ho,u.locale),this._clickTolerance=u.clickTolerance,this._overridePixelRatio=u.pixelRatio,this._maxCanvasSize=u.maxCanvasSize,this.transformCameraUpdate=u.transformCameraUpdate,this._imageQueueHandle=qe.addThrottleControl((()=>this.isMoving())),this._requestManager=new Ze(u.transformRequest),typeof u.container=="string"){if(this._container=document.getElementById(u.container),!this._container)throw new Error(`Container '${u.container}' not found.`)}else{if(!(u.container instanceof HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=u.container}if(u.maxBounds&&this.setMaxBounds(u.maxBounds),this._setupContainer(),this._setupPainter(),this.on("move",(()=>this._update(!1))),this.on("moveend",(()=>this._update(!1))),this.on("zoom",(()=>this._update(!0))),this.on("terrain",(()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0)})),this.once("idle",(()=>{this._idleTriggered=!0})),typeof window<"u"){addEventListener("online",this._onWindowOnline,!1);let t=!1;const n=wn((s=>{this._trackResize&&!this._removed&&this.resize(s)._update()}),50);this._resizeObserver=new ResizeObserver((s=>{t?n(s):t=!0})),this._resizeObserver.observe(this._container)}this.handlers=new uo(this,u),this._cooperativeGestures&&this._setupCooperativeGestures(),this._hash=u.hash&&new va(typeof u.hash=="string"&&u.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:u.center,zoom:u.zoom,bearing:u.bearing,pitch:u.pitch}),u.bounds&&(this.resize(),this.fitBounds(u.bounds,l.e({},u.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=u.localIdeographFontFamily,this._validateStyle=u.validateStyle,u.style&&this.setStyle(u.style,{localIdeographFontFamily:u.localIdeographFontFamily}),u.attributionControl&&this.addControl(new Hi({customAttribution:u.customAttribution})),u.maplibreLogo&&this.addControl(new Mt,u.logoPosition),this.on("style.load",(()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)})),this.on("data",(t=>{this._update(t.dataType==="style"),this.fire(new l.k(`${t.dataType}data`,t))})),this.on("dataloading",(t=>{this.fire(new l.k(`${t.dataType}dataloading`,t))})),this.on("dataabort",(t=>{this.fire(new l.k("sourcedataabort",t))}))}_getMapId(){return this._mapId}addControl(u,t){if(t===void 0&&(t=u.getDefaultPosition?u.getDefaultPosition():"top-right"),!u||!u.onAdd)return this.fire(new l.j(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));const n=u.onAdd(this);this._controls.push(u);const s=this._controlPositions[t];return t.indexOf("bottom")!==-1?s.insertBefore(n,s.firstChild):s.appendChild(n),this}removeControl(u){if(!u||!u.onRemove)return this.fire(new l.j(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));const t=this._controls.indexOf(u);return t>-1&&this._controls.splice(t,1),u.onRemove(this),this}hasControl(u){return this._controls.indexOf(u)>-1}calculateCameraOptionsFromTo(u,t,n,s){return s==null&&this.terrain&&(s=this.terrain.getElevationForLngLatZoom(n,this.transform.tileZoom)),super.calculateCameraOptionsFromTo(u,t,n,s)}resize(u){var t;const n=this._containerDimensions(),s=n[0],c=n[1],h=this._getClampedPixelRatio(s,c);if(this._resizeCanvas(s,c,h),this.painter.resize(s,c,h),this.painter.overLimit()){const _=this.painter.context.gl;this._maxCanvasSize=[_.drawingBufferWidth,_.drawingBufferHeight];const x=this._getClampedPixelRatio(s,c);this._resizeCanvas(s,c,x),this.painter.resize(s,c,x)}this.transform.resize(s,c),(t=this._requestedCameraState)===null||t===void 0||t.resize(s,c);const g=!this._moving;return g&&(this.stop(),this.fire(new l.k("movestart",u)).fire(new l.k("move",u))),this.fire(new l.k("resize",u)),g&&this.fire(new l.k("moveend",u)),this}_getClampedPixelRatio(u,t){const{0:n,1:s}=this._maxCanvasSize,c=this.getPixelRatio(),h=u*c,g=t*c;return Math.min(h>n?n/h:1,g>s?s/g:1)*c}getPixelRatio(){var u;return(u=this._overridePixelRatio)!==null&&u!==void 0?u:devicePixelRatio}setPixelRatio(u){this._overridePixelRatio=u,this.resize()}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(u){return this.transform.setMaxBounds(Ct.convert(u)),this._update()}setMinZoom(u){if((u=u??-2)>=-2&&u<=this.transform.maxZoom)return this.transform.minZoom=u,this._update(),this.getZoom()<u&&this.setZoom(u),this;throw new Error("minZoom must be between -2 and the current maxZoom, inclusive")}getMinZoom(){return this.transform.minZoom}setMaxZoom(u){if((u=u??22)>=this.transform.minZoom)return this.transform.maxZoom=u,this._update(),this.getZoom()>u&&this.setZoom(u),this;throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(u){if((u=u??0)<0)throw new Error("minPitch must be greater than or equal to 0");if(u>=0&&u<=this.transform.maxPitch)return this.transform.minPitch=u,this._update(),this.getPitch()<u&&this.setPitch(u),this;throw new Error("minPitch must be between 0 and the current maxPitch, inclusive")}getMinPitch(){return this.transform.minPitch}setMaxPitch(u){if((u=u??60)>85)throw new Error("maxPitch must be less than or equal to 85");if(u>=this.transform.minPitch)return this.transform.maxPitch=u,this._update(),this.getPitch()>u&&this.setPitch(u),this;throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(u){return this.transform.renderWorldCopies=u,this._update()}getCooperativeGestures(){return this._cooperativeGestures}setCooperativeGestures(u){return this._cooperativeGestures=u,this._cooperativeGestures?this._setupCooperativeGestures():this._destroyCooperativeGestures(),this}project(u){return this.transform.locationPoint(l.L.convert(u),this.style&&this.terrain)}unproject(u){return this.transform.pointLocation(l.P.convert(u),this.terrain)}isMoving(){var u;return this._moving||((u=this.handlers)===null||u===void 0?void 0:u.isMoving())}isZooming(){var u;return this._zooming||((u=this.handlers)===null||u===void 0?void 0:u.isZooming())}isRotating(){var u;return this._rotating||((u=this.handlers)===null||u===void 0?void 0:u.isRotating())}_createDelegatedListener(u,t,n){if(u==="mouseenter"||u==="mouseover"){let s=!1;return{layer:t,listener:n,delegates:{mousemove:h=>{const g=this.getLayer(t)?this.queryRenderedFeatures(h.point,{layers:[t]}):[];g.length?s||(s=!0,n.call(this,new Gi(u,this,h.originalEvent,{features:g}))):s=!1},mouseout:()=>{s=!1}}}}if(u==="mouseleave"||u==="mouseout"){let s=!1;return{layer:t,listener:n,delegates:{mousemove:g=>{(this.getLayer(t)?this.queryRenderedFeatures(g.point,{layers:[t]}):[]).length?s=!0:s&&(s=!1,n.call(this,new Gi(u,this,g.originalEvent)))},mouseout:g=>{s&&(s=!1,n.call(this,new Gi(u,this,g.originalEvent)))}}}}{const s=c=>{const h=this.getLayer(t)?this.queryRenderedFeatures(c.point,{layers:[t]}):[];h.length&&(c.features=h,n.call(this,c),delete c.features)};return{layer:t,listener:n,delegates:{[u]:s}}}}on(u,t,n){if(n===void 0)return super.on(u,t);const s=this._createDelegatedListener(u,t,n);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[u]=this._delegatedListeners[u]||[],this._delegatedListeners[u].push(s);for(const c in s.delegates)this.on(c,s.delegates[c]);return this}once(u,t,n){if(n===void 0)return super.once(u,t);const s=this._createDelegatedListener(u,t,n);for(const c in s.delegates)this.once(c,s.delegates[c]);return this}off(u,t,n){return n===void 0?super.off(u,t):(this._delegatedListeners&&this._delegatedListeners[u]&&(s=>{const c=this._delegatedListeners[u];for(let h=0;h<c.length;h++){const g=c[h];if(g.layer===t&&g.listener===n){for(const _ in g.delegates)this.off(_,g.delegates[_]);return c.splice(h,1),this}}})(),this)}queryRenderedFeatures(u,t){if(!this.style)return[];let n;const s=u instanceof l.P||Array.isArray(u),c=s?u:[[0,0],[this.transform.width,this.transform.height]];if(t=t||(s?{}:u)||{},c instanceof l.P||typeof c[0]=="number")n=[l.P.convert(c)];else{const h=l.P.convert(c[0]),g=l.P.convert(c[1]);n=[h,new l.P(g.x,h.y),g,new l.P(h.x,g.y),h]}return this.style.queryRenderedFeatures(n,t,this.transform)}querySourceFeatures(u,t){return this.style.querySourceFeatures(u,t)}setStyle(u,t){return(t=l.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._validateStyle},t)).diff!==!1&&t.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&u?(this._diffStyle(u,t),this):(this._localIdeographFontFamily=t.localIdeographFontFamily,this._updateStyle(u,t))}setTransformRequest(u){return this._requestManager.setTransformRequest(u),this}_getUIString(u){const t=this._locale[u];if(t==null)throw new Error(`Missing UI string '${u}'`);return t}_updateStyle(u,t){if(t.transformStyle&&this.style&&!this.style._loaded)return void this.style.once("style.load",(()=>this._updateStyle(u,t)));const n=this.style&&t.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!u)),u?(this.style=new ui(this,t||{}),this.style.setEventedParent(this,{style:this.style}),typeof u=="string"?this.style.loadURL(u,t,n):this.style.loadJSON(u,t,n),this):(delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new ui(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(u,t){if(typeof u=="string"){const n=this._requestManager.transformRequest(u,Be.Style);l.f(n,((s,c)=>{s?this.fire(new l.j(s)):c&&this._updateDiff(c,t)}))}else typeof u=="object"&&this._updateDiff(u,t)}_updateDiff(u,t){try{this.style.setState(u,t)&&this._update(!0)}catch(n){l.w(`Unable to perform style diff: ${n.message||n.error||n}. Rebuilding the style from scratch.`),this._updateStyle(u,t)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():l.w("There is no style added to the map.")}addSource(u,t){return this._lazyInitEmptyStyle(),this.style.addSource(u,t),this._update(!0)}isSourceLoaded(u){const t=this.style&&this.style.sourceCaches[u];if(t!==void 0)return t.loaded();this.fire(new l.j(new Error(`There is no source with ID '${u}'`)))}setTerrain(u){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),u){const t=this.style.sourceCaches[u.source];if(!t)throw new Error(`cannot load terrain, because there exists no source with ID: ${u.source}`);for(const n in this.style._layers){const s=this.style._layers[n];s.type==="hillshade"&&s.source===u.source&&l.w("You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.")}this.terrain=new Cl(this.painter,t,u),this.painter.renderToTexture=new ds(this.painter,this.terrain),this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._terrainDataCallback=n=>{n.dataType==="style"?this.terrain.sourceCache.freeRtt():n.dataType==="source"&&n.tile&&(n.sourceId!==u.source||this._elevationFreeze||(this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.terrain.sourceCache.freeRtt(n.tile.tileID))},this.style.on("data",this._terrainDataCallback)}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform._minEleveationForCurrentTile=0,this.transform.elevation=0;return this.fire(new l.k("terrain",{terrain:u})),this}getTerrain(){var u,t;return(t=(u=this.terrain)===null||u===void 0?void 0:u.options)!==null&&t!==void 0?t:null}areTilesLoaded(){const u=this.style&&this.style.sourceCaches;for(const t in u){const n=u[t]._tiles;for(const s in n){const c=n[s];if(c.state!=="loaded"&&c.state!=="errored")return!1}}return!0}addSourceType(u,t,n){return this._lazyInitEmptyStyle(),this.style.addSourceType(u,t,n)}removeSource(u){return this.style.removeSource(u),this._update(!0)}getSource(u){return this.style.getSource(u)}addImage(u,t,n={}){const{pixelRatio:s=1,sdf:c=!1,stretchX:h,stretchY:g,content:_}=n;if(this._lazyInitEmptyStyle(),!(t instanceof HTMLImageElement||l.a(t))){if(t.width===void 0||t.height===void 0)return this.fire(new l.j(new 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`")));{const{width:x,height:w,data:T}=t,I=t;return this.style.addImage(u,{data:new l.R({width:x,height:w},new Uint8Array(T)),pixelRatio:s,stretchX:h,stretchY:g,content:_,sdf:c,version:0,userImage:I}),I.onAdd&&I.onAdd(this,u),this}}{const{width:x,height:w,data:T}=l.h.getImageData(t);this.style.addImage(u,{data:new l.R({width:x,height:w},T),pixelRatio:s,stretchX:h,stretchY:g,content:_,sdf:c,version:0})}}updateImage(u,t){const n=this.style.getImage(u);if(!n)return this.fire(new l.j(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));const s=t instanceof HTMLImageElement||l.a(t)?l.h.getImageData(t):t,{width:c,height:h,data:g}=s;if(c===void 0||h===void 0)return this.fire(new l.j(new 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(c!==n.data.width||h!==n.data.height)return this.fire(new l.j(new Error("The width and height of the updated image must be that same as the previous version of the image")));const _=!(t instanceof HTMLImageElement||l.a(t));return n.data.replace(g,_),this.style.updateImage(u,n),this}getImage(u){return this.style.getImage(u)}hasImage(u){return u?!!this.style.getImage(u):(this.fire(new l.j(new Error("Missing required image id"))),!1)}removeImage(u){this.style.removeImage(u)}loadImage(u,t){qe.getImage(this._requestManager.transformRequest(u,Be.Image),t)}listImages(){return this.style.listImages()}addLayer(u,t){return this._lazyInitEmptyStyle(),this.style.addLayer(u,t),this._update(!0)}moveLayer(u,t){return this.style.moveLayer(u,t),this._update(!0)}removeLayer(u){return this.style.removeLayer(u),this._update(!0)}getLayer(u){return this.style.getLayer(u)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(u,t,n){return this.style.setLayerZoomRange(u,t,n),this._update(!0)}setFilter(u,t,n={}){return this.style.setFilter(u,t,n),this._update(!0)}getFilter(u){return this.style.getFilter(u)}setPaintProperty(u,t,n,s={}){return this.style.setPaintProperty(u,t,n,s),this._update(!0)}getPaintProperty(u,t){return this.style.getPaintProperty(u,t)}setLayoutProperty(u,t,n,s={}){return this.style.setLayoutProperty(u,t,n,s),this._update(!0)}getLayoutProperty(u,t){return this.style.getLayoutProperty(u,t)}setGlyphs(u,t={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(u,t),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(u,t,n={}){return this._lazyInitEmptyStyle(),this.style.addSprite(u,t,n,(s=>{s||this._update(!0)})),this}removeSprite(u){return this._lazyInitEmptyStyle(),this.style.removeSprite(u),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(u,t={}){return this._lazyInitEmptyStyle(),this.style.setSprite(u,t,(n=>{n||this._update(!0)})),this}setLight(u,t={}){return this._lazyInitEmptyStyle(),this.style.setLight(u,t),this._update(!0)}getLight(){return this.style.getLight()}setFeatureState(u,t){return this.style.setFeatureState(u,t),this._update()}removeFeatureState(u,t){return this.style.removeFeatureState(u,t),this._update()}getFeatureState(u){return this.style.getFeatureState(u)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let u=0,t=0;return this._container&&(u=this._container.clientWidth||400,t=this._container.clientHeight||300),[u,t]}_setupContainer(){const u=this._container;u.classList.add("maplibregl-map");const t=this._canvasContainer=X.create("div","maplibregl-canvas-container",u);this._interactive&&t.classList.add("maplibregl-interactive"),this._canvas=X.create("canvas","maplibregl-canvas",t),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex","0"),this._canvas.setAttribute("aria-label","Map"),this._canvas.setAttribute("role","region");const n=this._containerDimensions(),s=this._getClampedPixelRatio(n[0],n[1]);this._resizeCanvas(n[0],n[1],s);const c=this._controlContainer=X.create("div","maplibregl-control-container",u),h=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach((g=>{h[g]=X.create("div",`maplibregl-ctrl-${g} `,c)})),this._container.addEventListener("scroll",this._onMapScroll,!1)}_setupCooperativeGestures(){this._cooperativeGesturesScreen=X.create("div","maplibregl-cooperative-gesture-screen",this._container);let u=typeof this._cooperativeGestures!="boolean"&&this._cooperativeGestures.windowsHelpText?this._cooperativeGestures.windowsHelpText:"Use Ctrl + scroll to zoom the map";navigator.platform.indexOf("Mac")===0&&(u=typeof this._cooperativeGestures!="boolean"&&this._cooperativeGestures.macHelpText?this._cooperativeGestures.macHelpText:"Use ⌘ + scroll to zoom the map"),this._cooperativeGesturesScreen.innerHTML=`
<div class="maplibregl-desktop-message">${u}</div>
<div class="maplibregl-mobile-message">${typeof this._cooperativeGestures!="boolean"&&this._cooperativeGestures.mobileHelpText?this._cooperativeGestures.mobileHelpText:"Use two fingers to move the map"}</div>
`,this._cooperativeGesturesScreen.setAttribute("aria-hidden","true"),this._canvasContainer.addEventListener("wheel",this._cooperativeGesturesOnWheel,!1),this._canvasContainer.classList.add("maplibregl-cooperative-gestures")}_destroyCooperativeGestures(){X.remove(this._cooperativeGesturesScreen),this._canvasContainer.removeEventListener("wheel",this._cooperativeGesturesOnWheel,!1),this._canvasContainer.classList.remove("maplibregl-cooperative-gestures")}_resizeCanvas(u,t,n){this._canvas.width=Math.floor(n*u),this._canvas.height=Math.floor(n*t),this._canvas.style.width=`${u}px`,this._canvas.style.height=`${t}px`}_setupPainter(){const u={alpha:!0,stencil:!0,depth:!0,failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1};let t=null;this._canvas.addEventListener("webglcontextcreationerror",(s=>{t={requestedAttributes:u},s&&(t.statusMessage=s.statusMessage,t.type=s.type)}),{once:!0});const n=this._canvas.getContext("webgl2",u)||this._canvas.getContext("webgl",u);if(!n){const s="Failed to initialize WebGL";throw t?(t.message=s,new Error(JSON.stringify(t))):new Error(s)}this.painter=new bn(n,this.transform),Ee.testSupport(n)}_onCooperativeGesture(u,t,n){return!t&&n<2&&(this._cooperativeGesturesScreen.classList.add("maplibregl-show"),setTimeout((()=>{this._cooperativeGesturesScreen.classList.remove("maplibregl-show")}),100)),!1}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(u){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||u,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(u){return this._update(),this._renderTaskQueue.add(u)}_cancelRenderFrame(u){this._renderTaskQueue.remove(u)}_render(u){const t=this._idleTriggered?this._fadeDuration:0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(u),this._removed)return;let n=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;const c=this.transform.zoom,h=l.h.now();this.style.zoomHistory.update(c,h);const g=new l.a8(c,{now:h,fadeDuration:t,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),_=g.crossFadingFactor();_===1&&_===this._crossFadingFactor||(n=!0,this._crossFadingFactor=_),this.style.update(g)}this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.sourceCache.update(this.transform,this.terrain),this.transform._minEleveationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._elevationFreeze||(this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform._minEleveationForCurrentTile=0,this.transform.elevation=0),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,t,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:t,showPadding:this.showPadding}),this.fire(new l.k("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,l.bg.mark(l.bh.load),this.fire(new l.k("load"))),this.style&&(this.style.hasTransitions()||n)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();const s=this._sourcesDirty||this._styleDirty||this._placementDirty;return s||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new l.k("idle")),!this._loaded||this._fullyLoaded||s||(this._fullyLoaded=!0,l.bg.mark(l.bh.fullLoad)),this}redraw(){return this.style&&(this._frame&&(this._frame.cancel(),this._frame=null),this._render(0)),this}remove(){var u;this._hash&&this._hash.remove();for(const n of this._controls)n.onRemove(this);this._controls=[],this._frame&&(this._frame.cancel(),this._frame=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),typeof window<"u"&&removeEventListener("online",this._onWindowOnline,!1),qe.removeThrottleControl(this._imageQueueHandle),(u=this._resizeObserver)===null||u===void 0||u.disconnect();const t=this.painter.context.gl.getExtension("WEBGL_lose_context");t&&t.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),X.remove(this._canvasContainer),X.remove(this._controlContainer),this._cooperativeGestures&&this._destroyCooperativeGestures(),this._container.classList.remove("maplibregl-map"),l.bg.clearMetrics(),this._removed=!0,this.fire(new l.k("remove"))}triggerRepaint(){this.style&&!this._frame&&(this._frame=l.h.frame((u=>{l.bg.frame(u),this._frame=null,this._render(u)})))}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(u){this._showTileBoundaries!==u&&(this._showTileBoundaries=u,this._update())}get showPadding(){return!!this._showPadding}set showPadding(u){this._showPadding!==u&&(this._showPadding=u,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(u){this._showCollisionBoxes!==u&&(this._showCollisionBoxes=u,u?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(u){this._showOverdrawInspector!==u&&(this._showOverdrawInspector=u,this._update())}get repaint(){return!!this._repaint}set repaint(u){this._repaint!==u&&(this._repaint=u,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(u){this._vertices=u,this._update()}get version(){return je}getCameraTargetElevation(){return this.transform.elevation}},_t.NavigationControl=class{constructor(u){this._updateZoomButtons=()=>{const t=this._map.getZoom(),n=t===this._map.getMaxZoom(),s=t===this._map.getMinZoom();this._zoomInButton.disabled=n,this._zoomOutButton.disabled=s,this._zoomInButton.setAttribute("aria-disabled",n.toString()),this._zoomOutButton.setAttribute("aria-disabled",s.toString())},this._rotateCompassArrow=()=>{const t=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=t},this._setButtonTitle=(t,n)=>{const s=this._map._getUIString(`NavigationControl.${n}`);t.title=s,t.setAttribute("aria-label",s)},this.options=l.e({},po,u),this._container=X.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",(t=>t.preventDefault())),this.options.showZoom&&(this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",(t=>this._map.zoomIn({},{originalEvent:t}))),X.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",(t=>this._map.zoomOut({},{originalEvent:t}))),X.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(this._compass=this._createButton("maplibregl-ctrl-compass",(t=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:t}):this._map.resetNorth({},{originalEvent:t})})),this._compassIcon=X.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}onAdd(u){return this._map=u,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),this._map.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&this._map.on("pitch",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new fo(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){X.remove(this._container),this.options.showZoom&&this._map.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off("pitch",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(u,t){const n=X.create("button",u,this._container);return n.type="button",n.addEventListener("click",t),n}},_t.GeolocateControl=class extends l.E{constructor(u){super(),this._onSuccess=t=>{if(this._map){if(this._isOutOfMapMaxBounds(t))return this._setErrorState(),this.fire(new l.k("outofmaxbounds",t)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=t,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 new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(t),this.options.trackUserLocation&&this._watchState!=="ACTIVE_LOCK"||this._updateCamera(t),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new l.k("geolocate",t)),this._finish()}},this._updateCamera=t=>{const n=new l.L(t.coords.longitude,t.coords.latitude),s=t.coords.accuracy,c=this._map.getBearing(),h=l.e({bearing:c},this.options.fitBoundsOptions),g=Ct.fromLngLat(n,s);this._map.fitBounds(g,h,{geolocateSource:!0})},this._updateMarker=t=>{if(t){const n=new l.L(t.coords.longitude,t.coords.latitude);this._accuracyCircleMarker.setLngLat(n).addTo(this._map),this._userLocationDotMarker.setLngLat(n).addTo(this._map),this._accuracy=t.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},this._onZoom=()=>{this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},this._onError=t=>{if(this._map){if(this.options.trackUserLocation)if(t.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;const n=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=n,this._geolocateButton.setAttribute("aria-label",n),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(t.code===3&&Jn)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new l.k("error",t)),this._finish()}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},this._setupUI=t=>{if(this._map){if(this._container.addEventListener("contextmenu",(n=>n.preventDefault())),this._geolocateButton=X.create("button","maplibregl-ctrl-geolocate",this._container),X.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",t===!1){l.w("Geolocation support is not available so the GeolocateControl will be disabled.");const n=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=n,this._geolocateButton.setAttribute("aria-label",n)}else{const n=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.title=n,this._geolocateButton.setAttribute("aria-label",n)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=X.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new Sn({element:this._dotElement}),this._circleElement=X.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Sn({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",(n=>{n.geolocateSource||this._watchState!=="ACTIVE_LOCK"||n.originalEvent&&n.originalEvent.type==="resize"||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new l.k("trackuserlocationend")))}))}},this.options=l.e({},Ut,u)}onAdd(u){return this._map=u,this._container=X.create("div","maplibregl-ctrl maplibregl-ctrl-group"),(function(t,n=!1){Zt===void 0||n?window.navigator.permissions!==void 0?window.navigator.permissions.query({name:"geolocation"}).then((s=>{Zt=s.state!=="denied",t(Zt)})).catch((()=>{Zt=!!window.navigator.geolocation,t(Zt)})):(Zt=!!window.navigator.geolocation,t(Zt)):t(Zt)})(this._setupUI),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(),X.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,Bt=0,Jn=!1}_isOutOfMapMaxBounds(u){const t=this._map.getMaxBounds(),n=u.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":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadius(){const u=this._map.getBounds(),t=u.getSouthEast(),n=u.getNorthEast(),s=t.distanceTo(n),c=Math.ceil(this._accuracy/(s/this._map._container.clientHeight)*2);this._circleElement.style.width=`${c}px`,this._circleElement.style.height=`${c}px`}trigger(){if(!this._setup)return l.w("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 l.k("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":Bt--,Jn=!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 l.k("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 l.k("trackuserlocationstart"));break;default:throw new 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 new Error(`Unexpected watchState ${this._watchState}`)}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){let u;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),Bt++,Bt>1?(u={maximumAge:6e5,timeout:0},Jn=!0):(u=this.options.positionOptions,Jn=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,u)}}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)}},_t.AttributionControl=Hi,_t.LogoControl=Mt,_t.ScaleControl=class{constructor(u){this._onMove=()=>{ka(this._map,this._container,this.options)},this.setUnit=t=>{this.options.unit=t,ka(this._map,this._container,this.options)},this.options=l.e({},Aa,u)}getDefaultPosition(){return"bottom-left"}onAdd(u){return this._map=u,this._container=X.create("div","maplibregl-ctrl maplibregl-ctrl-scale",u.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){X.remove(this._container),this._map.off("move",this._onMove),this._map=void 0}},_t.FullscreenControl=class extends l.E{constructor(u={}){super(),this._onFullscreenChange=()=>{(window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement)===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,u&&u.container&&(u.container instanceof HTMLElement?this._container=u.container:l.w("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(u){return this._map=u,this._container||(this._container=this._map.getContainer()),this._controlContainer=X.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){X.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){const u=this._fullscreenButton=X.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);X.create("span","maplibregl-ctrl-icon",u).setAttribute("aria-hidden","true"),u.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){const u=this._getTitle();this._fullscreenButton.setAttribute("aria-label",u),this._fullscreenButton.title=u}_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 l.k("fullscreenstart")),this._map._cooperativeGestures&&(this._prevCooperativeGestures=this._map._cooperativeGestures,this._map.setCooperativeGestures())):(this.fire(new l.k("fullscreenend")),this._prevCooperativeGestures&&(this._map.setCooperativeGestures(this._prevCooperativeGestures),delete this._prevCooperativeGestures))}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen()}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen()}_togglePseudoFullScreen(){this._container.classList.toggle("maplibregl-pseudo-fullscreen"),this._handleFullscreenChange(),this._map.resize()}},_t.TerrainControl=class{constructor(u){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.disableTerrain")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.enableTerrain"))},this.options=u}onAdd(u){return this._map=u,this._container=X.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=X.create("button","maplibregl-ctrl-terrain",this._container),X.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(){X.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}},_t.Popup=class extends l.E{constructor(u){super(),this.remove=()=>(this._content&&X.remove(this._content),this._container&&(X.remove(this._container),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("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),delete this._map),this.fire(new l.k("close")),this),this._onMouseUp=t=>{this._update(t.point)},this._onMouseMove=t=>{this._update(t.point)},this._onDrag=t=>{this._update(t.point)},this._update=t=>{if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=X.create("div","maplibregl-popup",this._map.getContainer()),this._tip=X.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className)for(const g of this.options.className.split(" "))this._container.classList.add(g);this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer")}if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=mo(this._lngLat,this._pos,this._map.transform)),this._trackPointer&&!t)return;const n=this._pos=this._trackPointer&&t?t:this._map.project(this._lngLat);let s=this.options.anchor;const c=Qn(this.options.offset);if(!s){const g=this._container.offsetWidth,_=this._container.offsetHeight;let x;x=n.y+c.bottom.y<_?["top"]:n.y>this._map.transform.height-_?["bottom"]:[],n.x<g/2?x.push("left"):n.x>this._map.transform.width-g/2&&x.push("right"),s=x.length===0?"bottom":x.join("-")}const h=n.add(c[s]).round();X.setTransform(this._container,`${cr[s]} translate(${h.x}px,${h.y}px)`),Ml(this._container,s,"popup")},this._onClose=()=>{this.remove()},this.options=l.e(Object.create(go),u)}addTo(u){return this._map&&this.remove(),this._map=u,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._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),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 l.k("open")),this}isOpen(){return!!this._map}getLngLat(){return this._lngLat}setLngLat(u){return this._lngLat=l.L.convert(u),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),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._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")),this}getElement(){return this._container}setText(u){return this.setDOMContent(document.createTextNode(u))}setHTML(u){const t=document.createDocumentFragment(),n=document.createElement("body");let s;for(n.innerHTML=u;s=n.firstChild,s;)t.appendChild(s);return this.setDOMContent(t)}getMaxWidth(){var u;return(u=this._container)===null||u===void 0?void 0:u.style.maxWidth}setMaxWidth(u){return this.options.maxWidth=u,this._update(),this}setDOMContent(u){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=X.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(u),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(u){this._container&&this._container.classList.add(u)}removeClassName(u){this._container&&this._container.classList.remove(u)}setOffset(u){return this.options.offset=u,this._update(),this}toggleClassName(u){if(this._container)return this._container.classList.toggle(u)}_createCloseButton(){this.options.closeButton&&(this._closeButton=X.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="&#215;",this._closeButton.addEventListener("click",this._onClose))}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const u=this._container.querySelector(_o);u&&u.focus()}},_t.Marker=Sn,_t.Style=ui,_t.LngLat=l.L,_t.LngLatBounds=Ct,_t.Point=l.P,_t.MercatorCoordinate=l.U,_t.Evented=l.E,_t.AJAXError=l.bi,_t.config=l.c,_t.CanvasSource=Hr,_t.GeoJSONSource=Gr,_t.ImageSource=ir,_t.RasterDEMTileSource=Bn,_t.RasterTileSource=Fn,_t.VectorTileSource=pn,_t.VideoSource=ua,_t.setRTLTextPlugin=l.bj,_t.getRTLTextPluginStatus=l.bk,_t.prewarm=function(){Na().acquire(ft)},_t.clearPrewarmedResources=function(){const u=Pr;u&&(u.isPreloaded()&&u.numActive()===1?(u.release(ft),Pr=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()"))},yo.extend(_t,{isSafari:l.ac,getPerformanceMetrics:l.bg.getPerformanceMetrics}),_t}));var K=R;return K}))})(No)),No.exports}var ud=cd();const bu=od(ud);function Is(d,b,k,z,R,J,K,l){var le=typeof d=="function"?d.options:d;return b&&(le.render=b,le.staticRenderFns=k,le._compiled=!0),J&&(le._scopeId="data-v-"+J),{exports:d,options:le}}const hd={props:{center:{type:Object,required:!0},zoom:{type:Number,required:!0},markers:{type:Array,default:()=>[]},selectedMarkerId:{type:String,default:null}},setup(d,{emit:b}){const k=Vue.ref(null),z=Vue.ref(null),R=Vue.ref(!0),J=Vue.ref(new Map),K=Vue.ref(!1);Vue.onMounted(async()=>{await Vue.nextTick(),l()}),Vue.onBeforeUnmount(()=>{z.value&&(z.value.remove(),z.value=null),J.value.clear()}),Vue.watch(()=>d.center,we=>{if(z.value&&z.value.loaded()&&!K.value){const Le=z.value.getCenter();(Math.abs(Le.lat-we.lat)>1e-5||Math.abs(Le.lng-we.lon)>1e-5)&&z.value.setCenter([we.lon,we.lat])}},{deep:!0}),Vue.watch(()=>d.zoom,we=>{if(z.value&&z.value.loaded()){const Le=z.value.getZoom();Math.abs(Le-we)>.01&&z.value.setZoom(we)}}),Vue.watch(()=>d.markers,()=>{le()},{deep:!0}),Vue.watch(()=>d.selectedMarkerId,we=>{Ee(we)});function l(){if(!k.value){console.error("Map container not found");return}R.value=!0;try{z.value=new bu.Map({container:k.value,style:{version:8,sources:{osm:{type:"raster",tiles:["https://a.tile.openstreetmap.org/{z}/{x}/{y}.png","https://b.tile.openstreetmap.org/{z}/{x}/{y}.png","https://c.tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256,attribution:'&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'}},layers:[{id:"osm",type:"raster",source:"osm",minzoom:0,maxzoom:19}]},center:[d.center.lon,d.center.lat],zoom:d.zoom}),z.value.on("load",()=>{R.value=!1,le()}),z.value.on("click",we=>{we.originalEvent.target.closest(".custom-marker")||b("map-click",{lat:we.lngLat.lat,lng:we.lngLat.lng})})}catch(we){console.error("Error initializing map:",we),R.value=!1}}function le(){!z.value||!z.value.loaded()||(J.value.forEach(({marker:we})=>{we&&we.remove()}),J.value.clear(),d.markers&&Array.isArray(d.markers)&&d.markers.forEach((we,Le)=>{X(we,Le)}))}function X(we,Le){if(!z.value||!we||!we.position)return;const We=document.createElement("div");We.className="custom-marker",d.selectedMarkerId===we.id&&We.classList.add("selected");const qe=document.createElement("div");qe.className="marker-number",qe.textContent=Le+1,We.appendChild(qe);try{const Be=new bu.Marker({element:We,draggable:!0,anchor:"bottom"}).setLngLat([we.position.lon,we.position.lat]).addTo(z.value);Be.on("dragstart",()=>{K.value=!0}),Be.on("dragend",()=>{const Ze=Be.getLngLat();b("marker-moved",{markerId:we.id,position:{lat:Ze.lat,lng:Ze.lng}}),setTimeout(()=>{K.value=!1},100)}),We.addEventListener("click",Ze=>{Ze.stopPropagation(),b("marker-click",we.id)}),We.addEventListener("dblclick",Ze=>{Ze.stopPropagation(),b("marker-dblclick",we.id)}),J.value.set(we.id,{marker:Be,element:We})}catch(Be){console.error("Error adding marker to map:",Be)}}function Ee(we){J.value.forEach(({element:Le},We)=>{Le&&(We===we?Le.classList.add("selected"):Le.classList.remove("selected"))})}function ye(){if(z.value&&z.value.loaded()){const we=z.value.getCenter();return{lat:we.lat,lon:we.lng}}return{lat:d.center.lat,lon:d.center.lon}}function _e(we,Le){z.value&&z.value.loaded()&&z.value.flyTo({center:[Le,we],zoom:z.value.getZoom(),duration:1e3})}return{mapContainer:k,loading:R,getCurrentCenter:ye,centerOnPosition:_e}}};var pd=function(){var b=this,k=b._self._c;return k("div",{staticClass:"map-preview"},[k("div",{ref:"mapContainer",staticClass:"map-container"}),b.loading?k("div",{staticClass:"map-loading"},[k("div",{staticClass:"spinner"}),k("span",[b._v("Loading map...")])]):b._e()])},dd=[],fd=Is(hd,pd,dd,!1,null,null);const md=fd.exports,gd={props:{marker:{type:Object,required:!0},isNew:{type:Boolean,default:!1}},setup(d,{emit:b}){const k=JSON.parse(JSON.stringify(d.marker));k.description||(k.description=""),k.content||(k.content=[]),k.icon||(k.icon={type:"default",image:null});const z=Vue.ref(k),R=Vue.ref(!1);Vue.watch(z,()=>{R.value=!0},{deep:!0});const J=Vue.computed(()=>z.value.title&&z.value.title.trim()!==""&&R.value);Vue.watch(()=>d.marker,Le=>{z.value=JSON.parse(JSON.stringify(Le))},{deep:!0});function K(){J.value&&(b("save",z.value),b("close"))}function l(){z.value.icon.image=null}function le(){z.value.icon.image=null,z.value.icon.type="default"}function X(){z.value.content.push({type:"text",text:""})}function Ee(){z.value.content.push({type:"image",image:null,caption:""})}function ye(Le){z.value.content.splice(Le,1)}function _e(Le){if(Le===0)return;const We=z.value.content;[We[Le-1],We[Le]]=[We[Le],We[Le-1]]}function we(Le){if(Le===z.value.content.length-1)return;const We=z.value.content;[We[Le],We[Le+1]]=[We[Le+1],We[Le]]}return{localMarker:z,isValid:J,saveMarker:K,clearCustomIcon:l,removeCustomIcon:le,addTextBlock:X,addImageBlock:Ee,removeBlock:ye,moveBlockUp:_e,moveBlockDown:we}}};var _d=function(){var b=this,k=b._self._c;return k("div",{staticClass:"marker-editor-overlay",on:{click:function(z){return z.target!==z.currentTarget?null:b.$emit("close")}}},[k("div",{staticClass:"marker-editor-modal"},[k("div",{staticClass:"editor-header"},[k("h2",[b._v(b._s(b.isNew?"Nouveau marqueur":"Modifier le marqueur"))]),k("button",{staticClass:"k-button k-button-icon",attrs:{type:"button"},on:{click:function(z){return b.$emit("close")}}},[k("k-icon",{attrs:{type:"cancel"}})],1)]),k("div",{staticClass:"marker-editor-content"},[k("div",{staticClass:"field"},[b._m(0),k("input",{directives:[{name:"model",rawName:"v-model",value:b.localMarker.title,expression:"localMarker.title"}],staticClass:"k-input",attrs:{type:"text",placeholder:"Titre du marqueur",maxlength:"100"},domProps:{value:b.localMarker.title},on:{input:function(z){z.target.composing||b.$set(b.localMarker,"title",z.target.value)}}})]),k("div",{staticClass:"field"},[k("label",{staticClass:"field-label"},[b._v(" Contenu ")]),k("textarea",{directives:[{name:"model",rawName:"v-model",value:b.localMarker.description,expression:"localMarker.description"}],staticClass:"k-textarea",attrs:{rows:"4",placeholder:"Description du marqueur"},domProps:{value:b.localMarker.description},on:{input:function(z){z.target.composing||b.$set(b.localMarker,"description",z.target.value)}}})]),k("div",{staticClass:"field-group"},[k("div",{staticClass:"field"},[k("label",{staticClass:"field-label"},[b._v("Latitude")]),k("input",{directives:[{name:"model",rawName:"v-model.number",value:b.localMarker.position.lat,expression:"localMarker.position.lat",modifiers:{number:!0}}],staticClass:"k-input",attrs:{type:"number",step:"0.000001",min:"-90",max:"90"},domProps:{value:b.localMarker.position.lat},on:{input:function(z){z.target.composing||b.$set(b.localMarker.position,"lat",b._n(z.target.value))},blur:function(z){return b.$forceUpdate()}}})]),k("div",{staticClass:"field"},[k("label",{staticClass:"field-label"},[b._v("Longitude")]),k("input",{directives:[{name:"model",rawName:"v-model.number",value:b.localMarker.position.lon,expression:"localMarker.position.lon",modifiers:{number:!0}}],staticClass:"k-input",attrs:{type:"number",step:"0.000001",min:"-180",max:"180"},domProps:{value:b.localMarker.position.lon},on:{input:function(z){z.target.composing||b.$set(b.localMarker.position,"lon",b._n(z.target.value))},blur:function(z){return b.$forceUpdate()}}})])]),k("div",{staticClass:"field"},[k("label",{staticClass:"field-label"},[b._v("Icône")]),k("div",{staticClass:"icon-selector"},[k("label",{staticClass:"radio-option"},[k("input",{directives:[{name:"model",rawName:"v-model",value:b.localMarker.icon.type,expression:"localMarker.icon.type"}],attrs:{type:"radio",value:"default"},domProps:{checked:b._q(b.localMarker.icon.type,"default")},on:{change:[function(z){return b.$set(b.localMarker.icon,"type","default")},b.clearCustomIcon]}}),k("span",[b._v("Épingle par défaut")])]),k("label",{staticClass:"radio-option"},[k("input",{directives:[{name:"model",rawName:"v-model",value:b.localMarker.icon.type,expression:"localMarker.icon.type"}],attrs:{type:"radio",value:"custom"},domProps:{checked:b._q(b.localMarker.icon.type,"custom")},on:{change:function(z){return b.$set(b.localMarker.icon,"type","custom")}}}),k("span",[b._v("Icône personnalisée")])])]),b.localMarker.icon.type==="custom"?k("div",{staticClass:"custom-icon-upload"},[k("input",{directives:[{name:"model",rawName:"v-model",value:b.localMarker.icon.image,expression:"localMarker.icon.image"}],staticClass:"k-input",attrs:{type:"text",placeholder:"Nom ou UUID du fichier"},domProps:{value:b.localMarker.icon.image},on:{input:function(z){z.target.composing||b.$set(b.localMarker.icon,"image",z.target.value)}}}),k("small",{staticClass:"field-help"},[b._v("Entrez le nom ou l'UUID d'une image depuis les fichiers de la page")])]):b._e()]),k("div",{staticClass:"dialog-footer"},[k("k-button",{attrs:{variant:"dimmed"},on:{click:function(z){return b.$emit("close")}}},[b._v("Annuler")]),k("k-button",{attrs:{disabled:!b.isValid},on:{click:b.saveMarker}},[b._v("Enregistrer")])],1)])])])},yd=[function(){var d=this,b=d._self._c;return b("label",{staticClass:"field-label"},[d._v(" Titre "),b("span",{staticClass:"required"},[d._v("*")])])}],xd=Is(gd,_d,yd,!1,null,null);const vd=xd.exports,As={BASE_URL:"https://nominatim.openstreetmap.org/search",USER_AGENT:"GeoProject/1.0 (Kirby CMS Map Editor)",RATE_LIMIT_MS:1e3,MIN_QUERY_LENGTH:3,MAX_RESULTS:5,DEFAULT_LANGUAGE:"fr"},bd={GEOCODING:500};async function wd(d){if(!d||d.trim().length<As.MIN_QUERY_LENGTH)return[];try{const b=new URLSearchParams({q:d.trim(),format:"json",addressdetails:"1",limit:String(As.MAX_RESULTS),"accept-language":As.DEFAULT_LANGUAGE}),k=await fetch(`${As.BASE_URL}?${b.toString()}`,{headers:{"User-Agent":As.USER_AGENT}});if(!k.ok)throw new Error(`Nominatim API error: ${k.status}`);return(await k.json()).map(R=>({id:R.place_id,displayName:R.display_name,lat:parseFloat(R.lat),lon:parseFloat(R.lon),type:R.type,importance:R.importance,boundingBox:R.boundingbox}))}catch(b){throw console.error("Geocoding error:",b),b}}function Sd(d,b=500){let k;return function(...R){const J=()=>{clearTimeout(k),d(...R)};clearTimeout(k),k=setTimeout(J,b)}}const Td={emits:["select-location","center-map"],setup(d,{emit:b}){const k=Vue.ref(null),z=Vue.ref(""),R=Vue.ref([]),J=Vue.ref(!1),K=Vue.ref(null),l=Vue.ref(!1),le=Vue.ref(-1),X=Sd(async Be=>{if(!Be||Be.trim().length<3){R.value=[],l.value=!1,J.value=!1;return}J.value=!0,K.value=null;try{const Ze=await wd(Be);R.value=Ze,l.value=!0,le.value=-1}catch{K.value="Erreur lors de la recherche. Veuillez réessayer.",R.value=[]}finally{J.value=!1}},bd.GEOCODING);function Ee(){X(z.value)}function ye(Be){b("select-location",{lat:Be.lat,lon:Be.lon,displayName:Be.displayName}),z.value=Be.displayName,l.value=!1}function _e(){R.value.length>0&&ye(R.value[0])}function we(Be){!l.value||R.value.length===0||(le.value+=Be,le.value<0?le.value=R.value.length-1:le.value>=R.value.length&&(le.value=0))}function Le(){z.value="",R.value=[],l.value=!1,K.value=null,le.value=-1}function We(){k.value&&k.value.focus()}function qe(Be){Be.target.closest(".geocode-search")||(l.value=!1)}return Vue.watch(l,Be=>{Be?setTimeout(()=>{document.addEventListener("click",qe)},100):document.removeEventListener("click",qe)}),{searchInput:k,searchQuery:z,results:R,isLoading:J,error:K,showResults:l,selectedIndex:le,handleInput:Ee,selectResult:ye,selectFirstResult:_e,navigateResults:we,clearSearch:Le,focus:We}}};var Id=function(){var b=this,k=b._self._c;return k("div",{staticClass:"geocode-search"},[k("div",{staticClass:"search-input-wrapper"},[k("input",{directives:[{name:"model",rawName:"v-model",value:b.searchQuery,expression:"searchQuery"}],ref:"searchInput",staticClass:"search-input",attrs:{type:"text",placeholder:"Rechercher une adresse..."},domProps:{value:b.searchQuery},on:{input:[function(z){z.target.composing||(b.searchQuery=z.target.value)},b.handleInput],keydown:[function(z){return!z.type.indexOf("key")&&b._k(z.keyCode,"escape",void 0,z.key,void 0)?null:b.clearSearch.apply(null,arguments)},function(z){return!z.type.indexOf("key")&&b._k(z.keyCode,"enter",13,z.key,"Enter")?null:(z.preventDefault(),b.selectFirstResult.apply(null,arguments))},function(z){return!z.type.indexOf("key")&&b._k(z.keyCode,"down",40,z.key,["Down","ArrowDown"])?null:(z.preventDefault(),b.navigateResults(1))},function(z){return!z.type.indexOf("key")&&b._k(z.keyCode,"up",38,z.key,["Up","ArrowUp"])?null:(z.preventDefault(),b.navigateResults(-1))}]}}),b.searchQuery?k("button",{staticClass:"clear-button",attrs:{type:"button",title:"Effacer"},on:{click:b.clearSearch}},[k("k-icon",{attrs:{type:"cancel"}})],1):b._e(),b.isLoading?k("div",{staticClass:"search-spinner"},[k("div",{staticClass:"spinner-icon"})]):b._e()]),b.showResults?k("div",{staticClass:"results-dropdown"},[b.error?k("div",{staticClass:"error-message"},[k("k-icon",{attrs:{type:"alert"}}),k("span",[b._v(b._s(b.error))])],1):b.results.length===0&&!b.isLoading?k("div",{staticClass:"no-results"},[b._v(" Aucun résultat trouvé ")]):k("div",{staticClass:"results-list"},b._l(b.results,function(z,R){return k("div",{key:z.id,staticClass:"result-item",class:{active:R===b.selectedIndex},on:{click:function(J){return b.selectResult(z)},mouseenter:function(J){b.selectedIndex=R}}},[k("div",{staticClass:"result-icon"},[k("k-icon",{attrs:{type:"pin"}})],1),k("div",{staticClass:"result-content"},[k("div",{staticClass:"result-name"},[b._v(b._s(z.displayName))]),k("div",{staticClass:"result-coords"},[b._v(" "+b._s(z.lat.toFixed(6))+", "+b._s(z.lon.toFixed(6))+" ")])])])}),0),b.results.length>0?k("div",{staticClass:"results-footer"},[k("small",[b._v("Powered by OpenStreetMap Nominatim")])]):b._e()]):b._e()])},Ad=[],kd=Is(Td,Id,Ad,!1,null,null);const Cd={components:{GeocodeSearch:kd.exports},props:{markers:{type:Array,required:!0},selectedMarkerId:{type:String,default:null},maxMarkers:{type:Number,default:50}},emits:["add-marker","select-marker","edit-marker","delete-marker","select-location"],setup(d){return{canAddMarker:Vue.computed(()=>d.markers.length<d.maxMarkers)}}};var Md=function(){var b=this,k=b._self._c;return k("div",{staticClass:"marker-list-sidebar"},[k("div",{staticClass:"marker-list-header"},[k("h3",[b._v("Marqueurs ("+b._s(b.markers.length)+"/"+b._s(b.maxMarkers)+")")]),k("button",{staticClass:"k-button k-button-icon",attrs:{type:"button",disabled:!b.canAddMarker,title:"Ajouter un marqueur"},on:{click:function(z){return b.$emit("add-marker")}}},[k("k-icon",{attrs:{type:"add"}})],1)]),k("div",{staticClass:"geocode-search-container"},[k("GeocodeSearch",{on:{"select-location":function(z){return b.$emit("select-location",z)}}})],1),k("div",{staticClass:"marker-list-items"},[b._l(b.markers,function(z,R){return k("div",{key:z.id,staticClass:"marker-item",class:{active:b.selectedMarkerId===z.id},on:{click:function(J){return b.$emit("select-marker",z.id)}}},[k("div",{staticClass:"marker-item-content"},[k("span",{staticClass:"marker-number"},[b._v(b._s(R+1))]),k("span",{staticClass:"marker-title"},[b._v(" "+b._s(z.title||`Marqueur ${R+1}`)+" ")])]),k("div",{staticClass:"marker-item-actions"},[k("button",{staticClass:"k-button k-button-small",attrs:{type:"button",title:"Modifier le marqueur"},on:{click:function(J){return J.stopPropagation(),b.$emit("edit-marker",z.id)}}},[k("k-icon",{attrs:{type:"edit"}})],1),k("button",{staticClass:"k-button k-button-small",attrs:{type:"button",title:"Supprimer le marqueur"},on:{click:function(J){return J.stopPropagation(),b.$emit("delete-marker",z.id)}}},[k("k-icon",{attrs:{type:"trash"}})],1)])])}),b.markers.length===0?k("div",{staticClass:"marker-list-empty"},[b._v(" Cliquez sur la carte pour ajouter des marqueurs ")]):b._e()],2)])},Ed=[],Pd=Is(Cd,Md,Ed,!1,null,"8f9accb4");const zd=Pd.exports;function Dd(d){return{id:`marker_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,position:{lat:d.lat,lon:d.lon},icon:{type:"default"},title:"",description:"",content:[]}}function Ld(d={}){const{maxMarkers:b=50}=d,k=Vue.ref([]),z=Vue.ref(null),R=Vue.ref(null),J=Vue.computed(()=>k.value.length<b),K=Vue.computed(()=>k.value.length>0),l=Vue.computed(()=>k.value.find(qe=>qe.id===z.value));function le(qe){if(!J.value)return null;const Be=Dd(qe);return k.value=[...k.value,Be],z.value=Be.id,Be}function X(qe,Be){const Ze=k.value.findIndex(fi=>fi.id===qe);if(Ze!==-1){const fi=[...k.value];fi[Ze]={...fi[Ze],...Be},k.value=fi}}function Ee(qe,Be=!1){return!Be&&!confirm("Êtes-vous sûr de vouloir supprimer ce marqueur ?")?!1:(k.value=k.value.filter(Ze=>Ze.id!==qe),z.value===qe&&(z.value=null),!0)}function ye(qe){z.value=qe}function _e(qe){const Be=k.value.find(Ze=>Ze.id===qe);Be&&(R.value=JSON.parse(JSON.stringify(Be)))}function we(qe){const Be=k.value.findIndex(Ze=>Ze.id===qe.id);if(Be!==-1){const Ze=[...k.value];Ze[Be]=qe,k.value=Ze}}function Le(){R.value=null}function We(qe){k.value=qe}return{markers:k,selectedMarkerId:z,editingMarker:R,canAddMarker:J,hasMarkers:K,selectedMarker:l,addMarker:le,updateMarker:X,deleteMarker:Ee,selectMarker:ye,editMarker:_e,saveMarker:we,closeEditor:Le,setMarkers:We}}/*! js-yaml 4.1.1 https://github.com/nodeca/js-yaml @license MIT */function wu(d){return typeof d>"u"||d===null}function Rd(d){return typeof d=="object"&&d!==null}function Fd(d){return Array.isArray(d)?d:wu(d)?[]:[d]}function Bd(d,b){var k,z,R,J;if(b)for(J=Object.keys(b),k=0,z=J.length;k<z;k+=1)R=J[k],d[R]=b[R];return d}function Od(d,b){var k="",z;for(z=0;z<b;z+=1)k+=d;return k}function Nd(d){return d===0&&Number.NEGATIVE_INFINITY===1/d}var Vd=wu,Ud=Rd,$d=Fd,jd=Od,qd=Nd,Zd=Bd,oi={isNothing:Vd,isObject:Ud,toArray:$d,repeat:jd,isNegativeZero:qd,extend:Zd};function Su(d,b){var k="",z=d.reason||"(unknown reason)";return d.mark?(d.mark.name&&(k+='in "'+d.mark.name+'" '),k+="("+(d.mark.line+1)+":"+(d.mark.column+1)+")",!b&&d.mark.snippet&&(k+=`
`+d.mark.snippet),z+" "+k):z}function ks(d,b){Error.call(this),this.name="YAMLException",this.reason=d,this.mark=b,this.message=Su(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}ks.prototype=Object.create(Error.prototype),ks.prototype.constructor=ks,ks.prototype.toString=function(b){return this.name+": "+Su(this,b)};var Ui=ks;function Ql(d,b,k,z,R){var J="",K="",l=Math.floor(R/2)-1;return z-b>l&&(J=" ... ",b=z-l+J.length),k-z>l&&(K=" ...",k=z+l-K.length),{str:J+d.slice(b,k).replace(/\t/g,"→")+K,pos:z-b+J.length}}function ec(d,b){return oi.repeat(" ",b-d.length)+d}function Gd(d,b){if(b=Object.create(b||null),!d.buffer)return null;b.maxLength||(b.maxLength=79),typeof b.indent!="number"&&(b.indent=1),typeof b.linesBefore!="number"&&(b.linesBefore=3),typeof b.linesAfter!="number"&&(b.linesAfter=2);for(var k=/\r?\n|\r|\0/g,z=[0],R=[],J,K=-1;J=k.exec(d.buffer);)R.push(J.index),z.push(J.index+J[0].length),d.position<=J.index&&K<0&&(K=z.length-2);K<0&&(K=z.length-1);var l="",le,X,Ee=Math.min(d.line+b.linesAfter,R.length).toString().length,ye=b.maxLength-(b.indent+Ee+3);for(le=1;le<=b.linesBefore&&!(K-le<0);le++)X=Ql(d.buffer,z[K-le],R[K-le],d.position-(z[K]-z[K-le]),ye),l=oi.repeat(" ",b.indent)+ec((d.line-le+1).toString(),Ee)+" | "+X.str+`
`+l;for(X=Ql(d.buffer,z[K],R[K],d.position,ye),l+=oi.repeat(" ",b.indent)+ec((d.line+1).toString(),Ee)+" | "+X.str+`
`,l+=oi.repeat("-",b.indent+Ee+3+X.pos)+`^
`,le=1;le<=b.linesAfter&&!(K+le>=R.length);le++)X=Ql(d.buffer,z[K+le],R[K+le],d.position-(z[K]-z[K+le]),ye),l+=oi.repeat(" ",b.indent)+ec((d.line+le+1).toString(),Ee)+" | "+X.str+`
`;return l.replace(/\n$/,"")}var Hd=Gd,Wd=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Xd=["scalar","sequence","mapping"];function Kd(d){var b={};return d!==null&&Object.keys(d).forEach(function(k){d[k].forEach(function(z){b[String(z)]=k})}),b}function Yd(d,b){if(b=b||{},Object.keys(b).forEach(function(k){if(Wd.indexOf(k)===-1)throw new Ui('Unknown option "'+k+'" is met in definition of "'+d+'" YAML type.')}),this.options=b,this.tag=d,this.kind=b.kind||null,this.resolve=b.resolve||function(){return!0},this.construct=b.construct||function(k){return k},this.instanceOf=b.instanceOf||null,this.predicate=b.predicate||null,this.represent=b.represent||null,this.representName=b.representName||null,this.defaultStyle=b.defaultStyle||null,this.multi=b.multi||!1,this.styleAliases=Kd(b.styleAliases||null),Xd.indexOf(this.kind)===-1)throw new Ui('Unknown kind "'+this.kind+'" is specified for "'+d+'" YAML type.')}var bi=Yd;function Tu(d,b){var k=[];return d[b].forEach(function(z){var R=k.length;k.forEach(function(J,K){J.tag===z.tag&&J.kind===z.kind&&J.multi===z.multi&&(R=K)}),k[R]=z}),k}function Jd(){var d={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},b,k;function z(R){R.multi?(d.multi[R.kind].push(R),d.multi.fallback.push(R)):d[R.kind][R.tag]=d.fallback[R.tag]=R}for(b=0,k=arguments.length;b<k;b+=1)arguments[b].forEach(z);return d}function tc(d){return this.extend(d)}tc.prototype.extend=function(b){var k=[],z=[];if(b instanceof bi)z.push(b);else if(Array.isArray(b))z=z.concat(b);else if(b&&(Array.isArray(b.implicit)||Array.isArray(b.explicit)))b.implicit&&(k=k.concat(b.implicit)),b.explicit&&(z=z.concat(b.explicit));else throw new Ui("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");k.forEach(function(J){if(!(J instanceof bi))throw new Ui("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(J.loadKind&&J.loadKind!=="scalar")throw new Ui("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(J.multi)throw new Ui("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),z.forEach(function(J){if(!(J instanceof bi))throw new Ui("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var R=Object.create(tc.prototype);return R.implicit=(this.implicit||[]).concat(k),R.explicit=(this.explicit||[]).concat(z),R.compiledImplicit=Tu(R,"implicit"),R.compiledExplicit=Tu(R,"explicit"),R.compiledTypeMap=Jd(R.compiledImplicit,R.compiledExplicit),R};var Iu=tc,Au=new bi("tag:yaml.org,2002:str",{kind:"scalar",construct:function(d){return d!==null?d:""}}),ku=new bi("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(d){return d!==null?d:[]}}),Cu=new bi("tag:yaml.org,2002:map",{kind:"mapping",construct:function(d){return d!==null?d:{}}}),Mu=new Iu({explicit:[Au,ku,Cu]});function Qd(d){if(d===null)return!0;var b=d.length;return b===1&&d==="~"||b===4&&(d==="null"||d==="Null"||d==="NULL")}function ef(){return null}function tf(d){return d===null}var Eu=new bi("tag:yaml.org,2002:null",{kind:"scalar",resolve:Qd,construct:ef,predicate:tf,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"});function rf(d){if(d===null)return!1;var b=d.length;return b===4&&(d==="true"||d==="True"||d==="TRUE")||b===5&&(d==="false"||d==="False"||d==="FALSE")}function nf(d){return d==="true"||d==="True"||d==="TRUE"}function af(d){return Object.prototype.toString.call(d)==="[object Boolean]"}var Pu=new bi("tag:yaml.org,2002:bool",{kind:"scalar",resolve:rf,construct:nf,predicate:af,represent:{lowercase:function(d){return d?"true":"false"},uppercase:function(d){return d?"TRUE":"FALSE"},camelcase:function(d){return d?"True":"False"}},defaultStyle:"lowercase"});function sf(d){return 48<=d&&d<=57||65<=d&&d<=70||97<=d&&d<=102}function of(d){return 48<=d&&d<=55}function lf(d){return 48<=d&&d<=57}function cf(d){if(d===null)return!1;var b=d.length,k=0,z=!1,R;if(!b)return!1;if(R=d[k],(R==="-"||R==="+")&&(R=d[++k]),R==="0"){if(k+1===b)return!0;if(R=d[++k],R==="b"){for(k++;k<b;k++)if(R=d[k],R!=="_"){if(R!=="0"&&R!=="1")return!1;z=!0}return z&&R!=="_"}if(R==="x"){for(k++;k<b;k++)if(R=d[k],R!=="_"){if(!sf(d.charCodeAt(k)))return!1;z=!0}return z&&R!=="_"}if(R==="o"){for(k++;k<b;k++)if(R=d[k],R!=="_"){if(!of(d.charCodeAt(k)))return!1;z=!0}return z&&R!=="_"}}if(R==="_")return!1;for(;k<b;k++)if(R=d[k],R!=="_"){if(!lf(d.charCodeAt(k)))return!1;z=!0}return!(!z||R==="_")}function uf(d){var b=d,k=1,z;if(b.indexOf("_")!==-1&&(b=b.replace(/_/g,"")),z=b[0],(z==="-"||z==="+")&&(z==="-"&&(k=-1),b=b.slice(1),z=b[0]),b==="0")return 0;if(z==="0"){if(b[1]==="b")return k*parseInt(b.slice(2),2);if(b[1]==="x")return k*parseInt(b.slice(2),16);if(b[1]==="o")return k*parseInt(b.slice(2),8)}return k*parseInt(b,10)}function hf(d){return Object.prototype.toString.call(d)==="[object Number]"&&d%1===0&&!oi.isNegativeZero(d)}var zu=new bi("tag:yaml.org,2002:int",{kind:"scalar",resolve:cf,construct:uf,predicate:hf,represent:{binary:function(d){return d>=0?"0b"+d.toString(2):"-0b"+d.toString(2).slice(1)},octal:function(d){return d>=0?"0o"+d.toString(8):"-0o"+d.toString(8).slice(1)},decimal:function(d){return d.toString(10)},hexadecimal:function(d){return d>=0?"0x"+d.toString(16).toUpperCase():"-0x"+d.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),pf=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function df(d){return!(d===null||!pf.test(d)||d[d.length-1]==="_")}function ff(d){var b,k;return b=d.replace(/_/g,"").toLowerCase(),k=b[0]==="-"?-1:1,"+-".indexOf(b[0])>=0&&(b=b.slice(1)),b===".inf"?k===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:b===".nan"?NaN:k*parseFloat(b,10)}var mf=/^[-+]?[0-9]+e/;function gf(d,b){var k;if(isNaN(d))switch(b){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===d)switch(b){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===d)switch(b){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(oi.isNegativeZero(d))return"-0.0";return k=d.toString(10),mf.test(k)?k.replace("e",".e"):k}function _f(d){return Object.prototype.toString.call(d)==="[object Number]"&&(d%1!==0||oi.isNegativeZero(d))}var Du=new bi("tag:yaml.org,2002:float",{kind:"scalar",resolve:df,construct:ff,predicate:_f,represent:gf,defaultStyle:"lowercase"}),Lu=Mu.extend({implicit:[Eu,Pu,zu,Du]}),Ru=Lu,Fu=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Bu=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function yf(d){return d===null?!1:Fu.exec(d)!==null||Bu.exec(d)!==null}function xf(d){var b,k,z,R,J,K,l,le=0,X=null,Ee,ye,_e;if(b=Fu.exec(d),b===null&&(b=Bu.exec(d)),b===null)throw new Error("Date resolve error");if(k=+b[1],z=+b[2]-1,R=+b[3],!b[4])return new Date(Date.UTC(k,z,R));if(J=+b[4],K=+b[5],l=+b[6],b[7]){for(le=b[7].slice(0,3);le.length<3;)le+="0";le=+le}return b[9]&&(Ee=+b[10],ye=+(b[11]||0),X=(Ee*60+ye)*6e4,b[9]==="-"&&(X=-X)),_e=new Date(Date.UTC(k,z,R,J,K,l,le)),X&&_e.setTime(_e.getTime()-X),_e}function vf(d){return d.toISOString()}var Ou=new bi("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:yf,construct:xf,instanceOf:Date,represent:vf});function bf(d){return d==="<<"||d===null}var Nu=new bi("tag:yaml.org,2002:merge",{kind:"scalar",resolve:bf}),ic=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
\r`;function wf(d){if(d===null)return!1;var b,k,z=0,R=d.length,J=ic;for(k=0;k<R;k++)if(b=J.indexOf(d.charAt(k)),!(b>64)){if(b<0)return!1;z+=6}return z%8===0}function Sf(d){var b,k,z=d.replace(/[\r\n=]/g,""),R=z.length,J=ic,K=0,l=[];for(b=0;b<R;b++)b%4===0&&b&&(l.push(K>>16&255),l.push(K>>8&255),l.push(K&255)),K=K<<6|J.indexOf(z.charAt(b));return k=R%4*6,k===0?(l.push(K>>16&255),l.push(K>>8&255),l.push(K&255)):k===18?(l.push(K>>10&255),l.push(K>>2&255)):k===12&&l.push(K>>4&255),new Uint8Array(l)}function Tf(d){var b="",k=0,z,R,J=d.length,K=ic;for(z=0;z<J;z++)z%3===0&&z&&(b+=K[k>>18&63],b+=K[k>>12&63],b+=K[k>>6&63],b+=K[k&63]),k=(k<<8)+d[z];return R=J%3,R===0?(b+=K[k>>18&63],b+=K[k>>12&63],b+=K[k>>6&63],b+=K[k&63]):R===2?(b+=K[k>>10&63],b+=K[k>>4&63],b+=K[k<<2&63],b+=K[64]):R===1&&(b+=K[k>>2&63],b+=K[k<<4&63],b+=K[64],b+=K[64]),b}function If(d){return Object.prototype.toString.call(d)==="[object Uint8Array]"}var Vu=new bi("tag:yaml.org,2002:binary",{kind:"scalar",resolve:wf,construct:Sf,predicate:If,represent:Tf}),Af=Object.prototype.hasOwnProperty,kf=Object.prototype.toString;function Cf(d){if(d===null)return!0;var b=[],k,z,R,J,K,l=d;for(k=0,z=l.length;k<z;k+=1){if(R=l[k],K=!1,kf.call(R)!=="[object Object]")return!1;for(J in R)if(Af.call(R,J))if(!K)K=!0;else return!1;if(!K)return!1;if(b.indexOf(J)===-1)b.push(J);else return!1}return!0}function Mf(d){return d!==null?d:[]}var Uu=new bi("tag:yaml.org,2002:omap",{kind:"sequence",resolve:Cf,construct:Mf}),Ef=Object.prototype.toString;function Pf(d){if(d===null)return!0;var b,k,z,R,J,K=d;for(J=new Array(K.length),b=0,k=K.length;b<k;b+=1){if(z=K[b],Ef.call(z)!=="[object Object]"||(R=Object.keys(z),R.length!==1))return!1;J[b]=[R[0],z[R[0]]]}return!0}function zf(d){if(d===null)return[];var b,k,z,R,J,K=d;for(J=new Array(K.length),b=0,k=K.length;b<k;b+=1)z=K[b],R=Object.keys(z),J[b]=[R[0],z[R[0]]];return J}var $u=new bi("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:Pf,construct:zf}),Df=Object.prototype.hasOwnProperty;function Lf(d){if(d===null)return!0;var b,k=d;for(b in k)if(Df.call(k,b)&&k[b]!==null)return!1;return!0}function Rf(d){return d!==null?d:{}}var ju=new bi("tag:yaml.org,2002:set",{kind:"mapping",resolve:Lf,construct:Rf}),rc=Ru.extend({implicit:[Ou,Nu],explicit:[Vu,Uu,$u,ju]}),Dn=Object.prototype.hasOwnProperty,Vo=1,qu=2,Zu=3,Uo=4,nc=1,Ff=2,Gu=3,Bf=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Of=/[\x85\u2028\u2029]/,Nf=/[,\[\]\{\}]/,Hu=/^(?:!|!!|![a-z\-]+!)$/i,Wu=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Xu(d){return Object.prototype.toString.call(d)}function jr(d){return d===10||d===13}function oa(d){return d===9||d===32}function Qi(d){return d===9||d===32||d===10||d===13}function Da(d){return d===44||d===91||d===93||d===123||d===125}function Vf(d){var b;return 48<=d&&d<=57?d-48:(b=d|32,97<=b&&b<=102?b-97+10:-1)}function Uf(d){return d===120?2:d===117?4:d===85?8:0}function $f(d){return 48<=d&&d<=57?d-48:-1}function Ku(d){return d===48?"\0":d===97?"\x07":d===98?"\b":d===116||d===9?" ":d===110?`
`:d===118?"\v":d===102?"\f":d===114?"\r":d===101?"\x1B":d===32?" ":d===34?'"':d===47?"/":d===92?"\\":d===78?"…":d===95?" ":d===76?"\u2028":d===80?"\u2029":""}function jf(d){return d<=65535?String.fromCharCode(d):String.fromCharCode((d-65536>>10)+55296,(d-65536&1023)+56320)}function Yu(d,b,k){b==="__proto__"?Object.defineProperty(d,b,{configurable:!0,enumerable:!0,writable:!0,value:k}):d[b]=k}for(var Ju=new Array(256),Qu=new Array(256),La=0;La<256;La++)Ju[La]=Ku(La)?1:0,Qu[La]=Ku(La);function qf(d,b){this.input=d,this.filename=b.filename||null,this.schema=b.schema||rc,this.onWarning=b.onWarning||null,this.legacy=b.legacy||!1,this.json=b.json||!1,this.listener=b.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=d.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function eh(d,b){var k={name:d.filename,buffer:d.input.slice(0,-1),position:d.position,line:d.line,column:d.position-d.lineStart};return k.snippet=Hd(k),new Ui(b,k)}function Je(d,b){throw eh(d,b)}function $o(d,b){d.onWarning&&d.onWarning.call(null,eh(d,b))}var th={YAML:function(b,k,z){var R,J,K;b.version!==null&&Je(b,"duplication of %YAML directive"),z.length!==1&&Je(b,"YAML directive accepts exactly one argument"),R=/^([0-9]+)\.([0-9]+)$/.exec(z[0]),R===null&&Je(b,"ill-formed argument of the YAML directive"),J=parseInt(R[1],10),K=parseInt(R[2],10),J!==1&&Je(b,"unacceptable YAML version of the document"),b.version=z[0],b.checkLineBreaks=K<2,K!==1&&K!==2&&$o(b,"unsupported YAML version of the document")},TAG:function(b,k,z){var R,J;z.length!==2&&Je(b,"TAG directive accepts exactly two arguments"),R=z[0],J=z[1],Hu.test(R)||Je(b,"ill-formed tag handle (first argument) of the TAG directive"),Dn.call(b.tagMap,R)&&Je(b,'there is a previously declared suffix for "'+R+'" tag handle'),Wu.test(J)||Je(b,"ill-formed tag prefix (second argument) of the TAG directive");try{J=decodeURIComponent(J)}catch{Je(b,"tag prefix is malformed: "+J)}b.tagMap[R]=J}};function Ln(d,b,k,z){var R,J,K,l;if(b<k){if(l=d.input.slice(b,k),z)for(R=0,J=l.length;R<J;R+=1)K=l.charCodeAt(R),K===9||32<=K&&K<=1114111||Je(d,"expected valid JSON character");else Bf.test(l)&&Je(d,"the stream contains non-printable characters");d.result+=l}}function ih(d,b,k,z){var R,J,K,l;for(oi.isObject(k)||Je(d,"cannot merge mappings; the provided source object is unacceptable"),R=Object.keys(k),K=0,l=R.length;K<l;K+=1)J=R[K],Dn.call(b,J)||(Yu(b,J,k[J]),z[J]=!0)}function Ra(d,b,k,z,R,J,K,l,le){var X,Ee;if(Array.isArray(R))for(R=Array.prototype.slice.call(R),X=0,Ee=R.length;X<Ee;X+=1)Array.isArray(R[X])&&Je(d,"nested arrays are not supported inside keys"),typeof R=="object"&&Xu(R[X])==="[object Object]"&&(R[X]="[object Object]");if(typeof R=="object"&&Xu(R)==="[object Object]"&&(R="[object Object]"),R=String(R),b===null&&(b={}),z==="tag:yaml.org,2002:merge")if(Array.isArray(J))for(X=0,Ee=J.length;X<Ee;X+=1)ih(d,b,J[X],k);else ih(d,b,J,k);else!d.json&&!Dn.call(k,R)&&Dn.call(b,R)&&(d.line=K||d.line,d.lineStart=l||d.lineStart,d.position=le||d.position,Je(d,"duplicated mapping key")),Yu(b,R,J),delete k[R];return b}function ac(d){var b;b=d.input.charCodeAt(d.position),b===10?d.position++:b===13?(d.position++,d.input.charCodeAt(d.position)===10&&d.position++):Je(d,"a line break is expected"),d.line+=1,d.lineStart=d.position,d.firstTabInLine=-1}function si(d,b,k){for(var z=0,R=d.input.charCodeAt(d.position);R!==0;){for(;oa(R);)R===9&&d.firstTabInLine===-1&&(d.firstTabInLine=d.position),R=d.input.charCodeAt(++d.position);if(b&&R===35)do R=d.input.charCodeAt(++d.position);while(R!==10&&R!==13&&R!==0);if(jr(R))for(ac(d),R=d.input.charCodeAt(d.position),z++,d.lineIndent=0;R===32;)d.lineIndent++,R=d.input.charCodeAt(++d.position);else break}return k!==-1&&z!==0&&d.lineIndent<k&&$o(d,"deficient indentation"),z}function jo(d){var b=d.position,k;return k=d.input.charCodeAt(b),!!((k===45||k===46)&&k===d.input.charCodeAt(b+1)&&k===d.input.charCodeAt(b+2)&&(b+=3,k=d.input.charCodeAt(b),k===0||Qi(k)))}function sc(d,b){b===1?d.result+=" ":b>1&&(d.result+=oi.repeat(`
`,b-1))}function Zf(d,b,k){var z,R,J,K,l,le,X,Ee,ye=d.kind,_e=d.result,we;if(we=d.input.charCodeAt(d.position),Qi(we)||Da(we)||we===35||we===38||we===42||we===33||we===124||we===62||we===39||we===34||we===37||we===64||we===96||(we===63||we===45)&&(R=d.input.charCodeAt(d.position+1),Qi(R)||k&&Da(R)))return!1;for(d.kind="scalar",d.result="",J=K=d.position,l=!1;we!==0;){if(we===58){if(R=d.input.charCodeAt(d.position+1),Qi(R)||k&&Da(R))break}else if(we===35){if(z=d.input.charCodeAt(d.position-1),Qi(z))break}else{if(d.position===d.lineStart&&jo(d)||k&&Da(we))break;if(jr(we))if(le=d.line,X=d.lineStart,Ee=d.lineIndent,si(d,!1,-1),d.lineIndent>=b){l=!0,we=d.input.charCodeAt(d.position);continue}else{d.position=K,d.line=le,d.lineStart=X,d.lineIndent=Ee;break}}l&&(Ln(d,J,K,!1),sc(d,d.line-le),J=K=d.position,l=!1),oa(we)||(K=d.position+1),we=d.input.charCodeAt(++d.position)}return Ln(d,J,K,!1),d.result?!0:(d.kind=ye,d.result=_e,!1)}function Gf(d,b){var k,z,R;if(k=d.input.charCodeAt(d.position),k!==39)return!1;for(d.kind="scalar",d.result="",d.position++,z=R=d.position;(k=d.input.charCodeAt(d.position))!==0;)if(k===39)if(Ln(d,z,d.position,!0),k=d.input.charCodeAt(++d.position),k===39)z=d.position,d.position++,R=d.position;else return!0;else jr(k)?(Ln(d,z,R,!0),sc(d,si(d,!1,b)),z=R=d.position):d.position===d.lineStart&&jo(d)?Je(d,"unexpected end of the document within a single quoted scalar"):(d.position++,R=d.position);Je(d,"unexpected end of the stream within a single quoted scalar")}function Hf(d,b){var k,z,R,J,K,l;if(l=d.input.charCodeAt(d.position),l!==34)return!1;for(d.kind="scalar",d.result="",d.position++,k=z=d.position;(l=d.input.charCodeAt(d.position))!==0;){if(l===34)return Ln(d,k,d.position,!0),d.position++,!0;if(l===92){if(Ln(d,k,d.position,!0),l=d.input.charCodeAt(++d.position),jr(l))si(d,!1,b);else if(l<256&&Ju[l])d.result+=Qu[l],d.position++;else if((K=Uf(l))>0){for(R=K,J=0;R>0;R--)l=d.input.charCodeAt(++d.position),(K=Vf(l))>=0?J=(J<<4)+K:Je(d,"expected hexadecimal character");d.result+=jf(J),d.position++}else Je(d,"unknown escape sequence");k=z=d.position}else jr(l)?(Ln(d,k,z,!0),sc(d,si(d,!1,b)),k=z=d.position):d.position===d.lineStart&&jo(d)?Je(d,"unexpected end of the document within a double quoted scalar"):(d.position++,z=d.position)}Je(d,"unexpected end of the stream within a double quoted scalar")}function Wf(d,b){var k=!0,z,R,J,K=d.tag,l,le=d.anchor,X,Ee,ye,_e,we,Le=Object.create(null),We,qe,Be,Ze;if(Ze=d.input.charCodeAt(d.position),Ze===91)Ee=93,we=!1,l=[];else if(Ze===123)Ee=125,we=!0,l={};else return!1;for(d.anchor!==null&&(d.anchorMap[d.anchor]=l),Ze=d.input.charCodeAt(++d.position);Ze!==0;){if(si(d,!0,b),Ze=d.input.charCodeAt(d.position),Ze===Ee)return d.position++,d.tag=K,d.anchor=le,d.kind=we?"mapping":"sequence",d.result=l,!0;k?Ze===44&&Je(d,"expected the node content, but found ','"):Je(d,"missed comma between flow collection entries"),qe=We=Be=null,ye=_e=!1,Ze===63&&(X=d.input.charCodeAt(d.position+1),Qi(X)&&(ye=_e=!0,d.position++,si(d,!0,b))),z=d.line,R=d.lineStart,J=d.position,Fa(d,b,Vo,!1,!0),qe=d.tag,We=d.result,si(d,!0,b),Ze=d.input.charCodeAt(d.position),(_e||d.line===z)&&Ze===58&&(ye=!0,Ze=d.input.charCodeAt(++d.position),si(d,!0,b),Fa(d,b,Vo,!1,!0),Be=d.result),we?Ra(d,l,Le,qe,We,Be,z,R,J):ye?l.push(Ra(d,null,Le,qe,We,Be,z,R,J)):l.push(We),si(d,!0,b),Ze=d.input.charCodeAt(d.position),Ze===44?(k=!0,Ze=d.input.charCodeAt(++d.position)):k=!1}Je(d,"unexpected end of the stream within a flow collection")}function Xf(d,b){var k,z,R=nc,J=!1,K=!1,l=b,le=0,X=!1,Ee,ye;if(ye=d.input.charCodeAt(d.position),ye===124)z=!1;else if(ye===62)z=!0;else return!1;for(d.kind="scalar",d.result="";ye!==0;)if(ye=d.input.charCodeAt(++d.position),ye===43||ye===45)nc===R?R=ye===43?Gu:Ff:Je(d,"repeat of a chomping mode identifier");else if((Ee=$f(ye))>=0)Ee===0?Je(d,"bad explicit indentation width of a block scalar; it cannot be less than one"):K?Je(d,"repeat of an indentation width identifier"):(l=b+Ee-1,K=!0);else break;if(oa(ye)){do ye=d.input.charCodeAt(++d.position);while(oa(ye));if(ye===35)do ye=d.input.charCodeAt(++d.position);while(!jr(ye)&&ye!==0)}for(;ye!==0;){for(ac(d),d.lineIndent=0,ye=d.input.charCodeAt(d.position);(!K||d.lineIndent<l)&&ye===32;)d.lineIndent++,ye=d.input.charCodeAt(++d.position);if(!K&&d.lineIndent>l&&(l=d.lineIndent),jr(ye)){le++;continue}if(d.lineIndent<l){R===Gu?d.result+=oi.repeat(`
`,J?1+le:le):R===nc&&J&&(d.result+=`
`);break}for(z?oa(ye)?(X=!0,d.result+=oi.repeat(`
`,J?1+le:le)):X?(X=!1,d.result+=oi.repeat(`
`,le+1)):le===0?J&&(d.result+=" "):d.result+=oi.repeat(`
`,le):d.result+=oi.repeat(`
`,J?1+le:le),J=!0,K=!0,le=0,k=d.position;!jr(ye)&&ye!==0;)ye=d.input.charCodeAt(++d.position);Ln(d,k,d.position,!1)}return!0}function rh(d,b){var k,z=d.tag,R=d.anchor,J=[],K,l=!1,le;if(d.firstTabInLine!==-1)return!1;for(d.anchor!==null&&(d.anchorMap[d.anchor]=J),le=d.input.charCodeAt(d.position);le!==0&&(d.firstTabInLine!==-1&&(d.position=d.firstTabInLine,Je(d,"tab characters must not be used in indentation")),!(le!==45||(K=d.input.charCodeAt(d.position+1),!Qi(K))));){if(l=!0,d.position++,si(d,!0,-1)&&d.lineIndent<=b){J.push(null),le=d.input.charCodeAt(d.position);continue}if(k=d.line,Fa(d,b,Zu,!1,!0),J.push(d.result),si(d,!0,-1),le=d.input.charCodeAt(d.position),(d.line===k||d.lineIndent>b)&&le!==0)Je(d,"bad indentation of a sequence entry");else if(d.lineIndent<b)break}return l?(d.tag=z,d.anchor=R,d.kind="sequence",d.result=J,!0):!1}function Kf(d,b,k){var z,R,J,K,l,le,X=d.tag,Ee=d.anchor,ye={},_e=Object.create(null),we=null,Le=null,We=null,qe=!1,Be=!1,Ze;if(d.firstTabInLine!==-1)return!1;for(d.anchor!==null&&(d.anchorMap[d.anchor]=ye),Ze=d.input.charCodeAt(d.position);Ze!==0;){if(!qe&&d.firstTabInLine!==-1&&(d.position=d.firstTabInLine,Je(d,"tab characters must not be used in indentation")),z=d.input.charCodeAt(d.position+1),J=d.line,(Ze===63||Ze===58)&&Qi(z))Ze===63?(qe&&(Ra(d,ye,_e,we,Le,null,K,l,le),we=Le=We=null),Be=!0,qe=!0,R=!0):qe?(qe=!1,R=!0):Je(d,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),d.position+=1,Ze=z;else{if(K=d.line,l=d.lineStart,le=d.position,!Fa(d,k,qu,!1,!0))break;if(d.line===J){for(Ze=d.input.charCodeAt(d.position);oa(Ze);)Ze=d.input.charCodeAt(++d.position);if(Ze===58)Ze=d.input.charCodeAt(++d.position),Qi(Ze)||Je(d,"a whitespace character is expected after the key-value separator within a block mapping"),qe&&(Ra(d,ye,_e,we,Le,null,K,l,le),we=Le=We=null),Be=!0,qe=!1,R=!1,we=d.tag,Le=d.result;else if(Be)Je(d,"can not read an implicit mapping pair; a colon is missed");else return d.tag=X,d.anchor=Ee,!0}else if(Be)Je(d,"can not read a block mapping entry; a multiline key may not be an implicit key");else return d.tag=X,d.anchor=Ee,!0}if((d.line===J||d.lineIndent>b)&&(qe&&(K=d.line,l=d.lineStart,le=d.position),Fa(d,b,Uo,!0,R)&&(qe?Le=d.result:We=d.result),qe||(Ra(d,ye,_e,we,Le,We,K,l,le),we=Le=We=null),si(d,!0,-1),Ze=d.input.charCodeAt(d.position)),(d.line===J||d.lineIndent>b)&&Ze!==0)Je(d,"bad indentation of a mapping entry");else if(d.lineIndent<b)break}return qe&&Ra(d,ye,_e,we,Le,null,K,l,le),Be&&(d.tag=X,d.anchor=Ee,d.kind="mapping",d.result=ye),Be}function Yf(d){var b,k=!1,z=!1,R,J,K;if(K=d.input.charCodeAt(d.position),K!==33)return!1;if(d.tag!==null&&Je(d,"duplication of a tag property"),K=d.input.charCodeAt(++d.position),K===60?(k=!0,K=d.input.charCodeAt(++d.position)):K===33?(z=!0,R="!!",K=d.input.charCodeAt(++d.position)):R="!",b=d.position,k){do K=d.input.charCodeAt(++d.position);while(K!==0&&K!==62);d.position<d.length?(J=d.input.slice(b,d.position),K=d.input.charCodeAt(++d.position)):Je(d,"unexpected end of the stream within a verbatim tag")}else{for(;K!==0&&!Qi(K);)K===33&&(z?Je(d,"tag suffix cannot contain exclamation marks"):(R=d.input.slice(b-1,d.position+1),Hu.test(R)||Je(d,"named tag handle cannot contain such characters"),z=!0,b=d.position+1)),K=d.input.charCodeAt(++d.position);J=d.input.slice(b,d.position),Nf.test(J)&&Je(d,"tag suffix cannot contain flow indicator characters")}J&&!Wu.test(J)&&Je(d,"tag name cannot contain such characters: "+J);try{J=decodeURIComponent(J)}catch{Je(d,"tag name is malformed: "+J)}return k?d.tag=J:Dn.call(d.tagMap,R)?d.tag=d.tagMap[R]+J:R==="!"?d.tag="!"+J:R==="!!"?d.tag="tag:yaml.org,2002:"+J:Je(d,'undeclared tag handle "'+R+'"'),!0}function Jf(d){var b,k;if(k=d.input.charCodeAt(d.position),k!==38)return!1;for(d.anchor!==null&&Je(d,"duplication of an anchor property"),k=d.input.charCodeAt(++d.position),b=d.position;k!==0&&!Qi(k)&&!Da(k);)k=d.input.charCodeAt(++d.position);return d.position===b&&Je(d,"name of an anchor node must contain at least one character"),d.anchor=d.input.slice(b,d.position),!0}function Qf(d){var b,k,z;if(z=d.input.charCodeAt(d.position),z!==42)return!1;for(z=d.input.charCodeAt(++d.position),b=d.position;z!==0&&!Qi(z)&&!Da(z);)z=d.input.charCodeAt(++d.position);return d.position===b&&Je(d,"name of an alias node must contain at least one character"),k=d.input.slice(b,d.position),Dn.call(d.anchorMap,k)||Je(d,'unidentified alias "'+k+'"'),d.result=d.anchorMap[k],si(d,!0,-1),!0}function Fa(d,b,k,z,R){var J,K,l,le=1,X=!1,Ee=!1,ye,_e,we,Le,We,qe;if(d.listener!==null&&d.listener("open",d),d.tag=null,d.anchor=null,d.kind=null,d.result=null,J=K=l=Uo===k||Zu===k,z&&si(d,!0,-1)&&(X=!0,d.lineIndent>b?le=1:d.lineIndent===b?le=0:d.lineIndent<b&&(le=-1)),le===1)for(;Yf(d)||Jf(d);)si(d,!0,-1)?(X=!0,l=J,d.lineIndent>b?le=1:d.lineIndent===b?le=0:d.lineIndent<b&&(le=-1)):l=!1;if(l&&(l=X||R),(le===1||Uo===k)&&(Vo===k||qu===k?We=b:We=b+1,qe=d.position-d.lineStart,le===1?l&&(rh(d,qe)||Kf(d,qe,We))||Wf(d,We)?Ee=!0:(K&&Xf(d,We)||Gf(d,We)||Hf(d,We)?Ee=!0:Qf(d)?(Ee=!0,(d.tag!==null||d.anchor!==null)&&Je(d,"alias node should not have any properties")):Zf(d,We,Vo===k)&&(Ee=!0,d.tag===null&&(d.tag="?")),d.anchor!==null&&(d.anchorMap[d.anchor]=d.result)):le===0&&(Ee=l&&rh(d,qe))),d.tag===null)d.anchor!==null&&(d.anchorMap[d.anchor]=d.result);else if(d.tag==="?"){for(d.result!==null&&d.kind!=="scalar"&&Je(d,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+d.kind+'"'),ye=0,_e=d.implicitTypes.length;ye<_e;ye+=1)if(Le=d.implicitTypes[ye],Le.resolve(d.result)){d.result=Le.construct(d.result),d.tag=Le.tag,d.anchor!==null&&(d.anchorMap[d.anchor]=d.result);break}}else if(d.tag!=="!"){if(Dn.call(d.typeMap[d.kind||"fallback"],d.tag))Le=d.typeMap[d.kind||"fallback"][d.tag];else for(Le=null,we=d.typeMap.multi[d.kind||"fallback"],ye=0,_e=we.length;ye<_e;ye+=1)if(d.tag.slice(0,we[ye].tag.length)===we[ye].tag){Le=we[ye];break}Le||Je(d,"unknown tag !<"+d.tag+">"),d.result!==null&&Le.kind!==d.kind&&Je(d,"unacceptable node kind for !<"+d.tag+'> tag; it should be "'+Le.kind+'", not "'+d.kind+'"'),Le.resolve(d.result,d.tag)?(d.result=Le.construct(d.result,d.tag),d.anchor!==null&&(d.anchorMap[d.anchor]=d.result)):Je(d,"cannot resolve a node with !<"+d.tag+"> explicit tag")}return d.listener!==null&&d.listener("close",d),d.tag!==null||d.anchor!==null||Ee}function em(d){var b=d.position,k,z,R,J=!1,K;for(d.version=null,d.checkLineBreaks=d.legacy,d.tagMap=Object.create(null),d.anchorMap=Object.create(null);(K=d.input.charCodeAt(d.position))!==0&&(si(d,!0,-1),K=d.input.charCodeAt(d.position),!(d.lineIndent>0||K!==37));){for(J=!0,K=d.input.charCodeAt(++d.position),k=d.position;K!==0&&!Qi(K);)K=d.input.charCodeAt(++d.position);for(z=d.input.slice(k,d.position),R=[],z.length<1&&Je(d,"directive name must not be less than one character in length");K!==0;){for(;oa(K);)K=d.input.charCodeAt(++d.position);if(K===35){do K=d.input.charCodeAt(++d.position);while(K!==0&&!jr(K));break}if(jr(K))break;for(k=d.position;K!==0&&!Qi(K);)K=d.input.charCodeAt(++d.position);R.push(d.input.slice(k,d.position))}K!==0&&ac(d),Dn.call(th,z)?th[z](d,z,R):$o(d,'unknown document directive "'+z+'"')}if(si(d,!0,-1),d.lineIndent===0&&d.input.charCodeAt(d.position)===45&&d.input.charCodeAt(d.position+1)===45&&d.input.charCodeAt(d.position+2)===45?(d.position+=3,si(d,!0,-1)):J&&Je(d,"directives end mark is expected"),Fa(d,d.lineIndent-1,Uo,!1,!0),si(d,!0,-1),d.checkLineBreaks&&Of.test(d.input.slice(b,d.position))&&$o(d,"non-ASCII line breaks are interpreted as content"),d.documents.push(d.result),d.position===d.lineStart&&jo(d)){d.input.charCodeAt(d.position)===46&&(d.position+=3,si(d,!0,-1));return}if(d.position<d.length-1)Je(d,"end of the stream or a document separator is expected");else return}function nh(d,b){d=String(d),b=b||{},d.length!==0&&(d.charCodeAt(d.length-1)!==10&&d.charCodeAt(d.length-1)!==13&&(d+=`
`),d.charCodeAt(0)===65279&&(d=d.slice(1)));var k=new qf(d,b),z=d.indexOf("\0");for(z!==-1&&(k.position=z,Je(k,"null byte is not allowed in input")),k.input+="\0";k.input.charCodeAt(k.position)===32;)k.lineIndent+=1,k.position+=1;for(;k.position<k.length-1;)em(k);return k.documents}function tm(d,b,k){b!==null&&typeof b=="object"&&typeof k>"u"&&(k=b,b=null);var z=nh(d,k);if(typeof b!="function")return z;for(var R=0,J=z.length;R<J;R+=1)b(z[R])}function im(d,b){var k=nh(d,b);if(k.length!==0){if(k.length===1)return k[0];throw new Ui("expected a single document in the stream, but found more")}}var rm=tm,nm=im,ah={loadAll:rm,load:nm},sh=Object.prototype.toString,oh=Object.prototype.hasOwnProperty,oc=65279,am=9,Cs=10,sm=13,om=32,lm=33,cm=34,lc=35,um=37,hm=38,pm=39,dm=42,lh=44,fm=45,qo=58,mm=61,gm=62,_m=63,ym=64,ch=91,uh=93,xm=96,hh=123,vm=124,ph=125,Ei={};Ei[0]="\\0",Ei[7]="\\a",Ei[8]="\\b",Ei[9]="\\t",Ei[10]="\\n",Ei[11]="\\v",Ei[12]="\\f",Ei[13]="\\r",Ei[27]="\\e",Ei[34]='\\"',Ei[92]="\\\\",Ei[133]="\\N",Ei[160]="\\_",Ei[8232]="\\L",Ei[8233]="\\P";var bm=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],wm=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function Sm(d,b){var k,z,R,J,K,l,le;if(b===null)return{};for(k={},z=Object.keys(b),R=0,J=z.length;R<J;R+=1)K=z[R],l=String(b[K]),K.slice(0,2)==="!!"&&(K="tag:yaml.org,2002:"+K.slice(2)),le=d.compiledTypeMap.fallback[K],le&&oh.call(le.styleAliases,l)&&(l=le.styleAliases[l]),k[K]=l;return k}function Tm(d){var b,k,z;if(b=d.toString(16).toUpperCase(),d<=255)k="x",z=2;else if(d<=65535)k="u",z=4;else if(d<=4294967295)k="U",z=8;else throw new Ui("code point within a string may not be greater than 0xFFFFFFFF");return"\\"+k+oi.repeat("0",z-b.length)+b}var Im=1,Ms=2;function Am(d){this.schema=d.schema||rc,this.indent=Math.max(1,d.indent||2),this.noArrayIndent=d.noArrayIndent||!1,this.skipInvalid=d.skipInvalid||!1,this.flowLevel=oi.isNothing(d.flowLevel)?-1:d.flowLevel,this.styleMap=Sm(this.schema,d.styles||null),this.sortKeys=d.sortKeys||!1,this.lineWidth=d.lineWidth||80,this.noRefs=d.noRefs||!1,this.noCompatMode=d.noCompatMode||!1,this.condenseFlow=d.condenseFlow||!1,this.quotingType=d.quotingType==='"'?Ms:Im,this.forceQuotes=d.forceQuotes||!1,this.replacer=typeof d.replacer=="function"?d.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function dh(d,b){for(var k=oi.repeat(" ",b),z=0,R=-1,J="",K,l=d.length;z<l;)R=d.indexOf(`
`,z),R===-1?(K=d.slice(z),z=l):(K=d.slice(z,R+1),z=R+1),K.length&&K!==`
`&&(J+=k),J+=K;return J}function cc(d,b){return`
`+oi.repeat(" ",d.indent*b)}function km(d,b){var k,z,R;for(k=0,z=d.implicitTypes.length;k<z;k+=1)if(R=d.implicitTypes[k],R.resolve(b))return!0;return!1}function Zo(d){return d===om||d===am}function Es(d){return 32<=d&&d<=126||161<=d&&d<=55295&&d!==8232&&d!==8233||57344<=d&&d<=65533&&d!==oc||65536<=d&&d<=1114111}function fh(d){return Es(d)&&d!==oc&&d!==sm&&d!==Cs}function mh(d,b,k){var z=fh(d),R=z&&!Zo(d);return(k?z:z&&d!==lh&&d!==ch&&d!==uh&&d!==hh&&d!==ph)&&d!==lc&&!(b===qo&&!R)||fh(b)&&!Zo(b)&&d===lc||b===qo&&R}function Cm(d){return Es(d)&&d!==oc&&!Zo(d)&&d!==fm&&d!==_m&&d!==qo&&d!==lh&&d!==ch&&d!==uh&&d!==hh&&d!==ph&&d!==lc&&d!==hm&&d!==dm&&d!==lm&&d!==vm&&d!==mm&&d!==gm&&d!==pm&&d!==cm&&d!==um&&d!==ym&&d!==xm}function Mm(d){return!Zo(d)&&d!==qo}function Ps(d,b){var k=d.charCodeAt(b),z;return k>=55296&&k<=56319&&b+1<d.length&&(z=d.charCodeAt(b+1),z>=56320&&z<=57343)?(k-55296)*1024+z-56320+65536:k}function gh(d){var b=/^\n* /;return b.test(d)}var _h=1,uc=2,yh=3,xh=4,Ba=5;function Em(d,b,k,z,R,J,K,l){var le,X=0,Ee=null,ye=!1,_e=!1,we=z!==-1,Le=-1,We=Cm(Ps(d,0))&&Mm(Ps(d,d.length-1));if(b||K)for(le=0;le<d.length;X>=65536?le+=2:le++){if(X=Ps(d,le),!Es(X))return Ba;We=We&&mh(X,Ee,l),Ee=X}else{for(le=0;le<d.length;X>=65536?le+=2:le++){if(X=Ps(d,le),X===Cs)ye=!0,we&&(_e=_e||le-Le-1>z&&d[Le+1]!==" ",Le=le);else if(!Es(X))return Ba;We=We&&mh(X,Ee,l),Ee=X}_e=_e||we&&le-Le-1>z&&d[Le+1]!==" "}return!ye&&!_e?We&&!K&&!R(d)?_h:J===Ms?Ba:uc:k>9&&gh(d)?Ba:K?J===Ms?Ba:uc:_e?xh:yh}function Pm(d,b,k,z,R){d.dump=(function(){if(b.length===0)return d.quotingType===Ms?'""':"''";if(!d.noCompatMode&&(bm.indexOf(b)!==-1||wm.test(b)))return d.quotingType===Ms?'"'+b+'"':"'"+b+"'";var J=d.indent*Math.max(1,k),K=d.lineWidth===-1?-1:Math.max(Math.min(d.lineWidth,40),d.lineWidth-J),l=z||d.flowLevel>-1&&k>=d.flowLevel;function le(X){return km(d,X)}switch(Em(b,l,d.indent,K,le,d.quotingType,d.forceQuotes&&!z,R)){case _h:return b;case uc:return"'"+b.replace(/'/g,"''")+"'";case yh:return"|"+vh(b,d.indent)+bh(dh(b,J));case xh:return">"+vh(b,d.indent)+bh(dh(zm(b,K),J));case Ba:return'"'+Dm(b)+'"';default:throw new Ui("impossible error: invalid scalar style")}})()}function vh(d,b){var k=gh(d)?String(b):"",z=d[d.length-1]===`
`,R=z&&(d[d.length-2]===`
`||d===`
`),J=R?"+":z?"":"-";return k+J+`
`}function bh(d){return d[d.length-1]===`
`?d.slice(0,-1):d}function zm(d,b){for(var k=/(\n+)([^\n]*)/g,z=(function(){var X=d.indexOf(`
`);return X=X!==-1?X:d.length,k.lastIndex=X,wh(d.slice(0,X),b)})(),R=d[0]===`
`||d[0]===" ",J,K;K=k.exec(d);){var l=K[1],le=K[2];J=le[0]===" ",z+=l+(!R&&!J&&le!==""?`
`:"")+wh(le,b),R=J}return z}function wh(d,b){if(d===""||d[0]===" ")return d;for(var k=/ [^ ]/g,z,R=0,J,K=0,l=0,le="";z=k.exec(d);)l=z.index,l-R>b&&(J=K>R?K:l,le+=`
`+d.slice(R,J),R=J+1),K=l;return le+=`
`,d.length-R>b&&K>R?le+=d.slice(R,K)+`
`+d.slice(K+1):le+=d.slice(R),le.slice(1)}function Dm(d){for(var b="",k=0,z,R=0;R<d.length;k>=65536?R+=2:R++)k=Ps(d,R),z=Ei[k],!z&&Es(k)?(b+=d[R],k>=65536&&(b+=d[R+1])):b+=z||Tm(k);return b}function Lm(d,b,k){var z="",R=d.tag,J,K,l;for(J=0,K=k.length;J<K;J+=1)l=k[J],d.replacer&&(l=d.replacer.call(k,String(J),l)),(ln(d,b,l,!1,!1)||typeof l>"u"&&ln(d,b,null,!1,!1))&&(z!==""&&(z+=","+(d.condenseFlow?"":" ")),z+=d.dump);d.tag=R,d.dump="["+z+"]"}function Sh(d,b,k,z){var R="",J=d.tag,K,l,le;for(K=0,l=k.length;K<l;K+=1)le=k[K],d.replacer&&(le=d.replacer.call(k,String(K),le)),(ln(d,b+1,le,!0,!0,!1,!0)||typeof le>"u"&&ln(d,b+1,null,!0,!0,!1,!0))&&((!z||R!=="")&&(R+=cc(d,b)),d.dump&&Cs===d.dump.charCodeAt(0)?R+="-":R+="- ",R+=d.dump);d.tag=J,d.dump=R||"[]"}function Rm(d,b,k){var z="",R=d.tag,J=Object.keys(k),K,l,le,X,Ee;for(K=0,l=J.length;K<l;K+=1)Ee="",z!==""&&(Ee+=", "),d.condenseFlow&&(Ee+='"'),le=J[K],X=k[le],d.replacer&&(X=d.replacer.call(k,le,X)),ln(d,b,le,!1,!1)&&(d.dump.length>1024&&(Ee+="? "),Ee+=d.dump+(d.condenseFlow?'"':"")+":"+(d.condenseFlow?"":" "),ln(d,b,X,!1,!1)&&(Ee+=d.dump,z+=Ee));d.tag=R,d.dump="{"+z+"}"}function Fm(d,b,k,z){var R="",J=d.tag,K=Object.keys(k),l,le,X,Ee,ye,_e;if(d.sortKeys===!0)K.sort();else if(typeof d.sortKeys=="function")K.sort(d.sortKeys);else if(d.sortKeys)throw new Ui("sortKeys must be a boolean or a function");for(l=0,le=K.length;l<le;l+=1)_e="",(!z||R!=="")&&(_e+=cc(d,b)),X=K[l],Ee=k[X],d.replacer&&(Ee=d.replacer.call(k,X,Ee)),ln(d,b+1,X,!0,!0,!0)&&(ye=d.tag!==null&&d.tag!=="?"||d.dump&&d.dump.length>1024,ye&&(d.dump&&Cs===d.dump.charCodeAt(0)?_e+="?":_e+="? "),_e+=d.dump,ye&&(_e+=cc(d,b)),ln(d,b+1,Ee,!0,ye)&&(d.dump&&Cs===d.dump.charCodeAt(0)?_e+=":":_e+=": ",_e+=d.dump,R+=_e));d.tag=J,d.dump=R||"{}"}function Th(d,b,k){var z,R,J,K,l,le;for(R=k?d.explicitTypes:d.implicitTypes,J=0,K=R.length;J<K;J+=1)if(l=R[J],(l.instanceOf||l.predicate)&&(!l.instanceOf||typeof b=="object"&&b instanceof l.instanceOf)&&(!l.predicate||l.predicate(b))){if(k?l.multi&&l.representName?d.tag=l.representName(b):d.tag=l.tag:d.tag="?",l.represent){if(le=d.styleMap[l.tag]||l.defaultStyle,sh.call(l.represent)==="[object Function]")z=l.represent(b,le);else if(oh.call(l.represent,le))z=l.represent[le](b,le);else throw new Ui("!<"+l.tag+'> tag resolver accepts not "'+le+'" style');d.dump=z}return!0}return!1}function ln(d,b,k,z,R,J,K){d.tag=null,d.dump=k,Th(d,k,!1)||Th(d,k,!0);var l=sh.call(d.dump),le=z,X;z&&(z=d.flowLevel<0||d.flowLevel>b);var Ee=l==="[object Object]"||l==="[object Array]",ye,_e;if(Ee&&(ye=d.duplicates.indexOf(k),_e=ye!==-1),(d.tag!==null&&d.tag!=="?"||_e||d.indent!==2&&b>0)&&(R=!1),_e&&d.usedDuplicates[ye])d.dump="*ref_"+ye;else{if(Ee&&_e&&!d.usedDuplicates[ye]&&(d.usedDuplicates[ye]=!0),l==="[object Object]")z&&Object.keys(d.dump).length!==0?(Fm(d,b,d.dump,R),_e&&(d.dump="&ref_"+ye+d.dump)):(Rm(d,b,d.dump),_e&&(d.dump="&ref_"+ye+" "+d.dump));else if(l==="[object Array]")z&&d.dump.length!==0?(d.noArrayIndent&&!K&&b>0?Sh(d,b-1,d.dump,R):Sh(d,b,d.dump,R),_e&&(d.dump="&ref_"+ye+d.dump)):(Lm(d,b,d.dump),_e&&(d.dump="&ref_"+ye+" "+d.dump));else if(l==="[object String]")d.tag!=="?"&&Pm(d,d.dump,b,J,le);else{if(l==="[object Undefined]")return!1;if(d.skipInvalid)return!1;throw new Ui("unacceptable kind of an object to dump "+l)}d.tag!==null&&d.tag!=="?"&&(X=encodeURI(d.tag[0]==="!"?d.tag.slice(1):d.tag).replace(/!/g,"%21"),d.tag[0]==="!"?X="!"+X:X.slice(0,18)==="tag:yaml.org,2002:"?X="!!"+X.slice(18):X="!<"+X+">",d.dump=X+" "+d.dump)}return!0}function Bm(d,b){var k=[],z=[],R,J;for(hc(d,k,z),R=0,J=z.length;R<J;R+=1)b.duplicates.push(k[z[R]]);b.usedDuplicates=new Array(J)}function hc(d,b,k){var z,R,J;if(d!==null&&typeof d=="object")if(R=b.indexOf(d),R!==-1)k.indexOf(R)===-1&&k.push(R);else if(b.push(d),Array.isArray(d))for(R=0,J=d.length;R<J;R+=1)hc(d[R],b,k);else for(z=Object.keys(d),R=0,J=z.length;R<J;R+=1)hc(d[z[R]],b,k)}function Om(d,b){b=b||{};var k=new Am(b);k.noRefs||Bm(d,k);var z=d;return k.replacer&&(z=k.replacer.call({"":z},"",z)),ln(k,0,z,!0,!0)?k.dump+`
`:""}var Nm=Om,Vm={dump:Nm};function pc(d,b){return function(){throw new Error("Function yaml."+d+" is removed in js-yaml 4. Use yaml."+b+" instead, which is now safe by default.")}}var Um=bi,$m=Iu,jm=Mu,qm=Lu,Zm=Ru,Gm=rc,Hm=ah.load,Wm=ah.loadAll,Xm=Vm.dump,Km=Ui,Ym={binary:Vu,float:Du,map:Cu,null:Eu,pairs:$u,set:ju,timestamp:Ou,bool:Pu,int:zu,merge:Nu,omap:Uu,seq:ku,str:Au},Jm=pc("safeLoad","load"),Qm=pc("safeLoadAll","loadAll"),eg=pc("safeDump","dump"),Ih={Type:Um,Schema:$m,FAILSAFE_SCHEMA:jm,JSON_SCHEMA:qm,CORE_SCHEMA:Zm,DEFAULT_SCHEMA:Gm,load:Hm,loadAll:Wm,dump:Xm,YAMLException:Km,types:Ym,safeLoad:Jm,safeLoadAll:Qm,safeDump:eg};function tg(d={}){const{defaultCenter:b={lat:43.836699,lon:4.360054},defaultZoom:k=13,onSave:z=()=>{}}=d,R=Vue.ref({...b}),J=Vue.ref(k),K=Vue.ref(null);Vue.onBeforeUnmount(()=>{K.value&&clearTimeout(K.value)});function l(Ee){if(!Ee||Ee.trim()==="")return null;try{const ye=Ih.load(Ee);if(ye)return ye.center&&(R.value={lat:ye.center.lat,lon:ye.center.lon}),ye.zoom!==void 0&&(J.value=ye.zoom),ye}catch(ye){return console.error("Error loading map data:",ye),null}return null}function le(Ee=[]){const ye={background:{type:"osm"},center:{lat:R.value.lat,lon:R.value.lon},zoom:J.value,markers:Ee},_e=Ih.dump(ye,{indent:2,lineWidth:-1,noRefs:!0});return z(_e),_e}function X(Ee,ye=300){K.value&&clearTimeout(K.value),K.value=setTimeout(()=>{le(Ee)},ye)}return{center:R,zoom:J,loadMapData:l,saveMapData:le,debouncedSave:X}}const ig={components:{MapPreview:md,MarkerEditor:vd,MarkerList:zd},props:{value:String,name:String,label:String,help:String,disabled:Boolean,defaultCenter:{type:Array,default:()=>[43.836699,4.360054]},defaultZoom:{type:Number,default:13},maxMarkers:{type:Number,default:50}},setup(d,{emit:b}){const k=Vue.ref(!1),z=Vue.ref(null),{markers:R,selectedMarkerId:J,editingMarker:K,canAddMarker:l,hasMarkers:le,selectedMarker:X,addMarker:Ee,updateMarker:ye,deleteMarker:_e,selectMarker:we,editMarker:Le,saveMarker:We,closeEditor:qe,setMarkers:Be}=Ld({maxMarkers:d.maxMarkers}),{center:Ze,zoom:fi,loadMapData:cn,debouncedSave:qr}=tg({defaultCenter:{lat:d.defaultCenter[0],lon:d.defaultCenter[1]},defaultZoom:d.defaultZoom,onSave:xt=>b("input",xt)});Vue.onMounted(async()=>{const xt=cn(d.value);xt&&xt.markers&&Array.isArray(xt.markers)&&Be(xt.markers),await Vue.nextTick(),k.value=!0}),Vue.watch(R,()=>{qr(R.value)},{deep:!0});function er(){return z.value&&z.value.getCurrentCenter?z.value.getCurrentCenter():{lat:Ze.value.lat,lon:Ze.value.lon}}function un(){if(!l.value)return;const xt=er();Ee(xt)}function Yt(xt){l.value&&Ee({lat:xt.lat,lon:xt.lng})}function Rn(xt){we(xt);const wi=R.value.find(li=>li.id===xt);wi&&z.value&&z.value.centerOnPosition&&z.value.centerOnPosition(wi.position.lat,wi.position.lon)}function kt({markerId:xt,position:wi}){ye(xt,{position:{lat:wi.lat,lon:wi.lng}})}function Zr(xt){z.value&&z.value.centerOnPosition&&z.value.centerOnPosition(xt.lat,xt.lon)}return{center:Ze,zoom:fi,markers:R,selectedMarkerId:J,mapReady:k,mapPreview:z,editingMarker:K,canAddMarker:l,hasMarkers:le,selectedMarker:X,handleAddMarker:un,handleMapClick:Yt,handleSelectMarker:Rn,handleMarkerMoved:kt,handleLocationSelect:Zr,deleteMarker:_e,selectMarker:we,editMarker:Le,saveMarker:We,closeEditor:qe}}};var rg=function(){var b=this,k=b._self._c;return k("k-field",b._b({staticClass:"k-map-editor-field"},"k-field",b.$props,!1),[k("div",{staticClass:"map-editor-container"},[k("div",{staticClass:"map-content"},[k("MarkerList",{attrs:{markers:b.markers,"selected-marker-id":b.selectedMarkerId,"max-markers":b.maxMarkers},on:{"add-marker":b.handleAddMarker,"select-marker":b.handleSelectMarker,"edit-marker":b.editMarker,"delete-marker":b.deleteMarker,"select-location":b.handleLocationSelect}}),k("div",{staticClass:"map-preview-container"},[b.mapReady?k("MapPreview",{ref:"mapPreview",attrs:{center:b.center,zoom:b.zoom,markers:b.markers,"selected-marker-id":b.selectedMarkerId},on:{"marker-moved":b.handleMarkerMoved,"map-click":b.handleMapClick,"marker-click":b.selectMarker,"marker-dblclick":b.editMarker}}):b._e()],1)],1)]),b.editingMarker?k("MarkerEditor",{attrs:{marker:b.editingMarker,"is-new":!1},on:{save:b.saveMarker,close:b.closeEditor}}):b._e()],1)},ng=[],ag=Is(ig,rg,ng,!1,null,null);const sg=ag.exports;window.panel.plugin("geoproject/map-editor",{fields:{"map-editor":sg}})})();