From ac6d62eaf95fa29bbd010fa319d1d13e25d3a37b Mon Sep 17 00:00:00 2001 From: bdon Date: Mon, 30 Oct 2023 00:32:46 +0000 Subject: [PATCH] deploy: c05a752fdcbee1642661bc91e1766101f65a4ea6 --- .nojekyll | 0 Barlow-Regular.ttf | Bin 0 -> 98812 bytes Lato-Bold.ttf | Bin 0 -> 73332 bytes assets/favicon-d1e02307.svg | 15 + assets/index-04562139.js | 638 ++ assets/index-4ab0b3a4.css | 1 + assets/index-fc2e9253.js | 1 + capitals_filtered.geojson | 19496 ++++++++++++++++++++++++++++++++++ index.html | 15 + sdfglyph.js | 5187 +++++++++ sdfglyph.wasm | Bin 0 -> 893164 bytes worker.js | 85 + 12 files changed, 25438 insertions(+) create mode 100644 .nojekyll create mode 100644 Barlow-Regular.ttf create mode 100644 Lato-Bold.ttf create mode 100644 assets/favicon-d1e02307.svg create mode 100644 assets/index-04562139.js create mode 100644 assets/index-4ab0b3a4.css create mode 100644 assets/index-fc2e9253.js create mode 100644 capitals_filtered.geojson create mode 100644 index.html create mode 100644 sdfglyph.js create mode 100644 sdfglyph.wasm create mode 100644 worker.js diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/Barlow-Regular.ttf b/Barlow-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d39c293ef21e7ab13efc0497ae45a2b866df8199 GIT binary patch literal 98812 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%0DptrYSynLh$SZh~-B%-J-`rx~ORb_QWXLZN< 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 literal 0 HcmV?d00001 diff --git a/Lato-Bold.ttf b/Lato-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..016068b486e1bd1d73743185c2752b7b1b843701 GIT binary patch literal 73332 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 + + F + M + diff --git a/assets/index-04562139.js b/assets/index-04562139.js new file mode 100644 index 0000000..745b3c1 --- /dev/null +++ b/assets/index-04562139.js @@ -0,0 +1,638 @@ +(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const p of document.querySelectorAll('link[rel="modulepreload"]'))c(p);new MutationObserver(p=>{for(const g of p)if(g.type==="childList")for(const x of g.addedNodes)x.tagName==="LINK"&&x.rel==="modulepreload"&&c(x)}).observe(document,{childList:!0,subtree:!0});function s(p){const g={};return p.integrity&&(g.integrity=p.integrity),p.referrerPolicy&&(g.referrerPolicy=p.referrerPolicy),p.crossOrigin==="use-credentials"?g.credentials="include":p.crossOrigin==="anonymous"?g.credentials="omit":g.credentials="same-origin",g}function c(p){if(p.ep)return;p.ep=!0;const g=s(p);fetch(p.href,g)}})();var ko=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function yp(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Wv={exports:{}},_p={},Hv={exports:{}},fn={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Uc=Symbol.for("react.element"),G2=Symbol.for("react.portal"),Z2=Symbol.for("react.fragment"),q2=Symbol.for("react.strict_mode"),W2=Symbol.for("react.profiler"),H2=Symbol.for("react.provider"),X2=Symbol.for("react.context"),K2=Symbol.for("react.forward_ref"),Y2=Symbol.for("react.suspense"),J2=Symbol.for("react.memo"),Q2=Symbol.for("react.lazy"),i0=Symbol.iterator;function e4(e){return e===null||typeof e!="object"?null:(e=i0&&e[i0]||e["@@iterator"],typeof e=="function"?e:null)}var Xv={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Kv=Object.assign,Yv={};function Zl(e,r,s){this.props=e,this.context=r,this.refs=Yv,this.updater=s||Xv}Zl.prototype.isReactComponent={};Zl.prototype.setState=function(e,r){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,r,"setState")};Zl.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Jv(){}Jv.prototype=Zl.prototype;function Dg(e,r,s){this.props=e,this.context=r,this.refs=Yv,this.updater=s||Xv}var Rg=Dg.prototype=new Jv;Rg.constructor=Dg;Kv(Rg,Zl.prototype);Rg.isPureReactComponent=!0;var o0=Array.isArray,Qv=Object.prototype.hasOwnProperty,Lg={current:null},e1={key:!0,ref:!0,__self:!0,__source:!0};function t1(e,r,s){var c,p={},g=null,x=null;if(r!=null)for(c in r.ref!==void 0&&(x=r.ref),r.key!==void 0&&(g=""+r.key),r)Qv.call(r,c)&&!e1.hasOwnProperty(c)&&(p[c]=r[c]);var l=arguments.length-2;if(l===1)p.children=s;else if(1>>1,Se=Ye[Ae];if(0>>1;Aep(at,nt))Ltp(rn,at)?(Ye[Ae]=rn,Ye[Lt]=nt,Ae=Lt):(Ye[Ae]=at,Ye[ut]=nt,Ae=ut);else if(Ltp(rn,nt))Ye[Ae]=rn,Ye[Lt]=nt,Ae=Lt;else break e}}return Pe}function p(Ye,Pe){var nt=Ye.sortIndex-Pe.sortIndex;return nt!==0?nt:Ye.id-Pe.id}if(typeof performance=="object"&&typeof performance.now=="function"){var g=performance;e.unstable_now=function(){return g.now()}}else{var x=Date,l=x.now();e.unstable_now=function(){return x.now()-l}}var S=[],k=[],D=1,M=null,A=3,F=!1,W=!1,O=!1,Y=typeof setTimeout=="function"?setTimeout:null,R=typeof clearTimeout=="function"?clearTimeout:null,L=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(Ye){for(var Pe=s(k);Pe!==null;){if(Pe.callback===null)c(k);else if(Pe.startTime<=Ye)c(k),Pe.sortIndex=Pe.expirationTime,r(S,Pe);else break;Pe=s(k)}}function te(Ye){if(O=!1,G(Ye),!W)if(s(S)!==null)W=!0,et(ne);else{var Pe=s(k);Pe!==null&&Xe(te,Pe.startTime-Ye)}}function ne(Ye,Pe){W=!1,O&&(O=!1,R(be),be=-1),F=!0;var nt=A;try{for(G(Pe),M=s(S);M!==null&&(!(M.expirationTime>Pe)||Ye&&!lt());){var Ae=M.callback;if(typeof Ae=="function"){M.callback=null,A=M.priorityLevel;var Se=Ae(M.expirationTime<=Pe);Pe=e.unstable_now(),typeof Se=="function"?M.callback=Se:M===s(S)&&c(S),G(Pe)}else c(S);M=s(S)}if(M!==null)var bt=!0;else{var ut=s(k);ut!==null&&Xe(te,ut.startTime-Pe),bt=!1}return bt}finally{M=null,A=nt,F=!1}}var ve=!1,fe=null,be=-1,Ce=5,Le=-1;function lt(){return!(e.unstable_now()-LeYe||125Ae?(Ye.sortIndex=nt,r(k,Ye),s(S)===null&&Ye===s(k)&&(O?(R(be),be=-1):O=!0,Xe(te,nt-Ae))):(Ye.sortIndex=Se,r(S,Ye),W||F||(W=!0,et(ne))),Ye},e.unstable_shouldYield=lt,e.unstable_wrapCallback=function(Ye){var Pe=A;return function(){var nt=A;A=Pe;try{return Ye.apply(this,arguments)}finally{A=nt}}}})(o1);i1.exports=o1;var h4=i1.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var s1=ye,Di=h4;function dt(e){for(var r="https://reactjs.org/docs/error-decoder.html?invariant="+e,s=1;s"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Cm=Object.prototype.hasOwnProperty,d4=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,a0={},l0={};function p4(e){return Cm.call(l0,e)?!0:Cm.call(a0,e)?!1:d4.test(e)?l0[e]=!0:(a0[e]=!0,!1)}function f4(e,r,s,c){if(s!==null&&s.type===0)return!1;switch(typeof r){case"function":case"symbol":return!0;case"boolean":return c?!1:s!==null?!s.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function m4(e,r,s,c){if(r===null||typeof r>"u"||f4(e,r,s,c))return!0;if(c)return!1;if(s!==null)switch(s.type){case 3:return!r;case 4:return r===!1;case 5:return isNaN(r);case 6:return isNaN(r)||1>r}return!1}function ci(e,r,s,c,p,g,x){this.acceptsBooleans=r===2||r===3||r===4,this.attributeName=c,this.attributeNamespace=p,this.mustUseProperty=s,this.propertyName=e,this.type=r,this.sanitizeURL=g,this.removeEmptyString=x}var jr={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){jr[e]=new ci(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var r=e[0];jr[r]=new ci(r,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){jr[e]=new ci(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){jr[e]=new ci(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){jr[e]=new ci(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){jr[e]=new ci(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){jr[e]=new ci(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){jr[e]=new ci(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){jr[e]=new ci(e,5,!1,e.toLowerCase(),null,!1,!1)});var Fg=/[\-:]([a-z])/g;function Og(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var r=e.replace(Fg,Og);jr[r]=new ci(r,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var r=e.replace(Fg,Og);jr[r]=new ci(r,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var r=e.replace(Fg,Og);jr[r]=new ci(r,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){jr[e]=new ci(e,1,!1,e.toLowerCase(),null,!1,!1)});jr.xlinkHref=new ci("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){jr[e]=new ci(e,1,!1,e.toLowerCase(),null,!0,!0)});function Ng(e,r,s,c){var p=jr.hasOwnProperty(r)?jr[r]:null;(p!==null?p.type!==0:c||!(2l||p[x]!==g[l]){var S=` +`+p[x].replace(" at new "," at ");return e.displayName&&S.includes("")&&(S=S.replace("",e.displayName)),S}while(1<=x&&0<=l);break}}}finally{Hf=!1,Error.prepareStackTrace=s}return(e=e?e.displayName||e.name:"")?ic(e):""}function g4(e){switch(e.tag){case 5:return ic(e.type);case 16:return ic("Lazy");case 13:return ic("Suspense");case 19:return ic("SuspenseList");case 0:case 2:case 15:return e=Xf(e.type,!1),e;case 11:return e=Xf(e.type.render,!1),e;case 1:return e=Xf(e.type,!0),e;default:return""}}function Pm(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case gl:return"Fragment";case ml:return"Portal";case Im:return"Profiler";case Ug:return"StrictMode";case Am:return"Suspense";case zm:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case u1:return(e.displayName||"Context")+".Consumer";case l1:return(e._context.displayName||"Context")+".Provider";case Vg:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case jg:return r=e.displayName||null,r!==null?r:Pm(e.type)||"Memo";case Es:r=e._payload,e=e._init;try{return Pm(e(r))}catch{}}return null}function y4(e){var r=e.type;switch(e.tag){case 24:return"Cache";case 9:return(r.displayName||"Context")+".Consumer";case 10:return(r._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=r.render,e=e.displayName||e.name||"",r.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return r;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Pm(r);case 8:return r===Ug?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof r=="function")return r.displayName||r.name||null;if(typeof r=="string")return r}return null}function Us(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function h1(e){var r=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(r==="checkbox"||r==="radio")}function _4(e){var r=h1(e)?"checked":"value",s=Object.getOwnPropertyDescriptor(e.constructor.prototype,r),c=""+e[r];if(!e.hasOwnProperty(r)&&typeof s<"u"&&typeof s.get=="function"&&typeof s.set=="function"){var p=s.get,g=s.set;return Object.defineProperty(e,r,{configurable:!0,get:function(){return p.call(this)},set:function(x){c=""+x,g.call(this,x)}}),Object.defineProperty(e,r,{enumerable:s.enumerable}),{getValue:function(){return c},setValue:function(x){c=""+x},stopTracking:function(){e._valueTracker=null,delete e[r]}}}}function sd(e){e._valueTracker||(e._valueTracker=_4(e))}function d1(e){if(!e)return!1;var r=e._valueTracker;if(!r)return!0;var s=r.getValue(),c="";return e&&(c=h1(e)?e.checked?"true":"false":e.value),e=c,e!==s?(r.setValue(e),!0):!1}function Od(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Mm(e,r){var s=r.checked;return or({},r,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:s??e._wrapperState.initialChecked})}function c0(e,r){var s=r.defaultValue==null?"":r.defaultValue,c=r.checked!=null?r.checked:r.defaultChecked;s=Us(r.value!=null?r.value:s),e._wrapperState={initialChecked:c,initialValue:s,controlled:r.type==="checkbox"||r.type==="radio"?r.checked!=null:r.value!=null}}function p1(e,r){r=r.checked,r!=null&&Ng(e,"checked",r,!1)}function Dm(e,r){p1(e,r);var s=Us(r.value),c=r.type;if(s!=null)c==="number"?(s===0&&e.value===""||e.value!=s)&&(e.value=""+s):e.value!==""+s&&(e.value=""+s);else if(c==="submit"||c==="reset"){e.removeAttribute("value");return}r.hasOwnProperty("value")?Rm(e,r.type,s):r.hasOwnProperty("defaultValue")&&Rm(e,r.type,Us(r.defaultValue)),r.checked==null&&r.defaultChecked!=null&&(e.defaultChecked=!!r.defaultChecked)}function h0(e,r,s){if(r.hasOwnProperty("value")||r.hasOwnProperty("defaultValue")){var c=r.type;if(!(c!=="submit"&&c!=="reset"||r.value!==void 0&&r.value!==null))return;r=""+e._wrapperState.initialValue,s||r===e.value||(e.value=r),e.defaultValue=r}s=e.name,s!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,s!==""&&(e.name=s)}function Rm(e,r,s){(r!=="number"||Od(e.ownerDocument)!==e)&&(s==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+s&&(e.defaultValue=""+s))}var oc=Array.isArray;function Il(e,r,s,c){if(e=e.options,r){r={};for(var p=0;p"+r.valueOf().toString()+"",r=ad.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;r.firstChild;)e.appendChild(r.firstChild)}});function wc(e,r){if(r){var s=e.firstChild;if(s&&s===e.lastChild&&s.nodeType===3){s.nodeValue=r;return}}e.textContent=r}var lc={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},v4=["Webkit","ms","Moz","O"];Object.keys(lc).forEach(function(e){v4.forEach(function(r){r=r+e.charAt(0).toUpperCase()+e.substring(1),lc[r]=lc[e]})});function y1(e,r,s){return r==null||typeof r=="boolean"||r===""?"":s||typeof r!="number"||r===0||lc.hasOwnProperty(e)&&lc[e]?(""+r).trim():r+"px"}function _1(e,r){e=e.style;for(var s in r)if(r.hasOwnProperty(s)){var c=s.indexOf("--")===0,p=y1(s,r[s],c);s==="float"&&(s="cssFloat"),c?e.setProperty(s,p):e[s]=p}}var x4=or({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Fm(e,r){if(r){if(x4[e]&&(r.children!=null||r.dangerouslySetInnerHTML!=null))throw Error(dt(137,e));if(r.dangerouslySetInnerHTML!=null){if(r.children!=null)throw Error(dt(60));if(typeof r.dangerouslySetInnerHTML!="object"||!("__html"in r.dangerouslySetInnerHTML))throw Error(dt(61))}if(r.style!=null&&typeof r.style!="object")throw Error(dt(62))}}function Om(e,r){if(e.indexOf("-")===-1)return typeof r.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Nm=null;function $g(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Um=null,Al=null,zl=null;function f0(e){if(e=$c(e)){if(typeof Um!="function")throw Error(dt(280));var r=e.stateNode;r&&(r=Sp(r),Um(e.stateNode,e.type,r))}}function v1(e){Al?zl?zl.push(e):zl=[e]:Al=e}function x1(){if(Al){var e=Al,r=zl;if(zl=Al=null,f0(e),r)for(e=0;e>>=0,e===0?32:31-(P4(e)/M4|0)|0}var ld=64,ud=4194304;function sc(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function jd(e,r){var s=e.pendingLanes;if(s===0)return 0;var c=0,p=e.suspendedLanes,g=e.pingedLanes,x=s&268435455;if(x!==0){var l=x&~p;l!==0?c=sc(l):(g&=x,g!==0&&(c=sc(g)))}else x=s&~p,x!==0?c=sc(x):g!==0&&(c=sc(g));if(c===0)return 0;if(r!==0&&r!==c&&!(r&p)&&(p=c&-c,g=r&-r,p>=g||p===16&&(g&4194240)!==0))return r;if(c&4&&(c|=s&16),r=e.entangledLanes,r!==0)for(e=e.entanglements,r&=c;0s;s++)r.push(e);return r}function Vc(e,r,s){e.pendingLanes|=r,r!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,r=31-lo(r),e[r]=s}function B4(e,r){var s=e.pendingLanes&~r;e.pendingLanes=r,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=r,e.mutableReadLanes&=r,e.entangledLanes&=r,r=e.entanglements;var c=e.eventTimes;for(e=e.expirationTimes;0=cc),S0=String.fromCharCode(32),E0=!1;function U1(e,r){switch(e){case"keyup":return c3.indexOf(r.keyCode)!==-1;case"keydown":return r.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function V1(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var yl=!1;function d3(e,r){switch(e){case"compositionend":return V1(r);case"keypress":return r.which!==32?null:(E0=!0,S0);case"textInput":return e=r.data,e===S0&&E0?null:e;default:return null}}function p3(e,r){if(yl)return e==="compositionend"||!Yg&&U1(e,r)?(e=O1(),Id=Hg=zs=null,yl=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(r.ctrlKey||r.altKey||r.metaKey)||r.ctrlKey&&r.altKey){if(r.char&&1=r)return{node:s,offset:r-e};e=c}e:{for(;s;){if(s.nextSibling){s=s.nextSibling;break e}s=s.parentNode}s=void 0}s=I0(s)}}function Z1(e,r){return e&&r?e===r?!0:e&&e.nodeType===3?!1:r&&r.nodeType===3?Z1(e,r.parentNode):"contains"in e?e.contains(r):e.compareDocumentPosition?!!(e.compareDocumentPosition(r)&16):!1:!1}function q1(){for(var e=window,r=Od();r instanceof e.HTMLIFrameElement;){try{var s=typeof r.contentWindow.location.href=="string"}catch{s=!1}if(s)e=r.contentWindow;else break;r=Od(e.document)}return r}function Jg(e){var r=e&&e.nodeName&&e.nodeName.toLowerCase();return r&&(r==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||r==="textarea"||e.contentEditable==="true")}function b3(e){var r=q1(),s=e.focusedElem,c=e.selectionRange;if(r!==s&&s&&s.ownerDocument&&Z1(s.ownerDocument.documentElement,s)){if(c!==null&&Jg(s)){if(r=c.start,e=c.end,e===void 0&&(e=r),"selectionStart"in s)s.selectionStart=r,s.selectionEnd=Math.min(e,s.value.length);else if(e=(r=s.ownerDocument||document)&&r.defaultView||window,e.getSelection){e=e.getSelection();var p=s.textContent.length,g=Math.min(c.start,p);c=c.end===void 0?g:Math.min(c.end,p),!e.extend&&g>c&&(p=c,c=g,g=p),p=A0(s,g);var x=A0(s,c);p&&x&&(e.rangeCount!==1||e.anchorNode!==p.node||e.anchorOffset!==p.offset||e.focusNode!==x.node||e.focusOffset!==x.offset)&&(r=r.createRange(),r.setStart(p.node,p.offset),e.removeAllRanges(),g>c?(e.addRange(r),e.extend(x.node,x.offset)):(r.setEnd(x.node,x.offset),e.addRange(r)))}}for(r=[],e=s;e=e.parentNode;)e.nodeType===1&&r.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof s.focus=="function"&&s.focus(),s=0;s=document.documentMode,_l=null,qm=null,dc=null,Wm=!1;function z0(e,r,s){var c=s.window===s?s.document:s.nodeType===9?s:s.ownerDocument;Wm||_l==null||_l!==Od(c)||(c=_l,"selectionStart"in c&&Jg(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset}),dc&&Cc(dc,c)||(dc=c,c=Zd(qm,"onSelect"),0wl||(e.current=Qm[wl],Qm[wl]=null,wl--)}function qn(e,r){wl++,Qm[wl]=e.current,e.current=r}var Vs={},Yr=$s(Vs),xi=$s(!1),Aa=Vs;function Fl(e,r){var s=e.type.contextTypes;if(!s)return Vs;var c=e.stateNode;if(c&&c.__reactInternalMemoizedUnmaskedChildContext===r)return c.__reactInternalMemoizedMaskedChildContext;var p={},g;for(g in s)p[g]=r[g];return c&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=r,e.__reactInternalMemoizedMaskedChildContext=p),p}function wi(e){return e=e.childContextTypes,e!=null}function Wd(){Kn(xi),Kn(Yr)}function F0(e,r,s){if(Yr.current!==Vs)throw Error(dt(168));qn(Yr,r),qn(xi,s)}function tx(e,r,s){var c=e.stateNode;if(r=r.childContextTypes,typeof c.getChildContext!="function")return s;c=c.getChildContext();for(var p in c)if(!(p in r))throw Error(dt(108,y4(e)||"Unknown",p));return or({},s,c)}function Hd(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Vs,Aa=Yr.current,qn(Yr,e),qn(xi,xi.current),!0}function O0(e,r,s){var c=e.stateNode;if(!c)throw Error(dt(169));s?(e=tx(e,r,Aa),c.__reactInternalMemoizedMergedChildContext=e,Kn(xi),Kn(Yr),qn(Yr,e)):Kn(xi),qn(xi,s)}var Wo=null,Ep=!1,um=!1;function nx(e){Wo===null?Wo=[e]:Wo.push(e)}function R3(e){Ep=!0,nx(e)}function Gs(){if(!um&&Wo!==null){um=!0;var e=0,r=Pn;try{var s=Wo;for(Pn=1;e>=x,p-=x,Ho=1<<32-lo(r)+p|s<be?(Ce=fe,fe=null):Ce=fe.sibling;var Le=A(R,fe,G[be],te);if(Le===null){fe===null&&(fe=Ce);break}e&&fe&&Le.alternate===null&&r(R,fe),L=g(Le,L,be),ve===null?ne=Le:ve.sibling=Le,ve=Le,fe=Ce}if(be===G.length)return s(R,fe),Qn&&xa(R,be),ne;if(fe===null){for(;bebe?(Ce=fe,fe=null):Ce=fe.sibling;var lt=A(R,fe,Le.value,te);if(lt===null){fe===null&&(fe=Ce);break}e&&fe&<.alternate===null&&r(R,fe),L=g(lt,L,be),ve===null?ne=lt:ve.sibling=lt,ve=lt,fe=Ce}if(Le.done)return s(R,fe),Qn&&xa(R,be),ne;if(fe===null){for(;!Le.done;be++,Le=G.next())Le=M(R,Le.value,te),Le!==null&&(L=g(Le,L,be),ve===null?ne=Le:ve.sibling=Le,ve=Le);return Qn&&xa(R,be),ne}for(fe=c(R,fe);!Le.done;be++,Le=G.next())Le=F(fe,R,be,Le.value,te),Le!==null&&(e&&Le.alternate!==null&&fe.delete(Le.key===null?be:Le.key),L=g(Le,L,be),ve===null?ne=Le:ve.sibling=Le,ve=Le);return e&&fe.forEach(function(he){return r(R,he)}),Qn&&xa(R,be),ne}function Y(R,L,G,te){if(typeof G=="object"&&G!==null&&G.type===gl&&G.key===null&&(G=G.props.children),typeof G=="object"&&G!==null){switch(G.$$typeof){case od:e:{for(var ne=G.key,ve=L;ve!==null;){if(ve.key===ne){if(ne=G.type,ne===gl){if(ve.tag===7){s(R,ve.sibling),L=p(ve,G.props.children),L.return=R,R=L;break e}}else if(ve.elementType===ne||typeof ne=="object"&&ne!==null&&ne.$$typeof===Es&&Z0(ne)===ve.type){s(R,ve.sibling),L=p(ve,G.props),L.ref=tc(R,ve,G),L.return=R,R=L;break e}s(R,ve);break}else r(R,ve);ve=ve.sibling}G.type===gl?(L=Ia(G.props.children,R.mode,te,G.key),L.return=R,R=L):(te=Bd(G.type,G.key,G.props,null,R.mode,te),te.ref=tc(R,L,G),te.return=R,R=te)}return x(R);case ml:e:{for(ve=G.key;L!==null;){if(L.key===ve)if(L.tag===4&&L.stateNode.containerInfo===G.containerInfo&&L.stateNode.implementation===G.implementation){s(R,L.sibling),L=p(L,G.children||[]),L.return=R,R=L;break e}else{s(R,L);break}else r(R,L);L=L.sibling}L=ym(G,R.mode,te),L.return=R,R=L}return x(R);case Es:return ve=G._init,Y(R,L,ve(G._payload),te)}if(oc(G))return W(R,L,G,te);if(Ku(G))return O(R,L,G,te);gd(R,G)}return typeof G=="string"&&G!==""||typeof G=="number"?(G=""+G,L!==null&&L.tag===6?(s(R,L.sibling),L=p(L,G),L.return=R,R=L):(s(R,L),L=gm(G,R.mode,te),L.return=R,R=L),x(R)):s(R,L)}return Y}var Nl=cx(!0),hx=cx(!1),Gc={},zo=$s(Gc),Pc=$s(Gc),Mc=$s(Gc);function Ta(e){if(e===Gc)throw Error(dt(174));return e}function ay(e,r){switch(qn(Mc,r),qn(Pc,e),qn(zo,Gc),e=r.nodeType,e){case 9:case 11:r=(r=r.documentElement)?r.namespaceURI:Bm(null,"");break;default:e=e===8?r.parentNode:r,r=e.namespaceURI||null,e=e.tagName,r=Bm(r,e)}Kn(zo),qn(zo,r)}function Ul(){Kn(zo),Kn(Pc),Kn(Mc)}function dx(e){Ta(Mc.current);var r=Ta(zo.current),s=Bm(r,e.type);r!==s&&(qn(Pc,e),qn(zo,s))}function ly(e){Pc.current===e&&(Kn(zo),Kn(Pc))}var rr=$s(0);function ep(e){for(var r=e;r!==null;){if(r.tag===13){var s=r.memoizedState;if(s!==null&&(s=s.dehydrated,s===null||s.data==="$?"||s.data==="$!"))return r}else if(r.tag===19&&r.memoizedProps.revealOrder!==void 0){if(r.flags&128)return r}else if(r.child!==null){r.child.return=r,r=r.child;continue}if(r===e)break;for(;r.sibling===null;){if(r.return===null||r.return===e)return null;r=r.return}r.sibling.return=r.return,r=r.sibling}return null}var cm=[];function uy(){for(var e=0;es?s:4,e(!0);var c=hm.transition;hm.transition={};try{e(!1),r()}finally{Pn=s,hm.transition=c}}function Ix(){return Xi().memoizedState}function O3(e,r,s){var c=Os(e);if(s={lane:c,action:s,hasEagerState:!1,eagerState:null,next:null},Ax(e))zx(r,s);else if(s=sx(e,r,s,c),s!==null){var p=li();uo(s,e,c,p),Px(s,r,c)}}function N3(e,r,s){var c=Os(e),p={lane:c,action:s,hasEagerState:!1,eagerState:null,next:null};if(Ax(e))zx(r,p);else{var g=e.alternate;if(e.lanes===0&&(g===null||g.lanes===0)&&(g=r.lastRenderedReducer,g!==null))try{var x=r.lastRenderedState,l=g(x,s);if(p.hasEagerState=!0,p.eagerState=l,co(l,x)){var S=r.interleaved;S===null?(p.next=p,oy(r)):(p.next=S.next,S.next=p),r.interleaved=p;return}}catch{}finally{}s=sx(e,r,p,c),s!==null&&(p=li(),uo(s,e,c,p),Px(s,r,c))}}function Ax(e){var r=e.alternate;return e===ir||r!==null&&r===ir}function zx(e,r){pc=tp=!0;var s=e.pending;s===null?r.next=r:(r.next=s.next,s.next=r),e.pending=r}function Px(e,r,s){if(s&4194240){var c=r.lanes;c&=e.pendingLanes,s|=c,r.lanes=s,Zg(e,s)}}var np={readContext:Hi,useCallback:Hr,useContext:Hr,useEffect:Hr,useImperativeHandle:Hr,useInsertionEffect:Hr,useLayoutEffect:Hr,useMemo:Hr,useReducer:Hr,useRef:Hr,useState:Hr,useDebugValue:Hr,useDeferredValue:Hr,useTransition:Hr,useMutableSource:Hr,useSyncExternalStore:Hr,useId:Hr,unstable_isNewReconciler:!1},U3={readContext:Hi,useCallback:function(e,r){return To().memoizedState=[e,r===void 0?null:r],e},useContext:Hi,useEffect:W0,useImperativeHandle:function(e,r,s){return s=s!=null?s.concat([e]):null,Md(4194308,4,Sx.bind(null,r,e),s)},useLayoutEffect:function(e,r){return Md(4194308,4,e,r)},useInsertionEffect:function(e,r){return Md(4,2,e,r)},useMemo:function(e,r){var s=To();return r=r===void 0?null:r,e=e(),s.memoizedState=[e,r],e},useReducer:function(e,r,s){var c=To();return r=s!==void 0?s(r):r,c.memoizedState=c.baseState=r,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:r},c.queue=e,e=e.dispatch=O3.bind(null,ir,e),[c.memoizedState,e]},useRef:function(e){var r=To();return e={current:e},r.memoizedState=e},useState:q0,useDebugValue:fy,useDeferredValue:function(e){return To().memoizedState=e},useTransition:function(){var e=q0(!1),r=e[0];return e=F3.bind(null,e[1]),To().memoizedState=e,[r,e]},useMutableSource:function(){},useSyncExternalStore:function(e,r,s){var c=ir,p=To();if(Qn){if(s===void 0)throw Error(dt(407));s=s()}else{if(s=r(),Br===null)throw Error(dt(349));Pa&30||mx(c,r,s)}p.memoizedState=s;var g={value:s,getSnapshot:r};return p.queue=g,W0(yx.bind(null,c,g,e),[e]),c.flags|=2048,Lc(9,gx.bind(null,c,g,s,r),void 0,null),s},useId:function(){var e=To(),r=Br.identifierPrefix;if(Qn){var s=Xo,c=Ho;s=(c&~(1<<32-lo(c)-1)).toString(32)+s,r=":"+r+"R"+s,s=Dc++,0<\/script>",e=e.removeChild(e.firstChild)):typeof c.is=="string"?e=x.createElement(s,{is:c.is}):(e=x.createElement(s),s==="select"&&(x=e,c.multiple?x.multiple=!0:c.size&&(x.size=c.size))):e=x.createElementNS(e,s),e[Co]=r,e[zc]=c,Ux(e,r,!1,!1),r.stateNode=e;e:{switch(x=Om(s,c),s){case"dialog":Hn("cancel",e),Hn("close",e),p=c;break;case"iframe":case"object":case"embed":Hn("load",e),p=c;break;case"video":case"audio":for(p=0;pjl&&(r.flags|=128,c=!0,nc(g,!1),r.lanes=4194304)}else{if(!c)if(e=ep(x),e!==null){if(r.flags|=128,c=!0,s=e.updateQueue,s!==null&&(r.updateQueue=s,r.flags|=4),nc(g,!0),g.tail===null&&g.tailMode==="hidden"&&!x.alternate&&!Qn)return Xr(r),null}else 2*fr()-g.renderingStartTime>jl&&s!==1073741824&&(r.flags|=128,c=!0,nc(g,!1),r.lanes=4194304);g.isBackwards?(x.sibling=r.child,r.child=x):(s=g.last,s!==null?s.sibling=x:r.child=x,g.last=x)}return g.tail!==null?(r=g.tail,g.rendering=r,g.tail=r.sibling,g.renderingStartTime=fr(),r.sibling=null,s=rr.current,qn(rr,c?s&1|2:s&1),r):(Xr(r),null);case 22:case 23:return xy(),c=r.memoizedState!==null,e!==null&&e.memoizedState!==null!==c&&(r.flags|=8192),c&&r.mode&1?zi&1073741824&&(Xr(r),r.subtreeFlags&6&&(r.flags|=8192)):Xr(r),null;case 24:return null;case 25:return null}throw Error(dt(156,r.tag))}function H3(e,r){switch(ey(r),r.tag){case 1:return wi(r.type)&&Wd(),e=r.flags,e&65536?(r.flags=e&-65537|128,r):null;case 3:return Ul(),Kn(xi),Kn(Yr),uy(),e=r.flags,e&65536&&!(e&128)?(r.flags=e&-65537|128,r):null;case 5:return ly(r),null;case 13:if(Kn(rr),e=r.memoizedState,e!==null&&e.dehydrated!==null){if(r.alternate===null)throw Error(dt(340));Ol()}return e=r.flags,e&65536?(r.flags=e&-65537|128,r):null;case 19:return Kn(rr),null;case 4:return Ul(),null;case 10:return iy(r.type._context),null;case 22:case 23:return xy(),null;case 24:return null;default:return null}}var _d=!1,Kr=!1,X3=typeof WeakSet=="function"?WeakSet:Set,Rt=null;function Tl(e,r){var s=e.ref;if(s!==null)if(typeof s=="function")try{s(null)}catch(c){ur(e,r,c)}else s.current=null}function hg(e,r,s){try{s()}catch(c){ur(e,r,c)}}var nv=!1;function K3(e,r){if(Hm=$d,e=q1(),Jg(e)){if("selectionStart"in e)var s={start:e.selectionStart,end:e.selectionEnd};else e:{s=(s=e.ownerDocument)&&s.defaultView||window;var c=s.getSelection&&s.getSelection();if(c&&c.rangeCount!==0){s=c.anchorNode;var p=c.anchorOffset,g=c.focusNode;c=c.focusOffset;try{s.nodeType,g.nodeType}catch{s=null;break e}var x=0,l=-1,S=-1,k=0,D=0,M=e,A=null;t:for(;;){for(var F;M!==s||p!==0&&M.nodeType!==3||(l=x+p),M!==g||c!==0&&M.nodeType!==3||(S=x+c),M.nodeType===3&&(x+=M.nodeValue.length),(F=M.firstChild)!==null;)A=M,M=F;for(;;){if(M===e)break t;if(A===s&&++k===p&&(l=x),A===g&&++D===c&&(S=x),(F=M.nextSibling)!==null)break;M=A,A=M.parentNode}M=F}s=l===-1||S===-1?null:{start:l,end:S}}else s=null}s=s||{start:0,end:0}}else s=null;for(Xm={focusedElem:e,selectionRange:s},$d=!1,Rt=r;Rt!==null;)if(r=Rt,e=r.child,(r.subtreeFlags&1028)!==0&&e!==null)e.return=r,Rt=e;else for(;Rt!==null;){r=Rt;try{var W=r.alternate;if(r.flags&1024)switch(r.tag){case 0:case 11:case 15:break;case 1:if(W!==null){var O=W.memoizedProps,Y=W.memoizedState,R=r.stateNode,L=R.getSnapshotBeforeUpdate(r.elementType===r.type?O:oo(r.type,O),Y);R.__reactInternalSnapshotBeforeUpdate=L}break;case 3:var G=r.stateNode.containerInfo;G.nodeType===1?G.textContent="":G.nodeType===9&&G.documentElement&&G.removeChild(G.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(dt(163))}}catch(te){ur(r,r.return,te)}if(e=r.sibling,e!==null){e.return=r.return,Rt=e;break}Rt=r.return}return W=nv,nv=!1,W}function fc(e,r,s){var c=r.updateQueue;if(c=c!==null?c.lastEffect:null,c!==null){var p=c=c.next;do{if((p.tag&e)===e){var g=p.destroy;p.destroy=void 0,g!==void 0&&hg(r,s,g)}p=p.next}while(p!==c)}}function Cp(e,r){if(r=r.updateQueue,r=r!==null?r.lastEffect:null,r!==null){var s=r=r.next;do{if((s.tag&e)===e){var c=s.create;s.destroy=c()}s=s.next}while(s!==r)}}function dg(e){var r=e.ref;if(r!==null){var s=e.stateNode;switch(e.tag){case 5:e=s;break;default:e=s}typeof r=="function"?r(e):r.current=e}}function $x(e){var r=e.alternate;r!==null&&(e.alternate=null,$x(r)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(r=e.stateNode,r!==null&&(delete r[Co],delete r[zc],delete r[Jm],delete r[M3],delete r[D3])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Gx(e){return e.tag===5||e.tag===3||e.tag===4}function rv(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Gx(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function pg(e,r,s){var c=e.tag;if(c===5||c===6)e=e.stateNode,r?s.nodeType===8?s.parentNode.insertBefore(e,r):s.insertBefore(e,r):(s.nodeType===8?(r=s.parentNode,r.insertBefore(e,s)):(r=s,r.appendChild(e)),s=s._reactRootContainer,s!=null||r.onclick!==null||(r.onclick=qd));else if(c!==4&&(e=e.child,e!==null))for(pg(e,r,s),e=e.sibling;e!==null;)pg(e,r,s),e=e.sibling}function fg(e,r,s){var c=e.tag;if(c===5||c===6)e=e.stateNode,r?s.insertBefore(e,r):s.appendChild(e);else if(c!==4&&(e=e.child,e!==null))for(fg(e,r,s),e=e.sibling;e!==null;)fg(e,r,s),e=e.sibling}var Ur=null,so=!1;function bs(e,r,s){for(s=s.child;s!==null;)Zx(e,r,s),s=s.sibling}function Zx(e,r,s){if(Ao&&typeof Ao.onCommitFiberUnmount=="function")try{Ao.onCommitFiberUnmount(vp,s)}catch{}switch(s.tag){case 5:Kr||Tl(s,r);case 6:var c=Ur,p=so;Ur=null,bs(e,r,s),Ur=c,so=p,Ur!==null&&(so?(e=Ur,s=s.stateNode,e.nodeType===8?e.parentNode.removeChild(s):e.removeChild(s)):Ur.removeChild(s.stateNode));break;case 18:Ur!==null&&(so?(e=Ur,s=s.stateNode,e.nodeType===8?lm(e.parentNode,s):e.nodeType===1&&lm(e,s),Tc(e)):lm(Ur,s.stateNode));break;case 4:c=Ur,p=so,Ur=s.stateNode.containerInfo,so=!0,bs(e,r,s),Ur=c,so=p;break;case 0:case 11:case 14:case 15:if(!Kr&&(c=s.updateQueue,c!==null&&(c=c.lastEffect,c!==null))){p=c=c.next;do{var g=p,x=g.destroy;g=g.tag,x!==void 0&&(g&2||g&4)&&hg(s,r,x),p=p.next}while(p!==c)}bs(e,r,s);break;case 1:if(!Kr&&(Tl(s,r),c=s.stateNode,typeof c.componentWillUnmount=="function"))try{c.props=s.memoizedProps,c.state=s.memoizedState,c.componentWillUnmount()}catch(l){ur(s,r,l)}bs(e,r,s);break;case 21:bs(e,r,s);break;case 22:s.mode&1?(Kr=(c=Kr)||s.memoizedState!==null,bs(e,r,s),Kr=c):bs(e,r,s);break;default:bs(e,r,s)}}function iv(e){var r=e.updateQueue;if(r!==null){e.updateQueue=null;var s=e.stateNode;s===null&&(s=e.stateNode=new X3),r.forEach(function(c){var p=o5.bind(null,e,c);s.has(c)||(s.add(c),c.then(p,p))})}}function io(e,r){var s=r.deletions;if(s!==null)for(var c=0;cp&&(p=x),c&=~g}if(c=p,c=fr()-c,c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3e3>c?3e3:4320>c?4320:1960*J3(c/1960))-c,10e?16:e,Ps===null)var c=!1;else{if(e=Ps,Ps=null,op=0,wn&6)throw Error(dt(331));var p=wn;for(wn|=4,Rt=e.current;Rt!==null;){var g=Rt,x=g.child;if(Rt.flags&16){var l=g.deletions;if(l!==null){for(var S=0;Sfr()-_y?Ca(e,0):yy|=s),bi(e,r)}function Qx(e,r){r===0&&(e.mode&1?(r=ud,ud<<=1,!(ud&130023424)&&(ud=4194304)):r=1);var s=li();e=ts(e,r),e!==null&&(Vc(e,r,s),bi(e,s))}function i5(e){var r=e.memoizedState,s=0;r!==null&&(s=r.retryLane),Qx(e,s)}function o5(e,r){var s=0;switch(e.tag){case 13:var c=e.stateNode,p=e.memoizedState;p!==null&&(s=p.retryLane);break;case 19:c=e.stateNode;break;default:throw Error(dt(314))}c!==null&&c.delete(r),Qx(e,s)}var ew;ew=function(e,r,s){if(e!==null)if(e.memoizedProps!==r.pendingProps||xi.current)vi=!0;else{if(!(e.lanes&s)&&!(r.flags&128))return vi=!1,q3(e,r,s);vi=!!(e.flags&131072)}else vi=!1,Qn&&r.flags&1048576&&rx(r,Kd,r.index);switch(r.lanes=0,r.tag){case 2:var c=r.type;Dd(e,r),e=r.pendingProps;var p=Fl(r,Yr.current);Ml(r,s),p=hy(null,r,c,e,p,s);var g=dy();return r.flags|=1,typeof p=="object"&&p!==null&&typeof p.render=="function"&&p.$$typeof===void 0?(r.tag=1,r.memoizedState=null,r.updateQueue=null,wi(c)?(g=!0,Hd(r)):g=!1,r.memoizedState=p.state!==null&&p.state!==void 0?p.state:null,sy(r),p.updater=Tp,r.stateNode=p,p._reactInternals=r,ig(r,c,e,s),r=ag(null,r,c,!0,g,s)):(r.tag=0,Qn&&g&&Qg(r),ai(null,r,p,s),r=r.child),r;case 16:c=r.elementType;e:{switch(Dd(e,r),e=r.pendingProps,p=c._init,c=p(c._payload),r.type=c,p=r.tag=a5(c),e=oo(c,e),p){case 0:r=sg(null,r,c,e,s);break e;case 1:r=Q0(null,r,c,e,s);break e;case 11:r=Y0(null,r,c,e,s);break e;case 14:r=J0(null,r,c,oo(c.type,e),s);break e}throw Error(dt(306,c,""))}return r;case 0:return c=r.type,p=r.pendingProps,p=r.elementType===c?p:oo(c,p),sg(e,r,c,p,s);case 1:return c=r.type,p=r.pendingProps,p=r.elementType===c?p:oo(c,p),Q0(e,r,c,p,s);case 3:e:{if(Fx(r),e===null)throw Error(dt(387));c=r.pendingProps,g=r.memoizedState,p=g.element,ax(e,r),Qd(r,c,null,s);var x=r.memoizedState;if(c=x.element,g.isDehydrated)if(g={element:c,isDehydrated:!1,cache:x.cache,pendingSuspenseBoundaries:x.pendingSuspenseBoundaries,transitions:x.transitions},r.updateQueue.baseState=g,r.memoizedState=g,r.flags&256){p=Vl(Error(dt(423)),r),r=ev(e,r,c,s,p);break e}else if(c!==p){p=Vl(Error(dt(424)),r),r=ev(e,r,c,s,p);break e}else for(Pi=Ls(r.stateNode.containerInfo.firstChild),Mi=r,Qn=!0,ao=null,s=hx(r,null,c,s),r.child=s;s;)s.flags=s.flags&-3|4096,s=s.sibling;else{if(Ol(),c===p){r=ns(e,r,s);break e}ai(e,r,c,s)}r=r.child}return r;case 5:return dx(r),e===null&&tg(r),c=r.type,p=r.pendingProps,g=e!==null?e.memoizedProps:null,x=p.children,Km(c,p)?x=null:g!==null&&Km(c,g)&&(r.flags|=32),Bx(e,r),ai(e,r,x,s),r.child;case 6:return e===null&&tg(r),null;case 13:return Ox(e,r,s);case 4:return ay(r,r.stateNode.containerInfo),c=r.pendingProps,e===null?r.child=Nl(r,null,c,s):ai(e,r,c,s),r.child;case 11:return c=r.type,p=r.pendingProps,p=r.elementType===c?p:oo(c,p),Y0(e,r,c,p,s);case 7:return ai(e,r,r.pendingProps,s),r.child;case 8:return ai(e,r,r.pendingProps.children,s),r.child;case 12:return ai(e,r,r.pendingProps.children,s),r.child;case 10:e:{if(c=r.type._context,p=r.pendingProps,g=r.memoizedProps,x=p.value,qn(Yd,c._currentValue),c._currentValue=x,g!==null)if(co(g.value,x)){if(g.children===p.children&&!xi.current){r=ns(e,r,s);break e}}else for(g=r.child,g!==null&&(g.return=r);g!==null;){var l=g.dependencies;if(l!==null){x=g.child;for(var S=l.firstContext;S!==null;){if(S.context===c){if(g.tag===1){S=Ko(-1,s&-s),S.tag=2;var k=g.updateQueue;if(k!==null){k=k.shared;var D=k.pending;D===null?S.next=S:(S.next=D.next,D.next=S),k.pending=S}}g.lanes|=s,S=g.alternate,S!==null&&(S.lanes|=s),ng(g.return,s,r),l.lanes|=s;break}S=S.next}}else if(g.tag===10)x=g.type===r.type?null:g.child;else if(g.tag===18){if(x=g.return,x===null)throw Error(dt(341));x.lanes|=s,l=x.alternate,l!==null&&(l.lanes|=s),ng(x,s,r),x=g.sibling}else x=g.child;if(x!==null)x.return=g;else for(x=g;x!==null;){if(x===r){x=null;break}if(g=x.sibling,g!==null){g.return=x.return,x=g;break}x=x.return}g=x}ai(e,r,p.children,s),r=r.child}return r;case 9:return p=r.type,c=r.pendingProps.children,Ml(r,s),p=Hi(p),c=c(p),r.flags|=1,ai(e,r,c,s),r.child;case 14:return c=r.type,p=oo(c,r.pendingProps),p=oo(c.type,p),J0(e,r,c,p,s);case 15:return Rx(e,r,r.type,r.pendingProps,s);case 17:return c=r.type,p=r.pendingProps,p=r.elementType===c?p:oo(c,p),Dd(e,r),r.tag=1,wi(c)?(e=!0,Hd(r)):e=!1,Ml(r,s),ux(r,c,p),ig(r,c,p,s),ag(null,r,c,!0,e,s);case 19:return Nx(e,r,s);case 22:return Lx(e,r,s)}throw Error(dt(156,r.tag))};function tw(e,r){return C1(e,r)}function s5(e,r,s,c){this.tag=e,this.key=s,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=r,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=c,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function qi(e,r,s,c){return new s5(e,r,s,c)}function by(e){return e=e.prototype,!(!e||!e.isReactComponent)}function a5(e){if(typeof e=="function")return by(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Vg)return 11;if(e===jg)return 14}return 2}function Ns(e,r){var s=e.alternate;return s===null?(s=qi(e.tag,r,e.key,e.mode),s.elementType=e.elementType,s.type=e.type,s.stateNode=e.stateNode,s.alternate=e,e.alternate=s):(s.pendingProps=r,s.type=e.type,s.flags=0,s.subtreeFlags=0,s.deletions=null),s.flags=e.flags&14680064,s.childLanes=e.childLanes,s.lanes=e.lanes,s.child=e.child,s.memoizedProps=e.memoizedProps,s.memoizedState=e.memoizedState,s.updateQueue=e.updateQueue,r=e.dependencies,s.dependencies=r===null?null:{lanes:r.lanes,firstContext:r.firstContext},s.sibling=e.sibling,s.index=e.index,s.ref=e.ref,s}function Bd(e,r,s,c,p,g){var x=2;if(c=e,typeof e=="function")by(e)&&(x=1);else if(typeof e=="string")x=5;else e:switch(e){case gl:return Ia(s.children,p,g,r);case Ug:x=8,p|=8;break;case Im:return e=qi(12,s,r,p|2),e.elementType=Im,e.lanes=g,e;case Am:return e=qi(13,s,r,p),e.elementType=Am,e.lanes=g,e;case zm:return e=qi(19,s,r,p),e.elementType=zm,e.lanes=g,e;case c1:return Ap(s,p,g,r);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case l1:x=10;break e;case u1:x=9;break e;case Vg:x=11;break e;case jg:x=14;break e;case Es:x=16,c=null;break e}throw Error(dt(130,e==null?e:typeof e,""))}return r=qi(x,s,r,p),r.elementType=e,r.type=c,r.lanes=g,r}function Ia(e,r,s,c){return e=qi(7,e,c,r),e.lanes=s,e}function Ap(e,r,s,c){return e=qi(22,e,c,r),e.elementType=c1,e.lanes=s,e.stateNode={isHidden:!1},e}function gm(e,r,s){return e=qi(6,e,null,r),e.lanes=s,e}function ym(e,r,s){return r=qi(4,e.children!==null?e.children:[],e.key,r),r.lanes=s,r.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},r}function l5(e,r,s,c,p){this.tag=r,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Yf(0),this.expirationTimes=Yf(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Yf(0),this.identifierPrefix=c,this.onRecoverableError=p,this.mutableSourceEagerHydrationData=null}function Sy(e,r,s,c,p,g,x,l,S){return e=new l5(e,r,s,l,S),r===1?(r=1,g===!0&&(r|=8)):r=0,g=qi(3,null,null,r),e.current=g,g.stateNode=e,g.memoizedState={element:c,isDehydrated:s,cache:null,transitions:null,pendingSuspenseBoundaries:null},sy(g),e}function u5(e,r,s){var c=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(ow)}catch(e){console.error(e)}}ow(),r1.exports=Ri;var Io=r1.exports,dv=Io;km.createRoot=dv.createRoot,km.hydrateRoot=dv.hydrateRoot;var sw={exports:{}};(function(e,r){(function(s,c){e.exports=c()})(ko,function(){var s,c,p;function g(l,S){if(!s)s=S;else if(!c)c=S;else{var k="var sharedChunk = {}; ("+s+")(sharedChunk); ("+c+")(sharedChunk);",D={};s(D),p=S(D),typeof window<"u"&&(p.workerUrl=window.URL.createObjectURL(new Blob([k],{type:"text/javascript"})))}}g(["exports"],function(l){var S=k;function k(i,t,o,u){this.cx=3*i,this.bx=3*(o-i)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*t,this.by=3*(u-t)-this.cy,this.ay=1-this.cy-this.by,this.p1x=i,this.p1y=t,this.p2x=o,this.p2y=u}function D(i,t,o,u){const f=new S(i,t,o,u);return function(y){return f.solve(y)}}k.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,t){if(t===void 0&&(t=1e-6),i<0)return 0;if(i>1)return 1;for(var o=i,u=0;u<8;u++){var f=this.sampleCurveX(o)-i;if(Math.abs(f)f?v=o:b=o,o=.5*(b-v)+v;return o},solve:function(i,t){return this.sampleCurveY(this.solveCurveX(i,t))}};const M=D(.25,.1,.25,1);function A(i,t,o){return Math.min(o,Math.max(t,i))}function F(i,t,o){const u=o-t,f=((i-t)%u+u)%u+t;return f===t?o:f}function W(i,...t){for(const o of t)for(const u in o)i[u]=o[u];return i}let O=1;function Y(i,t){i.forEach(o=>{t[o]&&(t[o]=t[o].bind(t))})}function R(i,t,o){const u={};for(const f in i)u[f]=t.call(o||this,i[f],f,i);return u}function L(i,t,o){const u={};for(const f in i)t.call(o||this,i[f],f,i)&&(u[f]=i[f]);return u}function G(i){return Array.isArray(i)?i.map(G):typeof i=="object"&&i?R(i,G):i}const te={};function ne(i){te[i]||(typeof console<"u"&&console.warn(i),te[i]=!0)}function ve(i,t,o){return(o.y-i.y)*(t.x-i.x)>(t.y-i.y)*(o.x-i.x)}function fe(i){let t=0;for(let o,u,f=0,y=i.length,v=y-1;f@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,(o,u,f,y)=>{const v=f||y;return t[u]=!v||v.toLowerCase(),""}),t["max-age"]){const o=parseInt(t["max-age"],10);isNaN(o)?delete t["max-age"]:t["max-age"]=o}return t}let Le,lt,he=null;function Oe(i){if(he==null){const t=i.navigator?i.navigator.userAgent:null;he=!!i.safari||!(!t||!(/\b(iPad|iPhone|iPod)\b/.test(t)||t.match("Safari")&&!t.match("Chrome")))}return he}function $(i){return typeof ImageBitmap<"u"&&i instanceof ImageBitmap}const Ve={now:typeof performance<"u"&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),frame(i){const t=requestAnimationFrame(i);return{cancel:()=>cancelAnimationFrame(t)}},getImageData(i,t=0){const o=window.document.createElement("canvas"),u=o.getContext("2d");if(!u)throw new Error("failed to create canvas 2d context");return o.width=i.width,o.height=i.height,u.drawImage(i,0,0,i.width,i.height),u.getImageData(-t,-t,i.width+2*t,i.height+2*t)},resolveURL:i=>(Le||(Le=document.createElement("a")),Le.href=i,Le.href),hardwareConcurrency:typeof navigator<"u"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return!!matchMedia&&(lt==null&&(lt=matchMedia("(prefers-reduced-motion: reduce)")),lt.matches)}};var et=Xe;function Xe(i,t){this.x=i,this.y=t}Xe.prototype={clone:function(){return new Xe(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,t){return this.clone()._rotateAround(i,t)},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 t=i.x-this.x,o=i.y-this.y;return t*t+o*o},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,t){return Math.atan2(this.x*t-this.y*i,this.x*i+this.y*t)},_matMult:function(i){var t=i[2]*this.x+i[3]*this.y;return this.x=i[0]*this.x+i[1]*this.y,this.y=t,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 t=Math.cos(i),o=Math.sin(i),u=o*this.x+t*this.y;return this.x=t*this.x-o*this.y,this.y=u,this},_rotateAround:function(i,t){var o=Math.cos(i),u=Math.sin(i),f=t.y+u*(this.x-t.x)+o*(this.y-t.y);return this.x=t.x+o*(this.x-t.x)-u*(this.y-t.y),this.y=f,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},Xe.convert=function(i){return i instanceof Xe?i:Array.isArray(i)?new Xe(i[0],i[1]):i};const Ye={MAX_PARALLEL_IMAGE_REQUESTS:16,REGISTERED_PROTOCOLS:{}},Pe="mapbox-tiles";let nt,Ae,Se=500,bt=50;function ut(){typeof caches>"u"||nt||(nt=caches.open(Pe))}let at=1/0;const Lt={supported:!1,testSupport:function(i){!Ut&&$t&&(Nt?on(i):rn=i)}};let rn,$t,Ut=!1,Nt=!1;function on(i){const t=i.createTexture();i.bindTexture(i.TEXTURE_2D,t);try{if(i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,$t),i.isContextLost())return;Lt.supported=!0}catch{}i.deleteTexture(t),Ut=!0}typeof document<"u"&&($t=document.createElement("img"),$t.onload=function(){rn&&on(rn),rn=null,Nt=!0},$t.onerror=function(){Ut=!0,rn=null},$t.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");const sn={Unknown:"Unknown",Style:"Style",Source:"Source",Tile:"Tile",Glyphs:"Glyphs",SpriteImage:"SpriteImage",SpriteJSON:"SpriteJSON",Image:"Image"};typeof Object.freeze=="function"&&Object.freeze(sn);class dn extends Error{constructor(t,o,u,f){super(`AJAXError: ${o} (${t}): ${u}`),this.status=t,this.statusText=o,this.url=u,this.body=f}}const U=be()?()=>self.worker&&self.worker.referrer:()=>(window.location.protocol==="blob:"?window.parent:window).location.href;function He(i,t){const o=new AbortController,u=new Request(i.url,{method:i.method||"GET",body:i.body,credentials:i.credentials,headers:i.headers,referrer:U(),signal:o.signal});let f=!1,y=!1;return i.type==="json"&&u.headers.set("Accept","application/json"),((v,b,E)=>{if(y)return;const I=Date.now();fetch(u).then(B=>B.ok?((V,q,X)=>{(i.type==="arrayBuffer"?V.arrayBuffer():i.type==="json"?V.json():V.text()).then(K=>{y||(q&&X&&function(ce,ue,Ie){if(ut(),!nt)return;const Fe={status:ue.status,statusText:ue.statusText,headers:new Headers};ue.headers.forEach((Re,Qe)=>Fe.headers.set(Qe,Re));const Te=Ce(ue.headers.get("Cache-Control")||"");Te["no-store"]||(Te["max-age"]&&Fe.headers.set("Expires",new Date(Ie+1e3*Te["max-age"]).toUTCString()),new Date(Fe.headers.get("Expires")).getTime()-Ie<42e4||function(Re,Qe){if(Ae===void 0)try{new Response(new ReadableStream),Ae=!0}catch{Ae=!1}Ae?Qe(Re.body):Re.blob().then(Qe)}(ue,Re=>{const Qe=new Response(Re,Fe);ut(),nt&&nt.then(Je=>Je.put(function(Tt){const It=Tt.indexOf("?");return It<0?Tt:Tt.slice(0,It)}(ce.url),Qe)).catch(Je=>ne(Je.message))}))}(u,q,X),f=!0,t(null,K,V.headers.get("Cache-Control"),V.headers.get("Expires")))}).catch(K=>{y||t(new Error(K.message))})})(B,null,I):B.blob().then(V=>t(new dn(B.status,B.statusText,i.url,V)))).catch(B=>{B.code!==20&&t(new Error(B.message))})})(),{cancel:()=>{y=!0,f||o.abort()}}}const Ue=function(i,t){if(/:\/\//.test(i.url)&&!/^https?:|^file:/.test(i.url)){if(be()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",i,t);if(!be()){const u=i.url.substring(0,i.url.indexOf("://"));return(Ye.REGISTERED_PROTOCOLS[u]||He)(i,t)}}if(!(/^file:/.test(o=i.url)||/^file:/.test(U())&&!/^\w+:/.test(o))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return He(i,t);if(be()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",i,t,void 0,!0)}var o;return function(u,f){const y=new XMLHttpRequest;y.open(u.method||"GET",u.url,!0),u.type==="arrayBuffer"&&(y.responseType="arraybuffer");for(const v in u.headers)y.setRequestHeader(v,u.headers[v]);return u.type==="json"&&(y.responseType="text",y.setRequestHeader("Accept","application/json")),y.withCredentials=u.credentials==="include",y.onerror=()=>{f(new Error(y.statusText))},y.onload=()=>{if((y.status>=200&&y.status<300||y.status===0)&&y.response!==null){let v=y.response;if(u.type==="json")try{v=JSON.parse(y.response)}catch(b){return f(b)}f(null,v,y.getResponseHeader("Cache-Control"),y.getResponseHeader("Expires"))}else{const v=new Blob([y.response],{type:y.getResponseHeader("Content-Type")});f(new dn(y.status,y.statusText,u.url,v))}},y.send(u.body),{cancel:()=>y.abort()}}(i,t)},ae=function(i,t){return Ue(W(i,{type:"arrayBuffer"}),t)};function oe(i){const t=window.document.createElement("a");return t.href=i,t.protocol===window.document.location.protocol&&t.host===window.document.location.host}const ge="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";let Ke,tt;Ke=[],tt=0;const Me=function(i,t){if(Lt.supported&&(i.headers||(i.headers={}),i.headers.accept="image/webp,*/*"),tt>=Ye.MAX_PARALLEL_IMAGE_REQUESTS){const y={requestParameters:i,callback:t,cancelled:!1,cancel(){this.cancelled=!0}};return Ke.push(y),y}tt++;let o=!1;const u=()=>{if(!o)for(o=!0,tt--;Ke.length&&tt{u(),y?t(y):v&&function(I,B){typeof createImageBitmap=="function"?function(V,q){const X=new Blob([new Uint8Array(V)],{type:"image/png"});createImageBitmap(X).then(K=>{q(null,K)}).catch(K=>{q(new Error(`Could not load image because of ${K.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`))})}(I,B):function(V,q){const X=new Image;X.onload=()=>{q(null,X),URL.revokeObjectURL(X.src),X.onload=null,window.requestAnimationFrame(()=>{X.src=ge})},X.onerror=()=>q(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 K=new Blob([new Uint8Array(V)],{type:"image/png"});X.src=V.byteLength?URL.createObjectURL(K):ge}(I,B)}(v,(I,B)=>{I!=null?t(I):B!=null&&t(null,B,{cacheControl:b,expires:E})})});return{cancel:()=>{f.cancel(),u()}}};function ct(i,t,o){o[i]&&o[i].indexOf(t)!==-1||(o[i]=o[i]||[],o[i].push(t))}function Ne(i,t,o){if(o&&o[i]){const u=o[i].indexOf(t);u!==-1&&o[i].splice(u,1)}}class je{constructor(t,o={}){W(this,o),this.type=t}}class yt extends je{constructor(t,o={}){super("error",W({error:t},o))}}class Bt{on(t,o){return this._listeners=this._listeners||{},ct(t,o,this._listeners),this}off(t,o){return Ne(t,o,this._listeners),Ne(t,o,this._oneTimeListeners),this}once(t,o){return this._oneTimeListeners=this._oneTimeListeners||{},ct(t,o,this._oneTimeListeners),this}fire(t,o){typeof t=="string"&&(t=new je(t,o||{}));const u=t.type;if(this.listens(u)){t.target=this;const f=this._listeners&&this._listeners[u]?this._listeners[u].slice():[];for(const b of f)b.call(this,t);const y=this._oneTimeListeners&&this._oneTimeListeners[u]?this._oneTimeListeners[u].slice():[];for(const b of y)Ne(u,b,this._oneTimeListeners),b.call(this,t);const v=this._eventedParent;v&&(W(t,typeof this._eventedParentData=="function"?this._eventedParentData():this._eventedParentData),v.fire(t))}else t instanceof yt&&console.error(t.error);return this}listens(t){return this._listeners&&this._listeners[t]&&this._listeners[t].length>0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)}setEventedParent(t,o){return this._eventedParent=t,this._eventedParentData=o,this}}var ke={$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:"string"},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:{}},default:"mapbox"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{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-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},elevationOffset:{type:"number",default:450}},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"}}};class it{constructor(t,o,u,f){this.message=(t?`${t}: `:"")+u,f&&(this.identifier=f),o!=null&&o.__line__&&(this.line=o.__line__)}}function Wn(i){const t=i.value;return t?[new it(i.key,t,"constants have been deprecated as of v8")]:[]}function pn(i,...t){for(const o of t)for(const u in o)i[u]=o[u];return i}function Ht(i){return i instanceof Number||i instanceof String||i instanceof Boolean?i.valueOf():i}function en(i){if(Array.isArray(i))return i.map(en);if(i instanceof Object&&!(i instanceof Number||i instanceof String||i instanceof Boolean)){const t={};for(const o in i)t[o]=en(i[o]);return t}return Ht(i)}class Ln extends Error{constructor(t,o){super(o),this.message=o,this.key=t}}class $n{constructor(t,o=[]){this.parent=t,this.bindings={};for(const[u,f]of o)this.bindings[u]=f}concat(t){return new $n(this,t)}get(t){if(this.bindings[t])return this.bindings[t];if(this.parent)return this.parent.get(t);throw new Error(`${t} not found in scope.`)}has(t){return!!this.bindings[t]||!!this.parent&&this.parent.has(t)}}const Gn={kind:"null"},ht={kind:"number"},qt={kind:"string"},Gt={kind:"boolean"},er={kind:"color"},Sn={kind:"object"},At={kind:"value"},Cn={kind:"collator"},An={kind:"formatted"},cr={kind:"padding"},yn={kind:"resolvedImage"};function Mn(i,t){return{kind:"array",itemType:i,N:t}}function an(i){if(i.kind==="array"){const t=an(i.itemType);return typeof i.N=="number"?`array<${t}, ${i.N}>`:i.itemType.kind==="value"?"array":`array<${t}>`}return i.kind}const mr=[Gn,ht,qt,Gt,er,An,Sn,Mn(At),cr,yn];function Ir(i,t){if(t.kind==="error")return null;if(i.kind==="array"){if(t.kind==="array"&&(t.N===0&&t.itemType.kind==="value"||!Ir(i.itemType,t.itemType))&&(typeof i.N!="number"||i.N===t.N))return null}else{if(i.kind===t.kind)return null;if(i.kind==="value"){for(const o of mr)if(!Ir(o,t))return null}}return`Expected ${an(i)} but found ${an(t)} instead.`}function Jr(i,t){return t.some(o=>o.kind===i.kind)}function di(i,t){return t.some(o=>o==="null"?i===null:o==="array"?Array.isArray(i):o==="object"?i&&!Array.isArray(i)&&typeof i=="object":o===typeof i)}var Si,Bi={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function ee(i){return(i=Math.round(i))<0?0:i>255?255:i}function P(i){return ee(i[i.length-1]==="%"?parseFloat(i)/100*255:parseInt(i))}function j(i){return(t=i[i.length-1]==="%"?parseFloat(i)/100:parseFloat(i))<0?0:t>1?1:t;var t}function J(i,t,o){return o<0?o+=1:o>1&&(o-=1),6*o<1?i+(t-i)*o*6:2*o<1?t:3*o<2?i+(t-i)*(2/3-o)*6:i}try{Si={}.parseCSSColor=function(i){var t,o=i.replace(/ /g,"").toLowerCase();if(o in Bi)return Bi[o].slice();if(o[0]==="#")return o.length===4?(t=parseInt(o.substr(1),16))>=0&&t<=4095?[(3840&t)>>4|(3840&t)>>8,240&t|(240&t)>>4,15&t|(15&t)<<4,1]:null:o.length===7&&(t=parseInt(o.substr(1),16))>=0&&t<=16777215?[(16711680&t)>>16,(65280&t)>>8,255&t,1]:null;var u=o.indexOf("("),f=o.indexOf(")");if(u!==-1&&f+1===o.length){var y=o.substr(0,u),v=o.substr(u+1,f-(u+1)).split(","),b=1;switch(y){case"rgba":if(v.length!==4)return null;b=j(v.pop());case"rgb":return v.length!==3?null:[P(v[0]),P(v[1]),P(v[2]),b];case"hsla":if(v.length!==4)return null;b=j(v.pop());case"hsl":if(v.length!==3)return null;var E=(parseFloat(v[0])%360+360)%360/360,I=j(v[1]),B=j(v[2]),V=B<=.5?B*(I+1):B+I-B*I,q=2*B-V;return[ee(255*J(q,V,E+1/3)),ee(255*J(q,V,E)),ee(255*J(q,V,E-1/3)),b];default:return null}}return null}}catch{}class Q{constructor(t,o,u,f=1){this.r=t,this.g=o,this.b=u,this.a=f}static parse(t){if(!t)return;if(t instanceof Q)return t;if(typeof t!="string")return;const o=Si(t);return o?new Q(o[0]/255*o[3],o[1]/255*o[3],o[2]/255*o[3],o[3]):void 0}toString(){const[t,o,u,f]=this.toArray();return`rgba(${Math.round(t)},${Math.round(o)},${Math.round(u)},${f})`}toArray(){const{r:t,g:o,b:u,a:f}=this;return f===0?[0,0,0,0]:[255*t/f,255*o/f,255*u/f,f]}}Q.black=new Q(0,0,0,1),Q.white=new Q(1,1,1,1),Q.transparent=new Q(0,0,0,0),Q.red=new Q(1,0,0,1);class de{constructor(t,o,u){this.sensitivity=t?o?"variant":"case":o?"accent":"base",this.locale=u,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(t,o){return this.collator.compare(t,o)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class xe{constructor(t,o,u,f,y){this.text=t,this.image=o,this.scale=u,this.fontStack=f,this.textColor=y}}class me{constructor(t){this.sections=t}static fromString(t){return new me([new xe(t,null,null,null,null)])}isEmpty(){return this.sections.length===0||!this.sections.some(t=>t.text.length!==0||t.image&&t.image.name.length!==0)}static factory(t){return t instanceof me?t:me.fromString(t)}toString(){return this.sections.length===0?"":this.sections.map(t=>t.text).join("")}}class pe{constructor(t){this.values=t.slice()}static parse(t){if(t instanceof pe)return t;if(typeof t=="number")return new pe([t,t,t,t]);if(Array.isArray(t)&&!(t.length<1||t.length>4)){for(const o of t)if(typeof o!="number")return;switch(t.length){case 1:t=[t[0],t[0],t[0],t[0]];break;case 2:t=[t[0],t[1],t[0],t[1]];break;case 3:t=[t[0],t[1],t[2],t[1]]}return new pe(t)}}toString(){return JSON.stringify(this.values)}}class we{constructor(t){this.name=t.name,this.available=t.available}toString(){return this.name}static fromString(t){return t?new we({name:t,available:!1}):null}}function Ge(i,t,o,u){return typeof i=="number"&&i>=0&&i<=255&&typeof t=="number"&&t>=0&&t<=255&&typeof o=="number"&&o>=0&&o<=255?u===void 0||typeof u=="number"&&u>=0&&u<=1?null:`Invalid rgba value [${[i,t,o,u].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof u=="number"?[i,t,o,u]:[i,t,o]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function rt(i){if(i===null||typeof i=="string"||typeof i=="boolean"||typeof i=="number"||i instanceof Q||i instanceof de||i instanceof me||i instanceof pe||i instanceof we)return!0;if(Array.isArray(i)){for(const t of i)if(!rt(t))return!1;return!0}if(typeof i=="object"){for(const t in i)if(!rt(i[t]))return!1;return!0}return!1}function $e(i){if(i===null)return Gn;if(typeof i=="string")return qt;if(typeof i=="boolean")return Gt;if(typeof i=="number")return ht;if(i instanceof Q)return er;if(i instanceof de)return Cn;if(i instanceof me)return An;if(i instanceof pe)return cr;if(i instanceof we)return yn;if(Array.isArray(i)){const t=i.length;let o;for(const u of i){const f=$e(u);if(o){if(o===f)continue;o=At;break}o=f}return Mn(o||At,t)}return Sn}function Ct(i){const t=typeof i;return i===null?"":t==="string"||t==="number"||t==="boolean"?String(i):i instanceof Q||i instanceof me||i instanceof pe||i instanceof we?i.toString():JSON.stringify(i)}class zt{constructor(t,o){this.type=t,this.value=o}static parse(t,o){if(t.length!==2)return o.error(`'literal' expression requires exactly one argument, but found ${t.length-1} instead.`);if(!rt(t[1]))return o.error("invalid value");const u=t[1];let f=$e(u);const y=o.expectedType;return f.kind!=="array"||f.N!==0||!y||y.kind!=="array"||typeof y.N=="number"&&y.N!==0||(f=y),new zt(f,u)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}class wt{constructor(t){this.name="ExpressionEvaluationError",this.message=t}toJSON(){return this.message}}const Vt={string:qt,number:ht,boolean:Gt,object:Sn};class Zt{constructor(t,o){this.type=t,this.args=o}static parse(t,o){if(t.length<2)return o.error("Expected at least one argument.");let u,f=1;const y=t[0];if(y==="array"){let b,E;if(t.length>2){const I=t[1];if(typeof I!="string"||!(I in Vt)||I==="object")return o.error('The item type argument of "array" must be one of string, number, boolean',1);b=Vt[I],f++}else b=At;if(t.length>3){if(t[2]!==null&&(typeof t[2]!="number"||t[2]<0||t[2]!==Math.floor(t[2])))return o.error('The length argument to "array" must be a positive integer literal',2);E=t[2],f++}u=Mn(b,E)}else{if(!Vt[y])throw new Error(`Types doesn't contain name = ${y}`);u=Vt[y]}const v=[];for(;ft.outputDefined())}}const un={"to-boolean":Gt,"to-color":er,"to-number":ht,"to-string":qt};class Wt{constructor(t,o){this.type=t,this.args=o}static parse(t,o){if(t.length<2)return o.error("Expected at least one argument.");const u=t[0];if(!un[u])throw new Error(`Can't parse ${u} as it is not part of the known types`);if((u==="to-boolean"||u==="to-string")&&t.length!==2)return o.error("Expected one argument.");const f=un[u],y=[];for(let v=1;v4?`Invalid rbga value ${JSON.stringify(o)}: expected an array containing either three or four numeric values.`:Ge(o[0],o[1],o[2],o[3]),!u))return new Q(o[0]/255,o[1]/255,o[2]/255,o[3])}throw new wt(u||`Could not parse color from value '${typeof o=="string"?o:JSON.stringify(o)}'`)}if(this.type.kind==="padding"){let o;for(const u of this.args){o=u.evaluate(t);const f=pe.parse(o);if(f)return f}throw new wt(`Could not parse padding from value '${typeof o=="string"?o:JSON.stringify(o)}'`)}if(this.type.kind==="number"){let o=null;for(const u of this.args){if(o=u.evaluate(t),o===null)return 0;const f=Number(o);if(!isNaN(f))return f}throw new wt(`Could not convert ${JSON.stringify(o)} to number.`)}return this.type.kind==="formatted"?me.fromString(Ct(this.args[0].evaluate(t))):this.type.kind==="resolvedImage"?we.fromString(Ct(this.args[0].evaluate(t))):Ct(this.args[0].evaluate(t))}eachChild(t){this.args.forEach(t)}outputDefined(){return this.args.every(t=>t.outputDefined())}}const Kt=["Unknown","Point","LineString","Polygon"];class cn{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"?Kt[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(t){let o=this._parseColorCache[t];return o||(o=this._parseColorCache[t]=Q.parse(t)),o}}class En{constructor(t,o,u,f){this.name=t,this.type=o,this._evaluate=u,this.args=f}evaluate(t){return this._evaluate(t,this.args)}eachChild(t){this.args.forEach(t)}outputDefined(){return!1}static parse(t,o){const u=t[0],f=En.definitions[u];if(!f)return o.error(`Unknown expression "${u}". If you wanted a literal array, use ["literal", [...]].`,0);const y=Array.isArray(f)?f[0]:f.type,v=Array.isArray(f)?[[f[1],f[2]]]:f.overloads,b=v.filter(([I])=>!Array.isArray(I)||I.length===t.length-1);let E=null;for(const[I,B]of b){E=new ss(o.registry,o.path,null,o.scope);const V=[];let q=!1;for(let X=1;X{return q=V,Array.isArray(q)?`(${q.map(an).join(", ")})`:`(${an(q.type)}...)`;var q}).join(" | "),B=[];for(let V=1;V=t[2]||i[1]<=t[1]||i[3]>=t[3])}function Zs(i,t){const o=(180+i[0])/360,u=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+i[1]*Math.PI/360)))/360,f=Math.pow(2,t.z);return[Math.round(o*f*Bn),Math.round(u*f*Bn)]}function Tn(i,t,o){const u=i[0]-t[0],f=i[1]-t[1],y=i[0]-o[0],v=i[1]-o[1];return u*v-y*f==0&&u*y<=0&&f*v<=0}function Ql(i,t){let o=!1;for(let v=0,b=t.length;v(u=i)[1]!=(y=E[I+1])[1]>u[1]&&u[0]<(y[0]-f[0])*(u[1]-f[1])/(y[1]-f[1])+f[0]&&(o=!o)}}var u,f,y;return o}function eu(i,t){for(let o=0;o0&&b<0||v<0&&b>0}function Jc(i,t,o){for(const I of o)for(let B=0;Bo[2]){const f=.5*u;let y=i[0]-o[0]>f?-u:o[0]-i[0]>f?u:0;y===0&&(y=i[0]-o[2]>f?-u:o[2]-i[0]>f?u:0),i[0]+=y}Ar(t,i)}function eh(i,t,o,u){const f=Math.pow(2,u.z)*Bn,y=[u.x*Bn,u.y*Bn],v=[];for(const b of i)for(const E of b){const I=[E.x+y[0],E.y+y[1]];Qc(I,t,o,f),v.push(I)}return v}function th(i,t,o,u){const f=Math.pow(2,u.z)*Bn,y=[u.x*Bn,u.y*Bn],v=[];for(const E of i){const I=[];for(const B of E){const V=[B.x+y[0],B.y+y[1]];Ar(t,V),I.push(V)}v.push(I)}if(t[2]-t[0]<=f/2){(b=t)[0]=b[1]=1/0,b[2]=b[3]=-1/0;for(const E of v)for(const I of E)Qc(I,t,o,f)}var b;return v}class Mo{constructor(t,o){this.type=Gt,this.geojson=t,this.geometries=o}static parse(t,o){if(t.length!==2)return o.error(`'within' expression requires exactly one argument, but found ${t.length-1} instead.`);if(rt(t[1])){const u=t[1];if(u.type==="FeatureCollection")for(let f=0;f{t&&!qs(o)&&(t=!1)}),t}function os(i){if(i instanceof En&&i.name==="feature-state")return!1;let t=!0;return i.eachChild(o=>{t&&!os(o)&&(t=!1)}),t}function Oa(i,t){if(i instanceof En&&t.indexOf(i.name)>=0)return!1;let o=!0;return i.eachChild(u=>{o&&!Oa(u,t)&&(o=!1)}),o}class Na{constructor(t,o){this.type=o.type,this.name=t,this.boundExpression=o}static parse(t,o){if(t.length!==2||typeof t[1]!="string")return o.error("'var' expression requires exactly one string literal argument.");const u=t[1];return o.scope.has(u)?new Na(u,o.scope.get(u)):o.error(`Unknown variable "${u}". Make sure "${u}" has been bound in an enclosing "let" expression before using it.`,1)}evaluate(t){return this.boundExpression.evaluate(t)}eachChild(){}outputDefined(){return!1}}class ss{constructor(t,o=[],u,f=new $n,y=[]){this.registry=t,this.path=o,this.key=o.map(v=>`[${v}]`).join(""),this.scope=f,this.errors=y,this.expectedType=u}parse(t,o,u,f,y={}){return o?this.concat(o,u,f)._parse(t,y):this._parse(t,y)}_parse(t,o){function u(f,y,v){return v==="assert"?new Zt(y,[f]):v==="coerce"?new Wt(y,[f]):f}if(t!==null&&typeof t!="string"&&typeof t!="boolean"&&typeof t!="number"||(t=["literal",t]),Array.isArray(t)){if(t.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');const f=t[0];if(typeof f!="string")return this.error(`Expression name must be a string, but found ${typeof f} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;const y=this.registry[f];if(y){let v=y.parse(t,this);if(!v)return null;if(this.expectedType){const b=this.expectedType,E=v.type;if(b.kind!=="string"&&b.kind!=="number"&&b.kind!=="boolean"&&b.kind!=="object"&&b.kind!=="array"||E.kind!=="value")if(b.kind!=="color"&&b.kind!=="formatted"&&b.kind!=="resolvedImage"||E.kind!=="value"&&E.kind!=="string")if(b.kind!=="padding"||E.kind!=="value"&&E.kind!=="number"&&E.kind!=="array"){if(this.checkSubtype(b,E))return null}else v=u(v,b,o.typeAnnotation||"coerce");else v=u(v,b,o.typeAnnotation||"coerce");else v=u(v,b,o.typeAnnotation||"assert")}if(!(v instanceof zt)&&v.type.kind!=="resolvedImage"&&ru(v)){const b=new cn;try{v=new zt(v.type,v.evaluate(b))}catch(E){return this.error(E.message),null}}return v}return this.error(`Unknown expression "${f}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(t===void 0?"'undefined' value invalid. Use null instead.":typeof t=="object"?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof t} instead.`)}concat(t,o,u){const f=typeof t=="number"?this.path.concat(t):this.path,y=u?this.scope.concat(u):this.scope;return new ss(this.registry,f,o||null,y,this.errors)}error(t,...o){const u=`${this.key}${o.map(f=>`[${f}]`).join("")}`;this.errors.push(new Ln(u,t))}checkSubtype(t,o){const u=Ir(t,o);return u&&this.error(u),u}}function ru(i){if(i instanceof Na)return ru(i.boundExpression);if(i instanceof En&&i.name==="error"||i instanceof gr||i instanceof Mo)return!1;const t=i instanceof Wt||i instanceof Zt;let o=!0;return i.eachChild(u=>{o=t?o&&ru(u):o&&u instanceof zt}),!!o&&qs(i)&&Oa(i,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"])}function Ua(i,t){const o=i.length-1;let u,f,y=0,v=o,b=0;for(;y<=v;)if(b=Math.floor((y+v)/2),u=i[b],f=i[b+1],u<=t){if(b===o||tt))throw new wt("Input is not a number.");v=b-1}return 0}class Ws{constructor(t,o,u){this.type=t,this.input=o,this.labels=[],this.outputs=[];for(const[f,y]of u)this.labels.push(f),this.outputs.push(y)}static parse(t,o){if(t.length-1<4)return o.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return o.error("Expected an even number of arguments.");const u=o.parse(t[1],1,ht);if(!u)return null;const f=[];let y=null;o.expectedType&&o.expectedType.kind!=="value"&&(y=o.expectedType);for(let v=1;v=b)return o.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',I);const V=o.parse(E,B,y);if(!V)return null;y=y||V.type,f.push([b,V])}return new Ws(y,u,f)}evaluate(t){const o=this.labels,u=this.outputs;if(o.length===1)return u[0].evaluate(t);const f=this.input.evaluate(t);if(f<=o[0])return u[0].evaluate(t);const y=o.length;return f>=o[y-1]?u[y-1].evaluate(t):u[Ua(o,f)].evaluate(t)}eachChild(t){t(this.input);for(const o of this.outputs)t(o)}outputDefined(){return this.outputs.every(t=>t.outputDefined())}}function Fn(i,t,o){return i*(1-o)+t*o}var Hs=Object.freeze({__proto__:null,number:Fn,color:function(i,t,o){return new Q(Fn(i.r,t.r,o),Fn(i.g,t.g,o),Fn(i.b,t.b,o),Fn(i.a,t.a,o))},array:function(i,t,o){return i.map((u,f)=>Fn(u,t[f],o))},padding:function(i,t,o){const u=i.values,f=t.values;return new pe([Fn(u[0],f[0],o),Fn(u[1],f[1],o),Fn(u[2],f[2],o),Fn(u[3],f[3],o)])}});const nh=.95047,rh=1.08883,iu=4/29,Va=6/29,ih=3*Va*Va,jp=Math.PI/180,$p=180/Math.PI;function ou(i){return i>.008856451679035631?Math.pow(i,1/3):i/ih+iu}function su(i){return i>Va?i*i*i:ih*(i-iu)}function au(i){return 255*(i<=.0031308?12.92*i:1.055*Math.pow(i,1/2.4)-.055)}function lu(i){return(i/=255)<=.04045?i/12.92:Math.pow((i+.055)/1.055,2.4)}function mn(i){const t=lu(i.r),o=lu(i.g),u=lu(i.b),f=ou((.4124564*t+.3575761*o+.1804375*u)/nh),y=ou((.2126729*t+.7151522*o+.072175*u)/1);return{l:116*y-16,a:500*(f-y),b:200*(y-ou((.0193339*t+.119192*o+.9503041*u)/rh)),alpha:i.a}}function oh(i){let t=(i.l+16)/116,o=isNaN(i.a)?t:t+i.a/500,u=isNaN(i.b)?t:t-i.b/200;return t=1*su(t),o=nh*su(o),u=rh*su(u),new Q(au(3.2404542*o-1.5371385*t-.4985314*u),au(-.969266*o+1.8760108*t+.041556*u),au(.0556434*o-.2040259*t+1.0572252*u),i.alpha)}function Gp(i,t,o){const u=t-i;return i+o*(u>180||u<-180?u-360*Math.round(u/360):u)}const Xs={forward:mn,reverse:oh,interpolate:function(i,t,o){return{l:Fn(i.l,t.l,o),a:Fn(i.a,t.a,o),b:Fn(i.b,t.b,o),alpha:Fn(i.alpha,t.alpha,o)}}},Ks={forward:function(i){const{l:t,a:o,b:u}=mn(i),f=Math.atan2(u,o)*$p;return{h:f<0?f+360:f,c:Math.sqrt(o*o+u*u),l:t,alpha:i.a}},reverse:function(i){const t=i.h*jp,o=i.c;return oh({l:i.l,a:Math.cos(t)*o,b:Math.sin(t)*o,alpha:i.alpha})},interpolate:function(i,t,o){return{h:Gp(i.h,t.h,o),c:Fn(i.c,t.c,o),l:Fn(i.l,t.l,o),alpha:Fn(i.alpha,t.alpha,o)}}};var sh=Object.freeze({__proto__:null,lab:Xs,hcl:Ks});class Qr{constructor(t,o,u,f,y){this.type=t,this.operator=o,this.interpolation=u,this.input=f,this.labels=[],this.outputs=[];for(const[v,b]of y)this.labels.push(v),this.outputs.push(b)}static interpolationFactor(t,o,u,f){let y=0;if(t.name==="exponential")y=uu(o,t.base,u,f);else if(t.name==="linear")y=uu(o,1,u,f);else if(t.name==="cubic-bezier"){const v=t.controlPoints;y=new S(v[0],v[1],v[2],v[3]).solve(uu(o,1,u,f))}return y}static parse(t,o){let[u,f,y,...v]=t;if(!Array.isArray(f)||f.length===0)return o.error("Expected an interpolation type expression.",1);if(f[0]==="linear")f={name:"linear"};else if(f[0]==="exponential"){const I=f[1];if(typeof I!="number")return o.error("Exponential interpolation requires a numeric base.",1,1);f={name:"exponential",base:I}}else{if(f[0]!=="cubic-bezier")return o.error(`Unknown interpolation type ${String(f[0])}`,1,0);{const I=f.slice(1);if(I.length!==4||I.some(B=>typeof B!="number"||B<0||B>1))return o.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);f={name:"cubic-bezier",controlPoints:I}}}if(t.length-1<4)return o.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return o.error("Expected an even number of arguments.");if(y=o.parse(y,2,ht),!y)return null;const b=[];let E=null;u==="interpolate-hcl"||u==="interpolate-lab"?E=er:o.expectedType&&o.expectedType.kind!=="value"&&(E=o.expectedType);for(let I=0;I=B)return o.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',q);const K=o.parse(V,X,E);if(!K)return null;E=E||K.type,b.push([B,K])}return E.kind==="number"||E.kind==="color"||E.kind==="padding"||E.kind==="array"&&E.itemType.kind==="number"&&typeof E.N=="number"?new Qr(E,u,f,y,b):o.error(`Type ${an(E)} is not interpolatable.`)}evaluate(t){const o=this.labels,u=this.outputs;if(o.length===1)return u[0].evaluate(t);const f=this.input.evaluate(t);if(f<=o[0])return u[0].evaluate(t);const y=o.length;if(f>=o[y-1])return u[y-1].evaluate(t);const v=Ua(o,f),b=Qr.interpolationFactor(this.interpolation,f,o[v],o[v+1]),E=u[v].evaluate(t),I=u[v+1].evaluate(t);return this.operator==="interpolate"?Hs[this.type.kind.toLowerCase()](E,I,b):this.operator==="interpolate-hcl"?Ks.reverse(Ks.interpolate(Ks.forward(E),Ks.forward(I),b)):Xs.reverse(Xs.interpolate(Xs.forward(E),Xs.forward(I),b))}eachChild(t){t(this.input);for(const o of this.outputs)t(o)}outputDefined(){return this.outputs.every(t=>t.outputDefined())}}function uu(i,t,o,u){const f=u-o,y=i-o;return f===0?0:t===1?y/f:(Math.pow(t,y)-1)/(Math.pow(t,f)-1)}class ja{constructor(t,o){this.type=t,this.args=o}static parse(t,o){if(t.length<2)return o.error("Expectected at least one argument.");let u=null;const f=o.expectedType;f&&f.kind!=="value"&&(u=f);const y=[];for(const b of t.slice(1)){const E=o.parse(b,1+y.length,u,void 0,{typeAnnotation:"omit"});if(!E)return null;u=u||E.type,y.push(E)}if(!u)throw new Error("No output type");const v=f&&y.some(b=>Ir(f,b.type));return new ja(v?At:u,y)}evaluate(t){let o,u=null,f=0;for(const y of this.args)if(f++,u=y.evaluate(t),u&&u instanceof we&&!u.available&&(o||(o=u.name),u=null,f===this.args.length&&(u=o)),u!==null)break;return u}eachChild(t){this.args.forEach(t)}outputDefined(){return this.args.every(t=>t.outputDefined())}}class $a{constructor(t,o){this.type=o.type,this.bindings=[].concat(t),this.result=o}evaluate(t){return this.result.evaluate(t)}eachChild(t){for(const o of this.bindings)t(o[1]);t(this.result)}static parse(t,o){if(t.length<4)return o.error(`Expected at least 3 arguments, but found ${t.length-1} instead.`);const u=[];for(let y=1;y=u.length)throw new wt(`Array index out of bounds: ${o} > ${u.length-1}.`);if(o!==Math.floor(o))throw new wt(`Array index must be an integer, but found ${o} instead.`);return u[o]}eachChild(t){t(this.index),t(this.input)}outputDefined(){return!1}}class hu{constructor(t,o){this.type=Gt,this.needle=t,this.haystack=o}static parse(t,o){if(t.length!==3)return o.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const u=o.parse(t[1],1,At),f=o.parse(t[2],2,At);return u&&f?Jr(u.type,[Gt,qt,ht,Gn,At])?new hu(u,f):o.error(`Expected first argument to be of type boolean, string, number or null, but found ${an(u.type)} instead`):null}evaluate(t){const o=this.needle.evaluate(t),u=this.haystack.evaluate(t);if(!u)return!1;if(!di(o,["boolean","string","number","null"]))throw new wt(`Expected first argument to be of type boolean, string, number or null, but found ${an($e(o))} instead.`);if(!di(u,["string","array"]))throw new wt(`Expected second argument to be of type array or string, but found ${an($e(u))} instead.`);return u.indexOf(o)>=0}eachChild(t){t(this.needle),t(this.haystack)}outputDefined(){return!0}}class Ga{constructor(t,o,u){this.type=ht,this.needle=t,this.haystack=o,this.fromIndex=u}static parse(t,o){if(t.length<=2||t.length>=5)return o.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const u=o.parse(t[1],1,At),f=o.parse(t[2],2,At);if(!u||!f)return null;if(!Jr(u.type,[Gt,qt,ht,Gn,At]))return o.error(`Expected first argument to be of type boolean, string, number or null, but found ${an(u.type)} instead`);if(t.length===4){const y=o.parse(t[3],3,ht);return y?new Ga(u,f,y):null}return new Ga(u,f)}evaluate(t){const o=this.needle.evaluate(t),u=this.haystack.evaluate(t);if(!di(o,["boolean","string","number","null"]))throw new wt(`Expected first argument to be of type boolean, string, number or null, but found ${an($e(o))} instead.`);if(!di(u,["string","array"]))throw new wt(`Expected second argument to be of type array or string, but found ${an($e(u))} instead.`);if(this.fromIndex){const f=this.fromIndex.evaluate(t);return u.indexOf(o,f)}return u.indexOf(o)}eachChild(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex)}outputDefined(){return!1}}class du{constructor(t,o,u,f,y,v){this.inputType=t,this.type=o,this.input=u,this.cases=f,this.outputs=y,this.otherwise=v}static parse(t,o){if(t.length<5)return o.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if(t.length%2!=1)return o.error("Expected an even number of arguments.");let u,f;o.expectedType&&o.expectedType.kind!=="value"&&(f=o.expectedType);const y={},v=[];for(let I=2;INumber.MAX_SAFE_INTEGER)return q.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof K=="number"&&Math.floor(K)!==K)return q.error("Numeric branch labels must be integer values.");if(u){if(q.checkSubtype(u,$e(K)))return null}else u=$e(K);if(y[String(K)]!==void 0)return q.error("Branch labels must be unique.");y[String(K)]=v.length}const X=o.parse(V,I,f);if(!X)return null;f=f||X.type,v.push(X)}const b=o.parse(t[1],1,At);if(!b)return null;const E=o.parse(t[t.length-1],t.length-1,f);return E?b.type.kind!=="value"&&o.concat(1).checkSubtype(u,b.type)?null:new du(u,f,b,y,v,E):null}evaluate(t){const o=this.input.evaluate(t);return($e(o)===this.inputType&&this.outputs[this.cases[o]]||this.otherwise).evaluate(t)}eachChild(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)}outputDefined(){return this.outputs.every(t=>t.outputDefined())&&this.otherwise.outputDefined()}}class pu{constructor(t,o,u){this.type=t,this.branches=o,this.otherwise=u}static parse(t,o){if(t.length<4)return o.error(`Expected at least 3 arguments, but found only ${t.length-1}.`);if(t.length%2!=0)return o.error("Expected an odd number of arguments.");let u;o.expectedType&&o.expectedType.kind!=="value"&&(u=o.expectedType);const f=[];for(let v=1;vo.outputDefined())&&this.otherwise.outputDefined()}}class Za{constructor(t,o,u,f){this.type=t,this.input=o,this.beginIndex=u,this.endIndex=f}static parse(t,o){if(t.length<=2||t.length>=5)return o.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const u=o.parse(t[1],1,At),f=o.parse(t[2],2,ht);if(!u||!f)return null;if(!Jr(u.type,[Mn(At),qt,At]))return o.error(`Expected first argument to be of type array or string, but found ${an(u.type)} instead`);if(t.length===4){const y=o.parse(t[3],3,ht);return y?new Za(u.type,u,f,y):null}return new Za(u.type,u,f)}evaluate(t){const o=this.input.evaluate(t),u=this.beginIndex.evaluate(t);if(!di(o,["string","array"]))throw new wt(`Expected first argument to be of type array or string, but found ${an($e(o))} instead.`);if(this.endIndex){const f=this.endIndex.evaluate(t);return o.slice(u,f)}return o.slice(u)}eachChild(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex)}outputDefined(){return!1}}function ah(i,t){return i==="=="||i==="!="?t.kind==="boolean"||t.kind==="string"||t.kind==="number"||t.kind==="null"||t.kind==="value":t.kind==="string"||t.kind==="number"||t.kind==="value"}function lh(i,t,o,u){return u.compare(t,o)===0}function as(i,t,o){const u=i!=="=="&&i!=="!=";return class aw{constructor(y,v,b){this.type=Gt,this.lhs=y,this.rhs=v,this.collator=b,this.hasUntypedArgument=y.type.kind==="value"||v.type.kind==="value"}static parse(y,v){if(y.length!==3&&y.length!==4)return v.error("Expected two or three arguments.");const b=y[0];let E=v.parse(y[1],1,At);if(!E)return null;if(!ah(b,E.type))return v.concat(1).error(`"${b}" comparisons are not supported for type '${an(E.type)}'.`);let I=v.parse(y[2],2,At);if(!I)return null;if(!ah(b,I.type))return v.concat(2).error(`"${b}" comparisons are not supported for type '${an(I.type)}'.`);if(E.type.kind!==I.type.kind&&E.type.kind!=="value"&&I.type.kind!=="value")return v.error(`Cannot compare types '${an(E.type)}' and '${an(I.type)}'.`);u&&(E.type.kind==="value"&&I.type.kind!=="value"?E=new Zt(I.type,[E]):E.type.kind!=="value"&&I.type.kind==="value"&&(I=new Zt(E.type,[I])));let B=null;if(y.length===4){if(E.type.kind!=="string"&&I.type.kind!=="string"&&E.type.kind!=="value"&&I.type.kind!=="value")return v.error("Cannot use collator to compare non-string types.");if(B=v.parse(y[3],3,Cn),!B)return null}return new aw(E,I,B)}evaluate(y){const v=this.lhs.evaluate(y),b=this.rhs.evaluate(y);if(u&&this.hasUntypedArgument){const E=$e(v),I=$e(b);if(E.kind!==I.kind||E.kind!=="string"&&E.kind!=="number")throw new wt(`Expected arguments for "${i}" to be (string, string) or (number, number), but found (${E.kind}, ${I.kind}) instead.`)}if(this.collator&&!u&&this.hasUntypedArgument){const E=$e(v),I=$e(b);if(E.kind!=="string"||I.kind!=="string")return t(y,v,b)}return this.collator?o(y,v,b,this.collator.evaluate(y)):t(y,v,b)}eachChild(y){y(this.lhs),y(this.rhs),this.collator&&y(this.collator)}outputDefined(){return!0}}}const Zp=as("==",function(i,t,o){return t===o},lh),qp=as("!=",function(i,t,o){return t!==o},function(i,t,o,u){return!lh(0,t,o,u)}),Wp=as("<",function(i,t,o){return t",function(i,t,o){return t>o},function(i,t,o,u){return u.compare(t,o)>0}),Xp=as("<=",function(i,t,o){return t<=o},function(i,t,o,u){return u.compare(t,o)<=0}),Kp=as(">=",function(i,t,o){return t>=o},function(i,t,o,u){return u.compare(t,o)>=0});class fu{constructor(t,o,u,f,y){this.type=qt,this.number=t,this.locale=o,this.currency=u,this.minFractionDigits=f,this.maxFractionDigits=y}static parse(t,o){if(t.length!==3)return o.error("Expected two arguments.");const u=o.parse(t[1],1,ht);if(!u)return null;const f=t[2];if(typeof f!="object"||Array.isArray(f))return o.error("NumberFormat options argument must be an object.");let y=null;if(f.locale&&(y=o.parse(f.locale,1,qt),!y))return null;let v=null;if(f.currency&&(v=o.parse(f.currency,1,qt),!v))return null;let b=null;if(f["min-fraction-digits"]&&(b=o.parse(f["min-fraction-digits"],1,ht),!b))return null;let E=null;return f["max-fraction-digits"]&&(E=o.parse(f["max-fraction-digits"],1,ht),!E)?null:new fu(u,y,v,b,E)}evaluate(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))}eachChild(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits)}outputDefined(){return!1}}class qa{constructor(t){this.type=An,this.sections=t}static parse(t,o){if(t.length<2)return o.error("Expected at least one argument.");const u=t[1];if(!Array.isArray(u)&&typeof u=="object")return o.error("First argument must be an image or text section.");const f=[];let y=!1;for(let v=1;v<=t.length-1;++v){const b=t[v];if(y&&typeof b=="object"&&!Array.isArray(b)){y=!1;let E=null;if(b["font-scale"]&&(E=o.parse(b["font-scale"],1,ht),!E))return null;let I=null;if(b["text-font"]&&(I=o.parse(b["text-font"],1,Mn(qt)),!I))return null;let B=null;if(b["text-color"]&&(B=o.parse(b["text-color"],1,er),!B))return null;const V=f[f.length-1];V.scale=E,V.font=I,V.textColor=B}else{const E=o.parse(t[v],1,At);if(!E)return null;const I=E.type.kind;if(I!=="string"&&I!=="value"&&I!=="null"&&I!=="resolvedImage")return o.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");y=!0,f.push({content:E,scale:null,font:null,textColor:null})}}return new qa(f)}evaluate(t){return new me(this.sections.map(o=>{const u=o.content.evaluate(t);return $e(u)===yn?new xe("",u,null,null,null):new xe(Ct(u),null,o.scale?o.scale.evaluate(t):null,o.font?o.font.evaluate(t).join(","):null,o.textColor?o.textColor.evaluate(t):null)}))}eachChild(t){for(const o of this.sections)t(o.content),o.scale&&t(o.scale),o.font&&t(o.font),o.textColor&&t(o.textColor)}outputDefined(){return!1}}class mu{constructor(t){this.type=yn,this.input=t}static parse(t,o){if(t.length!==2)return o.error("Expected two arguments.");const u=o.parse(t[1],1,qt);return u?new mu(u):o.error("No image name provided.")}evaluate(t){const o=this.input.evaluate(t),u=we.fromString(o);return u&&t.availableImages&&(u.available=t.availableImages.indexOf(o)>-1),u}eachChild(t){t(this.input)}outputDefined(){return!1}}class gu{constructor(t){this.type=ht,this.input=t}static parse(t,o){if(t.length!==2)return o.error(`Expected 1 argument, but found ${t.length-1} instead.`);const u=o.parse(t[1],1);return u?u.type.kind!=="array"&&u.type.kind!=="string"&&u.type.kind!=="value"?o.error(`Expected argument of type string or array, but found ${an(u.type)} instead.`):new gu(u):null}evaluate(t){const o=this.input.evaluate(t);if(typeof o=="string"||Array.isArray(o))return o.length;throw new wt(`Expected value to be of type string or array, but found ${an($e(o))} instead.`)}eachChild(t){t(this.input)}outputDefined(){return!1}}const ls={"==":Zp,"!=":qp,">":Hp,"<":Wp,">=":Kp,"<=":Xp,array:Zt,at:cu,boolean:Zt,case:pu,coalesce:ja,collator:gr,format:qa,image:mu,in:hu,"index-of":Ga,interpolate:Qr,"interpolate-hcl":Qr,"interpolate-lab":Qr,length:gu,let:$a,literal:zt,match:du,number:Zt,"number-format":fu,object:Zt,slice:Za,step:Ws,string:Zt,"to-boolean":Wt,"to-color":Wt,"to-number":Wt,"to-string":Wt,var:Na,within:Mo};function uh(i,[t,o,u,f]){t=t.evaluate(i),o=o.evaluate(i),u=u.evaluate(i);const y=f?f.evaluate(i):1,v=Ge(t,o,u,y);if(v)throw new wt(v);return new Q(t/255*y,o/255*y,u/255*y,y)}function ch(i,t){return i in t}function Wa(i,t){const o=t[i];return o===void 0?null:o}function Do(i){return{type:i}}function hh(i){return{result:"success",value:i}}function us(i){return{result:"error",value:i}}function Dn(i){return i["property-type"]==="data-driven"||i["property-type"]==="cross-faded-data-driven"}function dh(i){return!!i.expression&&i.expression.parameters.indexOf("zoom")>-1}function nn(i){return!!i.expression&&i.expression.interpolated}function gn(i){return i instanceof Number?"number":i instanceof String?"string":i instanceof Boolean?"boolean":Array.isArray(i)?"array":i===null?"null":typeof i}function zn(i){return typeof i=="object"&&i!==null&&!Array.isArray(i)}function On(i){return i}function Ys(i,t){const o=t.type==="color",u=i.stops&&typeof i.stops[0][0]=="object",f=u||!(u||i.property!==void 0),y=i.type||(nn(t)?"exponential":"interval");if(o||t.type==="padding"){const I=o?Q.parse:pe.parse;(i=pn({},i)).stops&&(i.stops=i.stops.map(B=>[B[0],I(B[1])])),i.default=I(i.default?i.default:t.default)}if(i.colorSpace&&i.colorSpace!=="rgb"&&!sh[i.colorSpace])throw new Error(`Unknown color space: ${i.colorSpace}`);let v,b,E;if(y==="exponential")v=ph;else if(y==="interval")v=Jp;else if(y==="categorical"){v=Yp,b=Object.create(null);for(const I of i.stops)b[I[0]]=I[1];E=typeof i.stops[0][0]}else{if(y!=="identity")throw new Error(`Unknown function type "${y}"`);v=Qp}if(u){const I={},B=[];for(let X=0;XX[0]),evaluate:({zoom:X},K)=>ph({stops:V,base:i.base},t,X).evaluate(X,K)}}if(f){const I=y==="exponential"?{name:"exponential",base:i.base!==void 0?i.base:1}:null;return{kind:"camera",interpolationType:I,interpolationFactor:Qr.interpolationFactor.bind(void 0,I),zoomStops:i.stops.map(B=>B[0]),evaluate:({zoom:B})=>v(i,t,B,b,E)}}return{kind:"source",evaluate(I,B){const V=B&&B.properties?B.properties[i.property]:void 0;return V===void 0?cs(i.default,t.default):v(i,t,V,b,E)}}}function cs(i,t,o){return i!==void 0?i:t!==void 0?t:o!==void 0?o:void 0}function Yp(i,t,o,u,f){return cs(typeof o===f?u[o]:void 0,i.default,t.default)}function Jp(i,t,o){if(gn(o)!=="number")return cs(i.default,t.default);const u=i.stops.length;if(u===1||o<=i.stops[0][0])return i.stops[0][1];if(o>=i.stops[u-1][0])return i.stops[u-1][1];const f=Ua(i.stops.map(y=>y[0]),o);return i.stops[f][1]}function ph(i,t,o){const u=i.base!==void 0?i.base:1;if(gn(o)!=="number")return cs(i.default,t.default);const f=i.stops.length;if(f===1||o<=i.stops[0][0])return i.stops[0][1];if(o>=i.stops[f-1][0])return i.stops[f-1][1];const y=Ua(i.stops.map(B=>B[0]),o),v=function(B,V,q,X){const K=X-q,ce=B-q;return K===0?0:V===1?ce/K:(Math.pow(V,ce)-1)/(Math.pow(V,K)-1)}(o,u,i.stops[y][0],i.stops[y+1][0]),b=i.stops[y][1],E=i.stops[y+1][1];let I=Hs[t.type]||On;if(i.colorSpace&&i.colorSpace!=="rgb"){const B=sh[i.colorSpace];I=(V,q)=>B.reverse(B.interpolate(B.forward(V),B.forward(q),v))}return typeof b.evaluate=="function"?{evaluate(...B){const V=b.evaluate.apply(void 0,B),q=E.evaluate.apply(void 0,B);if(V!==void 0&&q!==void 0)return I(V,q,v)}}:I(b,E,v)}function Qp(i,t,o){switch(t.type){case"color":o=Q.parse(o);break;case"formatted":o=me.fromString(o.toString());break;case"resolvedImage":o=we.fromString(o.toString());break;case"padding":o=pe.parse(o);break;default:gn(o)===t.type||t.type==="enum"&&t.values[o]||(o=void 0)}return cs(o,i.default,t.default)}En.register(ls,{error:[{kind:"error"},[qt],(i,[t])=>{throw new wt(t.evaluate(i))}],typeof:[qt,[At],(i,[t])=>an($e(t.evaluate(i)))],"to-rgba":[Mn(ht,4),[er],(i,[t])=>t.evaluate(i).toArray()],rgb:[er,[ht,ht,ht],uh],rgba:[er,[ht,ht,ht,ht],uh],has:{type:Gt,overloads:[[[qt],(i,[t])=>ch(t.evaluate(i),i.properties())],[[qt,Sn],(i,[t,o])=>ch(t.evaluate(i),o.evaluate(i))]]},get:{type:At,overloads:[[[qt],(i,[t])=>Wa(t.evaluate(i),i.properties())],[[qt,Sn],(i,[t,o])=>Wa(t.evaluate(i),o.evaluate(i))]]},"feature-state":[At,[qt],(i,[t])=>Wa(t.evaluate(i),i.featureState||{})],properties:[Sn,[],i=>i.properties()],"geometry-type":[qt,[],i=>i.geometryType()],id:[At,[],i=>i.id()],zoom:[ht,[],i=>i.globals.zoom],"heatmap-density":[ht,[],i=>i.globals.heatmapDensity||0],"line-progress":[ht,[],i=>i.globals.lineProgress||0],accumulated:[At,[],i=>i.globals.accumulated===void 0?null:i.globals.accumulated],"+":[ht,Do(ht),(i,t)=>{let o=0;for(const u of t)o+=u.evaluate(i);return o}],"*":[ht,Do(ht),(i,t)=>{let o=1;for(const u of t)o*=u.evaluate(i);return o}],"-":{type:ht,overloads:[[[ht,ht],(i,[t,o])=>t.evaluate(i)-o.evaluate(i)],[[ht],(i,[t])=>-t.evaluate(i)]]},"/":[ht,[ht,ht],(i,[t,o])=>t.evaluate(i)/o.evaluate(i)],"%":[ht,[ht,ht],(i,[t,o])=>t.evaluate(i)%o.evaluate(i)],ln2:[ht,[],()=>Math.LN2],pi:[ht,[],()=>Math.PI],e:[ht,[],()=>Math.E],"^":[ht,[ht,ht],(i,[t,o])=>Math.pow(t.evaluate(i),o.evaluate(i))],sqrt:[ht,[ht],(i,[t])=>Math.sqrt(t.evaluate(i))],log10:[ht,[ht],(i,[t])=>Math.log(t.evaluate(i))/Math.LN10],ln:[ht,[ht],(i,[t])=>Math.log(t.evaluate(i))],log2:[ht,[ht],(i,[t])=>Math.log(t.evaluate(i))/Math.LN2],sin:[ht,[ht],(i,[t])=>Math.sin(t.evaluate(i))],cos:[ht,[ht],(i,[t])=>Math.cos(t.evaluate(i))],tan:[ht,[ht],(i,[t])=>Math.tan(t.evaluate(i))],asin:[ht,[ht],(i,[t])=>Math.asin(t.evaluate(i))],acos:[ht,[ht],(i,[t])=>Math.acos(t.evaluate(i))],atan:[ht,[ht],(i,[t])=>Math.atan(t.evaluate(i))],min:[ht,Do(ht),(i,t)=>Math.min(...t.map(o=>o.evaluate(i)))],max:[ht,Do(ht),(i,t)=>Math.max(...t.map(o=>o.evaluate(i)))],abs:[ht,[ht],(i,[t])=>Math.abs(t.evaluate(i))],round:[ht,[ht],(i,[t])=>{const o=t.evaluate(i);return o<0?-Math.round(-o):Math.round(o)}],floor:[ht,[ht],(i,[t])=>Math.floor(t.evaluate(i))],ceil:[ht,[ht],(i,[t])=>Math.ceil(t.evaluate(i))],"filter-==":[Gt,[qt,At],(i,[t,o])=>i.properties()[t.value]===o.value],"filter-id-==":[Gt,[At],(i,[t])=>i.id()===t.value],"filter-type-==":[Gt,[qt],(i,[t])=>i.geometryType()===t.value],"filter-<":[Gt,[qt,At],(i,[t,o])=>{const u=i.properties()[t.value],f=o.value;return typeof u==typeof f&&u{const o=i.id(),u=t.value;return typeof o==typeof u&&o":[Gt,[qt,At],(i,[t,o])=>{const u=i.properties()[t.value],f=o.value;return typeof u==typeof f&&u>f}],"filter-id->":[Gt,[At],(i,[t])=>{const o=i.id(),u=t.value;return typeof o==typeof u&&o>u}],"filter-<=":[Gt,[qt,At],(i,[t,o])=>{const u=i.properties()[t.value],f=o.value;return typeof u==typeof f&&u<=f}],"filter-id-<=":[Gt,[At],(i,[t])=>{const o=i.id(),u=t.value;return typeof o==typeof u&&o<=u}],"filter->=":[Gt,[qt,At],(i,[t,o])=>{const u=i.properties()[t.value],f=o.value;return typeof u==typeof f&&u>=f}],"filter-id->=":[Gt,[At],(i,[t])=>{const o=i.id(),u=t.value;return typeof o==typeof u&&o>=u}],"filter-has":[Gt,[At],(i,[t])=>t.value in i.properties()],"filter-has-id":[Gt,[],i=>i.id()!==null&&i.id()!==void 0],"filter-type-in":[Gt,[Mn(qt)],(i,[t])=>t.value.indexOf(i.geometryType())>=0],"filter-id-in":[Gt,[Mn(At)],(i,[t])=>t.value.indexOf(i.id())>=0],"filter-in-small":[Gt,[qt,Mn(At)],(i,[t,o])=>o.value.indexOf(i.properties()[t.value])>=0],"filter-in-large":[Gt,[qt,Mn(At)],(i,[t,o])=>function(u,f,y,v){for(;y<=v;){const b=y+v>>1;if(f[b]===u)return!0;f[b]>u?v=b-1:y=b+1}return!1}(i.properties()[t.value],o.value,0,o.value.length-1)],all:{type:Gt,overloads:[[[Gt,Gt],(i,[t,o])=>t.evaluate(i)&&o.evaluate(i)],[Do(Gt),(i,t)=>{for(const o of t)if(!o.evaluate(i))return!1;return!0}]]},any:{type:Gt,overloads:[[[Gt,Gt],(i,[t,o])=>t.evaluate(i)||o.evaluate(i)],[Do(Gt),(i,t)=>{for(const o of t)if(o.evaluate(i))return!0;return!1}]]},"!":[Gt,[Gt],(i,[t])=>!t.evaluate(i)],"is-supported-script":[Gt,[qt],(i,[t])=>{const o=i.globals&&i.globals.isSupportedScript;return!o||o(t.evaluate(i))}],upcase:[qt,[qt],(i,[t])=>t.evaluate(i).toUpperCase()],downcase:[qt,[qt],(i,[t])=>t.evaluate(i).toLowerCase()],concat:[qt,Do(At),(i,t)=>t.map(o=>Ct(o.evaluate(i))).join("")],"resolved-locale":[qt,[Cn],(i,[t])=>t.evaluate(i).resolvedLocale()]});class Ha{constructor(t,o){this.expression=t,this._warningHistory={},this._evaluator=new cn,this._defaultValue=o?function(u){return u.type==="color"&&zn(u.default)?new Q(0,0,0,0):u.type==="color"?Q.parse(u.default)||null:u.type==="padding"?pe.parse(u.default)||null:u.default===void 0?null:u.default}(o):null,this._enumValues=o&&o.type==="enum"?o.values:null}evaluateWithoutErrorHandling(t,o,u,f,y,v){return this._evaluator.globals=t,this._evaluator.feature=o,this._evaluator.featureState=u,this._evaluator.canonical=f,this._evaluator.availableImages=y||null,this._evaluator.formattedSection=v,this.expression.evaluate(this._evaluator)}evaluate(t,o,u,f,y,v){this._evaluator.globals=t,this._evaluator.feature=o||null,this._evaluator.featureState=u||null,this._evaluator.canonical=f,this._evaluator.availableImages=y||null,this._evaluator.formattedSection=v||null;try{const b=this.expression.evaluate(this._evaluator);if(b==null||typeof b=="number"&&b!=b)return this._defaultValue;if(this._enumValues&&!(b in this._enumValues))throw new wt(`Expected value to be one of ${Object.keys(this._enumValues).map(E=>JSON.stringify(E)).join(", ")}, but found ${JSON.stringify(b)} instead.`);return b}catch(b){return this._warningHistory[b.message]||(this._warningHistory[b.message]=!0,typeof console<"u"&&console.warn(b.message)),this._defaultValue}}}function Js(i){return Array.isArray(i)&&i.length>0&&typeof i[0]=="string"&&i[0]in ls}function Qs(i,t){const o=new ss(ls,[],t?function(f){const y={color:er,string:qt,number:ht,enum:qt,boolean:Gt,formatted:An,padding:cr,resolvedImage:yn};return f.type==="array"?Mn(y[f.value]||At,f.length):y[f.type]}(t):void 0),u=o.parse(i,void 0,void 0,void 0,t&&t.type==="string"?{typeAnnotation:"coerce"}:void 0);return u?hh(new Ha(u,t)):us(o.errors)}class ea{constructor(t,o){this.kind=t,this._styleExpression=o,this.isStateDependent=t!=="constant"&&!os(o.expression)}evaluateWithoutErrorHandling(t,o,u,f,y,v){return this._styleExpression.evaluateWithoutErrorHandling(t,o,u,f,y,v)}evaluate(t,o,u,f,y,v){return this._styleExpression.evaluate(t,o,u,f,y,v)}}class yu{constructor(t,o,u,f){this.kind=t,this.zoomStops=u,this._styleExpression=o,this.isStateDependent=t!=="camera"&&!os(o.expression),this.interpolationType=f}evaluateWithoutErrorHandling(t,o,u,f,y,v){return this._styleExpression.evaluateWithoutErrorHandling(t,o,u,f,y,v)}evaluate(t,o,u,f,y,v){return this._styleExpression.evaluate(t,o,u,f,y,v)}interpolationFactor(t,o,u){return this.interpolationType?Qr.interpolationFactor(this.interpolationType,t,o,u):0}}function fh(i,t){const o=Qs(i,t);if(o.result==="error")return o;const u=o.value.expression,f=qs(u);if(!f&&!Dn(t))return us([new Ln("","data expressions not supported")]);const y=Oa(u,["zoom"]);if(!y&&!dh(t))return us([new Ln("","zoom expressions not supported")]);const v=Ka(u);return v||y?v instanceof Ln?us([v]):v instanceof Qr&&!nn(t)?us([new Ln("",'"interpolate" expressions cannot be used with this property')]):hh(v?new yu(f?"camera":"composite",o.value,v.labels,v instanceof Qr?v.interpolation:void 0):new ea(f?"constant":"source",o.value)):us([new Ln("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class Xa{constructor(t,o){this._parameters=t,this._specification=o,pn(this,Ys(this._parameters,this._specification))}static deserialize(t){return new Xa(t._parameters,t._specification)}static serialize(t){return{_parameters:t._parameters,_specification:t._specification}}}function Ka(i){let t=null;if(i instanceof $a)t=Ka(i.result);else if(i instanceof ja){for(const o of i.args)if(t=Ka(o),t)break}else(i instanceof Ws||i instanceof Qr)&&i.input instanceof En&&i.input.name==="zoom"&&(t=i);return t instanceof Ln||i.eachChild(o=>{const u=Ka(o);u instanceof Ln?t=u:!t&&u?t=new Ln("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):t&&u&&t!==u&&(t=new Ln("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),t}function Ei(i){const t=i.key,o=i.value,u=i.valueSpec||{},f=i.objectElementValidators||{},y=i.style,v=i.styleSpec;let b=[];const E=gn(o);if(E!=="object")return[new it(t,o,`object expected, ${E} found`)];for(const I in o){const B=I.split(".")[0],V=u[B]||u["*"];let q;if(f[B])q=f[B];else if(u[B])q=ti;else if(f["*"])q=f["*"];else{if(!u["*"]){b.push(new it(t,o[I],`unknown property "${I}"`));continue}q=ti}b=b.concat(q({key:(t&&`${t}.`)+I,value:o[I],valueSpec:V,style:y,styleSpec:v,object:o,objectKey:I},o))}for(const I in u)f[I]||u[I].required&&u[I].default===void 0&&o[I]===void 0&&b.push(new it(t,o,`missing required property "${I}"`));return b}function mh(i){const t=i.value,o=i.valueSpec,u=i.style,f=i.styleSpec,y=i.key,v=i.arrayElementValidator||ti;if(gn(t)!=="array")return[new it(y,t,`array expected, ${gn(t)} found`)];if(o.length&&t.length!==o.length)return[new it(y,t,`array length ${o.length} expected, length ${t.length} found`)];if(o["min-length"]&&t.lengthu.maximum?[new it(t,o,`${o} is greater than the maximum value ${u.maximum}`)]:[]}function gh(i){const t=i.valueSpec,o=Ht(i.value.type);let u,f,y,v={};const b=o!=="categorical"&&i.value.property===void 0,E=!b,I=gn(i.value.stops)==="array"&&gn(i.value.stops[0])==="array"&&gn(i.value.stops[0][0])==="object",B=Ei({key:i.key,value:i.value,valueSpec:i.styleSpec.function,style:i.style,styleSpec:i.styleSpec,objectElementValidators:{stops:function(X){if(o==="identity")return[new it(X.key,X.value,'identity function may not have a "stops" property')];let K=[];const ce=X.value;return K=K.concat(mh({key:X.key,value:ce,valueSpec:X.valueSpec,style:X.style,styleSpec:X.styleSpec,arrayElementValidator:V})),gn(ce)==="array"&&ce.length===0&&K.push(new it(X.key,ce,"array must have at least one stop")),K},default:function(X){return ti({key:X.key,value:X.value,valueSpec:t,style:X.style,styleSpec:X.styleSpec})}}});return o==="identity"&&b&&B.push(new it(i.key,i.value,'missing required property "property"')),o==="identity"||i.value.stops||B.push(new it(i.key,i.value,'missing required property "stops"')),o==="exponential"&&i.valueSpec.expression&&!nn(i.valueSpec)&&B.push(new it(i.key,i.value,"exponential functions not supported")),i.styleSpec.$version>=8&&(E&&!Dn(i.valueSpec)?B.push(new it(i.key,i.value,"property functions not supported")):b&&!dh(i.valueSpec)&&B.push(new it(i.key,i.value,"zoom functions not supported"))),o!=="categorical"&&!I||i.value.property!==void 0||B.push(new it(i.key,i.value,'"property" property is required')),B;function V(X){let K=[];const ce=X.value,ue=X.key;if(gn(ce)!=="array")return[new it(ue,ce,`array expected, ${gn(ce)} found`)];if(ce.length!==2)return[new it(ue,ce,`array length 2 expected, length ${ce.length} found`)];if(I){if(gn(ce[0])!=="object")return[new it(ue,ce,`object expected, ${gn(ce[0])} found`)];if(ce[0].zoom===void 0)return[new it(ue,ce,"object stop key must have zoom")];if(ce[0].value===void 0)return[new it(ue,ce,"object stop key must have value")];if(y&&y>Ht(ce[0].zoom))return[new it(ue,ce[0].zoom,"stop zoom values must appear in ascending order")];Ht(ce[0].zoom)!==y&&(y=Ht(ce[0].zoom),f=void 0,v={}),K=K.concat(Ei({key:`${ue}[0]`,value:ce[0],valueSpec:{zoom:{}},style:X.style,styleSpec:X.styleSpec,objectElementValidators:{zoom:_u,value:q}}))}else K=K.concat(q({key:`${ue}[0]`,value:ce[0],valueSpec:{},style:X.style,styleSpec:X.styleSpec},ce));return Js(en(ce[1]))?K.concat([new it(`${ue}[1]`,ce[1],"expressions are not allowed in function stops.")]):K.concat(ti({key:`${ue}[1]`,value:ce[1],valueSpec:t,style:X.style,styleSpec:X.styleSpec}))}function q(X,K){const ce=gn(X.value),ue=Ht(X.value),Ie=X.value!==null?X.value:K;if(u){if(ce!==u)return[new it(X.key,Ie,`${ce} stop domain type must match previous stop domain type ${u}`)]}else u=ce;if(ce!=="number"&&ce!=="string"&&ce!=="boolean")return[new it(X.key,Ie,"stop domain value must be a number, string, or boolean")];if(ce!=="number"&&o!=="categorical"){let Fe=`number expected, ${ce} found`;return Dn(t)&&o===void 0&&(Fe+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new it(X.key,Ie,Fe)]}return o!=="categorical"||ce!=="number"||isFinite(ue)&&Math.floor(ue)===ue?o!=="categorical"&&ce==="number"&&f!==void 0&&uenew it(`${i.key}${u.key}`,i.value,u.message));const o=t.value.expression||t.value._styleExpression.expression;if(i.expressionContext==="property"&&i.propertyKey==="text-font"&&!o.outputDefined())return[new it(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"&&!os(o))return[new it(i.key,i.value,'"feature-state" data expressions are not supported with layout properties.')];if(i.expressionContext==="filter"&&!os(o))return[new it(i.key,i.value,'"feature-state" data expressions are not supported with filters.')];if(i.expressionContext&&i.expressionContext.indexOf("cluster")===0){if(!Oa(o,["zoom","feature-state"]))return[new it(i.key,i.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if(i.expressionContext==="cluster-initial"&&!qs(o))return[new it(i.key,i.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function ta(i){const t=i.key,o=i.value,u=i.valueSpec,f=[];return Array.isArray(u.values)?u.values.indexOf(Ht(o))===-1&&f.push(new it(t,o,`expected one of [${u.values.join(", ")}], ${JSON.stringify(o)} found`)):Object.keys(u.values).indexOf(Ht(o))===-1&&f.push(new it(t,o,`expected one of [${Object.keys(u.values).join(", ")}], ${JSON.stringify(o)} found`)),f}function hs(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 t of i.slice(1))if(!hs(t)&&typeof t!="boolean")return!1;return!0;default:return!0}}const ef={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function Ya(i){if(i==null)return{filter:()=>!0,needGeometry:!1};hs(i)||(i=na(i));const t=Qs(i,ef);if(t.result==="error")throw new Error(t.value.map(o=>`${o.key}: ${o.message}`).join(", "));return{filter:(o,u,f)=>t.value.evaluate(o,u,{},f),needGeometry:_h(i)}}function yh(i,t){return it?1:0}function _h(i){if(!Array.isArray(i))return!1;if(i[0]==="within")return!0;for(let t=1;t"||t==="<="||t===">="?vu(i[1],i[2],t):t==="any"?(o=i.slice(1),["any"].concat(o.map(na))):t==="all"?["all"].concat(i.slice(1).map(na)):t==="none"?["all"].concat(i.slice(1).map(na).map(ds)):t==="in"?Ja(i[1],i.slice(2)):t==="!in"?ds(Ja(i[1],i.slice(2))):t==="has"?ra(i[1]):t==="!has"?ds(ra(i[1])):t!=="within"||i;var o}function vu(i,t,o){switch(i){case"$type":return[`filter-type-${o}`,t];case"$id":return[`filter-id-${o}`,t];default:return[`filter-${o}`,i,t]}}function Ja(i,t){if(t.length===0)return!1;switch(i){case"$type":return["filter-type-in",["literal",t]];case"$id":return["filter-id-in",["literal",t]];default:return t.length>200&&!t.some(o=>typeof o!=typeof t[0])?["filter-in-large",i,["literal",t.sort(yh)]]:["filter-in-small",i,["literal",t]]}}function ra(i){switch(i){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",i]}}function ds(i){return["!",i]}function ia(i){return hs(en(i.value))?Ro(pn({},i,{expressionContext:"filter",valueSpec:{value:"boolean"}})):vh(i)}function vh(i){const t=i.value,o=i.key;if(gn(t)!=="array")return[new it(o,t,`array expected, ${gn(t)} found`)];const u=i.styleSpec;let f,y=[];if(t.length<1)return[new it(o,t,"filter array must have at least 1 element")];switch(y=y.concat(ta({key:`${o}[0]`,value:t[0],valueSpec:u.filter_operator,style:i.style,styleSpec:i.styleSpec})),Ht(t[0])){case"<":case"<=":case">":case">=":t.length>=2&&Ht(t[1])==="$type"&&y.push(new it(o,t,`"$type" cannot be use with operator "${t[0]}"`));case"==":case"!=":t.length!==3&&y.push(new it(o,t,`filter array for operator "${t[0]}" must have 3 elements`));case"in":case"!in":t.length>=2&&(f=gn(t[1]),f!=="string"&&y.push(new it(`${o}[1]`,t[1],`string expected, ${f} found`)));for(let v=2;v{I in o&&t.push(new it(u,o[I],`"${I}" is prohibited for ref layers`))}),f.layers.forEach(I=>{Ht(I.id)===b&&(E=I)}),E?E.ref?t.push(new it(u,o.ref,"ref cannot reference another ref layer")):v=Ht(E.type):t.push(new it(u,o.ref,`ref layer "${b}" not found`))}else if(v!=="background")if(o.source){const E=f.sources&&f.sources[o.source],I=E&&Ht(E.type);E?I==="vector"&&v==="raster"?t.push(new it(u,o.source,`layer "${o.id}" requires a raster source`)):I==="raster"&&v!=="raster"?t.push(new it(u,o.source,`layer "${o.id}" requires a vector source`)):I!=="vector"||o["source-layer"]?I==="raster-dem"&&v!=="hillshade"?t.push(new it(u,o.source,"raster-dem source can only be used with layer type 'hillshade'.")):v!=="line"||!o.paint||!o.paint["line-gradient"]||I==="geojson"&&E.lineMetrics||t.push(new it(u,o,`layer "${o.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):t.push(new it(u,o,`layer "${o.id}" must specify a "source-layer"`)):t.push(new it(u,o.source,`source "${o.source}" not found`))}else t.push(new it(u,o,'missing required property "source"'));return t=t.concat(Ei({key:u,value:o,valueSpec:y.layer,style:i.style,styleSpec:i.styleSpec,objectElementValidators:{"*":()=>[],type:()=>ti({key:`${u}.type`,value:o.type,valueSpec:y.layer.type,style:i.style,styleSpec:i.styleSpec,object:o,objectKey:"type"}),filter:ia,layout:E=>Ei({layer:o,key:E.key,value:E.value,style:E.style,styleSpec:E.styleSpec,objectElementValidators:{"*":I=>wh(pn({layerType:v},I))}}),paint:E=>Ei({layer:o,key:E.key,value:E.value,style:E.style,styleSpec:E.styleSpec,objectElementValidators:{"*":I=>xh(pn({layerType:v},I))}})}})),t}function ps(i){const t=i.value,o=i.key,u=gn(t);return u!=="string"?[new it(o,t,`string expected, ${u} found`)]:[]}const Sh={promoteId:function({key:i,value:t}){if(gn(t)==="string")return ps({key:i,value:t});{const o=[];for(const u in t)o.push(...ps({key:`${i}.${u}`,value:t[u]}));return o}}};function sa(i){const t=i.value,o=i.key,u=i.styleSpec,f=i.style;if(!t.type)return[new it(o,t,'"type" is required')];const y=Ht(t.type);let v;switch(y){case"vector":case"raster":case"raster-dem":return v=Ei({key:o,value:t,valueSpec:u[`source_${y.replace("-","_")}`],style:i.style,styleSpec:u,objectElementValidators:Sh}),v;case"geojson":if(v=Ei({key:o,value:t,valueSpec:u.source_geojson,style:f,styleSpec:u,objectElementValidators:Sh}),t.cluster)for(const b in t.clusterProperties){const[E,I]=t.clusterProperties[b],B=typeof E=="string"?[E,["accumulated"],["get",b]]:E;v.push(...Ro({key:`${o}.${b}.map`,value:I,expressionContext:"cluster-map"})),v.push(...Ro({key:`${o}.${b}.reduce`,value:B,expressionContext:"cluster-reduce"}))}return v;case"video":return Ei({key:o,value:t,valueSpec:u.source_video,style:f,styleSpec:u});case"image":return Ei({key:o,value:t,valueSpec:u.source_image,style:f,styleSpec:u});case"canvas":return[new it(o,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return ta({key:`${o}.type`,value:t.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]},style:f,styleSpec:u})}}function aa(i){const t=i.value,o=i.styleSpec,u=o.light,f=i.style;let y=[];const v=gn(t);if(t===void 0)return y;if(v!=="object")return y=y.concat([new it("light",t,`object expected, ${v} found`)]),y;for(const b in t){const E=b.match(/^(.*)-transition$/);y=y.concat(E&&u[E[1]]&&u[E[1]].transition?ti({key:b,value:t[b],valueSpec:o.transition,style:f,styleSpec:o}):u[b]?ti({key:b,value:t[b],valueSpec:u[b],style:f,styleSpec:o}):[new it(b,t[b],`unknown property "${b}"`)])}return y}function ei(i){const t=i.value,o=i.styleSpec,u=o.terrain,f=i.style;let y=[];const v=gn(t);if(t===void 0)return y;if(v!=="object")return y=y.concat([new it("terrain",t,`object expected, ${v} found`)]),y;for(const b in t)y=y.concat(u[b]?ti({key:b,value:t[b],valueSpec:u[b],style:f,styleSpec:o}):[new it(b,t[b],`unknown property "${b}"`)]);return y}const la={"*":()=>[],array:mh,boolean:function(i){const t=i.value,o=i.key,u=gn(t);return u!=="boolean"?[new it(o,t,`boolean expected, ${u} found`)]:[]},number:_u,color:function(i){const t=i.key,o=i.value,u=gn(o);return u!=="string"?[new it(t,o,`color expected, ${u} found`)]:Si(o)===null?[new it(t,o,`color expected, "${o}" found`)]:[]},constants:Wn,enum:ta,filter:ia,function:gh,layer:bh,object:Ei,source:sa,light:aa,terrain:ei,string:ps,formatted:function(i){return ps(i).length===0?[]:Ro(i)},resolvedImage:function(i){return ps(i).length===0?[]:Ro(i)},padding:function(i){const t=i.key,o=i.value;if(gn(o)==="array"){if(o.length<1||o.length>4)return[new it(t,o,`padding requires 1 to 4 values; ${o.length} values found`)];const u={type:"number"};let f=[];for(let y=0;y[]}})),i.constants&&(o=o.concat(Wn({key:"constants",value:i.constants,style:i,styleSpec:t}))),Eh(o)}function Eh(i){return[].concat(i).sort((t,o)=>t.line-o.line)}function Yi(i){return function(...t){return Eh(i.apply(this,t))}}po.source=Yi(sa),po.light=Yi(aa),po.terrain=Yi(ei),po.layer=Yi(bh),po.filter=Yi(ia),po.paintProperty=Yi(xh),po.layoutProperty=Yi(wh);const ua=po,xu=ua.light,nf=ua.paintProperty,rf=ua.layoutProperty;function Qa(i,t){let o=!1;if(t&&t.length)for(const u of t)i.fire(new yt(new Error(u.message))),o=!0;return o}class ca{constructor(t,o,u){const f=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;const v=new Int32Array(this.arrayBuffer);t=v[0],this.d=(o=v[1])+2*(u=v[2]);for(let E=0;E=V[K+0]&&f>=V[K+1])?(b[X]=!0,v.push(B[X])):b[X]=!1}}}}_forEachCell(t,o,u,f,y,v,b,E){const I=this._convertToCellCoord(t),B=this._convertToCellCoord(o),V=this._convertToCellCoord(u),q=this._convertToCellCoord(f);for(let X=I;X<=V;X++)for(let K=B;K<=q;K++){const ce=this.d*K+X;if((!E||E(this._convertFromCellCoord(X),this._convertFromCellCoord(K),this._convertFromCellCoord(X+1),this._convertFromCellCoord(K+1)))&&y.call(this,t,o,u,f,ce,v,b,E))return}}_convertFromCellCoord(t){return(t-this.padding)/this.scale}_convertToCellCoord(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;const t=this.cells,o=3+this.cells.length+1+1;let u=0;for(let v=0;v=0)continue;const v=i[y];f[y]=Ji[u].shallow.indexOf(y)>=0?v:Lo(v,t)}i instanceof Error&&(f.message=i.message)}if(f.$name)throw new Error("$name property is reserved for worker serialization logic.");return u!=="Object"&&(f.$name=u),f}throw new Error("can't serialize object of type "+typeof i)}function fo(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||Th(i)||$(i)||ArrayBuffer.isView(i)||i instanceof ImageData)return i;if(Array.isArray(i))return i.map(fo);if(typeof i=="object"){const t=i.$name||"Object";if(!Ji[t])throw new Error(`can't deserialize unregistered class ${t}`);const{klass:o}=Ji[t];if(!o)throw new Error(`can't deserialize unregistered class ${t}`);if(o.deserialize)return o.deserialize(i);const u=Object.create(o.prototype);for(const f of Object.keys(i)){if(f==="$name")continue;const y=i[f];u[f]=Ji[t].shallow.indexOf(f)>=0?y:fo(y)}return u}throw new Error("can't deserialize object of type "+typeof i)}class wu{constructor(){this.first=!0}update(t,o){const u=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=u,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=u,!0):(this.lastFloorZoom>u?(this.lastIntegerZoom=u+1,this.lastIntegerZoomTime=o):this.lastFloorZoomi>=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 el(i){for(const t of i)if(Su(t.charCodeAt(0)))return!0;return!1}function of(i){for(const t of i)if(!bu(t.charCodeAt(0)))return!1;return!0}function bu(i){return!(_t.Arabic(i)||_t["Arabic Supplement"](i)||_t["Arabic Extended-A"](i)||_t["Arabic Presentation Forms-A"](i)||_t["Arabic Presentation Forms-B"](i))}function Su(i){return!(i!==746&&i!==747&&(i<4352||!(_t["Bopomofo Extended"](i)||_t.Bopomofo(i)||_t["CJK Compatibility Forms"](i)&&!(i>=65097&&i<=65103)||_t["CJK Compatibility Ideographs"](i)||_t["CJK Compatibility"](i)||_t["CJK Radicals Supplement"](i)||_t["CJK Strokes"](i)||!(!_t["CJK Symbols and Punctuation"](i)||i>=12296&&i<=12305||i>=12308&&i<=12319||i===12336)||_t["CJK Unified Ideographs Extension A"](i)||_t["CJK Unified Ideographs"](i)||_t["Enclosed CJK Letters and Months"](i)||_t["Hangul Compatibility Jamo"](i)||_t["Hangul Jamo Extended-A"](i)||_t["Hangul Jamo Extended-B"](i)||_t["Hangul Jamo"](i)||_t["Hangul Syllables"](i)||_t.Hiragana(i)||_t["Ideographic Description Characters"](i)||_t.Kanbun(i)||_t["Kangxi Radicals"](i)||_t["Katakana Phonetic Extensions"](i)||_t.Katakana(i)&&i!==12540||!(!_t["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)||!(!_t["Small Form Variants"](i)||i>=65112&&i<=65118||i>=65123&&i<=65126)||_t["Unified Canadian Aboriginal Syllabics"](i)||_t["Unified Canadian Aboriginal Syllabics Extended"](i)||_t["Vertical Forms"](i)||_t["Yijing Hexagram Symbols"](i)||_t["Yi Syllables"](i)||_t["Yi Radicals"](i))))}function kh(i){return!(Su(i)||function(t){return!!(_t["Latin-1 Supplement"](t)&&(t===167||t===169||t===174||t===177||t===188||t===189||t===190||t===215||t===247)||_t["General Punctuation"](t)&&(t===8214||t===8224||t===8225||t===8240||t===8241||t===8251||t===8252||t===8258||t===8263||t===8264||t===8265||t===8273)||_t["Letterlike Symbols"](t)||_t["Number Forms"](t)||_t["Miscellaneous Technical"](t)&&(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||t===9003||t>=9085&&t<=9114||t>=9150&&t<=9165||t===9167||t>=9169&&t<=9179||t>=9186&&t<=9215)||_t["Control Pictures"](t)&&t!==9251||_t["Optical Character Recognition"](t)||_t["Enclosed Alphanumerics"](t)||_t["Geometric Shapes"](t)||_t["Miscellaneous Symbols"](t)&&!(t>=9754&&t<=9759)||_t["Miscellaneous Symbols and Arrows"](t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243)||_t["CJK Symbols and Punctuation"](t)||_t.Katakana(t)||_t["Private Use Area"](t)||_t["CJK Compatibility Forms"](t)||_t["Small Form Variants"](t)||_t["Halfwidth and Fullwidth Forms"](t)||t===8734||t===8756||t===8757||t>=9984&&t<=10087||t>=10102&&t<=10131||t===65532||t===65533)}(i))}function Ch(i){return i>=1424&&i<=2303||_t["Arabic Presentation Forms-A"](i)||_t["Arabic Presentation Forms-B"](i)}function sf(i,t){return!(!t&&Ch(i)||i>=2304&&i<=3583||i>=3840&&i<=4255||_t.Khmer(i))}function Ih(i){for(const t of i)if(Ch(t.charCodeAt(0)))return!0;return!1}const Eu="deferred",Tu="loading",ku="loaded";let Cu=null,$r="unavailable",mo=null;const Ah=function(i){i&&typeof i=="string"&&i.indexOf("NetworkError")>-1&&($r="error"),Cu&&Cu(i)};function fs(){Iu.fire(new je("pluginStateChange",{pluginStatus:$r,pluginURL:mo}))}const Iu=new Bt,ha=function(){return $r},zh=function(){if($r!==Eu||!mo)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");$r=Tu,fs(),mo&&ae({url:mo},i=>{i?Ah(i):($r=ku,fs())})},pi={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:()=>$r===ku||pi.applyArabicShaping!=null,isLoading:()=>$r===Tu,setState(i){if(!be())throw new Error("Cannot set the state of the rtl-text-plugin when not in the web-worker context");$r=i.pluginStatus,mo=i.pluginURL},isParsed(){if(!be())throw new Error("rtl-text-plugin is only parsed on the worker-threads");return pi.applyArabicShaping!=null&&pi.processBidirectionalText!=null&&pi.processStyledBidirectionalText!=null},getPluginURL(){if(!be())throw new Error("rtl-text-plugin url can only be queried from the worker threads");return mo}};class Nn{constructor(t,o){this.zoom=t,o?(this.now=o.now,this.fadeDuration=o.fadeDuration,this.zoomHistory=o.zoomHistory,this.transition=o.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new wu,this.transition={})}isSupportedScript(t){return function(o,u){for(const f of o)if(!sf(f.charCodeAt(0),u))return!1;return!0}(t,pi.isLoaded())}crossFadingFactor(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){const t=this.zoom,o=t-Math.floor(t),u=this.crossFadingFactor();return t>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:o+(1-o)*u}:{fromScale:.5,toScale:1,t:1-(1-u)*o}}}class da{constructor(t,o){this.property=t,this.value=o,this.expression=function(u,f){if(zn(u))return new Xa(u,f);if(Js(u)){const y=fh(u,f);if(y.result==="error")throw new Error(y.value.map(v=>`${v.key}: ${v.message}`).join(", "));return y.value}{let y=u;return f.type==="color"&&typeof u=="string"?y=Q.parse(u):f.type!=="padding"||typeof u!="number"&&!Array.isArray(u)||(y=pe.parse(u)),{kind:"constant",evaluate:()=>y}}}(o===void 0?t.specification.default:o,t.specification)}isDataDriven(){return this.expression.kind==="source"||this.expression.kind==="composite"}possiblyEvaluate(t,o,u){return this.property.possiblyEvaluate(this,t,o,u)}}class tl{constructor(t){this.property=t,this.value=new da(t,void 0)}transitioned(t,o){return new Mh(this.property,this.value,o,W({},t.transition,this.transition),t.now)}untransitioned(){return new Mh(this.property,this.value,null,{},0)}}class Ph{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues)}getValue(t){return G(this._values[t].value.value)}setValue(t,o){Object.prototype.hasOwnProperty.call(this._values,t)||(this._values[t]=new tl(this._values[t].property)),this._values[t].value=new da(this._values[t].property,o===null?void 0:G(o))}getTransition(t){return G(this._values[t].transition)}setTransition(t,o){Object.prototype.hasOwnProperty.call(this._values,t)||(this._values[t]=new tl(this._values[t].property)),this._values[t].transition=G(o)||void 0}serialize(){const t={};for(const o of Object.keys(this._values)){const u=this.getValue(o);u!==void 0&&(t[o]=u);const f=this.getTransition(o);f!==void 0&&(t[`${o}-transition`]=f)}return t}transitioned(t,o){const u=new Dh(this._properties);for(const f of Object.keys(this._values))u._values[f]=this._values[f].transitioned(t,o._values[f]);return u}untransitioned(){const t=new Dh(this._properties);for(const o of Object.keys(this._values))t._values[o]=this._values[o].untransitioned();return t}}class Mh{constructor(t,o,u,f,y){this.property=t,this.value=o,this.begin=y+f.delay||0,this.end=this.begin+f.duration||0,t.specification.transition&&(f.delay||f.duration)&&(this.prior=u)}possiblyEvaluate(t,o,u){const f=t.now||0,y=this.value.possiblyEvaluate(t,o,u),v=this.prior;if(v){if(f>this.end)return this.prior=null,y;if(this.value.isDataDriven())return this.prior=null,y;if(f=1)return 1;const I=E*E,B=I*E;return 4*(E<.5?B:3*(E-I)+B-.75)}(b))}}return y}}class Dh{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues)}possiblyEvaluate(t,o,u){const f=new pa(this._properties);for(const y of Object.keys(this._values))f._values[y]=this._values[y].possiblyEvaluate(t,o,u);return f}hasTransition(){for(const t of Object.keys(this._values))if(this._values[t].prior)return!0;return!1}}class af{constructor(t){this._properties=t,this._values=Object.create(t.defaultPropertyValues)}getValue(t){return G(this._values[t].value)}setValue(t,o){this._values[t]=new da(this._values[t].property,o===null?void 0:G(o))}serialize(){const t={};for(const o of Object.keys(this._values)){const u=this.getValue(o);u!==void 0&&(t[o]=u)}return t}possiblyEvaluate(t,o,u){const f=new pa(this._properties);for(const y of Object.keys(this._values))f._values[y]=this._values[y].possiblyEvaluate(t,o,u);return f}}class Fi{constructor(t,o,u){this.property=t,this.value=o,this.parameters=u}isConstant(){return this.value.kind==="constant"}constantOr(t){return this.value.kind==="constant"?this.value.value:t}evaluate(t,o,u,f){return this.property.evaluate(this.value,this.parameters,t,o,u,f)}}class pa{constructor(t){this._properties=t,this._values=Object.create(t.defaultPossiblyEvaluatedValues)}get(t){return this._values[t]}}class Pt{constructor(t){this.specification=t}possiblyEvaluate(t,o){if(t.isDataDriven())throw new Error("Value should not be data driven");return t.expression.evaluate(o)}interpolate(t,o,u){const f=Hs[this.specification.type];return f?f(t,o,u):t}}class jt{constructor(t,o){this.specification=t,this.overrides=o}possiblyEvaluate(t,o,u,f){return new Fi(this,t.expression.kind==="constant"||t.expression.kind==="camera"?{kind:"constant",value:t.expression.evaluate(o,null,{},u,f)}:t.expression,o)}interpolate(t,o,u){if(t.value.kind!=="constant"||o.value.kind!=="constant")return t;if(t.value.value===void 0||o.value.value===void 0)return new Fi(this,{kind:"constant",value:void 0},t.parameters);const f=Hs[this.specification.type];return f?new Fi(this,{kind:"constant",value:f(t.value.value,o.value.value,u)},t.parameters):t}evaluate(t,o,u,f,y,v){return t.kind==="constant"?t.value:t.evaluate(o,u,f,y,v)}}class ms extends jt{possiblyEvaluate(t,o,u,f){if(t.value===void 0)return new Fi(this,{kind:"constant",value:void 0},o);if(t.expression.kind==="constant"){const y=t.expression.evaluate(o,null,{},u,f),v=t.property.specification.type==="resolvedImage"&&typeof y!="string"?y.name:y,b=this._calculate(v,v,v,o);return new Fi(this,{kind:"constant",value:b},o)}if(t.expression.kind==="camera"){const y=this._calculate(t.expression.evaluate({zoom:o.zoom-1}),t.expression.evaluate({zoom:o.zoom}),t.expression.evaluate({zoom:o.zoom+1}),o);return new Fi(this,{kind:"constant",value:y},o)}return new Fi(this,t.expression,o)}evaluate(t,o,u,f,y,v){if(t.kind==="source"){const b=t.evaluate(o,u,f,y,v);return this._calculate(b,b,b,o)}return t.kind==="composite"?this._calculate(t.evaluate({zoom:Math.floor(o.zoom)-1},u,f),t.evaluate({zoom:Math.floor(o.zoom)},u,f),t.evaluate({zoom:Math.floor(o.zoom)+1},u,f),o):t.value}_calculate(t,o,u,f){return f.zoom>f.zoomHistory.lastIntegerZoom?{from:t,to:o}:{from:u,to:o}}interpolate(t){return t}}class Au{constructor(t){this.specification=t}possiblyEvaluate(t,o,u,f){if(t.value!==void 0){if(t.expression.kind==="constant"){const y=t.expression.evaluate(o,null,{},u,f);return this._calculate(y,y,y,o)}return this._calculate(t.expression.evaluate(new Nn(Math.floor(o.zoom-1),o)),t.expression.evaluate(new Nn(Math.floor(o.zoom),o)),t.expression.evaluate(new Nn(Math.floor(o.zoom+1),o)),o)}}_calculate(t,o,u,f){return f.zoom>f.zoomHistory.lastIntegerZoom?{from:t,to:o}:{from:u,to:o}}interpolate(t){return t}}class go{constructor(t){this.specification=t}possiblyEvaluate(t,o,u,f){return!!t.expression.evaluate(o,null,{},u,f)}interpolate(){return!1}}class Sr{constructor(t){this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(const o in t){const u=t[o];u.specification.overridable&&this.overridableProperties.push(o);const f=this.defaultPropertyValues[o]=new da(u,void 0),y=this.defaultTransitionablePropertyValues[o]=new tl(u);this.defaultTransitioningPropertyValues[o]=y.untransitioned(),this.defaultPossiblyEvaluatedValues[o]=f.possiblyEvaluate({})}}}kt("DataDrivenProperty",jt),kt("DataConstantProperty",Pt),kt("CrossFadedDataDrivenProperty",ms),kt("CrossFadedProperty",Au),kt("ColorRampProperty",go);const yo="-transition";class Oi extends Bt{constructor(t,o){if(super(),this.id=t.id,this.type=t.type,this._featureFilter={filter:()=>!0,needGeometry:!1},t.type!=="custom"&&(this.metadata=t.metadata,this.minzoom=t.minzoom,this.maxzoom=t.maxzoom,t.type!=="background"&&(this.source=t.source,this.sourceLayer=t["source-layer"],this.filter=t.filter),o.layout&&(this._unevaluatedLayout=new af(o.layout)),o.paint)){this._transitionablePaint=new Ph(o.paint);for(const u in t.paint)this.setPaintProperty(u,t.paint[u],{validate:!1});for(const u in t.layout)this.setLayoutProperty(u,t.layout[u],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new pa(o.paint)}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(t){return t==="visibility"?this.visibility:this._unevaluatedLayout.getValue(t)}setLayoutProperty(t,o,u={}){o!=null&&this._validate(rf,`layers.${this.id}.layout.${t}`,t,o,u)||(t!=="visibility"?this._unevaluatedLayout.setValue(t,o):this.visibility=o)}getPaintProperty(t){return t.endsWith(yo)?this._transitionablePaint.getTransition(t.slice(0,-yo.length)):this._transitionablePaint.getValue(t)}setPaintProperty(t,o,u={}){if(o!=null&&this._validate(nf,`layers.${this.id}.paint.${t}`,t,o,u))return!1;if(t.endsWith(yo))return this._transitionablePaint.setTransition(t.slice(0,-yo.length),o||void 0),!1;{const f=this._transitionablePaint._values[t],y=f.property.specification["property-type"]==="cross-faded-data-driven",v=f.value.isDataDriven(),b=f.value;this._transitionablePaint.setValue(t,o),this._handleSpecialPaintPropertyUpdate(t);const E=this._transitionablePaint._values[t].value;return E.isDataDriven()||v||y||this._handleOverridablePaintPropertyUpdate(t,b,E)}}_handleSpecialPaintPropertyUpdate(t){}_handleOverridablePaintPropertyUpdate(t,o,u){return!1}isHidden(t){return!!(this.minzoom&&t=this.maxzoom)||this.visibility==="none"}updateTransitions(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(t,o){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,o)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,o)}serialize(){const t={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&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),L(t,(o,u)=>!(o===void 0||u==="layout"&&!Object.keys(o).length||u==="paint"&&!Object.keys(o).length))}_validate(t,o,u,f,y={}){return(!y||y.validate!==!1)&&Qa(this,t.call(ua,{key:o,layerType:this.type,objectKey:u,value:f,styleSpec:ke,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(const t in this.paint._values){const o=this.paint.get(t);if(o instanceof Fi&&Dn(o.property.specification)&&(o.value.kind==="source"||o.value.kind==="composite")&&o.value.isStateDependent)return!0}return!1}}const Rh={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class _o{constructor(t,o){this._structArray=t,this._pos1=o*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class Yn{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(t,o){return t._trim(),o&&(t.isTransferred=!0,o.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}}static deserialize(t){const o=Object.create(this.prototype);return o.arrayBuffer=t.arrayBuffer,o.length=t.length,o.capacity=t.arrayBuffer.byteLength/o.bytesPerElement,o._refreshViews(),o}_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(t){this.reserve(t),this.length=t}reserve(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);const o=this.uint8;this._refreshViews(),o&&this.uint8.set(o)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}}function sr(i,t=1){let o=0,u=0;return{members:i.map(f=>{const y=Rh[f.type].BYTES_PER_ELEMENT,v=o=zu(o,Math.max(t,y)),b=f.components||1;return u=Math.max(u,y),o+=y*b,{name:f.name,type:f.type,components:b,offset:v}}),size:zu(o,Math.max(u,t)),alignment:t}}function zu(i,t){return Math.ceil(i/t)*t}class Bo extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(t,o){const u=this.length;return this.resize(u+1),this.emplace(u,t,o)}emplace(t,o,u){const f=2*t;return this.int16[f+0]=o,this.int16[f+1]=u,t}}Bo.prototype.bytesPerElement=4,kt("StructArrayLayout2i4",Bo);class d extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(t,o,u,f){const y=this.length;return this.resize(y+1),this.emplace(y,t,o,u,f)}emplace(t,o,u,f,y){const v=4*t;return this.int16[v+0]=o,this.int16[v+1]=u,this.int16[v+2]=f,this.int16[v+3]=y,t}}d.prototype.bytesPerElement=8,kt("StructArrayLayout4i8",d);class n extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(t,o,u,f,y,v){const b=this.length;return this.resize(b+1),this.emplace(b,t,o,u,f,y,v)}emplace(t,o,u,f,y,v,b){const E=6*t;return this.int16[E+0]=o,this.int16[E+1]=u,this.int16[E+2]=f,this.int16[E+3]=y,this.int16[E+4]=v,this.int16[E+5]=b,t}}n.prototype.bytesPerElement=12,kt("StructArrayLayout2i4i12",n);class a extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(t,o,u,f,y,v){const b=this.length;return this.resize(b+1),this.emplace(b,t,o,u,f,y,v)}emplace(t,o,u,f,y,v,b){const E=4*t,I=8*t;return this.int16[E+0]=o,this.int16[E+1]=u,this.uint8[I+4]=f,this.uint8[I+5]=y,this.uint8[I+6]=v,this.uint8[I+7]=b,t}}a.prototype.bytesPerElement=8,kt("StructArrayLayout2i4ub8",a);class h extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(t,o){const u=this.length;return this.resize(u+1),this.emplace(u,t,o)}emplace(t,o,u){const f=2*t;return this.float32[f+0]=o,this.float32[f+1]=u,t}}h.prototype.bytesPerElement=8,kt("StructArrayLayout2f8",h);class m extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(t,o,u,f,y,v,b,E,I,B){const V=this.length;return this.resize(V+1),this.emplace(V,t,o,u,f,y,v,b,E,I,B)}emplace(t,o,u,f,y,v,b,E,I,B,V){const q=10*t;return this.uint16[q+0]=o,this.uint16[q+1]=u,this.uint16[q+2]=f,this.uint16[q+3]=y,this.uint16[q+4]=v,this.uint16[q+5]=b,this.uint16[q+6]=E,this.uint16[q+7]=I,this.uint16[q+8]=B,this.uint16[q+9]=V,t}}m.prototype.bytesPerElement=20,kt("StructArrayLayout10ui20",m);class _ extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(t,o,u,f,y,v,b,E,I,B,V,q){const X=this.length;return this.resize(X+1),this.emplace(X,t,o,u,f,y,v,b,E,I,B,V,q)}emplace(t,o,u,f,y,v,b,E,I,B,V,q,X){const K=12*t;return this.int16[K+0]=o,this.int16[K+1]=u,this.int16[K+2]=f,this.int16[K+3]=y,this.uint16[K+4]=v,this.uint16[K+5]=b,this.uint16[K+6]=E,this.uint16[K+7]=I,this.int16[K+8]=B,this.int16[K+9]=V,this.int16[K+10]=q,this.int16[K+11]=X,t}}_.prototype.bytesPerElement=24,kt("StructArrayLayout4i4ui4i24",_);class w extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(t,o,u){const f=this.length;return this.resize(f+1),this.emplace(f,t,o,u)}emplace(t,o,u,f){const y=3*t;return this.float32[y+0]=o,this.float32[y+1]=u,this.float32[y+2]=f,t}}w.prototype.bytesPerElement=12,kt("StructArrayLayout3f12",w);class T extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(t){const o=this.length;return this.resize(o+1),this.emplace(o,t)}emplace(t,o){return this.uint32[1*t+0]=o,t}}T.prototype.bytesPerElement=4,kt("StructArrayLayout1ul4",T);class C extends Yn{_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(t,o,u,f,y,v,b,E,I){const B=this.length;return this.resize(B+1),this.emplace(B,t,o,u,f,y,v,b,E,I)}emplace(t,o,u,f,y,v,b,E,I,B){const V=10*t,q=5*t;return this.int16[V+0]=o,this.int16[V+1]=u,this.int16[V+2]=f,this.int16[V+3]=y,this.int16[V+4]=v,this.int16[V+5]=b,this.uint32[q+3]=E,this.uint16[V+8]=I,this.uint16[V+9]=B,t}}C.prototype.bytesPerElement=20,kt("StructArrayLayout6i1ul2ui20",C);class z extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(t,o,u,f,y,v){const b=this.length;return this.resize(b+1),this.emplace(b,t,o,u,f,y,v)}emplace(t,o,u,f,y,v,b){const E=6*t;return this.int16[E+0]=o,this.int16[E+1]=u,this.int16[E+2]=f,this.int16[E+3]=y,this.int16[E+4]=v,this.int16[E+5]=b,t}}z.prototype.bytesPerElement=12,kt("StructArrayLayout2i2i2i12",z);class N extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(t,o,u,f,y){const v=this.length;return this.resize(v+1),this.emplace(v,t,o,u,f,y)}emplace(t,o,u,f,y,v){const b=4*t,E=8*t;return this.float32[b+0]=o,this.float32[b+1]=u,this.float32[b+2]=f,this.int16[E+6]=y,this.int16[E+7]=v,t}}N.prototype.bytesPerElement=16,kt("StructArrayLayout2f1f2i16",N);class Z extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(t,o,u,f){const y=this.length;return this.resize(y+1),this.emplace(y,t,o,u,f)}emplace(t,o,u,f,y){const v=12*t,b=3*t;return this.uint8[v+0]=o,this.uint8[v+1]=u,this.float32[b+1]=f,this.float32[b+2]=y,t}}Z.prototype.bytesPerElement=12,kt("StructArrayLayout2ub2f12",Z);class H extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(t,o,u){const f=this.length;return this.resize(f+1),this.emplace(f,t,o,u)}emplace(t,o,u,f){const y=3*t;return this.uint16[y+0]=o,this.uint16[y+1]=u,this.uint16[y+2]=f,t}}H.prototype.bytesPerElement=6,kt("StructArrayLayout3ui6",H);class se extends Yn{_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(t,o,u,f,y,v,b,E,I,B,V,q,X,K,ce,ue,Ie){const Fe=this.length;return this.resize(Fe+1),this.emplace(Fe,t,o,u,f,y,v,b,E,I,B,V,q,X,K,ce,ue,Ie)}emplace(t,o,u,f,y,v,b,E,I,B,V,q,X,K,ce,ue,Ie,Fe){const Te=24*t,Re=12*t,Qe=48*t;return this.int16[Te+0]=o,this.int16[Te+1]=u,this.uint16[Te+2]=f,this.uint16[Te+3]=y,this.uint32[Re+2]=v,this.uint32[Re+3]=b,this.uint32[Re+4]=E,this.uint16[Te+10]=I,this.uint16[Te+11]=B,this.uint16[Te+12]=V,this.float32[Re+7]=q,this.float32[Re+8]=X,this.uint8[Qe+36]=K,this.uint8[Qe+37]=ce,this.uint8[Qe+38]=ue,this.uint32[Re+10]=Ie,this.int16[Te+22]=Fe,t}}se.prototype.bytesPerElement=48,kt("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",se);class re extends Yn{_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(t,o,u,f,y,v,b,E,I,B,V,q,X,K,ce,ue,Ie,Fe,Te,Re,Qe,Je,Tt,It,vt,mt,pt,xt){const gt=this.length;return this.resize(gt+1),this.emplace(gt,t,o,u,f,y,v,b,E,I,B,V,q,X,K,ce,ue,Ie,Fe,Te,Re,Qe,Je,Tt,It,vt,mt,pt,xt)}emplace(t,o,u,f,y,v,b,E,I,B,V,q,X,K,ce,ue,Ie,Fe,Te,Re,Qe,Je,Tt,It,vt,mt,pt,xt,gt){const st=34*t,Ot=17*t;return this.int16[st+0]=o,this.int16[st+1]=u,this.int16[st+2]=f,this.int16[st+3]=y,this.int16[st+4]=v,this.int16[st+5]=b,this.int16[st+6]=E,this.int16[st+7]=I,this.uint16[st+8]=B,this.uint16[st+9]=V,this.uint16[st+10]=q,this.uint16[st+11]=X,this.uint16[st+12]=K,this.uint16[st+13]=ce,this.uint16[st+14]=ue,this.uint16[st+15]=Ie,this.uint16[st+16]=Fe,this.uint16[st+17]=Te,this.uint16[st+18]=Re,this.uint16[st+19]=Qe,this.uint16[st+20]=Je,this.uint16[st+21]=Tt,this.uint16[st+22]=It,this.uint32[Ot+12]=vt,this.float32[Ot+13]=mt,this.float32[Ot+14]=pt,this.float32[Ot+15]=xt,this.float32[Ot+16]=gt,t}}re.prototype.bytesPerElement=68,kt("StructArrayLayout8i15ui1ul4f68",re);class ie extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(t){const o=this.length;return this.resize(o+1),this.emplace(o,t)}emplace(t,o){return this.float32[1*t+0]=o,t}}ie.prototype.bytesPerElement=4,kt("StructArrayLayout1f4",ie);class _e extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(t,o,u){const f=this.length;return this.resize(f+1),this.emplace(f,t,o,u)}emplace(t,o,u,f){const y=3*t;return this.int16[y+0]=o,this.int16[y+1]=u,this.int16[y+2]=f,t}}_e.prototype.bytesPerElement=6,kt("StructArrayLayout3i6",_e);class Ee extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(t,o,u){const f=this.length;return this.resize(f+1),this.emplace(f,t,o,u)}emplace(t,o,u,f){const y=4*t;return this.uint32[2*t+0]=o,this.uint16[y+2]=u,this.uint16[y+3]=f,t}}Ee.prototype.bytesPerElement=8,kt("StructArrayLayout1ul2ui8",Ee);class ze extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(t,o){const u=this.length;return this.resize(u+1),this.emplace(u,t,o)}emplace(t,o,u){const f=2*t;return this.uint16[f+0]=o,this.uint16[f+1]=u,t}}ze.prototype.bytesPerElement=4,kt("StructArrayLayout2ui4",ze);class le extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(t){const o=this.length;return this.resize(o+1),this.emplace(o,t)}emplace(t,o){return this.uint16[1*t+0]=o,t}}le.prototype.bytesPerElement=2,kt("StructArrayLayout1ui2",le);class Be extends Yn{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(t,o,u,f){const y=this.length;return this.resize(y+1),this.emplace(y,t,o,u,f)}emplace(t,o,u,f,y){const v=4*t;return this.float32[v+0]=o,this.float32[v+1]=u,this.float32[v+2]=f,this.float32[v+3]=y,t}}Be.prototype.bytesPerElement=16,kt("StructArrayLayout4f16",Be);class De extends _o{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 et(this.anchorPointX,this.anchorPointY)}}De.prototype.size=20;class qe extends C{get(t){return new De(this,t)}}kt("CollisionBoxArray",qe);class We extends _o{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(t){this._structArray.uint8[this._pos1+37]=t}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(t){this._structArray.uint8[this._pos1+38]=t}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(t){this._structArray.uint32[this._pos4+10]=t}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}We.prototype.size=48;class ot extends se{get(t){return new We(this,t)}}kt("PlacedSymbolArray",ot);class Ze extends _o{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(t){this._structArray.uint32[this._pos4+12]=t}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get textOffset0(){return this._structArray.float32[this._pos4+14]}get textOffset1(){return this._structArray.float32[this._pos4+15]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+16]}}Ze.prototype.size=68;class St extends re{get(t){return new Ze(this,t)}}kt("SymbolInstanceArray",St);class ft extends ie{getoffsetX(t){return this.float32[1*t+0]}}kt("GlyphOffsetArray",ft);class Et extends _e{getx(t){return this.int16[3*t+0]}gety(t){return this.int16[3*t+1]}gettileUnitDistanceFromAnchor(t){return this.int16[3*t+2]}}kt("SymbolLineVertexArray",Et);class Xt extends _o{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]}}Xt.prototype.size=8;class Yt extends Ee{get(t){return new Xt(this,t)}}kt("FeatureIndexArray",Yt);class Ft extends Bo{}class vn extends Bo{}class xn extends Bo{}class ln extends n{}class hn extends a{}class bn extends h{}class yr extends m{}class Ni extends _{}class Ti extends w{}class Ui extends T{}class vo extends z{}class fi extends Z{}class Gr extends H{}class Qi extends ze{}const nl=sr([{name:"a_pos",components:2,type:"Int16"}],4),{members:hr}=nl;class Qt{constructor(t=[]){this.segments=t}prepareSegment(t,o,u,f){let y=this.segments[this.segments.length-1];return t>Qt.MAX_VERTEX_ARRAY_LENGTH&&ne(`Max vertices per segment is ${Qt.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${t}`),(!y||y.vertexLength+t>Qt.MAX_VERTEX_ARRAY_LENGTH||y.sortKey!==f)&&(y={vertexOffset:o.length,primitiveOffset:u.length,vertexLength:0,primitiveLength:0},f!==void 0&&(y.sortKey=f),this.segments.push(y)),y}get(){return this.segments}destroy(){for(const t of this.segments)for(const o in t.vaos)t.vaos[o].destroy()}static simpleSegment(t,o,u,f){return new Qt([{vertexOffset:t,primitiveOffset:o,vertexLength:u,primitiveLength:f,vaos:{},sortKey:0}])}}function _n(i,t){return 256*(i=A(Math.floor(i),0,255))+A(Math.floor(t),0,255)}Qt.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,kt("SegmentVector",Qt);const _r=sr([{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 vr={exports:{}},Un={exports:{}};Un.exports=function(i,t){var o,u,f,y,v,b,E,I;for(u=i.length-(o=3&i.length),f=t,v=3432918353,b=461845907,I=0;I>>16)*v&65535)<<16)&4294967295)<<15|E>>>17))*b+(((E>>>16)*b&65535)<<16)&4294967295)<<13|f>>>19))+((5*(f>>>16)&65535)<<16)&4294967295))+((58964+(y>>>16)&65535)<<16);switch(E=0,o){case 3:E^=(255&i.charCodeAt(I+2))<<16;case 2:E^=(255&i.charCodeAt(I+1))<<8;case 1:f^=E=(65535&(E=(E=(65535&(E^=255&i.charCodeAt(I)))*v+(((E>>>16)*v&65535)<<16)&4294967295)<<15|E>>>17))*b+(((E>>>16)*b&65535)<<16)&4294967295}return f^=i.length,f=2246822507*(65535&(f^=f>>>16))+((2246822507*(f>>>16)&65535)<<16)&4294967295,f=3266489909*(65535&(f^=f>>>13))+((3266489909*(f>>>16)&65535)<<16)&4294967295,(f^=f>>>16)>>>0};var mi={exports:{}};mi.exports=function(i,t){for(var o,u=i.length,f=t^u,y=0;u>=4;)o=1540483477*(65535&(o=255&i.charCodeAt(y)|(255&i.charCodeAt(++y))<<8|(255&i.charCodeAt(++y))<<16|(255&i.charCodeAt(++y))<<24))+((1540483477*(o>>>16)&65535)<<16),f=1540483477*(65535&f)+((1540483477*(f>>>16)&65535)<<16)^(o=1540483477*(65535&(o^=o>>>24))+((1540483477*(o>>>16)&65535)<<16)),u-=4,++y;switch(u){case 3:f^=(255&i.charCodeAt(y+2))<<16;case 2:f^=(255&i.charCodeAt(y+1))<<8;case 1:f=1540483477*(65535&(f^=255&i.charCodeAt(y)))+((1540483477*(f>>>16)&65535)<<16)}return f=1540483477*(65535&(f^=f>>>13))+((1540483477*(f>>>16)&65535)<<16),(f^=f>>>15)>>>0};var Fo=Un.exports,Pu=mi.exports;vr.exports=Fo,vr.exports.murmur3=Fo,vr.exports.murmur2=Pu;class gs{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(t,o,u,f){this.ids.push(Lh(t)),this.positions.push(o,u,f)}getPositions(t){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");const o=Lh(t);let u=0,f=this.ids.length-1;for(;u>1;this.ids[v]>=o?f=v:u=v+1}const y=[];for(;this.ids[u]===o;)y.push({index:this.positions[3*u],start:this.positions[3*u+1],end:this.positions[3*u+2]}),u++;return y}static serialize(t,o){const u=new Float64Array(t.ids),f=new Uint32Array(t.positions);return Mu(u,f,0,u.length-1),o&&o.push(u.buffer,f.buffer),{ids:u,positions:f}}static deserialize(t){const o=new gs;return o.ids=t.ids,o.positions=t.positions,o.indexed=!0,o}}function Lh(i){const t=+i;return!isNaN(t)&&t<=Number.MAX_SAFE_INTEGER?t:vr.exports(String(i))}function Mu(i,t,o,u){for(;o>1];let y=o-1,v=u+1;for(;;){do y++;while(i[y]f);if(y>=v)break;xo(i,y,v),xo(t,3*y,3*v),xo(t,3*y+1,3*v+1),xo(t,3*y+2,3*v+2)}v-o`u_${f}`),this.type=u}setUniform(t,o,u){t.set(u.constantOr(this.value))}getBinding(t,o,u){return this.type==="color"?new By(t,o):new No(t,o)}}class il{constructor(t,o){this.uniformNames=o.map(u=>`u_${u}`),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(t,o){this.pixelRatioFrom=o.pixelRatio,this.pixelRatioTo=t.pixelRatio,this.patternFrom=o.tlbr,this.patternTo=t.tlbr}setUniform(t,o,u,f){const y=f==="u_pattern_to"?this.patternTo:f==="u_pattern_from"?this.patternFrom:f==="u_pixel_ratio_to"?this.pixelRatioTo:f==="u_pixel_ratio_from"?this.pixelRatioFrom:null;y&&t.set(y)}getBinding(t,o,u){return u.substr(0,9)==="u_pattern"?new rl(t,o):new No(t,o)}}class Uo{constructor(t,o,u,f){this.expression=t,this.type=u,this.maxValue=0,this.paintVertexAttributes=o.map(y=>({name:`a_${y}`,type:"Float32",components:u==="color"?2:1,offset:0})),this.paintVertexArray=new f}populatePaintArray(t,o,u,f,y){const v=this.paintVertexArray.length,b=this.expression.evaluate(new Nn(0),o,{},f,[],y);this.paintVertexArray.resize(t),this._setPaintValue(v,t,b)}updatePaintArray(t,o,u,f){const y=this.expression.evaluate({zoom:0},u,f);this._setPaintValue(t,o,y)}_setPaintValue(t,o,u){if(this.type==="color"){const f=lf(u);for(let y=t;y`u_${b}_t`),this.type=u,this.useIntegerZoom=f,this.zoom=y,this.maxValue=0,this.paintVertexAttributes=o.map(b=>({name:`a_${b}`,type:"Float32",components:u==="color"?4:2,offset:0})),this.paintVertexArray=new v}populatePaintArray(t,o,u,f,y){const v=this.expression.evaluate(new Nn(this.zoom),o,{},f,[],y),b=this.expression.evaluate(new Nn(this.zoom+1),o,{},f,[],y),E=this.paintVertexArray.length;this.paintVertexArray.resize(t),this._setPaintValue(E,t,v,b)}updatePaintArray(t,o,u,f){const y=this.expression.evaluate({zoom:this.zoom},u,f),v=this.expression.evaluate({zoom:this.zoom+1},u,f);this._setPaintValue(t,o,y,v)}_setPaintValue(t,o,u,f){if(this.type==="color"){const y=lf(u),v=lf(f);for(let b=t;b`#define HAS_UNIFORM_${f}`))}return t}getBinderAttributes(){const t=[];for(const o in this.binders){const u=this.binders[o];if(u instanceof Uo||u instanceof eo)for(let f=0;f!0){this.programConfigurations={};for(const f of t)this.programConfigurations[f.id]=new Fy(f,o,u);this.needsUpload=!1,this._featureMap=new gs,this._bufferOffset=0}populatePaintArrays(t,o,u,f,y,v){for(const b in this.programConfigurations)this.programConfigurations[b].populatePaintArrays(t,o,f,y,v);o.id!==void 0&&this._featureMap.add(o.id,u,this._bufferOffset,t),this._bufferOffset=t,this.needsUpload=!0}updatePaintArrays(t,o,u,f){for(const y of u)this.needsUpload=this.programConfigurations[y.id].updatePaintArrays(t,this._featureMap,o,y,f)||this.needsUpload}get(t){return this.programConfigurations[t]}upload(t){if(this.needsUpload){for(const o in this.programConfigurations)this.programConfigurations[o].upload(t);this.needsUpload=!1}}destroy(){for(const t in this.programConfigurations)this.programConfigurations[t].destroy()}}function rb(i,t){return{"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"line-gap-width":["gapwidth"],"line-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(`${t}-`,"").replace(/-/g,"_")]}function Oy(i,t,o){const u={color:{source:h,composite:Be},number:{source:ie,composite:h}},f=function(y){return{"line-pattern":{source:yr,composite:yr},"fill-pattern":{source:yr,composite:yr},"fill-extrusion-pattern":{source:yr,composite:yr}}[y]}(i);return f&&f[o]||u[t][o]}kt("ConstantBinder",Du),kt("CrossFadedConstantBinder",il),kt("SourceExpressionBinder",Uo),kt("CrossFadedCompositeBinder",ys),kt("CompositeExpressionBinder",eo),kt("ProgramConfiguration",Fy,{omit:["_buffers"]}),kt("ProgramConfigurationSet",fa);var dr=8192;const uf=Math.pow(2,14)-1,Ny=-uf-1;function ma(i){const t=dr/i.extent,o=i.loadGeometry();for(let u=0;uv.x+1||Ev.y+1)&&ne("Geometry exceeds allowed extent, reduce your vector tile buffer size")}}return o}function ga(i,t){return{type:i.type,id:i.id,properties:i.properties,geometry:t?ma(i):[]}}function Bh(i,t,o,u,f){i.emplaceBack(2*t+(u+1)/2,2*o+(f+1)/2)}class cf{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(o=>o.id),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new vn,this.indexArray=new Gr,this.segments=new Qt,this.programConfigurations=new fa(t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter(o=>o.isStateDependent()).map(o=>o.id)}populate(t,o,u){const f=this.layers[0],y=[];let v=null,b=!1;f.type==="circle"&&(v=f.layout.get("circle-sort-key"),b=!v.isConstant());for(const{feature:E,id:I,index:B,sourceLayerIndex:V}of t){const q=this.layers[0]._featureFilter.needGeometry,X=ga(E,q);if(!this.layers[0]._featureFilter.filter(new Nn(this.zoom),X,u))continue;const K=b?v.evaluate(X,{},u):void 0,ce={id:I,properties:E.properties,type:E.type,sourceLayerIndex:V,index:B,geometry:q?X.geometry:ma(E),patterns:{},sortKey:K};y.push(ce)}b&&y.sort((E,I)=>E.sortKey-I.sortKey);for(const E of y){const{geometry:I,index:B,sourceLayerIndex:V}=E,q=t[B].feature;this.addFeature(E,I,B,u),o.featureIndex.insert(q,I,B,V,this.index)}}update(t,o,u){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,o,this.stateDependentLayers,u)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,hr),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(t,o,u,f){for(const y of o)for(const v of y){const b=v.x,E=v.y;if(b<0||b>=dr||E<0||E>=dr)continue;const I=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),B=I.vertexLength;Bh(this.layoutVertexArray,b,E,-1,-1),Bh(this.layoutVertexArray,b,E,1,-1),Bh(this.layoutVertexArray,b,E,1,1),Bh(this.layoutVertexArray,b,E,-1,1),this.indexArray.emplaceBack(B,B+1,B+2),this.indexArray.emplaceBack(B,B+3,B+2),I.vertexLength+=4,I.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,u,{},f)}}function Uy(i,t){for(let o=0;o1){if(hf(i,t))return!0;for(let u=0;u1?o:o.sub(t)._mult(f)._add(t))}function $y(i,t){let o,u,f,y=!1;for(let v=0;vt.y!=f.y>t.y&&t.x<(f.x-u.x)*(t.y-u.y)/(f.y-u.y)+u.x&&(y=!y)}return y}function ol(i,t){let o=!1;for(let u=0,f=i.length-1;ut.y!=v.y>t.y&&t.x<(v.x-y.x)*(t.y-y.y)/(v.y-y.y)+y.x&&(o=!o)}return o}function ab(i,t,o){const u=o[0],f=o[2];if(i.xf.x&&t.x>f.x||i.yf.y&&t.y>f.y)return!1;const y=ve(i,t,o[0]);return y!==ve(i,t,o[1])||y!==ve(i,t,o[2])||y!==ve(i,t,o[3])}function Ru(i,t,o){const u=t.paint.get(i).value;return u.kind==="constant"?u.value:o.programConfigurations.get(t.id).getMaxValue(i)}function Fh(i){return Math.sqrt(i[0]*i[0]+i[1]*i[1])}function Oh(i,t,o,u,f){if(!t[0]&&!t[1])return i;const y=et.convert(t)._mult(f);o==="viewport"&&y._rotate(-u);const v=[];for(let b=0;bi.width||f.height>i.height||o.x>i.width-f.width||o.y>i.height-f.height)throw new RangeError("out of range source coordinates for image copy");if(f.width>t.width||f.height>t.height||u.x>t.width-f.width||u.y>t.height-f.height)throw new RangeError("out of range destination coordinates for image copy");const v=i.data,b=t.data;if(v===b)throw new Error("srcData equals dstData, so image is already copied");for(let E=0;E{t[i.evaluationKey]=E;const I=i.expression.evaluate(t);f.data[v+b+0]=Math.floor(255*I.r/I.a),f.data[v+b+1]=Math.floor(255*I.g/I.a),f.data[v+b+2]=Math.floor(255*I.b/I.a),f.data[v+b+3]=Math.floor(255*I.a)};if(i.clips)for(let v=0,b=0;v80*o){u=y=i[0],f=v=i[1];for(var K=o;Ky&&(y=b),E>v&&(v=E);I=(I=Math.max(y-u,v-f))!==0?32767/I:0}return Fu(q,X,o,u,f,I,0),X}function Qy(i,t,o,u,f){var y,v;if(f===_f(i,t,o,u)>0)for(y=t;y=t;y-=u)v=n_(y,i[y],i[y+1],v);return v&&jh(v,v.next)&&(Nu(v),v=v.next),v}function ya(i,t){if(!i)return i;t||(t=i);var o,u=i;do if(o=!1,u.steiner||!jh(u,u.next)&&tr(u.prev,u,u.next)!==0)u=u.next;else{if(Nu(u),(u=t=u.prev)===u.next)break;o=!0}while(o||u!==t);return t}function Fu(i,t,o,u,f,y,v){if(i){!v&&y&&function(B,V,q,X){var K=B;do K.z===0&&(K.z=gf(K.x,K.y,V,q,X)),K.prevZ=K.prev,K.nextZ=K.next,K=K.next;while(K!==B);K.prevZ.nextZ=null,K.prevZ=null,function(ce){var ue,Ie,Fe,Te,Re,Qe,Je,Tt,It=1;do{for(Ie=ce,ce=null,Re=null,Qe=0;Ie;){for(Qe++,Fe=Ie,Je=0,ue=0;ue0||Tt>0&&Fe;)Je!==0&&(Tt===0||!Fe||Ie.z<=Fe.z)?(Te=Ie,Ie=Ie.nextZ,Je--):(Te=Fe,Fe=Fe.nextZ,Tt--),Re?Re.nextZ=Te:ce=Te,Te.prevZ=Re,Re=Te;Ie=Fe}Re.nextZ=null,It*=2}while(Qe>1)}(K)}(i,u,f,y);for(var b,E,I=i;i.prev!==i.next;)if(b=i.prev,E=i.next,y?gb(i,u,f,y):mb(i))t.push(b.i/o|0),t.push(i.i/o|0),t.push(E.i/o|0),Nu(i),i=E.next,I=E.next;else if((i=E)===I){v?v===1?Fu(i=yb(ya(i),t,o),t,o,u,f,y,2):v===2&&_b(i,t,o,u,f,y):Fu(ya(i),t,o,u,f,y,1);break}}}function mb(i){var t=i.prev,o=i,u=i.next;if(tr(t,o,u)>=0)return!1;for(var f=t.x,y=o.x,v=u.x,b=t.y,E=o.y,I=u.y,B=fy?f>v?f:v:y>v?y:v,X=b>E?b>I?b:I:E>I?E:I,K=u.next;K!==t;){if(K.x>=B&&K.x<=q&&K.y>=V&&K.y<=X&&sl(f,b,y,E,v,I,K.x,K.y)&&tr(K.prev,K,K.next)>=0)return!1;K=K.next}return!0}function gb(i,t,o,u){var f=i.prev,y=i,v=i.next;if(tr(f,y,v)>=0)return!1;for(var b=f.x,E=y.x,I=v.x,B=f.y,V=y.y,q=v.y,X=bE?b>I?b:I:E>I?E:I,ue=B>V?B>q?B:q:V>q?V:q,Ie=gf(X,K,t,o,u),Fe=gf(ce,ue,t,o,u),Te=i.prevZ,Re=i.nextZ;Te&&Te.z>=Ie&&Re&&Re.z<=Fe;){if(Te.x>=X&&Te.x<=ce&&Te.y>=K&&Te.y<=ue&&Te!==f&&Te!==v&&sl(b,B,E,V,I,q,Te.x,Te.y)&&tr(Te.prev,Te,Te.next)>=0||(Te=Te.prevZ,Re.x>=X&&Re.x<=ce&&Re.y>=K&&Re.y<=ue&&Re!==f&&Re!==v&&sl(b,B,E,V,I,q,Re.x,Re.y)&&tr(Re.prev,Re,Re.next)>=0))return!1;Re=Re.nextZ}for(;Te&&Te.z>=Ie;){if(Te.x>=X&&Te.x<=ce&&Te.y>=K&&Te.y<=ue&&Te!==f&&Te!==v&&sl(b,B,E,V,I,q,Te.x,Te.y)&&tr(Te.prev,Te,Te.next)>=0)return!1;Te=Te.prevZ}for(;Re&&Re.z<=Fe;){if(Re.x>=X&&Re.x<=ce&&Re.y>=K&&Re.y<=ue&&Re!==f&&Re!==v&&sl(b,B,E,V,I,q,Re.x,Re.y)&&tr(Re.prev,Re,Re.next)>=0)return!1;Re=Re.nextZ}return!0}function yb(i,t,o){var u=i;do{var f=u.prev,y=u.next.next;!jh(f,y)&&e_(f,u,u.next,y)&&Ou(f,y)&&Ou(y,f)&&(t.push(f.i/o|0),t.push(u.i/o|0),t.push(y.i/o|0),Nu(u),Nu(u.next),u=i=y),u=u.next}while(u!==i);return ya(u)}function _b(i,t,o,u,f,y){var v=i;do{for(var b=v.next.next;b!==v.prev;){if(v.i!==b.i&&Sb(v,b)){var E=t_(v,b);return v=ya(v,v.next),E=ya(E,E.next),Fu(v,t,o,u,f,y,0),void Fu(E,t,o,u,f,y,0)}b=b.next}v=v.next}while(v!==i)}function vb(i,t){return i.x-t.x}function xb(i,t){var o=function(f,y){var v,b=y,E=f.x,I=f.y,B=-1/0;do{if(I<=b.y&&I>=b.next.y&&b.next.y!==b.y){var V=b.x+(I-b.y)*(b.next.x-b.x)/(b.next.y-b.y);if(V<=E&&V>B&&(B=V,v=b.x=b.x&&b.x>=K&&E!==b.x&&sl(Iv.x||b.x===v.x&&wb(v,b)))&&(v=b,ue=q)),b=b.next;while(b!==X);return v}(i,t);if(!o)return t;var u=t_(o,i);return ya(u,u.next),ya(o,o.next)}function wb(i,t){return tr(i.prev,i,t.prev)<0&&tr(t.next,i,i.next)<0}function gf(i,t,o,u,f){return(i=1431655765&((i=858993459&((i=252645135&((i=16711935&((i=(i-o)*f|0)|i<<8))|i<<4))|i<<2))|i<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-u)*f|0)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function bb(i){var t=i,o=i;do(t.x=(i-v)*(y-b)&&(i-v)*(u-b)>=(o-v)*(t-b)&&(o-v)*(y-b)>=(f-v)*(u-b)}function Sb(i,t){return i.next.i!==t.i&&i.prev.i!==t.i&&!function(o,u){var f=o;do{if(f.i!==o.i&&f.next.i!==o.i&&f.i!==u.i&&f.next.i!==u.i&&e_(f,f.next,o,u))return!0;f=f.next}while(f!==o);return!1}(i,t)&&(Ou(i,t)&&Ou(t,i)&&function(o,u){var f=o,y=!1,v=(o.x+u.x)/2,b=(o.y+u.y)/2;do f.y>b!=f.next.y>b&&f.next.y!==f.y&&v<(f.next.x-f.x)*(b-f.y)/(f.next.y-f.y)+f.x&&(y=!y),f=f.next;while(f!==o);return y}(i,t)&&(tr(i.prev,i,t.prev)||tr(i,t.prev,t))||jh(i,t)&&tr(i.prev,i,i.next)>0&&tr(t.prev,t,t.next)>0)}function tr(i,t,o){return(t.y-i.y)*(o.x-t.x)-(t.x-i.x)*(o.y-t.y)}function jh(i,t){return i.x===t.x&&i.y===t.y}function e_(i,t,o,u){var f=Gh(tr(i,t,o)),y=Gh(tr(i,t,u)),v=Gh(tr(o,u,i)),b=Gh(tr(o,u,t));return f!==y&&v!==b||!(f!==0||!$h(i,o,t))||!(y!==0||!$h(i,u,t))||!(v!==0||!$h(o,i,u))||!(b!==0||!$h(o,t,u))}function $h(i,t,o){return t.x<=Math.max(i.x,o.x)&&t.x>=Math.min(i.x,o.x)&&t.y<=Math.max(i.y,o.y)&&t.y>=Math.min(i.y,o.y)}function Gh(i){return i>0?1:i<0?-1:0}function Ou(i,t){return tr(i.prev,i,i.next)<0?tr(i,t,i.next)>=0&&tr(i,i.prev,t)>=0:tr(i,t,i.prev)<0||tr(i,i.next,t)<0}function t_(i,t){var o=new yf(i.i,i.x,i.y),u=new yf(t.i,t.x,t.y),f=i.next,y=t.prev;return i.next=t,t.prev=i,o.next=f,f.prev=o,u.next=o,o.prev=u,y.next=u,u.prev=y,u}function n_(i,t,o,u){var f=new yf(i,t,o);return u?(f.next=u.next,f.prev=u,u.next.prev=f,u.next=f):(f.prev=f,f.next=f),f}function Nu(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 yf(i,t,o){this.i=i,this.x=t,this.y=o,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function _f(i,t,o,u){for(var f=0,y=t,v=o-u;yo;){if(u-o>600){var y=u-o+1,v=t-o+1,b=Math.log(y),E=.5*Math.exp(2*b/3),I=.5*Math.sqrt(b*E*(y-E)/y)*(v-y/2<0?-1:1);r_(i,t,Math.max(o,Math.floor(t-v*E/y+I)),Math.min(u,Math.floor(t+(y-v)*E/y+I)),f)}var B=i[t],V=o,q=u;for(Uu(i,o,t),f(i[u],B)>0&&Uu(i,o,u);V0;)q--}f(i[o],B)===0?Uu(i,o,q):Uu(i,++q,u),q<=t&&(o=q+1),t<=q&&(u=q-1)}}function Uu(i,t,o){var u=i[t];i[t]=i[o],i[o]=u}function Tb(i,t){return it?1:0}function vf(i,t){const o=i.length;if(o<=1)return[i];const u=[];let f,y;for(let v=0;v1)for(let v=0;v0&&o.holes.push(u+=i[f-1].length)}return o};class bf{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(o=>o.id),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new xn,this.indexArray=new Gr,this.indexArray2=new Qi,this.programConfigurations=new fa(t.layers,t.zoom),this.segments=new Qt,this.segments2=new Qt,this.stateDependentLayerIds=this.layers.filter(o=>o.isStateDependent()).map(o=>o.id)}populate(t,o,u){this.hasPattern=xf("fill",this.layers,o);const f=this.layers[0].layout.get("fill-sort-key"),y=!f.isConstant(),v=[];for(const{feature:b,id:E,index:I,sourceLayerIndex:B}of t){const V=this.layers[0]._featureFilter.needGeometry,q=ga(b,V);if(!this.layers[0]._featureFilter.filter(new Nn(this.zoom),q,u))continue;const X=y?f.evaluate(q,{},u,o.availableImages):void 0,K={id:E,properties:b.properties,type:b.type,sourceLayerIndex:B,index:I,geometry:V?q.geometry:ma(b),patterns:{},sortKey:X};v.push(K)}y&&v.sort((b,E)=>b.sortKey-E.sortKey);for(const b of v){const{geometry:E,index:I,sourceLayerIndex:B}=b;if(this.hasPattern){const V=wf("fill",this.layers,b,this.zoom,o);this.patternFeatures.push(V)}else this.addFeature(b,E,I,u,{});o.featureIndex.insert(t[I].feature,E,I,B,this.index)}}update(t,o,u){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,o,this.stateDependentLayers,u)}addFeatures(t,o,u){for(const f of this.patternFeatures)this.addFeature(f,f.geometry,f.index,o,u)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,fb),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.indexBuffer2=t.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(t),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(t,o,u,f,y){for(const v of vf(o,500)){let b=0;for(const X of v)b+=X.length;const E=this.segments.prepareSegment(b,this.layoutVertexArray,this.indexArray),I=E.vertexLength,B=[],V=[];for(const X of v){if(X.length===0)continue;X!==v[0]&&V.push(B.length/2);const K=this.segments2.prepareSegment(X.length,this.layoutVertexArray,this.indexArray2),ce=K.vertexLength;this.layoutVertexArray.emplaceBack(X[0].x,X[0].y),this.indexArray2.emplaceBack(ce+X.length-1,ce),B.push(X[0].x),B.push(X[0].y);for(let ue=1;ue>3}if(f--,u===1||u===2)y+=i.readSVarint(),v+=i.readSVarint(),u===1&&(t&&b.push(t),t=[]),t.push(new Mb(y,v));else{if(u!==7)throw new Error("unknown command "+u);t&&t.push(t[0].clone())}}return t&&b.push(t),b},al.prototype.bbox=function(){var i=this._pbf;i.pos=this._geometry;for(var t=i.readVarint()+i.pos,o=1,u=0,f=0,y=0,v=1/0,b=-1/0,E=1/0,I=-1/0;i.pos>3}if(u--,o===1||o===2)(f+=i.readSVarint())b&&(b=f),(y+=i.readSVarint())I&&(I=y);else if(o!==7)throw new Error("unknown command "+o)}return[v,E,b,I]},al.prototype.toGeoJSON=function(i,t,o){var u,f,y=this.extent*Math.pow(2,o),v=this.extent*i,b=this.extent*t,E=this.loadGeometry(),I=al.types[this.type];function B(X){for(var K=0;K>3;f=v===1?u.readString():v===2?u.readFloat():v===3?u.readDouble():v===4?u.readVarint64():v===5?u.readVarint():v===6?u.readSVarint():v===7?u.readBoolean():null}return f}(o))}s_.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 t=this._pbf.readVarint()+this._pbf.pos;return new Lb(this._pbf,t,this.extent,this._keys,this._values)};var Fb=o_;function Ob(i,t,o){if(i===3){var u=new Fb(o,o.readVarint()+o.pos);u.length&&(t[u.name]=u)}}_s.VectorTile=function(i,t){this.layers=i.readFields(Ob,{},t)},_s.VectorTileFeature=i_,_s.VectorTileLayer=o_;const Nb=_s.VectorTileFeature.types,Sf=Math.pow(2,13);function Vu(i,t,o,u,f,y,v,b){i.emplaceBack(t,o,2*Math.floor(u*Sf)+v,f*Sf*2,y*Sf*2,Math.round(b))}class Ef{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map(o=>o.id),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new ln,this.centroidVertexArray=new Ft,this.indexArray=new Gr,this.programConfigurations=new fa(t.layers,t.zoom),this.segments=new Qt,this.stateDependentLayerIds=this.layers.filter(o=>o.isStateDependent()).map(o=>o.id)}populate(t,o,u){this.features=[],this.hasPattern=xf("fill-extrusion",this.layers,o);for(const{feature:f,id:y,index:v,sourceLayerIndex:b}of t){const E=this.layers[0]._featureFilter.needGeometry,I=ga(f,E);if(!this.layers[0]._featureFilter.filter(new Nn(this.zoom),I,u))continue;const B={id:y,sourceLayerIndex:b,index:v,geometry:E?I.geometry:ma(f),properties:f.properties,type:f.type,patterns:{}};this.hasPattern?this.features.push(wf("fill-extrusion",this.layers,B,this.zoom,o)):this.addFeature(B,B.geometry,v,u,{}),o.featureIndex.insert(f,B.geometry,v,b,this.index,!0)}}addFeatures(t,o,u){for(const f of this.features){const{geometry:y}=f;this.addFeature(f,y,f.index,o,u)}}update(t,o,u){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,o,this.stateDependentLayers,u)}isEmpty(){return this.layoutVertexArray.length===0&&this.centroidVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Pb),this.centroidVertexBuffer=t.createVertexBuffer(this.centroidVertexArray,zb.members,!0),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy())}addFeature(t,o,u,f,y){const v={x:0,y:0,vertexCount:0};for(const b of vf(o,500)){let E=0;for(const K of b)E+=K.length;let I=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(const K of b){if(K.length===0||Vb(K))continue;let ce=0;for(let ue=0;ue=1){const Fe=K[ue-1];if(!Ub(Ie,Fe)){I.vertexLength+4>Qt.MAX_VERTEX_ARRAY_LENGTH&&(I=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));const Te=Ie.sub(Fe)._perp()._unit(),Re=Fe.dist(Ie);ce+Re>32768&&(ce=0),Vu(this.layoutVertexArray,Ie.x,Ie.y,Te.x,Te.y,0,0,ce),Vu(this.layoutVertexArray,Ie.x,Ie.y,Te.x,Te.y,0,1,ce),v.x+=2*Ie.x,v.y+=2*Ie.y,v.vertexCount+=2,ce+=Re,Vu(this.layoutVertexArray,Fe.x,Fe.y,Te.x,Te.y,0,0,ce),Vu(this.layoutVertexArray,Fe.x,Fe.y,Te.x,Te.y,0,1,ce),v.x+=2*Fe.x,v.y+=2*Fe.y,v.vertexCount+=2;const Qe=I.vertexLength;this.indexArray.emplaceBack(Qe,Qe+2,Qe+1),this.indexArray.emplaceBack(Qe+1,Qe+2,Qe+3),I.vertexLength+=4,I.primitiveLength+=2}}}}if(I.vertexLength+E>Qt.MAX_VERTEX_ARRAY_LENGTH&&(I=this.segments.prepareSegment(E,this.layoutVertexArray,this.indexArray)),Nb[t.type]!=="Polygon")continue;const B=[],V=[],q=I.vertexLength;for(const K of b)if(K.length!==0){K!==b[0]&&V.push(B.length/2);for(let ce=0;cedr)||i.y===t.y&&(i.y<0||i.y>dr)}function Vb(i){return i.every(t=>t.x<0)||i.every(t=>t.x>dr)||i.every(t=>t.y<0)||i.every(t=>t.y>dr)}kt("FillExtrusionBucket",Ef,{omit:["layers","features"]});var jb={paint:new Sr({"fill-extrusion-opacity":new Pt(ke["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new jt(ke["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new Pt(ke["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new Pt(ke["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new ms(ke["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new jt(ke["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new jt(ke["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new Pt(ke["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})};function ju(i,t){return i.x*t.x+i.y*t.y}function a_(i,t){if(i.length===1){let o=0;const u=t[o++];let f;for(;!f||u.equals(f);)if(f=t[o++],!f)return 1/0;for(;oo.id),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(o=>{this.gradients[o.id]={}}),this.layoutVertexArray=new hn,this.layoutVertexArray2=new bn,this.indexArray=new Gr,this.programConfigurations=new fa(t.layers,t.zoom),this.segments=new Qt,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(o=>o.isStateDependent()).map(o=>o.id)}populate(t,o,u){this.hasPattern=xf("line",this.layers,o);const f=this.layers[0].layout.get("line-sort-key"),y=!f.isConstant(),v=[];for(const{feature:b,id:E,index:I,sourceLayerIndex:B}of t){const V=this.layers[0]._featureFilter.needGeometry,q=ga(b,V);if(!this.layers[0]._featureFilter.filter(new Nn(this.zoom),q,u))continue;const X=y?f.evaluate(q,{},u):void 0,K={id:E,properties:b.properties,type:b.type,sourceLayerIndex:B,index:I,geometry:V?q.geometry:ma(b),patterns:{},sortKey:X};v.push(K)}y&&v.sort((b,E)=>b.sortKey-E.sortKey);for(const b of v){const{geometry:E,index:I,sourceLayerIndex:B}=b;if(this.hasPattern){const V=wf("line",this.layers,b,this.zoom,o);this.patternFeatures.push(V)}else this.addFeature(b,E,I,u,{});o.featureIndex.insert(t[I].feature,E,I,B,this.index)}}update(t,o,u){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,o,this.stateDependentLayers,u)}addFeatures(t,o,u){for(const f of this.patternFeatures)this.addFeature(f,f.geometry,f.index,o,u)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexArray2.length!==0&&(this.layoutVertexBuffer2=t.createVertexBuffer(this.layoutVertexArray2,qb)),this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Gb),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(t){if(t.properties&&Object.prototype.hasOwnProperty.call(t.properties,"mapbox_clip_start")&&Object.prototype.hasOwnProperty.call(t.properties,"mapbox_clip_end"))return{start:+t.properties.mapbox_clip_start,end:+t.properties.mapbox_clip_end}}addFeature(t,o,u,f,y){const v=this.layers[0].layout,b=v.get("line-join").evaluate(t,{}),E=v.get("line-cap"),I=v.get("line-miter-limit"),B=v.get("line-round-limit");this.lineClips=this.lineFeatureClips(t);for(const V of o)this.addLine(V,t,b,E,I,B);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,u,y,f)}addLine(t,o,u,f,y,v){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let Ie=0;Ie=2&&t[E-1].equals(t[E-2]);)E--;let I=0;for(;I0;if(Tt&&Ie>I){const pt=q.dist(X);if(pt>2*B){const xt=q.sub(q.sub(X)._mult(B/pt)._round());this.updateDistance(X,xt),this.addCurrentVertex(xt,ce,0,0,V),X=xt}}const vt=X&&K;let mt=vt?u:b?"butt":f;if(vt&&mt==="round"&&(Qey&&(mt="bevel"),mt==="bevel"&&(Qe>2&&(mt="flipbevel"),Qe100)Fe=ue.mult(-1);else{const pt=Qe*ce.add(ue).mag()/ce.sub(ue).mag();Fe._perp()._mult(pt*(It?-1:1))}this.addCurrentVertex(q,Fe,0,0,V),this.addCurrentVertex(q,Fe.mult(-1),0,0,V)}else if(mt==="bevel"||mt==="fakeround"){const pt=-Math.sqrt(Qe*Qe-1),xt=It?pt:0,gt=It?0:pt;if(X&&this.addCurrentVertex(q,ce,xt,gt,V),mt==="fakeround"){const st=Math.round(180*Je/Math.PI/20);for(let Ot=1;Ot2*B){const xt=q.add(K.sub(q)._mult(B/pt)._round());this.updateDistance(q,xt),this.addCurrentVertex(xt,ue,0,0,V),q=xt}}}}addCurrentVertex(t,o,u,f,y,v=!1){const b=o.y*f-o.x,E=-o.y-o.x*f;this.addHalfVertex(t,o.x+o.y*u,o.y-o.x*u,v,!1,u,y),this.addHalfVertex(t,b,E,v,!0,-f,y),this.distance>l_/2&&this.totalDistance===0&&(this.distance=0,this.addCurrentVertex(t,o,u,f,y,v))}addHalfVertex({x:t,y:o},u,f,y,v,b,E){const I=.5*(this.lineClips?this.scaledDistance*(l_-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((t<<1)+(y?1:0),(o<<1)+(v?1:0),Math.round(63*u)+128,Math.round(63*f)+128,1+(b===0?0:b<0?-1:1)|(63&I)<<2,I>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);const B=E.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,B),E.primitiveLength++),v?this.e2=B:this.e1=B}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(t,o){this.distance+=t.dist(o),this.updateScaledDistance()}}kt("LineBucket",Tf,{omit:["layers","patternFeatures"]});const Xb=new Sr({"line-cap":new Pt(ke.layout_line["line-cap"]),"line-join":new jt(ke.layout_line["line-join"]),"line-miter-limit":new Pt(ke.layout_line["line-miter-limit"]),"line-round-limit":new Pt(ke.layout_line["line-round-limit"]),"line-sort-key":new jt(ke.layout_line["line-sort-key"])});var u_={paint:new Sr({"line-opacity":new jt(ke.paint_line["line-opacity"]),"line-color":new jt(ke.paint_line["line-color"]),"line-translate":new Pt(ke.paint_line["line-translate"]),"line-translate-anchor":new Pt(ke.paint_line["line-translate-anchor"]),"line-width":new jt(ke.paint_line["line-width"]),"line-gap-width":new jt(ke.paint_line["line-gap-width"]),"line-offset":new jt(ke.paint_line["line-offset"]),"line-blur":new jt(ke.paint_line["line-blur"]),"line-dasharray":new Au(ke.paint_line["line-dasharray"]),"line-pattern":new ms(ke.paint_line["line-pattern"]),"line-gradient":new go(ke.paint_line["line-gradient"])}),layout:Xb};const c_=new class extends jt{possiblyEvaluate(i,t){return t=new Nn(Math.floor(t.zoom),{now:t.now,fadeDuration:t.fadeDuration,zoomHistory:t.zoomHistory,transition:t.transition}),super.possiblyEvaluate(i,t)}evaluate(i,t,o,u){return t=W({},t,{zoom:Math.floor(t.zoom)}),super.evaluate(i,t,o,u)}}(u_.paint.properties["line-width"].specification);function h_(i,t){return t>0?t+2*i:i}c_.useIntegerZoom=!0;const Kb=sr([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),Yb=sr([{name:"a_projected_pos",components:3,type:"Float32"}],4);sr([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);const Jb=sr([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"}]);sr([{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 d_=sr([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),Qb=sr([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function e2(i,t,o){return i.sections.forEach(u=>{u.text=function(f,y,v){const b=y.layout.get("text-transform").evaluate(v,{});return b==="uppercase"?f=f.toLocaleUpperCase():b==="lowercase"&&(f=f.toLocaleLowerCase()),pi.applyArabicShaping&&(f=pi.applyArabicShaping(f)),f}(u.text,t,o)}),i}sr([{name:"triangle",components:3,type:"Uint16"}]),sr([{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"}]),sr([{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",components:2,name:"textOffset"},{type:"Float32",name:"collisionCircleDiameter"}]),sr([{type:"Float32",name:"offsetX"}]),sr([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]);const $u={"!":"︕","#":"#",$:"$","%":"%","&":"&","(":"︵",")":"︶","*":"*","+":"+",",":"︐","-":"︲",".":"・","/":"/",":":"︓",";":"︔","<":"︿","=":"=",">":"﹀","?":"︖","@":"@","[":"﹇","\\":"\","]":"﹈","^":"^",_:"︳","`":"`","{":"︷","|":"―","}":"︸","~":"~","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","–":"︲","—":"︱","‘":"﹃","’":"﹄","“":"﹁","”":"﹂","…":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","〔":"︹","〕":"︺","〖":"︗","〗":"︘","!":"︕","(":"︵",")":"︶",",":"︐","-":"︲",".":"・",":":"︓",";":"︔","<":"︿",">":"﹀","?":"︖","[":"﹇","]":"﹈","_":"︳","{":"︷","|":"―","}":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂"};var Er=24,kf=kn,p_=function(i,t,o,u,f){var y,v,b=8*f-u-1,E=(1<>1,B=-7,V=o?f-1:0,q=o?-1:1,X=i[t+V];for(V+=q,y=X&(1<<-B)-1,X>>=-B,B+=b;B>0;y=256*y+i[t+V],V+=q,B-=8);for(v=y&(1<<-B)-1,y>>=-B,B+=u;B>0;v=256*v+i[t+V],V+=q,B-=8);if(y===0)y=1-I;else{if(y===E)return v?NaN:1/0*(X?-1:1);v+=Math.pow(2,u),y-=I}return(X?-1:1)*v*Math.pow(2,y-u)},f_=function(i,t,o,u,f,y){var v,b,E,I=8*y-f-1,B=(1<>1,q=f===23?Math.pow(2,-24)-Math.pow(2,-77):0,X=u?0:y-1,K=u?1:-1,ce=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(b=isNaN(t)?1:0,v=B):(v=Math.floor(Math.log(t)/Math.LN2),t*(E=Math.pow(2,-v))<1&&(v--,E*=2),(t+=v+V>=1?q/E:q*Math.pow(2,1-V))*E>=2&&(v++,E/=2),v+V>=B?(b=0,v=B):v+V>=1?(b=(t*E-1)*Math.pow(2,f),v+=V):(b=t*Math.pow(2,V-1)*Math.pow(2,f),v=0));f>=8;i[o+X]=255&b,X+=K,b/=256,f-=8);for(v=v<0;i[o+X]=255&v,X+=K,v/=256,I-=8);i[o+X-K]|=128*ce};function kn(i){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(i)?i:new Uint8Array(i||0),this.pos=0,this.type=0,this.length=this.buf.length}kn.Varint=0,kn.Fixed64=1,kn.Bytes=2,kn.Fixed32=5;var vs,Cf=4294967296,m_=1/Cf,g_=typeof TextDecoder>"u"?null:new TextDecoder("utf8");function Vo(i){return i.type===kn.Bytes?i.readVarint()+i.pos:i.pos+1}function ll(i,t,o){return o?4294967296*t+(i>>>0):4294967296*(t>>>0)+(i>>>0)}function y_(i,t,o){var u=t<=16383?1:t<=2097151?2:t<=268435455?3:Math.floor(Math.log(t)/(7*Math.LN2));o.realloc(u);for(var f=o.pos-1;f>=i;f--)o.buf[f+u]=o.buf[f]}function t2(i,t){for(var o=0;o>>8,i[o+2]=t>>>16,i[o+3]=t>>>24}function __(i,t){return(i[t]|i[t+1]<<8|i[t+2]<<16)+(i[t+3]<<24)}function c2(i,t,o){i===1&&o.readMessage(h2,t)}function h2(i,t,o){if(i===3){const{id:u,bitmap:f,width:y,height:v,left:b,top:E,advance:I}=o.readMessage(d2,{});t.push({id:u,bitmap:new Bu({width:y+6,height:v+6},f),metrics:{width:y,height:v,left:b,top:E,advance:I}})}}function d2(i,t,o){i===1?t.id=o.readVarint():i===2?t.bitmap=o.readBytes():i===3?t.width=o.readVarint():i===4?t.height=o.readVarint():i===5?t.left=o.readSVarint():i===6?t.top=o.readSVarint():i===7&&(t.advance=o.readVarint())}function v_(i){let t=0,o=0;for(const v of i)t+=v.w*v.h,o=Math.max(o,v.w);i.sort((v,b)=>b.h-v.h);const u=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(t/.95)),o),h:1/0}];let f=0,y=0;for(const v of i)for(let b=u.length-1;b>=0;b--){const E=u[b];if(!(v.w>E.w||v.h>E.h)){if(v.x=E.x,v.y=E.y,y=Math.max(y,v.y+v.h),f=Math.max(f,v.x+v.w),v.w===E.w&&v.h===E.h){const I=u.pop();b>3,y=this.pos;this.type=7&u,i(f,t,this),this.pos===y&&this.skip(u)}return t},readMessage:function(i,t){return this.readFields(i,t,this.readVarint()+this.pos)},readFixed32:function(){var i=Zh(this.buf,this.pos);return this.pos+=4,i},readSFixed32:function(){var i=__(this.buf,this.pos);return this.pos+=4,i},readFixed64:function(){var i=Zh(this.buf,this.pos)+Zh(this.buf,this.pos+4)*Cf;return this.pos+=8,i},readSFixed64:function(){var i=Zh(this.buf,this.pos)+__(this.buf,this.pos+4)*Cf;return this.pos+=8,i},readFloat:function(){var i=p_(this.buf,this.pos,!0,23,4);return this.pos+=4,i},readDouble:function(){var i=p_(this.buf,this.pos,!0,52,8);return this.pos+=8,i},readVarint:function(i){var t,o,u=this.buf;return t=127&(o=u[this.pos++]),o<128?t:(t|=(127&(o=u[this.pos++]))<<7,o<128?t:(t|=(127&(o=u[this.pos++]))<<14,o<128?t:(t|=(127&(o=u[this.pos++]))<<21,o<128?t:function(f,y,v){var b,E,I=v.buf;if(b=(112&(E=I[v.pos++]))>>4,E<128||(b|=(127&(E=I[v.pos++]))<<3,E<128)||(b|=(127&(E=I[v.pos++]))<<10,E<128)||(b|=(127&(E=I[v.pos++]))<<17,E<128)||(b|=(127&(E=I[v.pos++]))<<24,E<128)||(b|=(1&(E=I[v.pos++]))<<31,E<128))return ll(f,b,y);throw new Error("Expected varint not more than 10 bytes")}(t|=(15&(o=u[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,t=this.pos;return this.pos=i,i-t>=12&&g_?function(o,u,f){return g_.decode(o.subarray(u,f))}(this.buf,t,i):function(o,u,f){for(var y="",v=u;v239?4:B>223?3:B>191?2:1;if(v+q>f)break;q===1?B<128&&(V=B):q===2?(192&(b=o[v+1]))==128&&(V=(31&B)<<6|63&b)<=127&&(V=null):q===3?(E=o[v+2],(192&(b=o[v+1]))==128&&(192&E)==128&&((V=(15&B)<<12|(63&b)<<6|63&E)<=2047||V>=55296&&V<=57343)&&(V=null)):q===4&&(E=o[v+2],I=o[v+3],(192&(b=o[v+1]))==128&&(192&E)==128&&(192&I)==128&&((V=(15&B)<<18|(63&b)<<12|(63&E)<<6|63&I)<=65535||V>=1114112)&&(V=null)),V===null?(V=65533,q=1):V>65535&&(V-=65536,y+=String.fromCharCode(V>>>10&1023|55296),V=56320|1023&V),y+=String.fromCharCode(V),v+=q}return y}(this.buf,t,i)},readBytes:function(){var i=this.readVarint()+this.pos,t=this.buf.subarray(this.pos,i);return this.pos=i,t},readPackedVarint:function(i,t){if(this.type!==kn.Bytes)return i.push(this.readVarint(t));var o=Vo(this);for(i=i||[];this.pos127;);else if(t===kn.Bytes)this.pos=this.readVarint()+this.pos;else if(t===kn.Fixed32)this.pos+=4;else{if(t!==kn.Fixed64)throw new Error("Unimplemented type: "+t);this.pos+=8}},writeTag:function(i,t){this.writeVarint(i<<3|t)},realloc:function(i){for(var t=this.length||16;t268435455||i<0?function(t,o){var u,f;if(t>=0?(u=t%4294967296|0,f=t/4294967296|0):(f=~(-t/4294967296),4294967295^(u=~(-t%4294967296))?u=u+1|0:(u=0,f=f+1|0)),t>=18446744073709552e3||t<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");o.realloc(10),function(y,v,b){b.buf[b.pos++]=127&y|128,y>>>=7,b.buf[b.pos++]=127&y|128,y>>>=7,b.buf[b.pos++]=127&y|128,y>>>=7,b.buf[b.pos++]=127&y|128,b.buf[b.pos]=127&(y>>>=7)}(u,0,o),function(y,v){var b=(7&y)<<4;v.buf[v.pos++]|=b|((y>>>=3)?128:0),y&&(v.buf[v.pos++]=127&y|((y>>>=7)?128:0),y&&(v.buf[v.pos++]=127&y|((y>>>=7)?128:0),y&&(v.buf[v.pos++]=127&y|((y>>>=7)?128:0),y&&(v.buf[v.pos++]=127&y|((y>>>=7)?128:0),y&&(v.buf[v.pos++]=127&y)))))}(f,o)}(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 t=this.pos;this.pos=function(u,f,y){for(var v,b,E=0;E55295&&v<57344){if(!b){v>56319||E+1===f.length?(u[y++]=239,u[y++]=191,u[y++]=189):b=v;continue}if(v<56320){u[y++]=239,u[y++]=191,u[y++]=189,b=v;continue}v=b-55296<<10|v-56320|65536,b=null}else b&&(u[y++]=239,u[y++]=191,u[y++]=189,b=null);v<128?u[y++]=v:(v<2048?u[y++]=v>>6|192:(v<65536?u[y++]=v>>12|224:(u[y++]=v>>18|240,u[y++]=v>>12&63|128),u[y++]=v>>6&63|128),u[y++]=63&v|128)}return y}(this.buf,i,this.pos);var o=this.pos-t;o>=128&&y_(t,o,this),this.pos=t-1,this.writeVarint(o),this.pos+=o},writeFloat:function(i){this.realloc(4),f_(this.buf,i,this.pos,!0,23,4),this.pos+=4},writeDouble:function(i){this.realloc(8),f_(this.buf,i,this.pos,!0,52,8),this.pos+=8},writeBytes:function(i){var t=i.length;this.writeVarint(t),this.realloc(t);for(var o=0;o=128&&y_(o,u,this),this.pos=o-1,this.writeVarint(u),this.pos+=u},writeMessage:function(i,t,o){this.writeTag(i,kn.Bytes),this.writeRawMessage(t,o)},writePackedVarint:function(i,t){t.length&&this.writeMessage(i,t2,t)},writePackedSVarint:function(i,t){t.length&&this.writeMessage(i,n2,t)},writePackedBoolean:function(i,t){t.length&&this.writeMessage(i,o2,t)},writePackedFloat:function(i,t){t.length&&this.writeMessage(i,r2,t)},writePackedDouble:function(i,t){t.length&&this.writeMessage(i,i2,t)},writePackedFixed32:function(i,t){t.length&&this.writeMessage(i,s2,t)},writePackedSFixed32:function(i,t){t.length&&this.writeMessage(i,a2,t)},writePackedFixed64:function(i,t){t.length&&this.writeMessage(i,l2,t)},writePackedSFixed64:function(i,t){t.length&&this.writeMessage(i,u2,t)},writeBytesField:function(i,t){this.writeTag(i,kn.Bytes),this.writeBytes(t)},writeFixed32Field:function(i,t){this.writeTag(i,kn.Fixed32),this.writeFixed32(t)},writeSFixed32Field:function(i,t){this.writeTag(i,kn.Fixed32),this.writeSFixed32(t)},writeFixed64Field:function(i,t){this.writeTag(i,kn.Fixed64),this.writeFixed64(t)},writeSFixed64Field:function(i,t){this.writeTag(i,kn.Fixed64),this.writeSFixed64(t)},writeVarintField:function(i,t){this.writeTag(i,kn.Varint),this.writeVarint(t)},writeSVarintField:function(i,t){this.writeTag(i,kn.Varint),this.writeSVarint(t)},writeStringField:function(i,t){this.writeTag(i,kn.Bytes),this.writeString(t)},writeFloatField:function(i,t){this.writeTag(i,kn.Fixed32),this.writeFloat(t)},writeDoubleField:function(i,t){this.writeTag(i,kn.Fixed64),this.writeDouble(t)},writeBooleanField:function(i,t){this.writeVarintField(i,!!t)}};class If{constructor(t,{pixelRatio:o,version:u,stretchX:f,stretchY:y,content:v}){this.paddedRect=t,this.pixelRatio=o,this.stretchX=f,this.stretchY=y,this.content=v,this.version=u}get tl(){return[this.paddedRect.x+1,this.paddedRect.y+1]}get br(){return[this.paddedRect.x+this.paddedRect.w-1,this.paddedRect.y+this.paddedRect.h-1]}get tlbr(){return this.tl.concat(this.br)}get displaySize(){return[(this.paddedRect.w-2)/this.pixelRatio,(this.paddedRect.h-2)/this.pixelRatio]}}class x_{constructor(t,o){const u={},f={};this.haveRenderCallbacks=[];const y=[];this.addImages(t,u,y),this.addImages(o,f,y);const{w:v,h:b}=v_(y),E=new ki({width:v||1,height:b||1});for(const I in t){const B=t[I],V=u[I].paddedRect;ki.copy(B.data,E,{x:0,y:0},{x:V.x+1,y:V.y+1},B.data)}for(const I in o){const B=o[I],V=f[I].paddedRect,q=V.x+1,X=V.y+1,K=B.data.width,ce=B.data.height;ki.copy(B.data,E,{x:0,y:0},{x:q,y:X},B.data),ki.copy(B.data,E,{x:0,y:ce-1},{x:q,y:X-1},{width:K,height:1}),ki.copy(B.data,E,{x:0,y:0},{x:q,y:X+ce},{width:K,height:1}),ki.copy(B.data,E,{x:K-1,y:0},{x:q-1,y:X},{width:1,height:ce}),ki.copy(B.data,E,{x:0,y:0},{x:q+K,y:X},{width:1,height:ce})}this.image=E,this.iconPositions=u,this.patternPositions=f}addImages(t,o,u){for(const f in t){const y=t[f],v={x:0,y:0,w:y.data.width+2,h:y.data.height+2};u.push(v),o[f]=new If(v,y),y.hasRenderCallback&&this.haveRenderCallbacks.push(f)}}patchUpdatedImages(t,o){t.dispatchRenderCallbacks(this.haveRenderCallbacks);for(const u in t.updatedImages)this.patchUpdatedImage(this.iconPositions[u],t.getImage(u),o),this.patchUpdatedImage(this.patternPositions[u],t.getImage(u),o)}patchUpdatedImage(t,o,u){if(!t||!o||t.version===o.version)return;t.version=o.version;const[f,y]=t.tl;u.update(o.data,void 0,{x:f,y})}}kt("ImagePosition",If),kt("ImageAtlas",x_),l.WritingMode=void 0,(vs=l.WritingMode||(l.WritingMode={}))[vs.none=0]="none",vs[vs.horizontal=1]="horizontal",vs[vs.vertical=2]="vertical",vs[vs.horizontalOnly=3]="horizontalOnly";const qh=-17;class Gu{constructor(){this.scale=1,this.fontStack="",this.imageName=null}static forText(t,o){const u=new Gu;return u.scale=t||1,u.fontStack=o,u}static forImage(t){const o=new Gu;return o.imageName=t,o}}class cl{constructor(){this.text="",this.sectionIndex=[],this.sections=[],this.imageSectionID=null}static fromFeature(t,o){const u=new cl;for(let f=0;f=0&&u>=t&&Hh[this.text.charCodeAt(u)];u--)o--;this.text=this.text.substring(t,o),this.sectionIndex=this.sectionIndex.slice(t,o)}substring(t,o){const u=new cl;return u.text=this.text.substring(t,o),u.sectionIndex=this.sectionIndex.slice(t,o),u.sections=this.sections,u}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce((t,o)=>Math.max(t,this.sections[o].scale),0)}addTextSection(t,o){this.text+=t.text,this.sections.push(Gu.forText(t.scale,t.fontStack||o));const u=this.sections.length-1;for(let f=0;f=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function Wh(i,t,o,u,f,y,v,b,E,I,B,V,q,X,K,ce){const ue=cl.fromFeature(i,f);let Ie;V===l.WritingMode.vertical&&ue.verticalizePunctuation();const{processBidirectionalText:Fe,processStyledBidirectionalText:Te}=pi;if(Fe&&ue.sections.length===1){Ie=[];const Je=Fe(ue.toString(),Af(ue,I,y,t,u,X,K));for(const Tt of Je){const It=new cl;It.text=Tt,It.sections=ue.sections;for(let vt=0;vt0&&Go>ii&&(ii=Go)}else{const Ai=It[tn.fontStack],oi=Ai&&Ai[Dr];if(oi&&oi.rect)to=oi.rect,Vi=oi.metrics;else{const Go=Tt[tn.fontStack],Wu=Go&&Go[Dr];if(!Wu)continue;Vi=Wu.metrics}Nr=(Mr-tn.scale)*Er}ji?(Je.verticalizable=!0,ri.push({glyph:Dr,imageName:no,x:Rn,y:Vn+Nr,vertical:ji,scale:tn.scale,fontStack:tn.fontStack,sectionIndex:gi,metrics:Vi,rect:to}),Rn+=$o*tn.scale+Ot):(ri.push({glyph:Dr,imageName:no,x:Rn,y:Vn+Nr,vertical:ji,scale:tn.scale,fontStack:tn.fontStack,sectionIndex:gi,metrics:Vi,rect:to}),Rn+=Vi.advance*tn.scale+Ot)}ri.length!==0&&(pr=Math.max(Rn-Ot,pr),m2(ri,0,ri.length-1,zr,ii)),Rn=0;const Zn=pt*Mr+ii;Wr.lineOffset=Math.max(ii,Or),Vn+=Zn,Ii=Math.max(Zn,Ii),++ar}var xr;const Pr=Vn-qh,{horizontalAlign:Fr,verticalAlign:ni}=zf(xt);(function(lr,Mr,Or,Wr,ri,ii,Zn,wr,tn){const gi=(Mr-Or)*ri;let Dr=0;Dr=ii!==Zn?-wr*Wr-qh:(-Wr*tn+.5)*Zn;for(const Nr of lr)for(const Vi of Nr.positionedGlyphs)Vi.x+=gi,Vi.y+=Dr})(Je.positionedLines,zr,Fr,ni,pr,Ii,pt,Pr,mt.length),Je.top+=-ni*Pr,Je.bottom=Je.top+Pr,Je.left+=-Fr*pr,Je.right=Je.left+pr}(Qe,t,o,u,Ie,v,b,E,V,I,q,ce),!function(Je){for(const Tt of Je)if(Tt.positionedGlyphs.length!==0)return!1;return!0}(Re)&&Qe}const Hh={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},p2={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 w_(i,t,o,u,f,y){if(t.imageName){const v=u[t.imageName];return v?v.displaySize[0]*t.scale*Er/y+f:0}{const v=o[t.fontStack],b=v&&v[i];return b?b.metrics.advance*t.scale+f:0}}function b_(i,t,o,u){const f=Math.pow(i-t,2);return u?i=0;let B=0;for(let q=0;q-o/2;){if(v--,v<0)return!1;b-=i[v].dist(y),y=i[v]}b+=i[v].dist(i[v+1]),v++;const E=[];let I=0;for(;bu;)I-=E.shift().angleDelta;if(I>f)return!1;v++,b+=B.dist(V)}return!0}function I_(i){let t=0;for(let o=0;oI){const K=(I-E)/X,ce=Fn(V.x,q.x,K),ue=Fn(V.y,q.y,K),Ie=new xs(ce,ue,q.angleTo(V),B);return Ie._round(),!v||C_(i,Ie,b,v,t)?Ie:void 0}E+=X}}function _2(i,t,o,u,f,y,v,b,E){const I=A_(u,y,v),B=z_(u,f),V=B*v,q=i[0].x===0||i[0].x===E||i[0].y===0||i[0].y===E;return t-V=0&&Re=0&&Qe=0&&q+I<=B){const Je=new xs(Re,Qe,Fe,K);Je._round(),u&&!C_(i,Je,y,u,f)||X.push(Je)}}V+=Ie}return b||X.length||v||(X=P_(i,V/2,o,u,f,y,v,!0,E)),X}function M_(i,t,o,u,f){const y=[];for(let v=0;v=u&&V.x>=u||(B.x>=u?B=new et(u,B.y+(u-B.x)/(V.x-B.x)*(V.y-B.y))._round():V.x>=u&&(V=new et(u,B.y+(u-B.x)/(V.x-B.x)*(V.y-B.y))._round()),B.y>=f&&V.y>=f||(B.y>=f?B=new et(B.x+(f-B.y)/(V.y-B.y)*(V.x-B.x),f)._round():V.y>=f&&(V=new et(B.x+(f-B.y)/(V.y-B.y)*(V.x-B.x),f)._round()),E&&B.equals(E[E.length-1])||(E=[B],y.push(E)),E.push(V)))))}}return y}function D_(i,t,o,u){const f=[],y=i.image,v=y.pixelRatio,b=y.paddedRect.w-2,E=y.paddedRect.h-2,I=i.right-i.left,B=i.bottom-i.top,V=y.stretchX||[[0,b]],q=y.stretchY||[[0,E]],X=(pt,xt)=>pt+xt[1]-xt[0],K=V.reduce(X,0),ce=q.reduce(X,0),ue=b-K,Ie=E-ce;let Fe=0,Te=K,Re=0,Qe=ce,Je=0,Tt=ue,It=0,vt=Ie;if(y.content&&u){const pt=y.content;Fe=Xh(V,0,pt[0]),Re=Xh(q,0,pt[1]),Te=Xh(V,pt[0],pt[2]),Qe=Xh(q,pt[1],pt[3]),Je=pt[0]-Fe,It=pt[1]-Re,Tt=pt[2]-pt[0]-Te,vt=pt[3]-pt[1]-Qe}const mt=(pt,xt,gt,st)=>{const Ot=Kh(pt.stretch-Fe,Te,I,i.left),Dt=Yh(pt.fixed-Je,Tt,pt.stretch,K),Jt=Kh(xt.stretch-Re,Qe,B,i.top),Rn=Yh(xt.fixed-It,vt,xt.stretch,ce),Vn=Kh(gt.stretch-Fe,Te,I,i.left),pr=Yh(gt.fixed-Je,Tt,gt.stretch,K),Ii=Kh(st.stretch-Re,Qe,B,i.top),zr=Yh(st.fixed-It,vt,st.stretch,ce),ar=new et(Ot,Jt),xr=new et(Vn,Jt),Pr=new et(Vn,Ii),Fr=new et(Ot,Ii),ni=new et(Dt/v,Rn/v),lr=new et(pr/v,zr/v),Mr=t*Math.PI/180;if(Mr){const ri=Math.sin(Mr),ii=Math.cos(Mr),Zn=[ii,-ri,ri,ii];ar._matMult(Zn),xr._matMult(Zn),Fr._matMult(Zn),Pr._matMult(Zn)}const Or=pt.stretch+pt.fixed,Wr=xt.stretch+xt.fixed;return{tl:ar,tr:xr,bl:Fr,br:Pr,tex:{x:y.paddedRect.x+1+Or,y:y.paddedRect.y+1+Wr,w:gt.stretch+gt.fixed-Or,h:st.stretch+st.fixed-Wr},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:ni,pixelOffsetBR:lr,minFontScaleX:Tt/v/I,minFontScaleY:vt/v/B,isSDF:o}};if(u&&(y.stretchX||y.stretchY)){const pt=R_(V,ue,K),xt=R_(q,Ie,ce);for(let gt=0;gt0&&(K=Math.max(10,K),this.circleDiameter=K)}else{let V=v.top*b-E[0],q=v.bottom*b+E[2],X=v.left*b-E[3],K=v.right*b+E[1];const ce=v.collisionPadding;if(ce&&(X-=ce[0]*b,V-=ce[1]*b,K+=ce[2]*b,q+=ce[3]*b),B){const ue=new et(X,V),Ie=new et(K,V),Fe=new et(X,q),Te=new et(K,q),Re=B*Math.PI/180;ue._rotate(Re),Ie._rotate(Re),Fe._rotate(Re),Te._rotate(Re),X=Math.min(ue.x,Ie.x,Fe.x,Te.x),K=Math.max(ue.x,Ie.x,Fe.x,Te.x),V=Math.min(ue.y,Ie.y,Fe.y,Te.y),q=Math.max(ue.y,Ie.y,Fe.y,Te.y)}t.emplaceBack(o.x,o.y,X,V,K,q,u,f,y)}this.boxEndIndex=t.length}}class v2{constructor(t=[],o=x2){if(this.data=t,this.length=this.data.length,this.compare=o,this.length>0)for(let u=(this.length>>1)-1;u>=0;u--)this._down(u)}push(t){this.data.push(t),this.length++,this._up(this.length-1)}pop(){if(this.length===0)return;const t=this.data[0],o=this.data.pop();return this.length--,this.length>0&&(this.data[0]=o,this._down(0)),t}peek(){return this.data[0]}_up(t){const{data:o,compare:u}=this,f=o[t];for(;t>0;){const y=t-1>>1,v=o[y];if(u(f,v)>=0)break;o[t]=v,t=y}o[t]=f}_down(t){const{data:o,compare:u}=this,f=this.length>>1,y=o[t];for(;t=0)break;o[t]=b,t=v}o[t]=y}}function x2(i,t){return it?1:0}function w2(i,t=1,o=!1){let u=1/0,f=1/0,y=-1/0,v=-1/0;const b=i[0];for(let X=0;Xy)&&(y=K.x),(!X||K.y>v)&&(v=K.y)}const E=Math.min(y-u,v-f);let I=E/2;const B=new v2([],b2);if(E===0)return new et(u,f);for(let X=u;XV.d||!V.d)&&(V=X,o&&console.log("found best %d after %d probes",Math.round(1e4*X.d)/1e4,q)),X.max-V.d<=t||(I=X.h/2,B.push(new hl(X.p.x-I,X.p.y-I,I,i)),B.push(new hl(X.p.x+I,X.p.y-I,I,i)),B.push(new hl(X.p.x-I,X.p.y+I,I,i)),B.push(new hl(X.p.x+I,X.p.y+I,I,i)),q+=4)}return o&&(console.log(`num probes: ${q}`),console.log(`best distance: ${V.d}`)),V.p}function b2(i,t){return t.max-i.max}function hl(i,t,o,u){this.p=new et(i,t),this.h=o,this.d=function(f,y){let v=!1,b=1/0;for(let E=0;Ef.y!=K.y>f.y&&f.x<(K.x-X.x)*(f.y-X.y)/(K.y-X.y)+X.x&&(v=!v),b=Math.min(b,jy(f,X,K))}}return(v?1:-1)*Math.sqrt(b)}(this.p,u),this.max=this.d+this.h*Math.SQRT2}const Pf=Number.POSITIVE_INFINITY;function L_(i,t){return t[1]!==Pf?function(o,u,f){let y=0,v=0;switch(u=Math.abs(u),f=Math.abs(f),o){case"top-right":case"top-left":case"top":v=f-7;break;case"bottom-right":case"bottom-left":case"bottom":v=7-f}switch(o){case"top-right":case"bottom-right":case"right":y=-u;break;case"top-left":case"bottom-left":case"left":y=u}return[y,v]}(i,t[0],t[1]):function(o,u){let f=0,y=0;u<0&&(u=0);const v=u/Math.sqrt(2);switch(o){case"top-right":case"top-left":y=v-7;break;case"bottom-right":case"bottom-left":y=7-v;break;case"bottom":y=7-u;break;case"top":y=u-7}switch(o){case"top-right":case"bottom-right":f=-v;break;case"top-left":case"bottom-left":f=v;break;case"left":f=u;break;case"right":f=-u}return[f,y]}(i,t[0])}function Mf(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 S2(i,t,o,u,f,y,v,b,E,I,B){let V=y.textMaxSize.evaluate(t,{});V===void 0&&(V=v);const q=i.layers[0].layout,X=q.get("icon-offset").evaluate(t,{},B),K=F_(o.horizontal),ce=v/24,ue=i.tilePixelRatio*ce,Ie=i.tilePixelRatio*V/24,Fe=i.tilePixelRatio*b,Te=i.tilePixelRatio*q.get("symbol-spacing"),Re=q.get("text-padding")*i.tilePixelRatio,Qe=function(st,Ot,Dt,Jt=1){const Rn=st.get("icon-padding").evaluate(Ot,{},Dt),Vn=Rn&&Rn.values;return[Vn[0]*Jt,Vn[1]*Jt,Vn[2]*Jt,Vn[3]*Jt]}(q,t,B,i.tilePixelRatio),Je=q.get("text-max-angle")/180*Math.PI,Tt=q.get("text-rotation-alignment")!=="viewport"&&q.get("symbol-placement")!=="point",It=q.get("icon-rotation-alignment")==="map"&&q.get("symbol-placement")!=="point",vt=q.get("symbol-placement"),mt=Te/2,pt=q.get("icon-text-fit");let xt;u&&pt!=="none"&&(i.allowVerticalPlacement&&o.vertical&&(xt=T_(u,o.vertical,pt,q.get("icon-text-fit-padding"),X,ce)),K&&(u=T_(u,K,pt,q.get("icon-text-fit-padding"),X,ce)));const gt=(st,Ot)=>{Ot.x<0||Ot.x>=dr||Ot.y<0||Ot.y>=dr||function(Dt,Jt,Rn,Vn,pr,Ii,zr,ar,xr,Pr,Fr,ni,lr,Mr,Or,Wr,ri,ii,Zn,wr,tn,gi,Dr,Nr,Vi){const to=Dt.addToLineVertexArray(Jt,Rn);let no,$o,ji,Ai,oi=0,Go=0,Wu=0,Q_=0,jf=-1,$f=-1;const Zo={};let e0=vr.exports(""),Gf=0,Zf=0;if(ar._unevaluatedLayout.getValue("text-radial-offset")===void 0?[Gf,Zf]=ar.layout.get("text-offset").evaluate(tn,{},Nr).map(si=>si*Er):(Gf=ar.layout.get("text-radial-offset").evaluate(tn,{},Nr)*Er,Zf=Pf),Dt.allowVerticalPlacement&&Vn.vertical){const si=ar.layout.get("text-rotate").evaluate(tn,{},Nr)+90;ji=new Jh(xr,Jt,Pr,Fr,ni,Vn.vertical,lr,Mr,Or,si),zr&&(Ai=new Jh(xr,Jt,Pr,Fr,ni,zr,ri,ii,Or,si))}if(pr){const si=ar.layout.get("icon-rotate").evaluate(tn,{}),wo=ar.layout.get("icon-text-fit")!=="none",Hu=D_(pr,si,Dr,wo),Xu=zr?D_(zr,si,Dr,wo):void 0;$o=new Jh(xr,Jt,Pr,Fr,ni,pr,ri,ii,!1,si),oi=4*Hu.length;const r0=Dt.iconSizeData;let va=null;r0.kind==="source"?(va=[jo*ar.layout.get("icon-size").evaluate(tn,{})],va[0]>ws&&ne(`${Dt.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)):r0.kind==="composite"&&(va=[jo*gi.compositeIconSizes[0].evaluate(tn,{},Nr),jo*gi.compositeIconSizes[1].evaluate(tn,{},Nr)],(va[0]>ws||va[1]>ws)&&ne(`${Dt.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)),Dt.addSymbols(Dt.icon,Hu,va,wr,Zn,tn,l.WritingMode.none,Jt,to.lineStartIndex,to.lineLength,-1,Nr),jf=Dt.icon.placedSymbolArray.length-1,Xu&&(Go=4*Xu.length,Dt.addSymbols(Dt.icon,Xu,va,wr,Zn,tn,l.WritingMode.vertical,Jt,to.lineStartIndex,to.lineLength,-1,Nr),$f=Dt.icon.placedSymbolArray.length-1)}const t0=Object.keys(Vn.horizontal);for(const si of t0){const wo=Vn.horizontal[si];if(!no){e0=vr.exports(wo.text);const Xu=ar.layout.get("text-rotate").evaluate(tn,{},Nr);no=new Jh(xr,Jt,Pr,Fr,ni,wo,lr,Mr,Or,Xu)}const Hu=wo.positionedLines.length===1;if(Wu+=B_(Dt,Jt,wo,Ii,ar,Or,tn,Wr,to,Vn.vertical?l.WritingMode.horizontal:l.WritingMode.horizontalOnly,Hu?t0:[si],Zo,jf,gi,Nr),Hu)break}Vn.vertical&&(Q_+=B_(Dt,Jt,Vn.vertical,Ii,ar,Or,tn,Wr,to,l.WritingMode.vertical,["vertical"],Zo,$f,gi,Nr));const B2=no?no.boxStartIndex:Dt.collisionBoxArray.length,F2=no?no.boxEndIndex:Dt.collisionBoxArray.length,O2=ji?ji.boxStartIndex:Dt.collisionBoxArray.length,N2=ji?ji.boxEndIndex:Dt.collisionBoxArray.length,U2=$o?$o.boxStartIndex:Dt.collisionBoxArray.length,V2=$o?$o.boxEndIndex:Dt.collisionBoxArray.length,j2=Ai?Ai.boxStartIndex:Dt.collisionBoxArray.length,$2=Ai?Ai.boxEndIndex:Dt.collisionBoxArray.length;let ro=-1;const rd=(si,wo)=>si&&si.circleDiameter?Math.max(si.circleDiameter,wo):wo;ro=rd(no,ro),ro=rd(ji,ro),ro=rd($o,ro),ro=rd(Ai,ro);const n0=ro>-1?1:0;n0&&(ro*=Vi/Er),Dt.glyphOffsetArray.length>=dl.MAX_GLYPHS&&ne("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),tn.sortKey!==void 0&&Dt.addToSortKeyRanges(Dt.symbolInstances.length,tn.sortKey),Dt.symbolInstances.emplaceBack(Jt.x,Jt.y,Zo.right>=0?Zo.right:-1,Zo.center>=0?Zo.center:-1,Zo.left>=0?Zo.left:-1,Zo.vertical||-1,jf,$f,e0,B2,F2,O2,N2,U2,V2,j2,$2,Pr,Wu,Q_,oi,Go,n0,0,lr,Gf,Zf,ro)}(i,Ot,st,o,u,f,xt,i.layers[0],i.collisionBoxArray,t.index,t.sourceLayerIndex,i.index,ue,[Re,Re,Re,Re],Tt,E,Fe,Qe,It,X,t,y,I,B,v)};if(vt==="line")for(const st of M_(t.geometry,0,0,dr,dr)){const Ot=_2(st,Te,Je,o.vertical||K,u,24,Ie,i.overscaling,dr);for(const Dt of Ot){const Jt=K;Jt&&E2(i,Jt.text,mt,Dt)||gt(st,Dt)}}else if(vt==="line-center"){for(const st of t.geometry)if(st.length>1){const Ot=y2(st,Je,o.vertical||K,u,24,Ie);Ot&>(st,Ot)}}else if(t.type==="Polygon")for(const st of vf(t.geometry,0)){const Ot=w2(st,16);gt(st[0],new xs(Ot.x,Ot.y,0))}else if(t.type==="LineString")for(const st of t.geometry)gt(st,new xs(st[0].x,st[0].y,0));else if(t.type==="Point")for(const st of t.geometry)for(const Ot of st)gt([Ot],new xs(Ot.x,Ot.y,0))}const ws=32640;function B_(i,t,o,u,f,y,v,b,E,I,B,V,q,X,K){const ce=function(Fe,Te,Re,Qe,Je,Tt,It,vt){const mt=Qe.layout.get("text-rotate").evaluate(Tt,{})*Math.PI/180,pt=[];for(const xt of Te.positionedLines)for(const gt of xt.positionedGlyphs){if(!gt.rect)continue;const st=gt.rect||{};let Ot=4,Dt=!0,Jt=1,Rn=0;const Vn=(Je||vt)&>.vertical,pr=gt.metrics.advance*gt.scale/2;if(vt&&Te.verticalizable){const Zn=(gt.scale-1)*Er,wr=(Er-gt.metrics.width*gt.scale)/2;Rn=xt.lineOffset/2-(gt.imageName?-wr:Zn)}if(gt.imageName){const Zn=It[gt.imageName];Dt=Zn.sdf,Jt=Zn.pixelRatio,Ot=1/Jt}const Ii=Je?[gt.x+pr,gt.y]:[0,0];let zr=Je?[0,0]:[gt.x+pr+Re[0],gt.y+Re[1]-Rn],ar=[0,0];Vn&&(ar=zr,zr=[0,0]);const xr=(gt.metrics.left-Ot)*gt.scale-pr+zr[0],Pr=(-gt.metrics.top-Ot)*gt.scale+zr[1],Fr=xr+st.w*gt.scale/Jt,ni=Pr+st.h*gt.scale/Jt,lr=new et(xr,Pr),Mr=new et(Fr,Pr),Or=new et(xr,ni),Wr=new et(Fr,ni);if(Vn){const Zn=new et(-pr,pr-qh),wr=-Math.PI/2,tn=12-pr,gi=new et(22-tn,-(gt.imageName?tn:0)),Dr=new et(...ar);lr._rotateAround(wr,Zn)._add(gi)._add(Dr),Mr._rotateAround(wr,Zn)._add(gi)._add(Dr),Or._rotateAround(wr,Zn)._add(gi)._add(Dr),Wr._rotateAround(wr,Zn)._add(gi)._add(Dr)}if(mt){const Zn=Math.sin(mt),wr=Math.cos(mt),tn=[wr,-Zn,Zn,wr];lr._matMult(tn),Mr._matMult(tn),Or._matMult(tn),Wr._matMult(tn)}const ri=new et(0,0),ii=new et(0,0);pt.push({tl:lr,tr:Mr,bl:Or,br:Wr,tex:st,writingMode:Te.writingMode,glyphOffset:Ii,sectionIndex:gt.sectionIndex,isSDF:Dt,pixelOffsetTL:ri,pixelOffsetBR:ii,minFontScaleX:0,minFontScaleY:0})}return pt}(0,o,b,f,y,v,u,i.allowVerticalPlacement),ue=i.textSizeData;let Ie=null;ue.kind==="source"?(Ie=[jo*f.layout.get("text-size").evaluate(v,{})],Ie[0]>ws&&ne(`${i.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)):ue.kind==="composite"&&(Ie=[jo*X.compositeTextSizes[0].evaluate(v,{},K),jo*X.compositeTextSizes[1].evaluate(v,{},K)],(Ie[0]>ws||Ie[1]>ws)&&ne(`${i.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)),i.addSymbols(i.text,ce,Ie,b,y,v,I,t,E.lineStartIndex,E.lineLength,q,K);for(const Fe of B)V[Fe]=i.text.placedSymbolArray.length-1;return 4*ce.length}function F_(i){for(const t in i)return i[t];return null}function E2(i,t,o,u){const f=i.compareText;if(t in f){const y=f[t];for(let v=y.length-1;v>=0;v--)if(u.dist(y[v])v.id),this.index=t.index,this.pixelRatio=t.pixelRatio,this.sourceLayerIndex=t.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=pf([]),this.placementViewportMatrix=pf([]);const o=this.layers[0]._unevaluatedLayout._values;this.textSizeData=k_(this.zoom,o["text-size"]),this.iconSizeData=k_(this.zoom,o["icon-size"]);const u=this.layers[0].layout,f=u.get("symbol-sort-key"),y=u.get("symbol-z-order");this.canOverlap=Ff(u,"text-overlap","text-allow-overlap")!=="never"||Ff(u,"icon-overlap","icon-allow-overlap")!=="never"||u.get("text-ignore-placement")||u.get("icon-ignore-placement"),this.sortFeaturesByKey=y!=="viewport-y"&&!f.isConstant(),this.sortFeaturesByY=(y==="viewport-y"||y==="auto"&&!this.sortFeaturesByKey)&&this.canOverlap,u.get("symbol-placement")==="point"&&(this.writingModes=u.get("text-writing-mode").map(v=>l.WritingMode[v])),this.stateDependentLayerIds=this.layers.filter(v=>v.isStateDependent()).map(v=>v.id),this.sourceID=t.sourceID}createArrays(){this.text=new Rf(new fa(this.layers,this.zoom,t=>/^text/.test(t))),this.icon=new Rf(new fa(this.layers,this.zoom,t=>/^icon/.test(t))),this.glyphOffsetArray=new ft,this.lineVertexArray=new Et,this.symbolInstances=new St}calculateGlyphDependencies(t,o,u,f,y){for(let v=0;v0)&&(v.value.kind!=="constant"||v.value.value.length>0),B=E.value.kind!=="constant"||!!E.value.value||Object.keys(E.parameters).length>0,V=y.get("symbol-sort-key");if(this.features=[],!I&&!B)return;const q=o.iconDependencies,X=o.glyphDependencies,K=o.availableImages,ce=new Nn(this.zoom);for(const{feature:ue,id:Ie,index:Fe,sourceLayerIndex:Te}of t){const Re=f._featureFilter.needGeometry,Qe=ga(ue,Re);if(!f._featureFilter.filter(ce,Qe,u))continue;let Je,Tt;if(Re||(Qe.geometry=ma(ue)),I){const vt=f.getValueAndResolveTokens("text-field",Qe,u,K),mt=me.factory(vt);C2(mt)&&(this.hasRTLText=!0),(!this.hasRTLText||ha()==="unavailable"||this.hasRTLText&&pi.isParsed())&&(Je=e2(mt,f,Qe))}if(B){const vt=f.getValueAndResolveTokens("icon-image",Qe,u,K);Tt=vt instanceof we?vt:we.fromString(vt)}if(!Je&&!Tt)continue;const It=this.sortFeaturesByKey?V.evaluate(Qe,{},u):void 0;if(this.features.push({id:Ie,text:Je,icon:Tt,index:Fe,sourceLayerIndex:Te,geometry:Qe.geometry,properties:ue.properties,type:T2[ue.type],sortKey:It}),Tt&&(q[Tt.name]=!0),Je){const vt=v.evaluate(Qe,{},u).join(","),mt=y.get("text-rotation-alignment")!=="viewport"&&y.get("symbol-placement")!=="point";this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(l.WritingMode.vertical)>=0;for(const pt of Je.sections)if(pt.image)q[pt.image.name]=!0;else{const xt=el(Je.toString()),gt=pt.fontStack||vt,st=X[gt]=X[gt]||{};this.calculateGlyphDependencies(pt.text,st,mt,this.allowVerticalPlacement,xt)}}}y.get("symbol-placement")==="line"&&(this.features=function(ue){const Ie={},Fe={},Te=[];let Re=0;function Qe(vt){Te.push(ue[vt]),Re++}function Je(vt,mt,pt){const xt=Fe[vt];return delete Fe[vt],Fe[mt]=xt,Te[xt].geometry[0].pop(),Te[xt].geometry[0]=Te[xt].geometry[0].concat(pt[0]),xt}function Tt(vt,mt,pt){const xt=Ie[mt];return delete Ie[mt],Ie[vt]=xt,Te[xt].geometry[0].shift(),Te[xt].geometry[0]=pt[0].concat(Te[xt].geometry[0]),xt}function It(vt,mt,pt){const xt=pt?mt[0][mt[0].length-1]:mt[0][0];return`${vt}:${xt.x}:${xt.y}`}for(let vt=0;vtvt.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort((ue,Ie)=>ue.sortKey-Ie.sortKey)}update(t,o,u){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(t,o,this.layers,u),this.icon.programConfigurations.updatePaintArrays(t,o,this.layers,u))}isEmpty(){return this.symbolInstances.length===0&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(t){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(t),this.iconCollisionBox.upload(t)),this.text.upload(t,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(t,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(t,o){const u=this.lineVertexArray.length;if(t.segment!==void 0){let f=t.dist(o[t.segment+1]),y=t.dist(o[t.segment]);const v={};for(let b=t.segment+1;b=0;b--)v[b]={x:o[b].x,y:o[b].y,tileUnitDistanceFromAnchor:y},b>0&&(y+=o[b-1].dist(o[b]));for(let b=0;b0}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(t,o){const u=t.placedSymbolArray.get(o),f=u.vertexStartIndex+4*u.numGlyphs;for(let y=u.vertexStartIndex;yf[b]-f[E]||y[E]-y[b]),v}addToSortKeyRanges(t,o){const u=this.sortKeyRanges[this.sortKeyRanges.length-1];u&&u.sortKey===o?u.symbolInstanceEnd=t+1:this.sortKeyRanges.push({sortKey:o,symbolInstanceStart:t,symbolInstanceEnd:t+1})}sortFeatures(t){if(this.sortFeaturesByY&&this.sortedAngle!==t&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(const o of this.symbolInstanceIndexes){const u=this.symbolInstances.get(o);this.featureSortOrder.push(u.featureIndex),[u.rightJustifiedTextSymbolIndex,u.centerJustifiedTextSymbolIndex,u.leftJustifiedTextSymbolIndex].forEach((f,y,v)=>{f>=0&&v.indexOf(f)===y&&this.addIndicesForPlacedSymbol(this.text,f)}),u.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,u.verticalPlacedTextSymbolIndex),u.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,u.placedIconSymbolIndex),u.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,u.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}kt("SymbolBucket",dl,{omit:["layers","collisionBoxArray","features","compareText"]}),dl.MAX_GLYPHS=65535,dl.addDynamicAttributes=Df;const I2=new Sr({"symbol-placement":new Pt(ke.layout_symbol["symbol-placement"]),"symbol-spacing":new Pt(ke.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new Pt(ke.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new jt(ke.layout_symbol["symbol-sort-key"]),"symbol-z-order":new Pt(ke.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new Pt(ke.layout_symbol["icon-allow-overlap"]),"icon-overlap":new Pt(ke.layout_symbol["icon-overlap"]),"icon-ignore-placement":new Pt(ke.layout_symbol["icon-ignore-placement"]),"icon-optional":new Pt(ke.layout_symbol["icon-optional"]),"icon-rotation-alignment":new Pt(ke.layout_symbol["icon-rotation-alignment"]),"icon-size":new jt(ke.layout_symbol["icon-size"]),"icon-text-fit":new Pt(ke.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new Pt(ke.layout_symbol["icon-text-fit-padding"]),"icon-image":new jt(ke.layout_symbol["icon-image"]),"icon-rotate":new jt(ke.layout_symbol["icon-rotate"]),"icon-padding":new jt(ke.layout_symbol["icon-padding"]),"icon-keep-upright":new Pt(ke.layout_symbol["icon-keep-upright"]),"icon-offset":new jt(ke.layout_symbol["icon-offset"]),"icon-anchor":new jt(ke.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new Pt(ke.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new Pt(ke.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new Pt(ke.layout_symbol["text-rotation-alignment"]),"text-field":new jt(ke.layout_symbol["text-field"]),"text-font":new jt(ke.layout_symbol["text-font"]),"text-size":new jt(ke.layout_symbol["text-size"]),"text-max-width":new jt(ke.layout_symbol["text-max-width"]),"text-line-height":new Pt(ke.layout_symbol["text-line-height"]),"text-letter-spacing":new jt(ke.layout_symbol["text-letter-spacing"]),"text-justify":new jt(ke.layout_symbol["text-justify"]),"text-radial-offset":new jt(ke.layout_symbol["text-radial-offset"]),"text-variable-anchor":new Pt(ke.layout_symbol["text-variable-anchor"]),"text-anchor":new jt(ke.layout_symbol["text-anchor"]),"text-max-angle":new Pt(ke.layout_symbol["text-max-angle"]),"text-writing-mode":new Pt(ke.layout_symbol["text-writing-mode"]),"text-rotate":new jt(ke.layout_symbol["text-rotate"]),"text-padding":new Pt(ke.layout_symbol["text-padding"]),"text-keep-upright":new Pt(ke.layout_symbol["text-keep-upright"]),"text-transform":new jt(ke.layout_symbol["text-transform"]),"text-offset":new jt(ke.layout_symbol["text-offset"]),"text-allow-overlap":new Pt(ke.layout_symbol["text-allow-overlap"]),"text-overlap":new Pt(ke.layout_symbol["text-overlap"]),"text-ignore-placement":new Pt(ke.layout_symbol["text-ignore-placement"]),"text-optional":new Pt(ke.layout_symbol["text-optional"])});var Bf={paint:new Sr({"icon-opacity":new jt(ke.paint_symbol["icon-opacity"]),"icon-color":new jt(ke.paint_symbol["icon-color"]),"icon-halo-color":new jt(ke.paint_symbol["icon-halo-color"]),"icon-halo-width":new jt(ke.paint_symbol["icon-halo-width"]),"icon-halo-blur":new jt(ke.paint_symbol["icon-halo-blur"]),"icon-translate":new Pt(ke.paint_symbol["icon-translate"]),"icon-translate-anchor":new Pt(ke.paint_symbol["icon-translate-anchor"]),"text-opacity":new jt(ke.paint_symbol["text-opacity"]),"text-color":new jt(ke.paint_symbol["text-color"],{runtimeType:er,getOverride:i=>i.textColor,hasOverride:i=>!!i.textColor}),"text-halo-color":new jt(ke.paint_symbol["text-halo-color"]),"text-halo-width":new jt(ke.paint_symbol["text-halo-width"]),"text-halo-blur":new jt(ke.paint_symbol["text-halo-blur"]),"text-translate":new Pt(ke.paint_symbol["text-translate"]),"text-translate-anchor":new Pt(ke.paint_symbol["text-translate-anchor"])}),layout:I2};class O_{constructor(t){if(t.property.overrides===void 0)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=t.property.overrides?t.property.overrides.runtimeType:Gn,this.defaultValue=t}evaluate(t){if(t.formattedSection){const o=this.defaultValue.property.overrides;if(o&&o.hasOverride(t.formattedSection))return o.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default}eachChild(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}kt("FormatSectionOverride",O_,{omit:["defaultValue"]});class ed extends Oi{constructor(t){super(t,Bf)}recalculate(t,o){if(super.recalculate(t,o),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 u=this.layout.get("text-writing-mode");if(u){const f=[];for(const y of u)f.indexOf(y)<0&&f.push(y);this.layout._values["text-writing-mode"]=f}else this.layout._values["text-writing-mode"]=["horizontal"]}this._setPaintOverrides()}getValueAndResolveTokens(t,o,u,f){const y=this.layout.get(t).evaluate(o,{},u,f),v=this._unevaluatedLayout._values[t];return v.isDataDriven()||Js(v.value)||!y?y:function(b,E){return E.replace(/{([^{}]+)}/g,(I,B)=>B in b?String(b[B]):"")}(o.properties,y)}createBucket(t){return new dl(t)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(const t of Bf.paint.overridableProperties){if(!ed.hasPaintOverride(this.layout,t))continue;const o=this.paint.get(t),u=new O_(o),f=new Ha(u,o.property.specification);let y=null;y=o.value.kind==="constant"||o.value.kind==="source"?new ea("source",f):new yu("composite",f,o.value.zoomStops),this.paint._values[t]=new Fi(o.property,y,o.parameters)}}_handleOverridablePaintPropertyUpdate(t,o,u){return!(!this.layout||o.isDataDriven()||u.isDataDriven())&&ed.hasPaintOverride(this.layout,t)}static hasPaintOverride(t,o){const u=t.get("text-field"),f=Bf.paint.properties[o];let y=!1;const v=b=>{for(const E of b)if(f.overrides&&f.overrides.hasOverride(E))return void(y=!0)};if(u.value.kind==="constant"&&u.value.value instanceof me)v(u.value.value.sections);else if(u.value.kind==="source"){const b=I=>{y||(I instanceof zt&&$e(I.value)===An?v(I.value.sections):I instanceof qa?v(I.sections):I.eachChild(b))},E=u.value;E._styleExpression&&b(E._styleExpression.expression)}return y}}function Ff(i,t,o){let u="never";const f=i.get(t);return f?u=f:i.get(o)&&(u="always"),u}var A2={paint:new Sr({"background-color":new Pt(ke.paint_background["background-color"]),"background-pattern":new Au(ke.paint_background["background-pattern"]),"background-opacity":new Pt(ke.paint_background["background-opacity"])})},z2={paint:new Sr({"raster-opacity":new Pt(ke.paint_raster["raster-opacity"]),"raster-hue-rotate":new Pt(ke.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new Pt(ke.paint_raster["raster-brightness-min"]),"raster-brightness-max":new Pt(ke.paint_raster["raster-brightness-max"]),"raster-saturation":new Pt(ke.paint_raster["raster-saturation"]),"raster-contrast":new Pt(ke.paint_raster["raster-contrast"]),"raster-resampling":new Pt(ke.paint_raster["raster-resampling"]),"raster-fade-duration":new Pt(ke.paint_raster["raster-fade-duration"])})};class P2 extends Oi{constructor(t){super(t,{}),this.onAdd=o=>{this.implementation.onAdd&&this.implementation.onAdd(o,o.painter.context.gl)},this.onRemove=o=>{this.implementation.onRemove&&this.implementation.onRemove(o,o.painter.context.gl)},this.implementation=t}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")}}const M2={circle:class extends Oi{constructor(i){super(i,ub)}createBucket(i){return new cf(i)}queryRadius(i){const t=i;return Ru("circle-radius",this,t)+Ru("circle-stroke-width",this,t)+Fh(this.paint.get("circle-translate"))}queryIntersectsFeature(i,t,o,u,f,y,v,b){const E=Oh(i,this.paint.get("circle-translate"),this.paint.get("circle-translate-anchor"),y.angle,v),I=this.paint.get("circle-radius").evaluate(t,o)+this.paint.get("circle-stroke-width").evaluate(t,o),B=this.paint.get("circle-pitch-alignment")==="map",V=B?E:function(X,K){return X.map(ce=>Xy(ce,K))}(E,b),q=B?I*v:I;for(const X of u)for(const K of X){const ce=B?K:Xy(K,b);let ue=q;const Ie=Nh([],[K.x,K.y,0,1],b);if(this.paint.get("circle-pitch-scale")==="viewport"&&this.paint.get("circle-pitch-alignment")==="map"?ue*=Ie[3]/y.cameraToCenterDistance:this.paint.get("circle-pitch-scale")==="map"&&this.paint.get("circle-pitch-alignment")==="viewport"&&(ue*=y.cameraToCenterDistance/Ie[3]),ib(V,ce,ue))return!0}return!1}},heatmap:class extends Oi{constructor(i){super(i,hb),this._updateColorRamp()}createBucket(i){return new Ky(i)}_handleSpecialPaintPropertyUpdate(i){i==="heatmap-color"&&this._updateColorRamp()}_updateColorRamp(){this.colorRamp=Jy({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"}},hillshade:class extends Oi{constructor(i){super(i,db)}hasOffscreenPass(){return this.paint.get("hillshade-exaggeration")!==0&&this.visibility!=="none"}},fill:class extends Oi{constructor(i){super(i,Ib)}recalculate(i,t){super.recalculate(i,t);const o=this.paint._values["fill-outline-color"];o.value.kind==="constant"&&o.value.value===void 0&&(this.paint._values["fill-outline-color"]=this.paint._values["fill-color"])}createBucket(i){return new bf(i)}queryRadius(){return Fh(this.paint.get("fill-translate"))}queryIntersectsFeature(i,t,o,u,f,y,v){return Vy(Oh(i,this.paint.get("fill-translate"),this.paint.get("fill-translate-anchor"),y.angle,v),u)}isTileClipped(){return!0}},"fill-extrusion":class extends Oi{constructor(i){super(i,jb)}createBucket(i){return new Ef(i)}queryRadius(){return Fh(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}queryIntersectsFeature(i,t,o,u,f,y,v,b){const E=Oh(i,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),y.angle,v),I=this.paint.get("fill-extrusion-height").evaluate(t,o),B=this.paint.get("fill-extrusion-base").evaluate(t,o),V=function(X,K,ce,ue){const Ie=[];for(const Fe of X){const Te=[Fe.x,Fe.y,0,1];Nh(Te,Te,K),Ie.push(new et(Te[0]/Te[3],Te[1]/Te[3]))}return Ie}(E,b),q=function(X,K,ce,ue){const Ie=[],Fe=[],Te=ue[8]*K,Re=ue[9]*K,Qe=ue[10]*K,Je=ue[11]*K,Tt=ue[8]*ce,It=ue[9]*ce,vt=ue[10]*ce,mt=ue[11]*ce;for(const pt of X){const xt=[],gt=[];for(const st of pt){const Ot=st.x,Dt=st.y,Jt=ue[0]*Ot+ue[4]*Dt+ue[12],Rn=ue[1]*Ot+ue[5]*Dt+ue[13],Vn=ue[2]*Ot+ue[6]*Dt+ue[14],pr=ue[3]*Ot+ue[7]*Dt+ue[15],Ii=Vn+Qe,zr=pr+Je,ar=Jt+Tt,xr=Rn+It,Pr=Vn+vt,Fr=pr+mt,ni=new et((Jt+Te)/zr,(Rn+Re)/zr);ni.z=Ii/zr,xt.push(ni);const lr=new et(ar/Fr,xr/Fr);lr.z=Pr/Fr,gt.push(lr)}Ie.push(xt),Fe.push(gt)}return[Ie,Fe]}(u,B,I,b);return function(X,K,ce){let ue=1/0;Vy(ce,K)&&(ue=a_(ce,K[0]));for(let Ie=0;Ie=3){for(let ce=0;ce{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 N_=63710088e-1;class Jn{constructor(t,o){if(isNaN(t)||isNaN(o))throw new Error(`Invalid LngLat object: (${t}, ${o})`);if(this.lng=+t,this.lat=+o,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new Jn(F(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(t){const o=Math.PI/180,u=this.lat*o,f=t.lat*o,y=Math.sin(u)*Math.sin(f)+Math.cos(u)*Math.cos(f)*Math.cos((t.lng-this.lng)*o);return N_*Math.acos(Math.min(y,1))}toBounds(t=0){const o=360*t/40075017,u=o/Math.cos(Math.PI/180*this.lat);return new _a(new Jn(this.lng-u,this.lat-o),new Jn(this.lng+u,this.lat+o))}static convert(t){if(t instanceof Jn)return t;if(Array.isArray(t)&&(t.length===2||t.length===3))return new Jn(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&typeof t=="object"&&t!==null)return new Jn(Number("lng"in t?t.lng:t.lon),Number(t.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")}}class _a{constructor(t,o){t&&(o?this.setSouthWest(t).setNorthEast(o):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 Jn?new Jn(t.lng,t.lat):Jn.convert(t),this}setSouthWest(t){return this._sw=t instanceof Jn?new Jn(t.lng,t.lat):Jn.convert(t),this}extend(t){const o=this._sw,u=this._ne;let f,y;if(t instanceof Jn)f=t,y=t;else{if(!(t instanceof _a))return Array.isArray(t)?t.length===4||t.every(Array.isArray)?this.extend(_a.convert(t)):this.extend(Jn.convert(t)):this;if(f=t._sw,y=t._ne,!f||!y)return this}return o||u?(o.lng=Math.min(f.lng,o.lng),o.lat=Math.min(f.lat,o.lat),u.lng=Math.max(y.lng,u.lng),u.lat=Math.max(y.lat,u.lat)):(this._sw=new Jn(f.lng,f.lat),this._ne=new Jn(y.lng,y.lat)),this}getCenter(){return new Jn((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 Jn(this.getWest(),this.getNorth())}getSouthEast(){return new Jn(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:o,lat:u}=Jn.convert(t);let f=this._sw.lng<=o&&o<=this._ne.lng;return this._sw.lng>this._ne.lng&&(f=this._sw.lng>=o&&o>=this._ne.lng),this._sw.lat<=u&&u<=this._ne.lat&&f}static convert(t){return t instanceof _a?t:t&&new _a(t)}}const U_=2*Math.PI*N_;function V_(i){return U_*Math.cos(i*Math.PI/180)}function j_(i){return(180+i)/360}function $_(i){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+i*Math.PI/360)))/360}function G_(i,t){return i/V_(t)}function Of(i){return 360/Math.PI*Math.atan(Math.exp((180-360*i)*Math.PI/180))-90}class td{constructor(t,o,u=0){this.x=+t,this.y=+o,this.z=+u}static fromLngLat(t,o=0){const u=Jn.convert(t);return new td(j_(u.lng),$_(u.lat),G_(o,u.lat))}toLngLat(){return new Jn(360*this.x-180,Of(this.y))}toAltitude(){return this.z*V_(Of(this.y))}meterInMercatorCoordinateUnits(){return 1/U_*(t=Of(this.y),1/Math.cos(t*Math.PI/180));var t}}function Z_(i,t,o){var u=2*Math.PI*6378137/256/Math.pow(2,o);return[i*u-2*Math.PI*6378137/2,t*u-2*Math.PI*6378137/2]}class Nf{constructor(t,o,u){if(t<0||t>25||u<0||u>=Math.pow(2,t)||o<0||o>=Math.pow(2,t))throw new Error(`x=${o}, y=${u}, z=${t} outside of bounds. 0<=x<${Math.pow(2,t)}, 0<=y<${Math.pow(2,t)} 0<=z<=25 `);this.z=t,this.x=o,this.y=u,this.key=Zu(0,t,t,o,u)}equals(t){return this.z===t.z&&this.x===t.x&&this.y===t.y}url(t,o,u){const f=(v=this.y,b=this.z,E=Z_(256*(y=this.x),256*(v=Math.pow(2,b)-v-1),b),I=Z_(256*(y+1),256*(v+1),b),E[0]+","+E[1]+","+I[0]+","+I[1]);var y,v,b,E,I;const B=function(V,q,X){let K,ce="";for(let ue=V;ue>0;ue--)K=1<1?"@2x":"").replace(/{quadkey}/g,B).replace(/{bbox-epsg-3857}/g,f)}isChildOf(t){const o=this.z-t.z;return o>0&&t.x===this.x>>o&&t.y===this.y>>o}getTilePoint(t){const o=Math.pow(2,this.z);return new et((t.x*o-this.x)*dr,(t.y*o-this.y)*dr)}toString(){return`${this.z}/${this.x}/${this.y}`}}class q_{constructor(t,o){this.wrap=t,this.canonical=o,this.key=Zu(t,o.z,o.z,o.x,o.y)}}class Ci{constructor(t,o,u,f,y){if(t= z; overscaledZ = ${t}; z = ${u}`);this.overscaledZ=t,this.wrap=o,this.canonical=new Nf(u,+f,+y),this.key=Zu(o,t,u,f,y)}clone(){return new Ci(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(t){return this.overscaledZ===t.overscaledZ&&this.wrap===t.wrap&&this.canonical.equals(t.canonical)}scaledTo(t){if(t>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${t}; overscaledZ = ${this.overscaledZ}`);const o=this.canonical.z-t;return t>this.canonical.z?new Ci(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Ci(t,this.wrap,t,this.canonical.x>>o,this.canonical.y>>o)}calculateScaledKey(t,o){if(t>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${t}; overscaledZ = ${this.overscaledZ}`);const u=this.canonical.z-t;return t>this.canonical.z?Zu(this.wrap*+o,t,this.canonical.z,this.canonical.x,this.canonical.y):Zu(this.wrap*+o,t,t,this.canonical.x>>u,this.canonical.y>>u)}isChildOf(t){if(t.wrap!==this.wrap)return!1;const o=this.canonical.z-t.canonical.z;return t.overscaledZ===0||t.overscaledZ>o&&t.canonical.y===this.canonical.y>>o}children(t){if(this.overscaledZ>=t)return[new Ci(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];const o=this.canonical.z+1,u=2*this.canonical.x,f=2*this.canonical.y;return[new Ci(o,this.wrap,o,u,f),new Ci(o,this.wrap,o,u+1,f),new Ci(o,this.wrap,o,u,f+1),new Ci(o,this.wrap,o,u+1,f+1)]}isLessThan(t){return this.wrapt.wrap)&&(this.overscaledZt.overscaledZ)&&(this.canonical.xt.canonical.x)&&this.canonical.ythis.max&&(this.max=b),b=this.dim+1||o<-1||o>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(o+1)*this.stride+(t+1)}_unpackMapbox(t,o,u){return(256*t*256+256*o+u)/10-1e4}_unpackTerrarium(t,o,u){return 256*t+o+u/256-32768}getPixels(){return new ki({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(t,o,u){if(this.dim!==t.dim)throw new Error("dem dimension mismatch");let f=o*this.dim,y=o*this.dim+this.dim,v=u*this.dim,b=u*this.dim+this.dim;switch(o){case-1:f=y-1;break;case 1:y=f+1}switch(u){case-1:v=b-1;break;case 1:b=v+1}const E=-o*this.dim,I=-u*this.dim;for(let B=v;B=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${t} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[t]}}class X_{constructor(t,o,u,f,y){this.type="Feature",this._vectorTileFeature=t,t._z=o,t._x=u,t._y=f,this.properties=t.properties,this.id=y}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(t){this._geometry=t}toJSON(){const t={geometry:this.geometry};for(const o in this)o!=="_geometry"&&o!=="_vectorTileFeature"&&(t[o]=this[o]);return t}}class K_{constructor(t,o){this.tileID=t,this.x=t.canonical.x,this.y=t.canonical.y,this.z=t.canonical.z,this.grid=new ca(dr,16,0),this.grid3D=new ca(dr,16,0),this.featureIndexArray=new Yt,this.promoteId=o}insert(t,o,u,f,y,v){const b=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(u,f,y);const E=v?this.grid3D:this.grid;for(let I=0;I=0&&V[3]>=0&&E.insert(b,V[0],V[1],V[2],V[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new _s.VectorTile(new kf(this.rawTileData)).layers,this.sourceLayerCoder=new H_(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers}query(t,o,u,f){this.loadVTLayers();const y=t.params||{},v=dr/t.tileSize/t.scale,b=Ya(y.filter),E=t.queryGeometry,I=t.queryPadding*v,B=J_(E),V=this.grid.query(B.minX-I,B.minY-I,B.maxX+I,B.maxY+I),q=J_(t.cameraQueryGeometry),X=this.grid3D.query(q.minX-I,q.minY-I,q.maxX+I,q.maxY+I,(ue,Ie,Fe,Te)=>function(Re,Qe,Je,Tt,It){for(const mt of Re)if(Qe<=mt.x&&Je<=mt.y&&Tt>=mt.x&&It>=mt.y)return!0;const vt=[new et(Qe,Je),new et(Qe,It),new et(Tt,It),new et(Tt,Je)];if(Re.length>2){for(const mt of vt)if(ol(Re,mt))return!0}for(let mt=0;mt(Te||(Te=ma(Re)),Qe.queryIntersectsFeature(E,Re,Je,Te,this.z,t.transform,v,t.pixelPosMatrix)))}return K}loadMatchingFeature(t,o,u,f,y,v,b,E,I,B,V){const q=this.bucketLayerIDs[o];if(v&&!function(ue,Ie){for(let Fe=0;Fe=0)return!0;return!1}(v,q))return;const X=this.sourceLayerCoder.decode(u),K=this.vtLayers[X].feature(f);if(y.needGeometry){const ue=ga(K,!0);if(!y.filter(new Nn(this.tileID.overscaledZ),ue,this.tileID.canonical))return}else if(!y.filter(new Nn(this.tileID.overscaledZ),K))return;const ce=this.getId(K,X);for(let ue=0;ue{const b=t instanceof pa?t.get(v):null;return b&&b.evaluate?b.evaluate(o,u,f):b})}function J_(i){let t=1/0,o=1/0,u=-1/0,f=-1/0;for(const y of i)t=Math.min(t,y.x),o=Math.min(o,y.y),u=Math.max(u,y.x),f=Math.max(f,y.y);return{minX:t,minY:o,maxX:u,maxY:f}}function R2(i,t){return t-i}var Uf;kt("FeatureIndex",K_,{omit:["rawTileData","sourceLayerCoder"]}),l.PerformanceMarkers=void 0,(Uf=l.PerformanceMarkers||(l.PerformanceMarkers={})).create="create",Uf.load="load",Uf.fullLoad="fullLoad";let nd=null,qu=[];const Vf=1e3/30,L2={mark(i){performance.mark(i)},frame(i){const t=i;nd!=null&&qu.push(t-nd),nd=t},clearMetrics(){nd=null,qu=[],performance.clearMeasures("loadTime"),performance.clearMeasures("fullLoadTime");for(const i in l.PerformanceMarkers)performance.clearMarks(l.PerformanceMarkers[i])},getPerformanceMetrics(){performance.measure("loadTime",l.PerformanceMarkers.create,l.PerformanceMarkers.load),performance.measure("fullLoadTime",l.PerformanceMarkers.create,l.PerformanceMarkers.fullLoad);const i=performance.getEntriesByName("loadTime")[0].duration,t=performance.getEntriesByName("fullLoadTime")[0].duration,o=qu.length,u=1/(qu.reduce((y,v)=>y+v,0)/o/1e3),f=qu.filter(y=>y>Vf).reduce((y,v)=>y+(v-Vf)/Vf,0);return{loadTime:i,fullLoadTime:t,fps:u,percentDroppedFrames:f/(o+f)*100}}};l.AJAXError=dn,l.ARRAY_TYPE=qr,l.Actor=class{constructor(i,t,o){this.target=i,this.parent=t,this.mapId=o,this.callbacks={},this.tasks={},this.taskQueue=[],this.cancelCallbacks={},Y(["receive","process"],this),this.invoker=new D2(this.process),this.target.addEventListener("message",this.receive,!1),this.globalScope=be()?i:window}send(i,t,o,u,f=!1){const y=Math.round(1e18*Math.random()).toString(36).substring(0,10);o&&(this.callbacks[y]=o);const v=Oe(this.globalScope)?void 0:[];return this.target.postMessage({id:y,type:i,hasCallback:!!o,targetMapId:u,mustQueue:f,sourceMapId:this.mapId,data:Lo(t,v)},v),{cancel:()=>{o&&delete this.callbacks[y],this.target.postMessage({id:y,type:"",targetMapId:u,sourceMapId:this.mapId})}}}receive(i){const t=i.data,o=t.id;if(o&&(!t.targetMapId||this.mapId===t.targetMapId))if(t.type===""){delete this.tasks[o];const u=this.cancelCallbacks[o];delete this.cancelCallbacks[o],u&&u()}else be()||t.mustQueue?(this.tasks[o]=t,this.taskQueue.push(o),this.invoker.trigger()):this.processTask(o,t)}process(){if(!this.taskQueue.length)return;const i=this.taskQueue.shift(),t=this.tasks[i];delete this.tasks[i],this.taskQueue.length&&this.invoker.trigger(),t&&this.processTask(i,t)}processTask(i,t){if(t.type===""){const o=this.callbacks[i];delete this.callbacks[i],o&&(t.error?o(fo(t.error)):o(null,fo(t.data)))}else{let o=!1;const u=Oe(this.globalScope)?void 0:[],f=t.hasCallback?(b,E)=>{o=!0,delete this.cancelCallbacks[i],this.target.postMessage({id:i,type:"",sourceMapId:this.mapId,error:b?Lo(b):null,data:Lo(E,u)},u)}:b=>{o=!0};let y=null;const v=fo(t.data);if(this.parent[t.type])y=this.parent[t.type](t.sourceMapId,v,f);else if(this.parent.getWorkerSource){const b=t.type.split(".");y=this.parent.getWorkerSource(t.sourceMapId,b[0],v.source)[b[1]](v,f)}else f(new Error(`Could not find function ${t.type}`));!o&&y&&y.cancel&&(this.cancelCallbacks[i]=y.cancel)}}remove(){this.invoker.remove(),this.target.removeEventListener("message",this.receive,!1)}},l.AlphaImage=Bu,l.CanonicalTileID=Nf,l.CollisionBoxArray=qe,l.CollisionCircleLayoutArray=class extends N{},l.Color=Q,l.DEMData=W_,l.DataConstantProperty=Pt,l.DictionaryCoder=H_,l.EXTENT=dr,l.ErrorEvent=yt,l.EvaluationParameters=Nn,l.Event=je,l.Evented=Bt,l.FeatureIndex=K_,l.FillBucket=bf,l.FillExtrusionBucket=Ef,l.GeoJSONFeature=X_,l.ImageAtlas=x_,l.ImagePosition=If,l.LineBucket=Tf,l.LineStripIndexArray=class extends le{},l.LngLat=Jn,l.LngLatBounds=_a,l.MercatorCoordinate=td,l.ONE_EM=Er,l.OverscaledTileID=Ci,l.PerformanceUtils=L2,l.PosArray=Ft,l.Properties=Sr,l.QuadTriangleArray=class extends H{},l.RGBAImage=ki,l.RasterBoundsArray=class extends d{},l.RequestPerformance=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.ResourceType=sn,l.SegmentVector=Qt,l.SymbolBucket=dl,l.Transitionable=Ph,l.TriangleIndexArray=Gr,l.Uniform1f=No,l.Uniform1i=class extends Oo{constructor(i,t){super(i,t),this.current=0}set(i){this.current!==i&&(this.current=i,this.gl.uniform1i(this.location,i))}},l.Uniform2f=class extends Oo{constructor(i,t){super(i,t),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.Uniform3f=class extends Oo{constructor(i,t){super(i,t),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.Uniform4f=rl,l.UniformColor=By,l.UniformMatrix4f=class extends Oo{constructor(i,t){super(i,t),this.current=nb}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 t=1;t<16;t++)if(i[t]!==this.current[t]){this.current=i,this.gl.uniformMatrix4fv(this.location,!1,i);break}}},l.UnwrappedTileID=q_,l.ValidationError=it,l.ZoomHistory=wu,l.add=function(i,t,o){return i[0]=t[0]+o[0],i[1]=t[1]+o[1],i[2]=t[2]+o[2],i},l.addDynamicAttributes=Df,l.asyncAll=function(i,t,o){if(!i.length)return o(null,[]);let u=i.length;const f=new Array(i.length);let y=null;i.forEach((v,b)=>{t(v,(E,I)=>{E&&(y=E),f[b]=I,--u==0&&o(y,f)})})},l.bezier=D,l.bindAll=Y,l.cacheEntryPossiblyAdded=function(i){at++,at>bt&&(i.getActor().send("enforceCacheSizeLimit",Se),at=0)},l.clamp=A,l.clearTileCache=function(i){const t=caches.delete(Pe);i&&t.catch(i).then(()=>i())},l.clipLine=M_,l.clone=function(i){var t=new qr(16);return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],t},l.clone$1=G,l.clone$2=function(i){var t=new qr(3);return t[0]=i[0],t[1]=i[1],t[2]=i[2],t},l.collisionCircleLayout=Qb,l.config=Ye,l.copy=function(i,t){return i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=t[3],i[4]=t[4],i[5]=t[5],i[6]=t[6],i[7]=t[7],i[8]=t[8],i[9]=t[9],i[10]=t[10],i[11]=t[11],i[12]=t[12],i[13]=t[13],i[14]=t[14],i[15]=t[15],i},l.create=function(){var i=new qr(16);return qr!=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.create$1=Gy,l.createExpression=Qs,l.createFilter=Ya,l.createLayout=sr,l.createStyleLayer=function(i){return i.type==="custom"?new P2(i):new M2[i.type](i)},l.cross=function(i,t,o){var u=t[0],f=t[1],y=t[2],v=o[0],b=o[1],E=o[2];return i[0]=f*E-y*b,i[1]=y*v-u*E,i[2]=u*b-f*v,i},l.dot=function(i,t){return i[0]*t[0]+i[1]*t[1]+i[2]*t[2]},l.dot$1=function(i,t){return i[0]*t[0]+i[1]*t[1]+i[2]*t[2]+i[3]*t[3]},l.ease=M,l.emitValidationErrors=Qa,l.enforceCacheSizeLimit=function(i){ut(),nt&&nt.then(t=>{t.keys().then(o=>{for(let u=0;u{}}},l.identity=pf,l.invert=function(i,t){var o=t[0],u=t[1],f=t[2],y=t[3],v=t[4],b=t[5],E=t[6],I=t[7],B=t[8],V=t[9],q=t[10],X=t[11],K=t[12],ce=t[13],ue=t[14],Ie=t[15],Fe=o*b-u*v,Te=o*E-f*v,Re=o*I-y*v,Qe=u*E-f*b,Je=u*I-y*b,Tt=f*I-y*E,It=B*ce-V*K,vt=B*ue-q*K,mt=B*Ie-X*K,pt=V*ue-q*ce,xt=V*Ie-X*ce,gt=q*Ie-X*ue,st=Fe*gt-Te*xt+Re*pt+Qe*mt-Je*vt+Tt*It;return st?(i[0]=(b*gt-E*xt+I*pt)*(st=1/st),i[1]=(f*xt-u*gt-y*pt)*st,i[2]=(ce*Tt-ue*Je+Ie*Qe)*st,i[3]=(q*Je-V*Tt-X*Qe)*st,i[4]=(E*mt-v*gt-I*vt)*st,i[5]=(o*gt-f*mt+y*vt)*st,i[6]=(ue*Re-K*Tt-Ie*Te)*st,i[7]=(B*Tt-q*Re+X*Te)*st,i[8]=(v*xt-b*mt+I*It)*st,i[9]=(u*mt-o*xt-y*It)*st,i[10]=(K*Je-ce*Re+Ie*Fe)*st,i[11]=(V*Re-B*Je-X*Fe)*st,i[12]=(b*vt-v*pt-E*It)*st,i[13]=(o*pt-u*vt+f*It)*st,i[14]=(ce*Te-K*Qe-ue*Fe)*st,i[15]=(B*Qe-V*Te+q*Fe)*st,i):null},l.isImageBitmap=$,l.isSafari=Oe,l.isWorker=be,l.keysDifference=function(i,t){const o=[];for(const u in i)u in t||o.push(u);return o},l.lazyLoadRTLTextPlugin=function(){pi.isLoading()||pi.isLoaded()||ha()!=="deferred"||zh()},l.makeRequest=Ue,l.mapObject=R,l.mercatorXfromLng=j_,l.mercatorYfromLat=$_,l.mercatorZfromAltitude=G_,l.mul=cb,l.mul$1=function(i,t,o){return i[0]=t[0]*o[0],i[1]=t[1]*o[1],i[2]=t[2]*o[2],i[3]=t[3]*o[3],i},l.multiply=Zy,l.nextPowerOfTwo=function(i){return i<=1?1:Math.pow(2,Math.ceil(Math.log(i)/Math.LN2))},l.normalize=function(i,t){var o=t[0],u=t[1],f=t[2],y=o*o+u*u+f*f;return y>0&&(y=1/Math.sqrt(y)),i[0]=t[0]*y,i[1]=t[1]*y,i[2]=t[2]*y,i},l.number=Fn,l.ortho=function(i,t,o,u,f,y,v){var b=1/(t-o),E=1/(u-f),I=1/(y-v);return i[0]=-2*b,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=-2*E,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=2*I,i[11]=0,i[12]=(t+o)*b,i[13]=(f+u)*E,i[14]=(v+y)*I,i[15]=1,i},l.parseCacheControl=Ce,l.parseGlyphPbf=function(i){return new kf(i).readFields(c2,[])},l.pbf=kf,l.performSymbolLayout=function(i){i.bucket.createArrays(),i.bucket.tilePixelRatio=dr/(512*i.bucket.overscaling),i.bucket.compareText={},i.bucket.iconsNeedLinear=!1;const t=i.bucket.layers[0].layout,o=i.bucket.layers[0]._unevaluatedLayout._values,u={layoutIconSize:o["icon-size"].possiblyEvaluate(new Nn(i.bucket.zoom+1),i.canonical),layoutTextSize:o["text-size"].possiblyEvaluate(new Nn(i.bucket.zoom+1),i.canonical),textMaxSize:o["text-size"].possiblyEvaluate(new Nn(18))};if(i.bucket.textSizeData.kind==="composite"){const{minZoom:E,maxZoom:I}=i.bucket.textSizeData;u.compositeTextSizes=[o["text-size"].possiblyEvaluate(new Nn(E),i.canonical),o["text-size"].possiblyEvaluate(new Nn(I),i.canonical)]}if(i.bucket.iconSizeData.kind==="composite"){const{minZoom:E,maxZoom:I}=i.bucket.iconSizeData;u.compositeIconSizes=[o["icon-size"].possiblyEvaluate(new Nn(E),i.canonical),o["icon-size"].possiblyEvaluate(new Nn(I),i.canonical)]}const f=t.get("text-line-height")*Er,y=t.get("text-rotation-alignment")!=="viewport"&&t.get("symbol-placement")!=="point",v=t.get("text-keep-upright"),b=t.get("text-size");for(const E of i.bucket.features){const I=t.get("text-font").evaluate(E,{},i.canonical).join(","),B=b.evaluate(E,{},i.canonical),V=u.layoutTextSize.evaluate(E,{},i.canonical),q=u.layoutIconSize.evaluate(E,{},i.canonical),X={horizontal:{},vertical:void 0},K=E.text;let ce,ue=[0,0];if(K){const Te=K.toString(),Re=t.get("text-letter-spacing").evaluate(E,{},i.canonical)*Er,Qe=of(Te)?Re:0,Je=t.get("text-anchor").evaluate(E,{},i.canonical),Tt=t.get("text-variable-anchor");if(!Tt){const xt=t.get("text-radial-offset").evaluate(E,{},i.canonical);ue=xt?L_(Je,[xt*Er,Pf]):t.get("text-offset").evaluate(E,{},i.canonical).map(gt=>gt*Er)}let It=y?"center":t.get("text-justify").evaluate(E,{},i.canonical);const vt=t.get("symbol-placement"),mt=vt==="point"?t.get("text-max-width").evaluate(E,{},i.canonical)*Er:0,pt=()=>{i.bucket.allowVerticalPlacement&&el(Te)&&(X.vertical=Wh(K,i.glyphMap,i.glyphPositions,i.imagePositions,I,mt,f,Je,"left",Qe,ue,l.WritingMode.vertical,!0,vt,V,B))};if(!y&&Tt){const xt=It==="auto"?Tt.map(st=>Mf(st)):[It];let gt=!1;for(let st=0;stthis._layers[rt.id]),xe=de[0];if(xe.visibility==="none")continue;const me=xe.source||"";let pe=this.familiesBySource[me];pe||(pe=this.familiesBySource[me]={});const we=xe.sourceLayer||"_geojsonTileLayer";let Ge=pe[we];Ge||(Ge=pe[we]=[]),Ge.push(de)}}}class M{constructor(P){const j={},J=[];for(const me in P){const pe=P[me],we=j[me]={};for(const Ge in pe){const rt=pe[+Ge];if(!rt||rt.bitmap.width===0||rt.bitmap.height===0)continue;const $e={x:0,y:0,w:rt.bitmap.width+2,h:rt.bitmap.height+2};J.push($e),we[Ge]={rect:$e,metrics:rt.metrics}}}const{w:Q,h:de}=l.potpack(J),xe=new l.AlphaImage({width:Q||1,height:de||1});for(const me in P){const pe=P[me];for(const we in pe){const Ge=pe[+we];if(!Ge||Ge.bitmap.width===0||Ge.bitmap.height===0)continue;const rt=j[me][we].rect;l.AlphaImage.copy(Ge.bitmap,xe,{x:0,y:0},{x:rt.x+1,y:rt.y+1},Ge.bitmap)}}this.image=xe,this.positions=j}}l.register("GlyphAtlas",M);class A{constructor(P){this.tileID=new l.OverscaledTileID(P.tileID.overscaledZ,P.tileID.wrap,P.tileID.canonical.z,P.tileID.canonical.x,P.tileID.canonical.y),this.uid=P.uid,this.zoom=P.zoom,this.pixelRatio=P.pixelRatio,this.tileSize=P.tileSize,this.source=P.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=P.showCollisionBoxes,this.collectResourceTiming=!!P.collectResourceTiming,this.returnDependencies=!!P.returnDependencies,this.promoteId=P.promoteId}parse(P,j,J,Q,de){this.status="parsing",this.data=P,this.collisionBoxArray=new l.CollisionBoxArray;const xe=new l.DictionaryCoder(Object.keys(P.layers).sort()),me=new l.FeatureIndex(this.tileID,this.promoteId);me.bucketLayerIDs=[];const pe={},we={featureIndex:me,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:J},Ge=j.familiesBySource[this.source];for(const Wt in Ge){const Kt=P.layers[Wt];if(!Kt)continue;Kt.version===1&&l.warnOnce(`Vector tile source "${this.source}" layer "${Wt}" does not use vector tile spec v2 and therefore may have some rendering errors.`);const cn=xe.encode(Wt),En=[];for(let gr=0;gr=Bn.maxzoom||Bn.visibility!=="none"&&(F(gr,this.zoom,J),(pe[Bn.id]=Bn.createBucket({index:me.bucketLayerIDs.length,layers:gr,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:cn,sourceID:this.source})).populate(En,we,this.tileID.canonical),me.bucketLayerIDs.push(gr.map(Ar=>Ar.id)))}}let rt,$e,Ct,zt;const wt=l.mapObject(we.glyphDependencies,Wt=>Object.keys(Wt).map(Number));Object.keys(wt).length?Q.send("getGlyphs",{uid:this.uid,stacks:wt},(Wt,Kt)=>{rt||(rt=Wt,$e=Kt,un.call(this))}):$e={};const Vt=Object.keys(we.iconDependencies);Vt.length?Q.send("getImages",{icons:Vt,source:this.source,tileID:this.tileID,type:"icons"},(Wt,Kt)=>{rt||(rt=Wt,Ct=Kt,un.call(this))}):Ct={};const Zt=Object.keys(we.patternDependencies);function un(){if(rt)return de(rt);if($e&&Ct&&zt){const Wt=new M($e),Kt=new l.ImageAtlas(Ct,zt);for(const cn in pe){const En=pe[cn];En instanceof l.SymbolBucket?(F(En.layers,this.zoom,J),l.performSymbolLayout({bucket:En,glyphMap:$e,glyphPositions:Wt.positions,imageMap:Ct,imagePositions:Kt.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):En.hasPattern&&(En instanceof l.LineBucket||En instanceof l.FillBucket||En instanceof l.FillExtrusionBucket)&&(F(En.layers,this.zoom,J),En.addFeatures(we,this.tileID.canonical,Kt.patternPositions))}this.status="done",de(null,{buckets:Object.values(pe).filter(cn=>!cn.isEmpty()),featureIndex:me,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:Wt.image,imageAtlas:Kt,glyphMap:this.returnDependencies?$e:null,iconMap:this.returnDependencies?Ct:null,glyphPositions:this.returnDependencies?Wt.positions:null})}}Zt.length?Q.send("getImages",{icons:Zt,source:this.source,tileID:this.tileID,type:"patterns"},(Wt,Kt)=>{rt||(rt=Wt,zt=Kt,un.call(this))}):zt={},un.call(this)}}function F(ee,P,j){const J=new l.EvaluationParameters(P);for(const Q of ee)Q.recalculate(J,j)}function W(ee,P){const j=l.getArrayBuffer(ee.request,(J,Q,de,xe)=>{J?P(J):Q&&P(null,{vectorTile:new l.vectorTile.VectorTile(new l.pbf(Q)),rawData:Q,cacheControl:de,expires:xe})});return()=>{j.cancel(),P()}}class O{constructor(P,j,J,Q){this.actor=P,this.layerIndex=j,this.availableImages=J,this.loadVectorData=Q||W,this.loading={},this.loaded={}}loadTile(P,j){const J=P.uid;this.loading||(this.loading={});const Q=!!(P&&P.request&&P.request.collectResourceTiming)&&new l.RequestPerformance(P.request),de=this.loading[J]=new A(P);de.abort=this.loadVectorData(P,(xe,me)=>{if(delete this.loading[J],xe||!me)return de.status="done",this.loaded[J]=de,j(xe);const pe=me.rawData,we={};me.expires&&(we.expires=me.expires),me.cacheControl&&(we.cacheControl=me.cacheControl);const Ge={};if(Q){const rt=Q.finish();rt&&(Ge.resourceTiming=JSON.parse(JSON.stringify(rt)))}de.vectorTile=me.vectorTile,de.parse(me.vectorTile,this.layerIndex,this.availableImages,this.actor,(rt,$e)=>{if(rt||!$e)return j(rt);j(null,l.extend({rawTileData:pe.slice(0)},$e,we,Ge))}),this.loaded=this.loaded||{},this.loaded[J]=de})}reloadTile(P,j){const J=this.loaded,Q=P.uid,de=this;if(J&&J[Q]){const xe=J[Q];xe.showCollisionBoxes=P.showCollisionBoxes;const me=(pe,we)=>{const Ge=xe.reloadCallback;Ge&&(delete xe.reloadCallback,xe.parse(xe.vectorTile,de.layerIndex,this.availableImages,de.actor,Ge)),j(pe,we)};xe.status==="parsing"?xe.reloadCallback=me:xe.status==="done"&&(xe.vectorTile?xe.parse(xe.vectorTile,this.layerIndex,this.availableImages,this.actor,me):me())}}abortTile(P,j){const J=this.loading,Q=P.uid;J&&J[Q]&&J[Q].abort&&(J[Q].abort(),delete J[Q]),j()}removeTile(P,j){const J=this.loaded,Q=P.uid;J&&J[Q]&&delete J[Q],j()}}class Y{constructor(){this.loaded={}}loadTile(P,j){const{uid:J,encoding:Q,rawImageData:de}=P,xe=l.isImageBitmap(de)?this.getImageData(de):de,me=new l.DEMData(J,xe,Q);this.loaded=this.loaded||{},this.loaded[J]=me,j(null,me)}getImageData(P){this.offscreenCanvas&&this.offscreenCanvasContext||(this.offscreenCanvas=new OffscreenCanvas(P.width,P.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext("2d")),this.offscreenCanvas.width=P.width,this.offscreenCanvas.height=P.height,this.offscreenCanvasContext.drawImage(P,0,0,P.width,P.height);const j=this.offscreenCanvasContext.getImageData(-1,-1,P.width+2,P.height+2);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),new l.RGBAImage({width:j.width,height:j.height},j.data)}removeTile(P){const j=this.loaded,J=P.uid;j&&j[J]&&delete j[J]}}var R=function ee(P,j){var J,Q=P&&P.type;if(Q==="FeatureCollection")for(J=0;J=Math.abs(me)?j-pe+me:me-pe+j,j=pe}j+J>=0!=!!P&&ee.reverse()}const te=l.vectorTile.VectorTileFeature.prototype.toGeoJSON;class ne{constructor(P){this._feature=P,this.extent=l.EXTENT,this.type=P.type,this.properties=P.tags,"id"in P&&!isNaN(P.id)&&(this.id=parseInt(P.id,10))}loadGeometry(){if(this._feature.type===1){const P=[];for(const j of this._feature.geometry)P.push([new l.pointGeometry(j[0],j[1])]);return P}{const P=[];for(const j of this._feature.geometry){const J=[];for(const Q of j)J.push(new l.pointGeometry(Q[0],Q[1]));P.push(J)}return P}}toGeoJSON(P,j,J){return te.call(this,P,j,J)}}class ve{constructor(P){this.layers={_geojsonTileLayer:this},this.name="_geojsonTileLayer",this.extent=l.EXTENT,this.length=P.length,this._features=P}feature(P){return new ne(this._features[P])}}var fe={exports:{}},be=l.pointGeometry,Ce=l.vectorTile.VectorTileFeature,Le=lt;function lt(ee,P){this.options=P||{},this.features=ee,this.length=ee.length}function he(ee,P){this.id=typeof ee.id=="number"?ee.id:void 0,this.type=ee.type,this.rawGeometry=ee.type===1?[ee.geometry]:ee.geometry,this.properties=ee.tags,this.extent=P||4096}lt.prototype.feature=function(ee){return new he(this.features[ee],this.options.extent)},he.prototype.loadGeometry=function(){var ee=this.rawGeometry;this.geometry=[];for(var P=0;P>31}function Ae(ee,P){for(var j=ee.loadGeometry(),J=ee.type,Q=0,de=0,xe=j.length,me=0;me>1;ut(ee,P,xe,J,Q,de%2),bt(ee,P,j,J,xe-1,de+1),bt(ee,P,j,xe+1,Q,de+1)}function ut(ee,P,j,J,Q,de){for(;Q>J;){if(Q-J>600){const we=Q-J+1,Ge=j-J+1,rt=Math.log(we),$e=.5*Math.exp(2*rt/3),Ct=.5*Math.sqrt(rt*$e*(we-$e)/we)*(Ge-we/2<0?-1:1);ut(ee,P,j,Math.max(J,Math.floor(j-Ge*$e/we+Ct)),Math.min(Q,Math.floor(j+(we-Ge)*$e/we+Ct)),de)}const xe=P[2*j+de];let me=J,pe=Q;for(at(ee,P,J,j),P[2*Q+de]>xe&&at(ee,P,J,Q);mexe;)pe--}P[2*J+de]===xe?at(ee,P,J,pe):(pe++,at(ee,P,pe,Q)),pe<=j&&(J=pe+1),j<=pe&&(Q=pe-1)}}function at(ee,P,j,J){Lt(ee,j,J),Lt(P,2*j,2*J),Lt(P,2*j+1,2*J+1)}function Lt(ee,P,j){const J=ee[P];ee[P]=ee[j],ee[j]=J}function rn(ee,P,j,J){const Q=ee-j,de=P-J;return Q*Q+de*de}fe.exports=Ve,fe.exports.fromVectorTileJs=Ve,fe.exports.fromGeojsonVt=function(ee,P){P=P||{};var j={};for(var J in ee)j[J]=new $(ee[J].features,P),j[J].name=J,j[J].version=P.version,j[J].extent=P.extent;return Ve({layers:j})},fe.exports.GeoJSONWrapper=$;const $t=ee=>ee[0],Ut=ee=>ee[1];class Nt{constructor(P,j=$t,J=Ut,Q=64,de=Float64Array){this.nodeSize=Q,this.points=P;const xe=P.length<65536?Uint16Array:Uint32Array,me=this.ids=new xe(P.length),pe=this.coords=new de(2*P.length);for(let we=0;we=me&&zt<=we&&wt>=pe&&wt<=Ge&&Ct.push(de[cn]);continue}const Wt=Math.floor((un+Zt)/2);zt=xe[2*Wt],wt=xe[2*Wt+1],zt>=me&&zt<=we&&wt>=pe&&wt<=Ge&&Ct.push(de[Wt]);const Kt=(Vt+1)%2;(Vt===0?me<=zt:pe<=wt)&&($e.push(un),$e.push(Wt-1),$e.push(Kt)),(Vt===0?we>=zt:Ge>=wt)&&($e.push(Wt+1),$e.push(Zt),$e.push(Kt))}return Ct}(this.ids,this.coords,P,j,J,Q,this.nodeSize)}within(P,j,J){return function(Q,de,xe,me,pe,we){const Ge=[0,Q.length-1,0],rt=[],$e=pe*pe;for(;Ge.length;){const Ct=Ge.pop(),zt=Ge.pop(),wt=Ge.pop();if(zt-wt<=we){for(let Kt=wt;Kt<=zt;Kt++)rn(de[2*Kt],de[2*Kt+1],xe,me)<=$e&&rt.push(Q[Kt]);continue}const Vt=Math.floor((wt+zt)/2),Zt=de[2*Vt],un=de[2*Vt+1];rn(Zt,un,xe,me)<=$e&&rt.push(Q[Vt]);const Wt=(Ct+1)%2;(Ct===0?xe-pe<=Zt:me-pe<=un)&&(Ge.push(wt),Ge.push(Vt-1),Ge.push(Wt)),(Ct===0?xe+pe>=Zt:me+pe>=un)&&(Ge.push(Vt+1),Ge.push(zt),Ge.push(Wt))}return rt}(this.ids,this.coords,P,j,J,this.nodeSize)}}const on={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:ee=>ee},sn=Math.fround||(dn=new Float32Array(1),ee=>(dn[0]=+ee,dn[0]));var dn;class U{constructor(P){this.options=Me(Object.create(on),P),this.trees=new Array(this.options.maxZoom+1)}load(P){const{log:j,minZoom:J,maxZoom:Q,nodeSize:de}=this.options;j&&console.time("total time");const xe=`prepare ${P.length} points`;j&&console.time(xe),this.points=P;let me=[];for(let pe=0;pe=J;pe--){const we=+Date.now();me=this._cluster(me,pe),this.trees[pe]=new Nt(me,ct,Ne,de,Float32Array),j&&console.log("z%d: %d clusters in %dms",pe,me.length,+Date.now()-we)}return j&&console.timeEnd("total time"),this}getClusters(P,j){let J=((P[0]+180)%360+360)%360-180;const Q=Math.max(-90,Math.min(90,P[1]));let de=P[2]===180?180:((P[2]+180)%360+360)%360-180;const xe=Math.max(-90,Math.min(90,P[3]));if(P[2]-P[0]>=360)J=-180,de=180;else if(J>de){const Ge=this.getClusters([J,Q,180,xe],j),rt=this.getClusters([-180,Q,de,xe],j);return Ge.concat(rt)}const me=this.trees[this._limitZoom(j)],pe=me.range(ge(J),Ke(xe),ge(de),Ke(Q)),we=[];for(const Ge of pe){const rt=me.points[Ge];we.push(rt.numPoints?ae(rt):this.points[rt.index])}return we}getChildren(P){const j=this._getOriginId(P),J=this._getOriginZoom(P),Q="No cluster with the specified id.",de=this.trees[J];if(!de)throw new Error(Q);const xe=de.points[j];if(!xe)throw new Error(Q);const me=this.options.radius/(this.options.extent*Math.pow(2,J-1)),pe=de.within(xe.x,xe.y,me),we=[];for(const Ge of pe){const rt=de.points[Ge];rt.parentId===P&&we.push(rt.numPoints?ae(rt):this.points[rt.index])}if(we.length===0)throw new Error(Q);return we}getLeaves(P,j,J){const Q=[];return this._appendLeaves(Q,P,j=j||10,J=J||0,0),Q}getTile(P,j,J){const Q=this.trees[this._limitZoom(P)],de=Math.pow(2,P),{extent:xe,radius:me}=this.options,pe=me/xe,we=(J-pe)/de,Ge=(J+1+pe)/de,rt={features:[]};return this._addTileFeatures(Q.range((j-pe)/de,we,(j+1+pe)/de,Ge),Q.points,j,J,de,rt),j===0&&this._addTileFeatures(Q.range(1-pe/de,we,1,Ge),Q.points,de,J,de,rt),j===de-1&&this._addTileFeatures(Q.range(0,we,pe/de,Ge),Q.points,-1,J,de,rt),rt.features.length?rt:null}getClusterExpansionZoom(P){let j=this._getOriginZoom(P)-1;for(;j<=this.options.maxZoom;){const J=this.getChildren(P);if(j++,J.length!==1)break;P=J[0].properties.cluster_id}return j}_appendLeaves(P,j,J,Q,de){const xe=this.getChildren(j);for(const me of xe){const pe=me.properties;if(pe&&pe.cluster?de+pe.point_count<=Q?de+=pe.point_count:de=this._appendLeaves(P,pe.cluster_id,J,Q,de):dej&&(zt+=Vt.numPoints||1)}if(zt>Ct&&zt>=me){let wt=Ge.x*Ct,Vt=Ge.y*Ct,Zt=xe&&Ct>1?this._map(Ge,!0):null;const un=(we<<5)+(j+1)+this.points.length;for(const Wt of $e){const Kt=rt.points[Wt];if(Kt.zoom<=j)continue;Kt.zoom=j;const cn=Kt.numPoints||1;wt+=Kt.x*cn,Vt+=Kt.y*cn,Kt.parentId=un,xe&&(Zt||(Zt=this._map(Ge,!0)),xe(Zt,this._map(Kt)))}Ge.parentId=un,J.push(He(wt/zt,Vt/zt,un,zt,Zt))}else if(J.push(Ge),zt>1)for(const wt of $e){const Vt=rt.points[wt];Vt.zoom<=j||(Vt.zoom=j,J.push(Vt))}}return J}_getOriginId(P){return P-this.points.length>>5}_getOriginZoom(P){return(P-this.points.length)%32}_map(P,j){if(P.numPoints)return j?Me({},P.properties):P.properties;const J=this.points[P.index].properties,Q=this.options.map(J);return j&&Q===J?Me({},Q):Q}}function He(ee,P,j,J,Q){return{x:sn(ee),y:sn(P),zoom:1/0,id:j,parentId:-1,numPoints:J,properties:Q}}function Ue(ee,P){const[j,J]=ee.geometry.coordinates;return{x:sn(ge(j)),y:sn(Ke(J)),zoom:1/0,index:P,parentId:-1}}function ae(ee){return{type:"Feature",id:ee.id,properties:oe(ee),geometry:{type:"Point",coordinates:[(P=ee.x,360*(P-.5)),tt(ee.y)]}};var P}function oe(ee){const P=ee.numPoints,j=P>=1e4?`${Math.round(P/1e3)}k`:P>=1e3?Math.round(P/100)/10+"k":P;return Me(Me({},ee.properties),{cluster:!0,cluster_id:ee.id,point_count:P,point_count_abbreviated:j})}function ge(ee){return ee/360+.5}function Ke(ee){const P=Math.sin(ee*Math.PI/180),j=.5-.25*Math.log((1+P)/(1-P))/Math.PI;return j<0?0:j>1?1:j}function tt(ee){const P=(180-360*ee)*Math.PI/180;return 360*Math.atan(Math.exp(P))/Math.PI-90}function Me(ee,P){for(const j in P)ee[j]=P[j];return ee}function ct(ee){return ee.x}function Ne(ee){return ee.y}function je(ee,P,j,J){for(var Q,de=J,xe=j-P>>1,me=j-P,pe=ee[P],we=ee[P+1],Ge=ee[j],rt=ee[j+1],$e=P+3;$ede)Q=$e,de=Ct;else if(Ct===de){var zt=Math.abs($e-xe);ztJ&&(Q-P>3&&je(ee,P,Q,J),ee[Q+2]=de,j-Q>3&&je(ee,Q,j,J))}function yt(ee,P,j,J,Q,de){var xe=Q-j,me=de-J;if(xe!==0||me!==0){var pe=((ee-j)*xe+(P-J)*me)/(xe*xe+me*me);pe>1?(j=Q,J=de):pe>0&&(j+=xe*pe,J+=me*pe)}return(xe=ee-j)*xe+(me=P-J)*me}function Bt(ee,P,j,J){var Q={id:ee===void 0?null:ee,type:P,geometry:j,tags:J,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(de){var xe=de.geometry,me=de.type;if(me==="Point"||me==="MultiPoint"||me==="LineString")ke(de,xe);else if(me==="Polygon"||me==="MultiLineString")for(var pe=0;pe0&&(xe+=J?(Q*we-pe*de)/2:Math.sqrt(Math.pow(pe-Q,2)+Math.pow(we-de,2))),Q=pe,de=we}var Ge=P.length-3;P[2]=1,je(P,0,Ge,j),P[Ge+2]=1,P.size=Math.abs(xe),P.start=0,P.end=P.size}function Ht(ee,P,j,J){for(var Q=0;Q1?1:j}function $n(ee,P,j,J,Q,de,xe,me){if(J/=P,de>=(j/=P)&&xe=J)return null;for(var pe=[],we=0;we=j&&zt=J)){var wt=[];if($e==="Point"||$e==="MultiPoint")Gn(rt,wt,j,J,Q);else if($e==="LineString")ht(rt,wt,j,J,Q,!1,me.lineMetrics);else if($e==="MultiLineString")Gt(rt,wt,j,J,Q,!1);else if($e==="Polygon")Gt(rt,wt,j,J,Q,!0);else if($e==="MultiPolygon")for(var Vt=0;Vt=j&&xe<=J&&(P.push(ee[de]),P.push(ee[de+1]),P.push(ee[de+2]))}}function ht(ee,P,j,J,Q,de,xe){for(var me,pe,we=qt(ee),Ge=Q===0?Sn:At,rt=ee.start,$e=0;$ej&&(pe=Ge(we,Ct,zt,Vt,Zt,j),xe&&(we.start=rt+me*pe)):un>J?Wt=j&&(pe=Ge(we,Ct,zt,Vt,Zt,j),Kt=!0),Wt>J&&un<=J&&(pe=Ge(we,Ct,zt,Vt,Zt,J),Kt=!0),!de&&Kt&&(xe&&(we.end=rt+me*pe),P.push(we),we=qt(ee)),xe&&(rt+=me)}var cn=ee.length-3;Ct=ee[cn],zt=ee[cn+1],wt=ee[cn+2],(un=Q===0?Ct:zt)>=j&&un<=J&&er(we,Ct,zt,wt),cn=we.length-3,de&&cn>=3&&(we[cn]!==we[0]||we[cn+1]!==we[1])&&er(we,we[0],we[1],we[2]),we.length&&P.push(we)}function qt(ee){var P=[];return P.size=ee.size,P.start=ee.start,P.end=ee.end,P}function Gt(ee,P,j,J,Q,de){for(var xe=0;xexe.maxX&&(xe.maxX=Ge),rt>xe.maxY&&(xe.maxY=rt)}return xe}function an(ee,P,j,J){var Q=P.geometry,de=P.type,xe=[];if(de==="Point"||de==="MultiPoint")for(var me=0;me0&&P.size<(Q?xe:J))j.numPoints+=P.length/3;else{for(var me=[],pe=0;pexe)&&(j.numSimplified++,me.push(P[pe]),me.push(P[pe+1])),j.numPoints++;Q&&function(we,Ge){for(var rt=0,$e=0,Ct=we.length,zt=Ct-2;$e0===Ge)for($e=0,Ct=we.length;$e24)throw new Error("maxZoom should be in the 0-24 range");if(P.promoteId&&P.generateId)throw new Error("promoteId and generateId cannot be used together.");var J=function(Q,de){var xe=[];if(Q.type==="FeatureCollection")for(var me=0;me1&&console.time("creation"),$e=this.tiles[rt]=Mn(ee,P,j,J,pe),this.tileCoords.push({z:P,x:j,y:J}),we)){we>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",P,j,J,$e.numFeatures,$e.numPoints,$e.numSimplified),console.timeEnd("creation"));var Ct="z"+P;this.stats[Ct]=(this.stats[Ct]||0)+1,this.total++}if($e.source=ee,Q){if(P===pe.maxZoom||P===Q)continue;var zt=1<1&&console.time("clipping");var wt,Vt,Zt,un,Wt,Kt,cn=.5*pe.buffer/pe.extent,En=.5-cn,gr=.5+cn,Bn=1+cn;wt=Vt=Zt=un=null,Wt=$n(ee,Ge,j-cn,j+gr,0,$e.minX,$e.maxX,pe),Kt=$n(ee,Ge,j+En,j+Bn,0,$e.minX,$e.maxX,pe),ee=null,Wt&&(wt=$n(Wt,Ge,J-cn,J+gr,1,$e.minY,$e.maxY,pe),Vt=$n(Wt,Ge,J+En,J+Bn,1,$e.minY,$e.maxY,pe),Wt=null),Kt&&(Zt=$n(Kt,Ge,J-cn,J+gr,1,$e.minY,$e.maxY,pe),un=$n(Kt,Ge,J+En,J+Bn,1,$e.minY,$e.maxY,pe),Kt=null),we>1&&console.timeEnd("clipping"),me.push(wt||[],P+1,2*j,2*J),me.push(Vt||[],P+1,2*j,2*J+1),me.push(Zt||[],P+1,2*j+1,2*J),me.push(un||[],P+1,2*j+1,2*J+1)}}},Ir.prototype.getTile=function(ee,P,j){var J=this.options,Q=J.extent,de=J.debug;if(ee<0||ee>24)return null;var xe=1<1&&console.log("drilling down to z%d-%d-%d",ee,P,j);for(var pe,we=ee,Ge=P,rt=j;!pe&&we>0;)we--,Ge=Math.floor(Ge/2),rt=Math.floor(rt/2),pe=this.tiles[Jr(we,Ge,rt)];return pe&&pe.source?(de>1&&console.log("found parent tile z%d-%d-%d",we,Ge,rt),de>1&&console.time("drilling down"),this.splitTile(pe.source,we,Ge,rt,ee,P,j),de>1&&console.timeEnd("drilling down"),this.tiles[me]?cr(this.tiles[me],Q):null):null};class Si extends O{constructor(P,j,J,Q){super(P,j,J,di),Q&&(this.loadGeoJSON=Q)}loadData(P,j){var J;(J=this._pendingRequest)===null||J===void 0||J.cancel(),this._pendingCallback&&this._pendingCallback(null,{abandoned:!0});const Q=!!(P&&P.request&&P.request.collectResourceTiming)&&new l.RequestPerformance(P.request);this._pendingCallback=j,this._pendingRequest=this.loadGeoJSON(P,(de,xe)=>{if(delete this._pendingCallback,delete this._pendingRequest,de||!xe)return j(de);if(typeof xe!="object")return j(new Error(`Input data given to '${P.source}' is not a valid GeoJSON object.`));{R(xe,!0);try{if(P.filter){const pe=l.createExpression(P.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if(pe.result==="error")throw new Error(pe.value.map(Ge=>`${Ge.key}: ${Ge.message}`).join(", "));xe={type:"FeatureCollection",features:xe.features.filter(Ge=>pe.value.evaluate({zoom:0},Ge))}}this._geoJSONIndex=P.cluster?new U(function({superclusterOptions:pe,clusterProperties:we}){if(!we||!pe)return pe;const Ge={},rt={},$e={accumulated:null,zoom:0},Ct={properties:null},zt=Object.keys(we);for(const wt of zt){const[Vt,Zt]=we[wt],un=l.createExpression(Zt),Wt=l.createExpression(typeof Vt=="string"?[Vt,["accumulated"],["get",wt]]:Vt);Ge[wt]=un.value,rt[wt]=Wt.value}return pe.map=wt=>{Ct.properties=wt;const Vt={};for(const Zt of zt)Vt[Zt]=Ge[Zt].evaluate($e,Ct);return Vt},pe.reduce=(wt,Vt)=>{Ct.properties=Vt;for(const Zt of zt)$e.accumulated=wt[Zt],wt[Zt]=rt[Zt].evaluate($e,Ct)},pe}(P)).load(xe.features):function(pe,we){return new Ir(pe,we)}(xe,P.geojsonVtOptions)}catch(pe){return j(pe)}this.loaded={};const me={};if(Q){const pe=Q.finish();pe&&(me.resourceTiming={},me.resourceTiming[P.source]=JSON.parse(JSON.stringify(pe)))}j(null,me)}})}reloadTile(P,j){const J=this.loaded;return J&&J[P.uid]?super.reloadTile(P,j):this.loadTile(P,j)}loadGeoJSON(P,j){if(P.request)return l.getJSON(P.request,j);if(typeof P.data=="string")try{j(null,JSON.parse(P.data))}catch{j(new Error(`Input data given to '${P.source}' is not a valid GeoJSON object.`))}else j(new Error(`Input data given to '${P.source}' is not a valid GeoJSON object.`));return{cancel:()=>{}}}removeSource(P,j){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),j()}getClusterExpansionZoom(P,j){try{j(null,this._geoJSONIndex.getClusterExpansionZoom(P.clusterId))}catch(J){j(J)}}getClusterChildren(P,j){try{j(null,this._geoJSONIndex.getChildren(P.clusterId))}catch(J){j(J)}}getClusterLeaves(P,j){try{j(null,this._geoJSONIndex.getLeaves(P.clusterId,P.limit,P.offset))}catch(J){j(J)}}}class Bi{constructor(P){this.self=P,this.actor=new l.Actor(P,this),this.layerIndexes={},this.availableImages={},this.workerSourceTypes={vector:O,geojson:Si},this.workerSources={},this.demWorkerSources={},this.self.registerWorkerSource=(j,J)=>{if(this.workerSourceTypes[j])throw new Error(`Worker source with name "${j}" already registered.`);this.workerSourceTypes[j]=J},this.self.registerRTLTextPlugin=j=>{if(l.plugin.isParsed())throw new Error("RTL text plugin already registered.");l.plugin.applyArabicShaping=j.applyArabicShaping,l.plugin.processBidirectionalText=j.processBidirectionalText,l.plugin.processStyledBidirectionalText=j.processStyledBidirectionalText}}setReferrer(P,j){this.referrer=j}setImages(P,j,J){this.availableImages[P]=j;for(const Q in this.workerSources[P]){const de=this.workerSources[P][Q];for(const xe in de)de[xe].availableImages=j}J()}setLayers(P,j,J){this.getLayerIndex(P).replace(j),J()}updateLayers(P,j,J){this.getLayerIndex(P).update(j.layers,j.removedIds),J()}loadTile(P,j,J){this.getWorkerSource(P,j.type,j.source).loadTile(j,J)}loadDEMTile(P,j,J){this.getDEMWorkerSource(P,j.source).loadTile(j,J)}reloadTile(P,j,J){this.getWorkerSource(P,j.type,j.source).reloadTile(j,J)}abortTile(P,j,J){this.getWorkerSource(P,j.type,j.source).abortTile(j,J)}removeTile(P,j,J){this.getWorkerSource(P,j.type,j.source).removeTile(j,J)}removeDEMTile(P,j){this.getDEMWorkerSource(P,j.source).removeTile(j)}removeSource(P,j,J){if(!this.workerSources[P]||!this.workerSources[P][j.type]||!this.workerSources[P][j.type][j.source])return;const Q=this.workerSources[P][j.type][j.source];delete this.workerSources[P][j.type][j.source],Q.removeSource!==void 0?Q.removeSource(j,J):J()}loadWorkerSource(P,j,J){try{this.self.importScripts(j.url),J()}catch(Q){J(Q.toString())}}syncRTLPluginState(P,j,J){try{l.plugin.setState(j);const Q=l.plugin.getPluginURL();if(l.plugin.isLoaded()&&!l.plugin.isParsed()&&Q!=null){this.self.importScripts(Q);const de=l.plugin.isParsed();J(de?void 0:new Error(`RTL Text Plugin failed to import scripts from ${Q}`),de)}}catch(Q){J(Q.toString())}}getAvailableImages(P){let j=this.availableImages[P];return j||(j=[]),j}getLayerIndex(P){let j=this.layerIndexes[P];return j||(j=this.layerIndexes[P]=new D),j}getWorkerSource(P,j,J){if(this.workerSources[P]||(this.workerSources[P]={}),this.workerSources[P][j]||(this.workerSources[P][j]={}),!this.workerSources[P][j][J]){const Q={send:(de,xe,me)=>{this.actor.send(de,xe,me,P)}};this.workerSources[P][j][J]=new this.workerSourceTypes[j](Q,this.getLayerIndex(P),this.getAvailableImages(P))}return this.workerSources[P][j][J]}getDEMWorkerSource(P,j){return this.demWorkerSources[P]||(this.demWorkerSources[P]={}),this.demWorkerSources[P][j]||(this.demWorkerSources[P][j]=new Y),this.demWorkerSources[P][j]}enforceCacheSizeLimit(P,j){l.enforceCacheSizeLimit(j)}}return l.isWorker()&&(self.worker=new Bi(self)),Bi}),g(["./shared"],function(l){var S=k;function k(d){return!function(n){return typeof window>"u"||typeof document>"u"?"not a browser":Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray?Function.prototype&&Function.prototype.bind?Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions?"JSON"in window&&"parse"in JSON&&"stringify"in JSON?function(){if(!("Worker"in window&&"Blob"in window&&"URL"in window))return!1;var h,m,_=new Blob([""],{type:"text/javascript"}),w=URL.createObjectURL(_);try{m=new Worker(w),h=!0}catch{h=!1}return m&&m.terminate(),URL.revokeObjectURL(w),h}()?"Uint8ClampedArray"in window?ArrayBuffer.isView?function(){var h=document.createElement("canvas");h.width=h.height=1;var m=h.getContext("2d");if(!m)return!1;var _=m.getImageData(0,0,1,1);return _&&_.width===h.width}()?(D[a=n&&n.failIfMajorPerformanceCaveat]===void 0&&(D[a]=function(h){var m,_=function(w){var T=document.createElement("canvas"),C=Object.create(k.webGLContextAttributes);return C.failIfMajorPerformanceCaveat=w,T.getContext("webgl",C)||T.getContext("experimental-webgl",C)}(h);if(!_)return!1;try{m=_.createShader(_.VERTEX_SHADER)}catch{return!1}return!(!m||_.isContextLost())&&(_.shaderSource(m,"void main() {}"),_.compileShader(m),_.getShaderParameter(m,_.COMPILE_STATUS)===!0)}(a)),D[a]?document.documentMode?"insufficient ECMAScript 6 support":void 0:"insufficient WebGL support"):"insufficient Canvas/getImageData support":"insufficient ArrayBuffer support":"insufficient Uint8ClampedArray support":"insufficient worker support":"insufficient JSON support":"insufficient Object support":"insufficient Function support":"insufficent Array support";var a}(d)}var D={};function M(d,n){if(Array.isArray(d)){if(!Array.isArray(n)||d.length!==n.length)return!1;for(let a=0;a{window.removeEventListener("click",A.suppressClickInternal,!0)},0)}static mousePos(n,a){const h=n.getBoundingClientRect();return new l.pointGeometry(a.clientX-h.left-n.clientLeft,a.clientY-h.top-n.clientTop)}static touchPos(n,a){const h=n.getBoundingClientRect(),m=[];for(let _=0;_-1);C++,_[C]=T,w[C]=z,w[C+1]=L}for(let T=0,C=0;T{let T=this.entries[m];T||(T=this.entries[m]={glyphs:{},requests:{},ranges:{}});let C=T.glyphs[_];if(C!==void 0)return void w(null,{stack:m,id:_,glyph:C});if(C=this._tinySDF(T,m,_),C)return T.glyphs[_]=C,void w(null,{stack:m,id:_,glyph:C});const z=Math.floor(_/256);if(256*z>65535)return void w(new Error("glyphs > 65535 not supported"));if(T.ranges[z])return void w(null,{stack:m,id:_,glyph:C});let N=T.requests[z];N||(N=T.requests[z]=[],ne.loadGlyphRange(m,z,this.url,this.requestManager,(Z,H)=>{if(H){for(const se in H)this._doesCharSupportLocalGlyph(+se)||(T.glyphs[+se]=H[+se]);T.ranges[z]=!0}for(const se of N)se(Z,H);delete T.requests[z]})),N.push((Z,H)=>{Z?w(Z):H&&w(null,{stack:m,id:_,glyph:H[_]||null})})},(m,_)=>{if(m)a(m);else if(_){const w={};for(const{stack:T,id:C,glyph:z}of _)(w[T]||(w[T]={}))[C]=z&&{id:z.id,bitmap:z.bitmap.clone(),metrics:z.metrics};a(null,w)}})}_doesCharSupportLocalGlyph(n){return!!this.localIdeographFontFamily&&(l.unicodeBlockLookup["CJK Unified Ideographs"](n)||l.unicodeBlockLookup["Hangul Syllables"](n)||l.unicodeBlockLookup.Hiragana(n)||l.unicodeBlockLookup.Katakana(n))}_tinySDF(n,a,h){const m=this.localIdeographFontFamily;if(!m||!this._doesCharSupportLocalGlyph(h))return;let _=n.tinySDF;if(!_){let T="400";/bold/i.test(a)?T="900":/medium/i.test(a)?T="500":/light/i.test(a)&&(T="200"),_=n.tinySDF=new ne.TinySDF({fontSize:24,buffer:3,radius:8,cutoff:.25,fontFamily:m,fontWeight:T})}const w=_.draw(String.fromCharCode(h));return{id:h,bitmap:new l.AlphaImage({width:w.width||30,height:w.height||30},w.data),metrics:{width:w.glyphWidth||24,height:w.glyphHeight||24,left:w.glyphLeft||0,top:w.glyphTop-27||-8,advance:w.glyphAdvance||24}}}}ne.loadGlyphRange=function(d,n,a,h,m){const _=256*n,w=_+255,T=h.transformRequest(a.replace("{fontstack}",d).replace("{range}",`${_}-${w}`),l.ResourceType.Glyphs);l.getArrayBuffer(T,(C,z)=>{if(C)m(C);else if(z){const N={};for(const Z of l.parseGlyphPbf(z))N[Z.id]=Z;m(null,N)}})},ne.TinySDF=class{constructor({fontSize:d=24,buffer:n=3,radius:a=8,cutoff:h=.25,fontFamily:m="sans-serif",fontWeight:_="normal",fontStyle:w="normal"}={}){this.buffer=n,this.cutoff=h,this.radius=a;const T=this.size=d+4*n,C=this._createCanvas(T),z=this.ctx=C.getContext("2d",{willReadFrequently:!0});z.font=`${w} ${_} ${d}px ${m}`,z.textBaseline="alphabetic",z.textAlign="left",z.fillStyle="black",this.gridOuter=new Float64Array(T*T),this.gridInner=new Float64Array(T*T),this.f=new Float64Array(T),this.z=new Float64Array(T+1),this.v=new Uint16Array(T)}_createCanvas(d){const n=document.createElement("canvas");return n.width=n.height=d,n}draw(d){const{width:n,actualBoundingBoxAscent:a,actualBoundingBoxDescent:h,actualBoundingBoxLeft:m,actualBoundingBoxRight:_}=this.ctx.measureText(d),w=Math.ceil(a),T=Math.min(this.size-this.buffer,Math.ceil(_-m)),C=Math.min(this.size-this.buffer,w+Math.ceil(h)),z=T+2*this.buffer,N=C+2*this.buffer,Z=Math.max(z*N,0),H=new Uint8ClampedArray(Z),se={data:H,width:z,height:N,glyphWidth:T,glyphHeight:C,glyphTop:w,glyphLeft:0,glyphAdvance:n};if(T===0||C===0)return se;const{ctx:re,buffer:ie,gridInner:_e,gridOuter:Ee}=this;re.clearRect(ie,ie,T,C),re.fillText(d,ie,ie+w);const ze=re.getImageData(ie,ie,T,C);Ee.fill(L,0,Z),_e.fill(0,0,Z);for(let le=0;le0?We*We:0,_e[qe]=We<0?We*We:0}}G(Ee,0,0,z,N,z,this.f,this.v,this.z),G(_e,ie,ie,T,C,z,this.f,this.v,this.z);for(let le=0;le1&&(C=n[++T]);const N=Math.abs(z-C.left),Z=Math.abs(z-C.right),H=Math.min(N,Z);let se;const re=_/h*(m+1);if(C.isDash){const ie=m-Math.abs(re);se=Math.sqrt(H*H+ie*ie)}else se=m-Math.sqrt(H*H+re*re);this.data[w+z]=Math.max(0,Math.min(255,se+128))}}}addRegularDash(n){for(let T=n.length-1;T>=0;--T){const C=n[T],z=n[T+1];C.zeroLength?n.splice(T,1):z&&z.isDash===C.isDash&&(z.left=C.left,n.splice(T,1))}const a=n[0],h=n[n.length-1];a.isDash===h.isDash&&(a.left=h.left-this.width,h.right=a.right+this.width);const m=this.width*this.nextRow;let _=0,w=n[_];for(let T=0;T1&&(w=n[++_]);const C=Math.abs(T-w.left),z=Math.abs(T-w.right),N=Math.min(C,z);this.data[m+T]=Math.max(0,Math.min(255,(w.isDash?N:-N)+128))}}addDash(n,a){const h=a?7:0,m=2*h+1;if(this.nextRow+m>this.height)return l.warnOnce("LineAtlas out of space"),null;let _=0;for(let T=0;T{m.send(n,a,_)},h=h||function(){})}getActor(){return this.currentActor=(this.currentActor+1)%this.actors.length,this.actors[this.currentActor]}remove(){this.actors.forEach(n=>{n.remove()}),this.actors=[],this.workerPool.release(this.id)}}function lt(d,n,a){const h=function(m,_){if(m)return a(m);if(_){const w=l.pick(l.extend(_,d),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);_.vector_layers&&(w.vectorLayers=_.vector_layers,w.vectorLayerIds=w.vectorLayers.map(T=>T.id)),a(null,w)}};return d.url?l.getJSON(n.transformRequest(d.url,l.ResourceType.Source),h):l.exported.frame(()=>h(null,d))}Le.Actor=l.Actor;class he{constructor(n,a,h){this.bounds=l.LngLatBounds.convert(this.validateBounds(n)),this.minzoom=a||0,this.maxzoom=h||24}validateBounds(n){return Array.isArray(n)&&n.length===4?[Math.max(-180,n[0]),Math.max(-90,n[1]),Math.min(180,n[2]),Math.min(90,n[3])]:[-180,-90,180,90]}contains(n){const a=Math.pow(2,n.z),h=Math.floor(l.mercatorXfromLng(this.bounds.getWest())*a),m=Math.floor(l.mercatorYfromLat(this.bounds.getNorth())*a),_=Math.ceil(l.mercatorXfromLng(this.bounds.getEast())*a),w=Math.ceil(l.mercatorYfromLat(this.bounds.getSouth())*a);return n.x>=h&&n.x<_&&n.y>=m&&n.y{this._tileJSONRequest=null,this._loaded=!0,this.map.style.sourceCaches[this.id].clearTiles(),n?this.fire(new l.ErrorEvent(n)):a&&(l.extend(this,a),a.bounds&&(this.tileBounds=new he(a.bounds,this.minzoom,this.maxzoom)),this.fire(new l.Event("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new l.Event("data",{dataType:"source",sourceDataType:"content"})))})}loaded(){return this._loaded}hasTile(n){return!this.tileBounds||this.tileBounds.contains(n.canonical)}onAdd(n){this.map=n,this.load()}setSourceProperty(n){this._tileJSONRequest&&this._tileJSONRequest.cancel(),n(),this.load()}setTiles(n){return this.setSourceProperty(()=>{this._options.tiles=n}),this}setUrl(n){return this.setSourceProperty(()=>{this.url=n,this._options.url=n}),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}serialize(){return l.extend({},this._options)}loadTile(n,a){const h=n.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),m={request:this.map._requestManager.transformRequest(h,l.ResourceType.Tile),uid:n.uid,tileID:n.tileID,zoom:n.tileID.overscaledZ,tileSize:this.tileSize*n.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};function _(w,T){return delete n.request,n.aborted?a(null):w&&w.status!==404?a(w):(T&&T.resourceTiming&&(n.resourceTiming=T.resourceTiming),this.map._refreshExpiredTiles&&T&&n.setExpiryData(T),n.loadVectorData(T,this.map.painter),l.cacheEntryPossiblyAdded(this.dispatcher),a(null),void(n.reloadCallback&&(this.loadTile(n,n.reloadCallback),n.reloadCallback=null)))}m.request.collectResourceTiming=this._collectResourceTiming,n.actor&&n.state!=="expired"?n.state==="loading"?n.reloadCallback=a:n.request=n.actor.send("reloadTile",m,_.bind(this)):(n.actor=this.dispatcher.getActor(),n.request=n.actor.send("loadTile",m,_.bind(this)))}abortTile(n){n.request&&(n.request.cancel(),delete n.request),n.actor&&n.actor.send("abortTile",{uid:n.uid,type:this.type,source:this.id},void 0)}unloadTile(n){n.unloadVectorData(),n.actor&&n.actor.send("removeTile",{uid:n.uid,type:this.type,source:this.id},void 0)}hasTransition(){return!1}}class $ extends l.Evented{constructor(n,a,h,m){super(),this.id=n,this.dispatcher=h,this.setEventedParent(m),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=l.extend({type:"raster"},a),l.extend(this,l.pick(a,["url","scheme","tileSize"]))}load(){this._loaded=!1,this.fire(new l.Event("dataloading",{dataType:"source"})),this._tileJSONRequest=lt(this._options,this.map._requestManager,(n,a)=>{this._tileJSONRequest=null,this._loaded=!0,n?this.fire(new l.ErrorEvent(n)):a&&(l.extend(this,a),a.bounds&&(this.tileBounds=new he(a.bounds,this.minzoom,this.maxzoom)),this.fire(new l.Event("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new l.Event("data",{dataType:"source",sourceDataType:"content"})))})}loaded(){return this._loaded}onAdd(n){this.map=n,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.cancel(),this._tileJSONRequest=null)}serialize(){return l.extend({},this._options)}hasTile(n){return!this.tileBounds||this.tileBounds.contains(n.canonical)}loadTile(n,a){const h=n.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);n.request=l.getImage(this.map._requestManager.transformRequest(h,l.ResourceType.Tile),(m,_,w)=>{if(delete n.request,n.aborted)n.state="unloaded",a(null);else if(m)n.state="errored",a(m);else if(_){this.map._refreshExpiredTiles&&n.setExpiryData(w);const T=this.map.painter.context,C=T.gl;n.texture=this.map.painter.getTileTexture(_.width),n.texture?n.texture.update(_,{useMipmap:!0}):(n.texture=new O(T,_,C.RGBA,{useMipmap:!0}),n.texture.bind(C.LINEAR,C.CLAMP_TO_EDGE,C.LINEAR_MIPMAP_NEAREST),T.extTextureFilterAnisotropic&&C.texParameterf(C.TEXTURE_2D,T.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,T.extTextureFilterAnisotropicMax)),n.state="loaded",l.cacheEntryPossiblyAdded(this.dispatcher),a(null)}})}abortTile(n,a){n.request&&(n.request.cancel(),delete n.request),a()}unloadTile(n,a){n.texture&&this.map.painter.saveTileTexture(n.texture),a()}hasTransition(){return!1}}let Ve;class et extends ${constructor(n,a,h,m){super(n,a,h,m),this.type="raster-dem",this.maxzoom=22,this._options=l.extend({type:"raster-dem"},a),this.encoding=a.encoding||"mapbox"}serialize(){return{type:"raster-dem",url:this.url,tileSize:this.tileSize,tiles:this.tiles,bounds:this.bounds,encoding:this.encoding}}loadTile(n,a){const h=n.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);function m(_,w){_&&(n.state="errored",a(_)),w&&(n.dem=w,n.needsHillshadePrepare=!0,n.needsTerrainPrepare=!0,n.state="loaded",a(null))}n.request=l.getImage(this.map._requestManager.transformRequest(h,l.ResourceType.Tile),function(_,w){if(delete n.request,n.aborted)n.state="unloaded",a(null);else if(_)n.state="errored",a(_);else if(w){this.map._refreshExpiredTiles&&n.setExpiryData(w),delete w.cacheControl,delete w.expires;const T=l.isImageBitmap(w)&&(Ve==null&&(Ve=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")&&typeof createImageBitmap=="function"),Ve)?w:l.exported.getImageData(w,1),C={uid:n.uid,coord:n.tileID,source:this.id,rawImageData:T,encoding:this.encoding};n.actor&&n.state!=="expired"||(n.actor=this.dispatcher.getActor(),n.actor.send("loadDEMTile",C,m.bind(this)))}}.bind(this)),n.neighboringTiles=this._getNeighboringTiles(n.tileID)}_getNeighboringTiles(n){const a=n.canonical,h=Math.pow(2,a.z),m=(a.x-1+h)%h,_=a.x===0?n.wrap-1:n.wrap,w=(a.x+1+h)%h,T=a.x+1===h?n.wrap+1:n.wrap,C={};return C[new l.OverscaledTileID(n.overscaledZ,_,a.z,m,a.y).key]={backfilled:!1},C[new l.OverscaledTileID(n.overscaledZ,T,a.z,w,a.y).key]={backfilled:!1},a.y>0&&(C[new l.OverscaledTileID(n.overscaledZ,_,a.z,m,a.y-1).key]={backfilled:!1},C[new l.OverscaledTileID(n.overscaledZ,n.wrap,a.z,a.x,a.y-1).key]={backfilled:!1},C[new l.OverscaledTileID(n.overscaledZ,T,a.z,w,a.y-1).key]={backfilled:!1}),a.y+1{if(this._pendingLoads--,this._removed||_&&_.abandoned)return void this.fire(new l.Event("dataabort",{dataType:"source",sourceDataType:n}));let w=null;if(_&&_.resourceTiming&&_.resourceTiming[this.id]&&(w=_.resourceTiming[this.id].slice(0)),m)return void this.fire(new l.ErrorEvent(m));const T={dataType:"source",sourceDataType:n};this._collectResourceTiming&&w&&w.length>0&&l.extend(T,{resourceTiming:w}),this.fire(new l.Event("data",T))})}loaded(){return this._pendingLoads===0}loadTile(n,a){const h=n.actor?"reloadTile":"loadTile";n.actor=this.actor;const m={type:this.type,uid:n.uid,tileID:n.tileID,zoom:n.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};n.request=this.actor.send(h,m,(_,w)=>(delete n.request,n.unloadVectorData(),n.aborted?a(null):_?a(_):(n.loadVectorData(w,this.map.painter,h==="reloadTile"),a(null))))}abortTile(n){n.request&&(n.request.cancel(),delete n.request),n.aborted=!0}unloadTile(n){n.unloadVectorData(),this.actor.send("removeTile",{uid:n.uid,type:this.type,source:this.id})}onRemove(){this._removed=!0,this.actor.send("removeSource",{type:this.type,source:this.id})}serialize(){return l.extend({},this._options,{type:this.type,data:this._data})}hasTransition(){return!1}}var Ye=l.createLayout([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class Pe extends l.Evented{constructor(n,a,h,m){super(),this.id=n,this.dispatcher=h,this.coordinates=a.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(m),this.options=a}load(n,a){this._loaded=!1,this.fire(new l.Event("dataloading",{dataType:"source"})),this.url=this.options.url,l.getImage(this.map._requestManager.transformRequest(this.url,l.ResourceType.Image),(h,m)=>{this._loaded=!0,h?this.fire(new l.ErrorEvent(h)):m&&(this.image=m,n&&(this.coordinates=n),a&&a(),this._finishLoading())})}loaded(){return this._loaded}updateImage(n){return this.image&&n.url?(this.options.url=n.url,this.load(n.coordinates,()=>{this.texture=null}),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new l.Event("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(n){this.map=n,this.load()}setCoordinates(n){this.coordinates=n;const a=n.map(l.MercatorCoordinate.fromLngLat);this.tileID=function(m){let _=1/0,w=1/0,T=-1/0,C=-1/0;for(const H of m)_=Math.min(_,H.x),w=Math.min(w,H.y),T=Math.max(T,H.x),C=Math.max(C,H.y);const z=Math.max(T-_,C-w),N=Math.max(0,Math.floor(-Math.log(z)/Math.LN2)),Z=Math.pow(2,N);return new l.CanonicalTileID(N,Math.floor((_+T)/2*Z),Math.floor((w+C)/2*Z))}(a),this.minzoom=this.maxzoom=this.tileID.z;const h=a.map(m=>this.tileID.getTilePoint(m)._round());return this._boundsArray=new l.RasterBoundsArray,this._boundsArray.emplaceBack(h[0].x,h[0].y,0,0),this._boundsArray.emplaceBack(h[1].x,h[1].y,l.EXTENT,0),this._boundsArray.emplaceBack(h[3].x,h[3].y,0,l.EXTENT),this._boundsArray.emplaceBack(h[2].x,h[2].y,l.EXTENT,l.EXTENT),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new l.Event("data",{dataType:"source",sourceDataType:"content"})),this}prepare(){if(Object.keys(this.tiles).length===0||!this.image)return;const n=this.map.painter.context,a=n.gl;this.boundsBuffer||(this.boundsBuffer=n.createVertexBuffer(this._boundsArray,Ye.members)),this.boundsSegments||(this.boundsSegments=l.SegmentVector.simpleSegment(0,0,4,2)),this.texture||(this.texture=new O(n,this.image,a.RGBA),this.texture.bind(a.LINEAR,a.CLAMP_TO_EDGE));for(const h in this.tiles){const m=this.tiles[h];m.state!=="loaded"&&(m.state="loaded",m.texture=this.texture)}}loadTile(n,a){this.tileID&&this.tileID.equals(n.tileID.canonical)?(this.tiles[String(n.tileID.wrap)]=n,n.buckets={},a(null)):(n.state="errored",a(null))}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}}class nt extends Pe{constructor(n,a,h,m){super(n,a,h,m),this.roundZoom=!0,this.type="video",this.options=a}load(){this._loaded=!1;const n=this.options;this.urls=[];for(const a of n.urls)this.urls.push(this.map._requestManager.transformRequest(a,l.ResourceType.Source).url);l.getVideo(this.urls,(a,h)=>{this._loaded=!0,a?this.fire(new l.ErrorEvent(a)):h&&(this.video=h,this.video.loop=!0,this.video.addEventListener("playing",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading())})}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(n){if(this.video){const a=this.video.seekable;na.end(0)?this.fire(new l.ErrorEvent(new l.ValidationError(`sources.${this.id}`,null,`Playback for this video can be set only between the ${a.start(0)} and ${a.end(0)}-second mark.`))):this.video.currentTime=n}}getVideo(){return this.video}onAdd(n){this.map||(this.map=n,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}prepare(){if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;const n=this.map.painter.context,a=n.gl;this.boundsBuffer||(this.boundsBuffer=n.createVertexBuffer(this._boundsArray,Ye.members)),this.boundsSegments||(this.boundsSegments=l.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(a.LINEAR,a.CLAMP_TO_EDGE),a.texSubImage2D(a.TEXTURE_2D,0,0,0,a.RGBA,a.UNSIGNED_BYTE,this.video)):(this.texture=new O(n,this.video,a.RGBA),this.texture.bind(a.LINEAR,a.CLAMP_TO_EDGE));for(const h in this.tiles){const m=this.tiles[h];m.state!=="loaded"&&(m.state="loaded",m.texture=this.texture)}}serialize(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}}class Ae extends Pe{constructor(n,a,h,m){super(n,a,h,m),a.coordinates?Array.isArray(a.coordinates)&&a.coordinates.length===4&&!a.coordinates.some(_=>!Array.isArray(_)||_.length!==2||_.some(w=>typeof w!="number"))||this.fire(new l.ErrorEvent(new l.ValidationError(`sources.${n}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new l.ErrorEvent(new l.ValidationError(`sources.${n}`,null,'missing required property "coordinates"'))),a.animate&&typeof a.animate!="boolean"&&this.fire(new l.ErrorEvent(new l.ValidationError(`sources.${n}`,null,'optional "animate" property must be a boolean value'))),a.canvas?typeof a.canvas=="string"||a.canvas instanceof HTMLCanvasElement||this.fire(new l.ErrorEvent(new l.ValidationError(`sources.${n}`,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.ErrorEvent(new l.ValidationError(`sources.${n}`,null,'missing required property "canvas"'))),this.options=a,this.animate=a.animate===void 0||a.animate}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.ErrorEvent(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())}getCanvas(){return this.canvas}onAdd(n){this.map=n,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}prepare(){let n=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,n=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,n=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;const a=this.map.painter.context,h=a.gl;this.boundsBuffer||(this.boundsBuffer=a.createVertexBuffer(this._boundsArray,Ye.members)),this.boundsSegments||(this.boundsSegments=l.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(n||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new O(a,this.canvas,h.RGBA,{premultiply:!0});for(const m in this.tiles){const _=this.tiles[m];_.state!=="loaded"&&(_.state="loaded",_.texture=this.texture)}}serialize(){return{type:"canvas",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(const n of[this.canvas.width,this.canvas.height])if(isNaN(n)||n<=0)return!0;return!1}}const Se={vector:Oe,raster:$,"raster-dem":et,geojson:Xe,video:nt,image:Pe,canvas:Ae};function bt(d,n){const a=l.create();return l.translate(a,a,[1,1,0]),l.scale(a,a,[.5*d.width,.5*d.height,1]),l.multiply(a,a,d.calculatePosMatrix(n.toUnwrapped()))}function ut(d,n,a,h,m,_){const w=function(Z,H,se){if(Z)for(const re of Z){const ie=H[re];if(ie&&ie.source===se&&ie.type==="fill-extrusion")return!0}else for(const re in H){const ie=H[re];if(ie.source===se&&ie.type==="fill-extrusion")return!0}return!1}(m&&m.layers,n,d.id),T=_.maxPitchScaleFactor(),C=d.tilesIn(h,T,w);C.sort(at);const z=[];for(const Z of C)z.push({wrappedTileID:Z.tileID.wrapped().key,queryResults:Z.tile.queryRenderedFeatures(n,a,d._state,Z.queryGeometry,Z.cameraQueryGeometry,Z.scale,m,_,T,bt(d.transform,Z.tileID))});const N=function(Z){const H={},se={};for(const re of Z){const ie=re.queryResults,_e=re.wrappedTileID,Ee=se[_e]=se[_e]||{};for(const ze in ie){const le=ie[ze],Be=Ee[ze]=Ee[ze]||{},De=H[ze]=H[ze]||[];for(const qe of le)Be[qe.featureIndex]||(Be[qe.featureIndex]=!0,De.push(qe))}}return H}(z);for(const Z in N)N[Z].forEach(H=>{const se=H.feature,re=d.getFeatureState(se.layer["source-layer"],se.id);se.source=se.layer.source,se.layer["source-layer"]&&(se.sourceLayer=se.layer["source-layer"]),se.state=re});return N}function at(d,n){const a=d.tileID,h=n.tileID;return a.overscaledZ-h.overscaledZ||a.canonical.y-h.canonical.y||a.wrap-h.wrap||a.canonical.x-h.canonical.x}class Lt{constructor(n,a){this.tileID=n,this.uid=l.uniqueId(),this.uses=0,this.tileSize=a,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.textures=[],this.textureCoords={},this.expiredRequestCount=0,this.state="loading"}registerFadeDuration(n){const a=n+this.timeAdded;an.saveTileTexture(a)),this.demTexture=null,this.textures=[],this.textureCoords={}}loadVectorData(n,a,h){if(this.hasData()&&this.unloadVectorData(),this.state="loaded",n){n.featureIndex&&(this.latestFeatureIndex=n.featureIndex,n.rawTileData?(this.latestRawTileData=n.rawTileData,this.latestFeatureIndex.rawTileData=n.rawTileData):this.latestRawTileData&&(this.latestFeatureIndex.rawTileData=this.latestRawTileData)),this.collisionBoxArray=n.collisionBoxArray,this.buckets=function(m,_){const w={};if(!_)return w;for(const T of m){const C=T.layerIds.map(z=>_.getLayer(z)).filter(Boolean);if(C.length!==0){T.layers=C,T.stateDependentLayerIds&&(T.stateDependentLayers=T.stateDependentLayerIds.map(z=>C.filter(N=>N.id===z)[0]));for(const z of C)w[z.id]=T}}return w}(n.buckets,a.style),this.hasSymbolBuckets=!1;for(const m in this.buckets){const _=this.buckets[m];if(_ instanceof l.SymbolBucket){if(this.hasSymbolBuckets=!0,!h)break;_.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(const m in this.buckets){const _=this.buckets[m];if(_ instanceof l.SymbolBucket&&_.hasRTLText){this.hasRTLText=!0,l.lazyLoadRTLTextPlugin();break}}this.queryPadding=0;for(const m in this.buckets){const _=this.buckets[m];this.queryPadding=Math.max(this.queryPadding,a.style.getLayer(m).queryRadius(_))}n.imageAtlas&&(this.imageAtlas=n.imageAtlas),n.glyphAtlasImage&&(this.glyphAtlasImage=n.glyphAtlasImage)}else this.collisionBoxArray=new l.CollisionBoxArray}unloadVectorData(){for(const n in this.buckets)this.buckets[n].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(n){return this.buckets[n.id]}upload(n){for(const h in this.buckets){const m=this.buckets[h];m.uploadPending()&&m.upload(n)}const a=n.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new O(n,this.imageAtlas.image,a.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new O(n,this.glyphAtlasImage,a.ALPHA),this.glyphAtlasImage=null)}prepare(n){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(n,this.imageAtlasTexture)}queryRenderedFeatures(n,a,h,m,_,w,T,C,z,N){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:m,cameraQueryGeometry:_,scale:w,tileSize:this.tileSize,pixelPosMatrix:N,transform:C,params:T,queryPadding:this.queryPadding*z},n,a,h):{}}querySourceFeatures(n,a){const h=this.latestFeatureIndex;if(!h||!h.rawTileData)return;const m=h.loadVTLayers(),_=a?a.sourceLayer:"",w=m._geojsonTileLayer||m[_];if(!w)return;const T=l.createFilter(a&&a.filter),{z:C,x:z,y:N}=this.tileID.canonical,Z={z:C,x:z,y:N};for(let H=0;Hh)m=!1;else if(a)if(this.expirationTime{this.remove(n,_)},h)),this.data[m].push(_),this.order.push(m),this.order.length>this.max){const w=this._getAndRemoveByKey(this.order[0]);w&&this.onRemove(w)}return this}has(n){return n.wrapped().key in this.data}getAndRemove(n){return this.has(n)?this._getAndRemoveByKey(n.wrapped().key):null}_getAndRemoveByKey(n){const a=this.data[n].shift();return a.timeout&&clearTimeout(a.timeout),this.data[n].length===0&&delete this.data[n],this.order.splice(this.order.indexOf(n),1),a.value}getByKey(n){const a=this.data[n];return a?a[0].value:null}get(n){return this.has(n)?this.data[n.wrapped().key][0].value:null}remove(n,a){if(!this.has(n))return this;const h=n.wrapped().key,m=a===void 0?0:this.data[h].indexOf(a),_=this.data[h][m];return this.data[h].splice(m,1),_.timeout&&clearTimeout(_.timeout),this.data[h].length===0&&delete this.data[h],this.onRemove(_.value),this.order.splice(this.order.indexOf(h),1),this}setMaxSize(n){for(this.max=n;this.order.length>this.max;){const a=this._getAndRemoveByKey(this.order[0]);a&&this.onRemove(a)}return this}filter(n){const a=[];for(const h in this.data)for(const m of this.data[h])n(m.value)||a.push(m);for(const h of a)this.remove(h.value.tileID,h)}}class $t{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(n,a,h){const m=String(a);if(this.stateChanges[n]=this.stateChanges[n]||{},this.stateChanges[n][m]=this.stateChanges[n][m]||{},l.extend(this.stateChanges[n][m],h),this.deletedStates[n]===null){this.deletedStates[n]={};for(const _ in this.state[n])_!==m&&(this.deletedStates[n][_]=null)}else if(this.deletedStates[n]&&this.deletedStates[n][m]===null){this.deletedStates[n][m]={};for(const _ in this.state[n][m])h[_]||(this.deletedStates[n][m][_]=null)}else for(const _ in h)this.deletedStates[n]&&this.deletedStates[n][m]&&this.deletedStates[n][m][_]===null&&delete this.deletedStates[n][m][_]}removeFeatureState(n,a,h){if(this.deletedStates[n]===null)return;const m=String(a);if(this.deletedStates[n]=this.deletedStates[n]||{},h&&a!==void 0)this.deletedStates[n][m]!==null&&(this.deletedStates[n][m]=this.deletedStates[n][m]||{},this.deletedStates[n][m][h]=null);else if(a!==void 0)if(this.stateChanges[n]&&this.stateChanges[n][m])for(h in this.deletedStates[n][m]={},this.stateChanges[n][m])this.deletedStates[n][m][h]=null;else this.deletedStates[n][m]=null;else this.deletedStates[n]=null}getState(n,a){const h=String(a),m=l.extend({},(this.state[n]||{})[h],(this.stateChanges[n]||{})[h]);if(this.deletedStates[n]===null)return{};if(this.deletedStates[n]){const _=this.deletedStates[n][a];if(_===null)return{};for(const w in _)delete m[w]}return m}initializeTileState(n,a){n.setFeatureState(this.state,a)}coalesceChanges(n,a){const h={};for(const m in this.stateChanges){this.state[m]=this.state[m]||{};const _={};for(const w in this.stateChanges[m])this.state[m][w]||(this.state[m][w]={}),l.extend(this.state[m][w],this.stateChanges[m][w]),_[w]=this.state[m][w];h[m]=_}for(const m in this.deletedStates){this.state[m]=this.state[m]||{};const _={};if(this.deletedStates[m]===null)for(const w in this.state[m])_[w]={},this.state[m][w]={};else for(const w in this.deletedStates[m]){if(this.deletedStates[m][w]===null)this.state[m][w]={};else for(const T of Object.keys(this.deletedStates[m][w]))delete this.state[m][w][T];_[w]=this.state[m][w]}h[m]=h[m]||{},l.extend(h[m],_)}if(this.stateChanges={},this.deletedStates={},Object.keys(h).length!==0)for(const m in n)n[m].setFeatureState(h,a)}}class Ut extends l.Evented{constructor(n,a,h){super(),this.id=n,this.dispatcher=h,this.on("data",m=>{m.dataType==="source"&&m.sourceDataType==="metadata"&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&m.dataType==="source"&&m.sourceDataType==="content"&&(this.reload(),this.transform&&this.update(this.transform,this.terrain))}),this.on("dataloading",()=>{this._sourceErrored=!1}),this.on("error",()=>{this._sourceErrored=this._source.loaded()}),this._source=function(m,_,w,T){const C=new Se[_.type](m,_,w,T);if(C.id!==m)throw new Error(`Expected Source id to be ${m} instead of ${C.id}`);return l.bindAll(["load","abort","unload","serialize","prepare"],C),C}(n,a,h,this),this._tiles={},this._cache=new rn(0,this._unloadTile.bind(this)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new $t}onAdd(n){this.map=n,this._maxTileCacheSize=n?n._maxTileCacheSize:null,this._source&&this._source.onAdd&&this._source.onAdd(n)}onRemove(n){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(n)}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;for(const n in this._tiles){const a=this._tiles[n];if(a.state!=="loaded"&&a.state!=="errored")return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;const n=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,n&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}_loadTile(n,a){return this._source.loadTile(n,a)}_unloadTile(n){if(this._source.unloadTile)return this._source.unloadTile(n,()=>{})}_abortTile(n){this._source.abortTile&&this._source.abortTile(n,()=>{}),this._source.fire(new l.Event("dataabort",{tile:n,coord:n.tileID,dataType:"source"}))}serialize(){return this._source.serialize()}prepare(n){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(const a in this._tiles){const h=this._tiles[a];h.upload(n),h.prepare(this.map.style.imageManager)}}getIds(){return Object.values(this._tiles).map(n=>n.tileID).sort(Nt).map(n=>n.key)}getRenderableIds(n){const a=[];for(const h in this._tiles)this._isIdRenderable(h,n)&&a.push(this._tiles[h]);return n?a.sort((h,m)=>{const _=h.tileID,w=m.tileID,T=new l.pointGeometry(_.canonical.x,_.canonical.y)._rotate(this.transform.angle),C=new l.pointGeometry(w.canonical.x,w.canonical.y)._rotate(this.transform.angle);return _.overscaledZ-w.overscaledZ||C.y-T.y||C.x-T.x}).map(h=>h.tileID.key):a.map(h=>h.tileID).sort(Nt).map(h=>h.key)}hasRenderableParent(n){const a=this.findLoadedParent(n,0);return!!a&&this._isIdRenderable(a.tileID.key)}_isIdRenderable(n,a){return this._tiles[n]&&this._tiles[n].hasData()&&!this._coveredTiles[n]&&(a||!this._tiles[n].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(const n in this._tiles)this._tiles[n].state!=="errored"&&this._reloadTile(n,"reloading")}}_reloadTile(n,a){const h=this._tiles[n];h&&(h.state!=="loading"&&(h.state=a),this._loadTile(h,this._tileLoaded.bind(this,h,n,a)))}_tileLoaded(n,a,h,m){if(m)return n.state="errored",void(m.status!==404?this._source.fire(new l.ErrorEvent(m,{tile:n})):this.update(this.transform,this.terrain));n.timeAdded=l.exported.now(),h==="expired"&&(n.refreshedUponExpiration=!0),this._setTileReloadTimer(a,n),this.getSource().type==="raster-dem"&&n.dem&&this._backfillDEM(n),this._state.initializeTileState(n,this.map?this.map.painter:null),n.aborted||this._source.fire(new l.Event("data",{dataType:"source",tile:n,coord:n.tileID}))}_backfillDEM(n){const a=this.getRenderableIds();for(let m=0;m1||(Math.abs(w)>1&&(Math.abs(w+C)===1?w+=C:Math.abs(w-C)===1&&(w-=C)),_.dem&&m.dem&&(m.dem.backfillBorder(_.dem,w,T),m.neighboringTiles&&m.neighboringTiles[z]&&(m.neighboringTiles[z].backfilled=!0)))}}getTile(n){return this.getTileByID(n.key)}getTileByID(n){return this._tiles[n]}_retainLoadedChildren(n,a,h,m){for(const _ in this._tiles){let w=this._tiles[_];if(m[_]||!w.hasData()||w.tileID.overscaledZ<=a||w.tileID.overscaledZ>h)continue;let T=w.tileID;for(;w&&w.tileID.overscaledZ>a+1;){const z=w.tileID.scaledTo(w.tileID.overscaledZ-1);w=this._tiles[z.key],w&&w.hasData()&&(T=z)}let C=T;for(;C.overscaledZ>a;)if(C=C.scaledTo(C.overscaledZ-1),n[C.key]){m[T.key]=T;break}}}findLoadedParent(n,a){if(n.key in this._loadedParentTiles){const h=this._loadedParentTiles[n.key];return h&&h.tileID.overscaledZ>=a?h:null}for(let h=n.overscaledZ-1;h>=a;h--){const m=n.scaledTo(h),_=this._getLoadedTile(m);if(_)return _}}_getLoadedTile(n){const a=this._tiles[n.key];return a&&a.hasData()?a:this._cache.getByKey(n.wrapped().key)}updateCacheSize(n){const a=Math.ceil(n.width/this._source.tileSize)+1,h=Math.ceil(n.height/this._source.tileSize)+1,m=Math.floor(a*h*5),_=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,m):m;this._cache.setMaxSize(_)}handleWrapJump(n){const a=Math.round((n-(this._prevLng===void 0?n:this._prevLng))/360);if(this._prevLng=n,a){const h={};for(const m in this._tiles){const _=this._tiles[m];_.tileID=_.tileID.unwrapTo(_.tileID.wrap+a),h[_.tileID.key]=_}this._tiles=h;for(const m in this._timers)clearTimeout(this._timers[m]),delete this._timers[m];for(const m in this._tiles)this._setTileReloadTimer(m,this._tiles[m])}}update(n,a){if(this.transform=n,this.terrain=a,!this._sourceLoaded||this._paused)return;let h;this.updateCacheSize(n),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?h=n.getVisibleUnwrappedCoordinates(this._source.tileID).map(z=>new l.OverscaledTileID(z.canonical.z,z.wrap,z.canonical.z,z.canonical.x,z.canonical.y)):(h=n.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:a}),this._source.hasTile&&(h=h.filter(z=>this._source.hasTile(z)))):h=[];const m=n.coveringZoomLevel(this._source),_=Math.max(m-Ut.maxOverzooming,this._source.minzoom),w=Math.max(m+Ut.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){const z={};for(const N of h)if(N.canonical.z>this._source.minzoom){const Z=N.scaledTo(N.canonical.z-1);z[Z.key]=Z;const H=N.scaledTo(Math.max(this._source.minzoom,Math.min(N.canonical.z,5)));z[H.key]=H}h=h.concat(Object.values(z))}const T=this._updateRetainedTiles(h,m);if(on(this._source.type)){const z={},N={},Z=Object.keys(T);for(const H of Z){const se=T[H],re=this._tiles[H];if(!re||re.fadeEndTime&&re.fadeEndTime<=l.exported.now())continue;const ie=this.findLoadedParent(se,_);ie&&(this._addTile(ie.tileID),z[ie.tileID.key]=ie.tileID),N[H]=se}this._retainLoadedChildren(N,m,w,T);for(const H in z)T[H]||(this._coveredTiles[H]=!0,T[H]=z[H]);if(a){const H={},se={};for(const re of h)this._tiles[re.key].hasData()?H[re.key]=re:se[re.key]=re;for(const re in se){const ie=se[re].children(this._source.maxzoom);this._tiles[ie[0].key]&&this._tiles[ie[1].key]&&this._tiles[ie[2].key]&&this._tiles[ie[3].key]&&(H[ie[0].key]=T[ie[0].key]=ie[0],H[ie[1].key]=T[ie[1].key]=ie[1],H[ie[2].key]=T[ie[2].key]=ie[2],H[ie[3].key]=T[ie[3].key]=ie[3],delete se[re])}for(const re in se){const ie=this.findLoadedParent(se[re],this._source.minzoom);if(ie){H[ie.tileID.key]=T[ie.tileID.key]=ie.tileID;for(const _e in H)H[_e].isChildOf(ie.tileID)&&delete H[_e]}}for(const re in this._tiles)H[re]||(this._coveredTiles[re]=!0)}}for(const z in T)this._tiles[z].clearFadeHold();const C=l.keysDifference(this._tiles,T);for(const z of C){const N=this._tiles[z];N.hasSymbolBuckets&&!N.holdingForFade()?N.setHoldDuration(this.map._fadeDuration):N.hasSymbolBuckets&&!N.symbolFadeFinished()||this._removeTile(z)}this._updateLoadedParentTileCache()}releaseSymbolFadeTiles(){for(const n in this._tiles)this._tiles[n].holdingForFade()&&this._removeTile(n)}_updateRetainedTiles(n,a){const h={},m={},_=Math.max(a-Ut.maxOverzooming,this._source.minzoom),w=Math.max(a+Ut.maxUnderzooming,this._source.minzoom),T={};for(const C of n){const z=this._addTile(C);h[C.key]=C,z.hasData()||athis._source.maxzoom){const Z=C.children(this._source.maxzoom)[0],H=this.getTile(Z);if(H&&H.hasData()){h[Z.key]=Z;continue}}else{const Z=C.children(this._source.maxzoom);if(h[Z[0].key]&&h[Z[1].key]&&h[Z[2].key]&&h[Z[3].key])continue}let N=z.wasRequested();for(let Z=C.overscaledZ-1;Z>=_;--Z){const H=C.scaledTo(Z);if(m[H.key]||(m[H.key]=!0,z=this.getTile(H),!z&&N&&(z=this._addTile(H)),z&&(h[H.key]=H,N=z.wasRequested(),z.hasData())))break}}return h}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(const n in this._tiles){const a=[];let h,m=this._tiles[n].tileID;for(;m.overscaledZ>0;){if(m.key in this._loadedParentTiles){h=this._loadedParentTiles[m.key];break}a.push(m.key);const _=m.scaledTo(m.overscaledZ-1);if(h=this._getLoadedTile(_),h)break;m=_}for(const _ of a)this._loadedParentTiles[_]=h}}_addTile(n){let a=this._tiles[n.key];if(a)return a;a=this._cache.getAndRemove(n),a&&(this._setTileReloadTimer(n.key,a),a.tileID=n,this._state.initializeTileState(a,this.map?this.map.painter:null),this._cacheTimers[n.key]&&(clearTimeout(this._cacheTimers[n.key]),delete this._cacheTimers[n.key],this._setTileReloadTimer(n.key,a)));const h=a;return a||(a=new Lt(n,this._source.tileSize*n.overscaleFactor()),this._loadTile(a,this._tileLoaded.bind(this,a,n.key,a.state))),a.uses++,this._tiles[n.key]=a,h||this._source.fire(new l.Event("dataloading",{tile:a,coord:a.tileID,dataType:"source"})),a}_setTileReloadTimer(n,a){n in this._timers&&(clearTimeout(this._timers[n]),delete this._timers[n]);const h=a.getExpiryTimeout();h&&(this._timers[n]=setTimeout(()=>{this._reloadTile(n,"expired"),delete this._timers[n]},h))}_removeTile(n){const a=this._tiles[n];a&&(a.uses--,delete this._tiles[n],this._timers[n]&&(clearTimeout(this._timers[n]),delete this._timers[n]),a.uses>0||(a.hasData()&&a.state!=="reloading"?this._cache.add(a.tileID,a,a.getExpiryTimeout()):(a.aborted=!0,this._abortTile(a),this._unloadTile(a))))}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(const n in this._tiles)this._removeTile(n);this._cache.reset()}tilesIn(n,a,h){const m=[],_=this.transform;if(!_)return m;const w=h?_.getCameraQueryGeometry(n):n,T=n.map(re=>_.pointCoordinate(re,this.terrain)),C=w.map(re=>_.pointCoordinate(re,this.terrain)),z=this.getIds();let N=1/0,Z=1/0,H=-1/0,se=-1/0;for(const re of C)N=Math.min(N,re.x),Z=Math.min(Z,re.y),H=Math.max(H,re.x),se=Math.max(se,re.y);for(let re=0;re=0&&le[1].y+ze>=0){const Be=T.map(qe=>_e.getTilePoint(qe)),De=C.map(qe=>_e.getTilePoint(qe));m.push({tile:ie,tileID:_e,queryGeometry:Be,cameraQueryGeometry:De,scale:Ee})}}return m}getVisibleCoordinates(n){const a=this.getRenderableIds(n).map(h=>this._tiles[h].tileID);for(const h of a)h.posMatrix=this.transform.calculatePosMatrix(h.toUnwrapped());return a}hasTransition(){if(this._source.hasTransition())return!0;if(on(this._source.type))for(const n in this._tiles){const a=this._tiles[n];if(a.fadeEndTime!==void 0&&a.fadeEndTime>=l.exported.now())return!0}return!1}setFeatureState(n,a,h){this._state.updateState(n=n||"_geojsonTileLayer",a,h)}removeFeatureState(n,a,h){this._state.removeFeatureState(n=n||"_geojsonTileLayer",a,h)}getFeatureState(n,a){return this._state.getState(n=n||"_geojsonTileLayer",a)}setDependencies(n,a,h){const m=this._tiles[n];m&&m.setDependencies(a,h)}reloadTilesForDependencies(n,a){for(const h in this._tiles)this._tiles[h].hasDependency(n,a)&&this._reloadTile(h,"reloading");this._cache.filter(h=>!h.hasDependency(n,a))}}function Nt(d,n){const a=Math.abs(2*d.wrap)-+(d.wrap<0),h=Math.abs(2*n.wrap)-+(n.wrap<0);return d.overscaledZ-n.overscaledZ||h-a||n.canonical.y-d.canonical.y||n.canonical.x-d.canonical.x}function on(d){return d==="raster"||d==="image"||d==="video"}Ut.maxOverzooming=10,Ut.maxUnderzooming=3;const sn="mapboxgl_preloaded_worker_pool";class dn{constructor(){this.active={}}acquire(n){if(!this.workers)for(this.workers=[];this.workers.length{a.terminate()}),this.workers=null)}isPreloaded(){return!!this.active[sn]}numActive(){return Object.keys(this.active).length}}const U=Math.floor(l.exported.hardwareConcurrency/2);let He;function Ue(){return He||(He=new dn),He}function ae(d,n){const a={};for(const h in d)h!=="ref"&&(a[h]=d[h]);return l.refProperties.forEach(h=>{h in n&&(a[h]=n[h])}),a}function oe(d){d=d.slice();const n=Object.create(null);for(let a=0;a0?(m-w)/T:0;return this.points[_].mult(1-C).add(this.points[a].mult(C))}}function ke(d,n){let a=!0;return d==="always"||d!=="never"&&n!=="never"||(a=!1),a}class it{constructor(n,a,h){const m=this.boxCells=[],_=this.circleCells=[];this.xCellCount=Math.ceil(n/h),this.yCellCount=Math.ceil(a/h);for(let w=0;wthis.width||m<0||a>this.height)return[];const C=[];if(n<=0&&a<=0&&this.width<=h&&this.height<=m){if(_)return[{key:null,x1:n,y1:a,x2:h,y2:m}];for(let z=0;z0}hitTestCircle(n,a,h,m,_){const w=n-h,T=n+h,C=a-h,z=a+h;if(T<0||w>this.width||z<0||C>this.height)return!1;const N=[];return this._forEachCell(w,C,T,z,this._queryCellCircle,N,{hitTest:!0,overlapMode:m,circle:{x:n,y:a,radius:h},seenUids:{box:{},circle:{}}},_),N.length>0}_queryCell(n,a,h,m,_,w,T,C){const{seenUids:z,hitTest:N,overlapMode:Z}=T,H=this.boxCells[_];if(H!==null){const re=this.bboxes;for(const ie of H)if(!z.box[ie]){z.box[ie]=!0;const _e=4*ie,Ee=this.boxKeys[ie];if(n<=re[_e+2]&&a<=re[_e+3]&&h>=re[_e+0]&&m>=re[_e+1]&&(!C||C(Ee))&&(!N||!ke(Z,Ee.overlapMode))&&(w.push({key:Ee,x1:re[_e],y1:re[_e+1],x2:re[_e+2],y2:re[_e+3]}),N))return!0}}const se=this.circleCells[_];if(se!==null){const re=this.circles;for(const ie of se)if(!z.circle[ie]){z.circle[ie]=!0;const _e=3*ie,Ee=this.circleKeys[ie];if(this._circleAndRectCollide(re[_e],re[_e+1],re[_e+2],n,a,h,m)&&(!C||C(Ee))&&(!N||!ke(Z,Ee.overlapMode))){const ze=re[_e],le=re[_e+1],Be=re[_e+2];if(w.push({key:Ee,x1:ze-Be,y1:le-Be,x2:ze+Be,y2:le+Be}),N)return!0}}}return!1}_queryCellCircle(n,a,h,m,_,w,T,C){const{circle:z,seenUids:N,overlapMode:Z}=T,H=this.boxCells[_];if(H!==null){const re=this.bboxes;for(const ie of H)if(!N.box[ie]){N.box[ie]=!0;const _e=4*ie,Ee=this.boxKeys[ie];if(this._circleAndRectCollide(z.x,z.y,z.radius,re[_e+0],re[_e+1],re[_e+2],re[_e+3])&&(!C||C(Ee))&&!ke(Z,Ee.overlapMode))return w.push(!0),!0}}const se=this.circleCells[_];if(se!==null){const re=this.circles;for(const ie of se)if(!N.circle[ie]){N.circle[ie]=!0;const _e=3*ie,Ee=this.circleKeys[ie];if(this._circlesCollide(re[_e],re[_e+1],re[_e+2],z.x,z.y,z.radius)&&(!C||C(Ee))&&!ke(Z,Ee.overlapMode))return w.push(!0),!0}}}_forEachCell(n,a,h,m,_,w,T,C){const z=this._convertToXCellCoord(n),N=this._convertToYCellCoord(a),Z=this._convertToXCellCoord(h),H=this._convertToYCellCoord(m);for(let se=z;se<=Z;se++)for(let re=N;re<=H;re++)if(_.call(this,n,a,h,m,this.xCellCount*re+se,w,T,C))return}_convertToXCellCoord(n){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(n*this.xScale)))}_convertToYCellCoord(n){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(n*this.yScale)))}_circlesCollide(n,a,h,m,_,w){const T=m-n,C=_-a,z=h+w;return z*z>T*T+C*C}_circleAndRectCollide(n,a,h,m,_,w,T){const C=(w-m)/2,z=Math.abs(n-(m+C));if(z>C+h)return!1;const N=(T-_)/2,Z=Math.abs(a-(_+N));if(Z>N+h)return!1;if(z<=C||Z<=N)return!0;const H=z-C,se=Z-N;return H*H+se*se<=h*h}}function Wn(d,n,a,h,m){const _=l.create();return n?(l.scale(_,_,[1/m,1/m,1]),a||l.rotateZ(_,_,h.angle)):l.multiply(_,h.labelPlaneMatrix,d),_}function pn(d,n,a,h,m){if(n){const _=l.clone(d);return l.scale(_,_,[m,m,1]),a||l.rotateZ(_,_,-h.angle),_}return h.glCoordMatrix}function Ht(d,n,a){let h;a?(h=[d.x,d.y,a(d.x,d.y),1],l.transformMat4(h,h,n)):(h=[d.x,d.y,0,1],Cn(h,h,n));const m=h[3];return{point:new l.pointGeometry(h[0]/m,h[1]/m),signedDistanceFromCamera:m}}function en(d,n){return .5+d/n*.5}function Ln(d,n){const a=d[0]/d[3],h=d[1]/d[3];return a>=-n[0]&&a<=n[0]&&h>=-n[1]&&h<=n[1]}function $n(d,n,a,h,m,_,w,T,C,z){const N=h?d.textSizeData:d.iconSizeData,Z=l.evaluateSizeForZoom(N,a.transform.zoom),H=[256/a.width*2+1,256/a.height*2+1],se=h?d.text.dynamicLayoutVertexArray:d.icon.dynamicLayoutVertexArray;se.clear();const re=d.lineVertexArray,ie=h?d.text.placedSymbolArray:d.icon.placedSymbolArray,_e=a.transform.width/a.transform.height;let Ee=!1;for(let ze=0;zeMath.abs(a.x-n.x)*h?{useVertical:!0}:(d===l.WritingMode.vertical?n.ya.x)?{needsFlipping:!0}:null}function qt(d,n,a,h,m,_,w,T,C,z,N,Z,H,se,re,ie){const _e=n/24,Ee=d.lineOffsetX*_e,ze=d.lineOffsetY*_e;let le;if(d.numGlyphs>1){const Be=d.glyphStartIndex+d.numGlyphs,De=d.lineStartIndex,qe=d.lineStartIndex+d.lineLength,We=Gn(_e,T,Ee,ze,a,N,Z,d,C,_,H,re,ie);if(!We)return{notEnoughRoom:!0};const ot=Ht(We.first.point,w,ie).point,Ze=Ht(We.last.point,w,ie).point;if(h&&!a){const St=ht(d.writingMode,ot,Ze,se);if(St)return St}le=[We.first];for(let St=d.glyphStartIndex+1;St0?ot.point:Gt(Z,We,De,1,m,ie),St=ht(d.writingMode,De,Ze,se);if(St)return St}const Be=er(_e*T.getoffsetX(d.glyphStartIndex),Ee,ze,a,N,Z,d.segment,d.lineStartIndex,d.lineStartIndex+d.lineLength,C,_,H,re,ie);if(!Be)return{notEnoughRoom:!0};le=[Be]}for(const Be of le)l.addDynamicAttributes(z,Be.point,Be.angle);return{}}function Gt(d,n,a,h,m,_){const w=Ht(d.add(d.sub(n)._unit()),m,_).point,T=a.sub(w);return a.add(T._mult(h/T.mag()))}function er(d,n,a,h,m,_,w,T,C,z,N,Z,H,se){const re=h?d-n:d+n;let ie=re>0?1:-1,_e=0;h&&(ie*=-1,_e=Math.PI),ie<0&&(_e+=Math.PI);let Ee=ie>0?T+w:T+w+1,ze=m,le=m,Be=0,De=0;const qe=Math.abs(re),We=[];for(;Be+De<=qe;){if(Ee+=ie,Ee=C)return null;if(le=ze,We.push(ze),ze=Z[Ee],ze===void 0){const Et=new l.pointGeometry(z.getx(Ee),z.gety(Ee)),Xt=Ht(Et,N,se);if(Xt.signedDistanceFromCamera>0)ze=Z[Ee]=Xt.point;else{const Yt=Ee-ie;ze=Gt(Be===0?_:new l.pointGeometry(z.getx(Yt),z.gety(Yt)),Et,le,qe-Be+1,N,se)}}Be+=De,De=le.dist(ze)}const ot=(qe-Be)/De,Ze=ze.sub(le),St=Ze.mult(ot)._add(le);St._add(Ze._unit()._perp()._mult(a*ie));const ft=_e+Math.atan2(ze.y-le.y,ze.x-le.x);return We.push(St),{point:St,angle:H?ft:0,path:We}}const Sn=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function At(d,n){for(let a=0;a=1;ln--)Ft.push(Xt.path[ln]);for(let ln=1;lnHt(hn,C,re));Ft=ln.some(hn=>hn.signedDistanceFromCamera<=0)?[]:ln.map(hn=>hn.point)}let xn=[];if(Ft.length>0){const ln=Ft[0].clone(),hn=Ft[0].clone();for(let bn=1;bn=St.x&&hn.x<=ft.x&&ln.y>=St.y&&hn.y<=ft.y?[Ft]:hn.xft.x||hn.yft.y?[]:l.clipLine([Ft],St.x,St.y,ft.x,ft.y)}for(const ln of xn){Et.reset(ln,.25*Ze);let hn=0;hn=Et.length<=.5*Ze?1:Math.ceil(Et.paddedLength/vn)+1;for(let bn=0;bn=this.screenRightBoundary||mthis.screenBottomBoundary}isInsideGrid(n,a,h,m){return h>=0&&n=0&&ah.collisionGroupID===a}}return this.collisionGroups[n]}}function Si(d,n,a,h,m){const{horizontalAlign:_,verticalAlign:w}=l.getAnchorAlignment(d),T=-(_-.5)*n,C=-(w-.5)*a,z=l.evaluateVariableOffset(d,h);return new l.pointGeometry(T+z[0]*m,C+z[1]*m)}function Bi(d,n,a,h,m,_){const{x1:w,x2:T,y1:C,y2:z,anchorPointX:N,anchorPointY:Z}=d,H=new l.pointGeometry(n,a);return h&&H._rotate(m?_:-_),{x1:w+H.x,y1:C+H.y,x2:T+H.x,y2:z+H.y,anchorPointX:N,anchorPointY:Z}}class ee{constructor(n,a,h,m,_){this.transform=n.clone(),this.terrain=a,this.collisionIndex=new cr(this.transform),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=h,this.retainedQueryData={},this.collisionGroups=new di(m),this.collisionCircleArrays={},this.prevPlacement=_,_&&(_.prevPlacement=void 0),this.placedOrientations={}}getBucketParts(n,a,h,m){const _=h.getBucket(a),w=h.latestFeatureIndex;if(!_||!w||a.id!==_.layerIds[0])return;const T=h.collisionBoxArray,C=_.layers[0].layout,z=Math.pow(2,this.transform.zoom-h.tileID.overscaledZ),N=h.tileSize/l.EXTENT,Z=this.transform.calculatePosMatrix(h.tileID.toUnwrapped()),H=C.get("text-pitch-alignment")==="map",se=C.get("text-rotation-alignment")==="map",re=yn(h,1,this.transform.zoom),ie=Wn(Z,H,se,this.transform,re);let _e=null;if(H){const ze=pn(Z,H,se,this.transform,re);_e=l.multiply([],this.transform.labelPlaneMatrix,ze)}this.retainedQueryData[_.bucketInstanceId]=new Jr(_.bucketInstanceId,w,_.sourceLayerIndex,_.index,h.tileID);const Ee={bucket:_,layout:C,posMatrix:Z,textLabelPlaneMatrix:ie,labelToScreenMatrix:_e,scale:z,textPixelRatio:N,holdingForFade:h.holdingForFade(),collisionBoxArray:T,partiallyEvaluatedTextSize:l.evaluateSizeForZoom(_.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(_.sourceID)};if(m)for(const ze of _.sortKeyRanges){const{sortKey:le,symbolInstanceStart:Be,symbolInstanceEnd:De}=ze;n.push({sortKey:le,symbolInstanceStart:Be,symbolInstanceEnd:De,parameters:Ee})}else n.push({symbolInstanceStart:0,symbolInstanceEnd:_.symbolInstances.length,parameters:Ee})}attemptAnchorPlacement(n,a,h,m,_,w,T,C,z,N,Z,H,se,re,ie,_e){const Ee=[H.textOffset0,H.textOffset1],ze=Si(n,h,m,Ee,_),le=this.collisionIndex.placeCollisionBox(Bi(a,ze.x,ze.y,w,T,this.transform.angle),Z,C,z,N.predicate,_e);if((!ie||this.collisionIndex.placeCollisionBox(Bi(ie,ze.x,ze.y,w,T,this.transform.angle),Z,C,z,N.predicate,_e).box.length!==0)&&le.box.length>0){let Be;if(this.prevPlacement&&this.prevPlacement.variableOffsets[H.crossTileID]&&this.prevPlacement.placements[H.crossTileID]&&this.prevPlacement.placements[H.crossTileID].text&&(Be=this.prevPlacement.variableOffsets[H.crossTileID].anchor),H.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[H.crossTileID]={textOffset:Ee,width:h,height:m,anchor:n,textBoxScale:_,prevAnchor:Be},this.markUsedJustification(se,n,H,re),se.allowVerticalPlacement&&(this.markUsedOrientation(se,re,H),this.placedOrientations[H.crossTileID]=re),{shift:ze,placedGlyphBoxes:le}}}placeLayerBucketPart(n,a,h){const{bucket:m,layout:_,posMatrix:w,textLabelPlaneMatrix:T,labelToScreenMatrix:C,textPixelRatio:z,holdingForFade:N,collisionBoxArray:Z,partiallyEvaluatedTextSize:H,collisionGroup:se}=n.parameters,re=_.get("text-optional"),ie=_.get("icon-optional"),_e=l.getOverlapMode(_,"text-overlap","text-allow-overlap"),Ee=_e==="always",ze=l.getOverlapMode(_,"icon-overlap","icon-allow-overlap"),le=ze==="always",Be=_.get("text-rotation-alignment")==="map",De=_.get("text-pitch-alignment")==="map",qe=_.get("icon-text-fit")!=="none",We=_.get("symbol-z-order")==="viewport-y",ot=Ee&&(le||!m.hasIconData()||ie),Ze=le&&(Ee||!m.hasTextData()||re);!m.collisionArrays&&Z&&m.deserializeCollisionBoxes(Z);const St=(ft,Et)=>{if(a[ft.crossTileID])return;if(N)return void(this.placements[ft.crossTileID]=new mr(!1,!1,!1));let Xt=!1,Yt=!1,Ft=!0,vn=null,xn={box:null,offscreen:null},ln={box:null,offscreen:null},hn=null,bn=null,yr=null,Ni=0,Ti=0,Ui=0;Et.textFeatureIndex?Ni=Et.textFeatureIndex:ft.useRuntimeCollisionCircles&&(Ni=ft.featureIndex),Et.verticalTextFeatureIndex&&(Ti=Et.verticalTextFeatureIndex);const vo=this.retainedQueryData[m.bucketInstanceId].tileID,fi=this.terrain?(hr,Qt)=>this.terrain.getElevation(vo,hr,Qt):null;for(const hr of["textBox","verticalTextBox","iconBox","verticalIconBox"]){const Qt=Et[hr];Qt&&(Qt.elevation=fi?fi(Qt.anchorPointX,Qt.anchorPointY):0)}const Gr=Et.textBox;if(Gr){const hr=_n=>{let _r=l.WritingMode.horizontal;if(m.allowVerticalPlacement&&!_n&&this.prevPlacement){const vr=this.prevPlacement.placedOrientations[ft.crossTileID];vr&&(this.placedOrientations[ft.crossTileID]=vr,_r=vr,this.markUsedOrientation(m,_r,ft))}return _r},Qt=(_n,_r)=>{if(m.allowVerticalPlacement&&ft.numVerticalGlyphVertices>0&&Et.verticalTextBox){for(const vr of m.writingModes)if(vr===l.WritingMode.vertical?(xn=_r(),ln=xn):xn=_n(),xn&&xn.box&&xn.box.length)break}else xn=_n()};if(_.get("text-variable-anchor")){let _n=_.get("text-variable-anchor");if(this.prevPlacement&&this.prevPlacement.variableOffsets[ft.crossTileID]){const Un=this.prevPlacement.variableOffsets[ft.crossTileID];_n.indexOf(Un.anchor)>0&&(_n=_n.filter(mi=>mi!==Un.anchor),_n.unshift(Un.anchor))}const _r=(Un,mi,Fo)=>{const Pu=Un.x2-Un.x1,gs=Un.y2-Un.y1,Lh=ft.textBoxScale,Mu=qe&&ze==="never"?mi:null;let xo={box:[],offscreen:!1};const Oo=_e!=="never"?2*_n.length:_n.length;for(let No=0;No=_n.length?_e:"never",ft,m,Fo,Mu,fi);if(rl&&(xo=rl.placedGlyphBoxes,xo&&xo.box&&xo.box.length)){Xt=!0,vn=rl.shift;break}}return xo};Qt(()=>_r(Gr,Et.iconBox,l.WritingMode.horizontal),()=>{const Un=Et.verticalTextBox;return m.allowVerticalPlacement&&!(xn&&xn.box&&xn.box.length)&&ft.numVerticalGlyphVertices>0&&Un?_r(Un,Et.verticalIconBox,l.WritingMode.vertical):{box:null,offscreen:null}}),xn&&(Xt=xn.box,Ft=xn.offscreen);const vr=hr(xn&&xn.box);if(!Xt&&this.prevPlacement){const Un=this.prevPlacement.variableOffsets[ft.crossTileID];Un&&(this.variableOffsets[ft.crossTileID]=Un,this.markUsedJustification(m,Un.anchor,ft,vr))}}else{const _n=(_r,vr)=>{const Un=this.collisionIndex.placeCollisionBox(_r,_e,z,w,se.predicate,fi);return Un&&Un.box&&Un.box.length&&(this.markUsedOrientation(m,vr,ft),this.placedOrientations[ft.crossTileID]=vr),Un};Qt(()=>_n(Gr,l.WritingMode.horizontal),()=>{const _r=Et.verticalTextBox;return m.allowVerticalPlacement&&ft.numVerticalGlyphVertices>0&&_r?_n(_r,l.WritingMode.vertical):{box:null,offscreen:null}}),hr(xn&&xn.box&&xn.box.length)}}if(hn=xn,Xt=hn&&hn.box&&hn.box.length>0,Ft=hn&&hn.offscreen,ft.useRuntimeCollisionCircles){const hr=m.text.placedSymbolArray.get(ft.centerJustifiedTextSymbolIndex),Qt=l.evaluateSizeForFeature(m.textSizeData,H,hr),_n=_.get("text-padding");bn=this.collisionIndex.placeCollisionCircles(_e,hr,m.lineVertexArray,m.glyphOffsetArray,Qt,w,T,C,h,De,se.predicate,ft.collisionCircleDiameter,_n,fi),bn.circles.length&&bn.collisionDetected&&!h&&l.warnOnce("Collisions detected, but collision boxes are not shown"),Xt=Ee||bn.circles.length>0&&!bn.collisionDetected,Ft=Ft&&bn.offscreen}if(Et.iconFeatureIndex&&(Ui=Et.iconFeatureIndex),Et.iconBox){const hr=Qt=>{const _n=qe&&vn?Bi(Qt,vn.x,vn.y,Be,De,this.transform.angle):Qt;return this.collisionIndex.placeCollisionBox(_n,ze,z,w,se.predicate,fi)};ln&&ln.box&&ln.box.length&&Et.verticalIconBox?(yr=hr(Et.verticalIconBox),Yt=yr.box.length>0):(yr=hr(Et.iconBox),Yt=yr.box.length>0),Ft=Ft&&yr.offscreen}const Qi=re||ft.numHorizontalGlyphVertices===0&&ft.numVerticalGlyphVertices===0,nl=ie||ft.numIconVertices===0;if(Qi||nl?nl?Qi||(Yt=Yt&&Xt):Xt=Yt&&Xt:Yt=Xt=Yt&&Xt,Xt&&hn&&hn.box&&this.collisionIndex.insertCollisionBox(hn.box,_e,_.get("text-ignore-placement"),m.bucketInstanceId,ln&&ln.box&&Ti?Ti:Ni,se.ID),Yt&&yr&&this.collisionIndex.insertCollisionBox(yr.box,ze,_.get("icon-ignore-placement"),m.bucketInstanceId,Ui,se.ID),bn&&(Xt&&this.collisionIndex.insertCollisionCircles(bn.circles,_e,_.get("text-ignore-placement"),m.bucketInstanceId,Ni,se.ID),h)){const hr=m.bucketInstanceId;let Qt=this.collisionCircleArrays[hr];Qt===void 0&&(Qt=this.collisionCircleArrays[hr]=new Ir);for(let _n=0;_n=0;--Et){const Xt=ft[Et];St(m.symbolInstances.get(Xt),m.collisionArrays[Xt])}}else for(let ft=n.symbolInstanceStart;ft=0&&(n.text.placedSymbolArray.get(T).crossTileID=_>=0&&T!==_?0:h.crossTileID)}markUsedOrientation(n,a,h){const m=a===l.WritingMode.horizontal||a===l.WritingMode.horizontalOnly?a:0,_=a===l.WritingMode.vertical?a:0,w=[h.leftJustifiedTextSymbolIndex,h.centerJustifiedTextSymbolIndex,h.rightJustifiedTextSymbolIndex];for(const T of w)n.text.placedSymbolArray.get(T).placedOrientation=m;h.verticalPlacedTextSymbolIndex&&(n.text.placedSymbolArray.get(h.verticalPlacedTextSymbolIndex).placedOrientation=_)}commit(n){this.commitTime=n,this.zoomAtLastRecencyCheck=this.transform.zoom;const a=this.prevPlacement;let h=!1;this.prevZoomAdjustment=a?a.zoomAdjustment(this.transform.zoom):0;const m=a?a.symbolFadeChange(n):1,_=a?a.opacities:{},w=a?a.variableOffsets:{},T=a?a.placedOrientations:{};for(const C in this.placements){const z=this.placements[C],N=_[C];N?(this.opacities[C]=new an(N,m,z.text,z.icon),h=h||z.text!==N.text.placed||z.icon!==N.icon.placed):(this.opacities[C]=new an(null,m,z.text,z.icon,z.skipFade),h=h||z.text||z.icon)}for(const C in _){const z=_[C];if(!this.opacities[C]){const N=new an(z,m,!1,!1);N.isHidden()||(this.opacities[C]=N,h=h||z.text.placed||z.icon.placed)}}for(const C in w)this.variableOffsets[C]||!this.opacities[C]||this.opacities[C].isHidden()||(this.variableOffsets[C]=w[C]);for(const C in T)this.placedOrientations[C]||!this.opacities[C]||this.opacities[C].isHidden()||(this.placedOrientations[C]=T[C]);if(a&&a.lastPlacementChangeTime===void 0)throw new Error("Last placement time for previous placement is not defined");h?this.lastPlacementChangeTime=n:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=a?a.lastPlacementChangeTime:n)}updateLayerOpacities(n,a){const h={};for(const m of a){const _=m.getBucket(n);_&&m.latestFeatureIndex&&n.id===_.layerIds[0]&&this.updateBucketOpacities(_,h,m.collisionBoxArray)}}updateBucketOpacities(n,a,h){n.hasTextData()&&n.text.opacityVertexArray.clear(),n.hasIconData()&&n.icon.opacityVertexArray.clear(),n.hasIconCollisionBoxData()&&n.iconCollisionBox.collisionVertexArray.clear(),n.hasTextCollisionBoxData()&&n.textCollisionBox.collisionVertexArray.clear();const m=n.layers[0].layout,_=new an(null,0,!1,!1,!0),w=m.get("text-allow-overlap"),T=m.get("icon-allow-overlap"),C=m.get("text-variable-anchor"),z=m.get("text-rotation-alignment")==="map",N=m.get("text-pitch-alignment")==="map",Z=m.get("icon-text-fit")!=="none",H=new an(null,0,w&&(T||!n.hasIconData()||m.get("icon-optional")),T&&(w||!n.hasTextData()||m.get("text-optional")),!0);!n.collisionArrays&&h&&(n.hasIconCollisionBoxData()||n.hasTextCollisionBoxData())&&n.deserializeCollisionBoxes(h);const se=(re,ie,_e)=>{for(let Ee=0;Ee0,De=this.placedOrientations[ie.crossTileID],qe=De===l.WritingMode.vertical,We=De===l.WritingMode.horizontal||De===l.WritingMode.horizontalOnly;if(_e>0||Ee>0){const ot=we(le.text);se(n.text,_e,qe?Ge:ot),se(n.text,Ee,We?Ge:ot);const Ze=le.text.isHidden();[ie.rightJustifiedTextSymbolIndex,ie.centerJustifiedTextSymbolIndex,ie.leftJustifiedTextSymbolIndex].forEach(Et=>{Et>=0&&(n.text.placedSymbolArray.get(Et).hidden=Ze||qe?1:0)}),ie.verticalPlacedTextSymbolIndex>=0&&(n.text.placedSymbolArray.get(ie.verticalPlacedTextSymbolIndex).hidden=Ze||We?1:0);const St=this.variableOffsets[ie.crossTileID];St&&this.markUsedJustification(n,St.anchor,ie,De);const ft=this.placedOrientations[ie.crossTileID];ft&&(this.markUsedJustification(n,"left",ie,ft),this.markUsedOrientation(n,ft,ie))}if(Be){const ot=we(le.icon),Ze=!(Z&&ie.verticalPlacedIconSymbolIndex&&qe);ie.placedIconSymbolIndex>=0&&(se(n.icon,ie.numIconVertices,Ze?ot:Ge),n.icon.placedSymbolArray.get(ie.placedIconSymbolIndex).hidden=le.icon.isHidden()),ie.verticalPlacedIconSymbolIndex>=0&&(se(n.icon,ie.numVerticalIconVertices,Ze?Ge:ot),n.icon.placedSymbolArray.get(ie.verticalPlacedIconSymbolIndex).hidden=le.icon.isHidden())}if(n.hasIconCollisionBoxData()||n.hasTextCollisionBoxData()){const ot=n.collisionArrays[re];if(ot){let Ze=new l.pointGeometry(0,0);if(ot.textBox||ot.verticalTextBox){let ft=!0;if(C){const Et=this.variableOffsets[ze];Et?(Ze=Si(Et.anchor,Et.width,Et.height,Et.textOffset,Et.textBoxScale),z&&Ze._rotate(N?this.transform.angle:-this.transform.angle)):ft=!1}ot.textBox&&P(n.textCollisionBox.collisionVertexArray,le.text.placed,!ft||qe,Ze.x,Ze.y),ot.verticalTextBox&&P(n.textCollisionBox.collisionVertexArray,le.text.placed,!ft||We,Ze.x,Ze.y)}const St=!!(!We&&ot.verticalIconBox);ot.iconBox&&P(n.iconCollisionBox.collisionVertexArray,le.icon.placed,St,Z?Ze.x:0,Z?Ze.y:0),ot.verticalIconBox&&P(n.iconCollisionBox.collisionVertexArray,le.icon.placed,!St,Z?Ze.x:0,Z?Ze.y:0)}}}if(n.sortFeatures(this.transform.angle),this.retainedQueryData[n.bucketInstanceId]&&(this.retainedQueryData[n.bucketInstanceId].featureSortOrder=n.featureSortOrder),n.hasTextData()&&n.text.opacityVertexBuffer&&n.text.opacityVertexBuffer.updateData(n.text.opacityVertexArray),n.hasIconData()&&n.icon.opacityVertexBuffer&&n.icon.opacityVertexBuffer.updateData(n.icon.opacityVertexArray),n.hasIconCollisionBoxData()&&n.iconCollisionBox.collisionVertexBuffer&&n.iconCollisionBox.collisionVertexBuffer.updateData(n.iconCollisionBox.collisionVertexArray),n.hasTextCollisionBoxData()&&n.textCollisionBox.collisionVertexBuffer&&n.textCollisionBox.collisionVertexBuffer.updateData(n.textCollisionBox.collisionVertexArray),n.text.opacityVertexArray.length!==n.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${n.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${n.text.layoutVertexArray.length}) / 4`);if(n.icon.opacityVertexArray.length!==n.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${n.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${n.icon.layoutVertexArray.length}) / 4`);if(n.bucketInstanceId in this.collisionCircleArrays){const re=this.collisionCircleArrays[n.bucketInstanceId];n.placementInvProjMatrix=re.invProjMatrix,n.placementViewportMatrix=re.viewportMatrix,n.collisionCircleArray=re.circles,delete this.collisionCircleArrays[n.bucketInstanceId]}}symbolFadeChange(n){return this.fadeDuration===0?1:(n-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(n){return Math.max(0,(this.transform.zoom-n)/1.5)}hasTransitions(n){return this.stale||n-this.lastPlacementChangeTimen}setStale(){this.stale=!0}}function P(d,n,a,h,m){d.emplaceBack(n?1:0,a?1:0,h||0,m||0),d.emplaceBack(n?1:0,a?1:0,h||0,m||0),d.emplaceBack(n?1:0,a?1:0,h||0,m||0),d.emplaceBack(n?1:0,a?1:0,h||0,m||0)}const j=Math.pow(2,25),J=Math.pow(2,24),Q=Math.pow(2,17),de=Math.pow(2,16),xe=Math.pow(2,9),me=Math.pow(2,8),pe=Math.pow(2,1);function we(d){if(d.opacity===0&&!d.placed)return 0;if(d.opacity===1&&d.placed)return 4294967295;const n=d.placed?1:0,a=Math.floor(127*d.opacity);return a*j+n*J+a*Q+n*de+a*xe+n*me+a*pe+n}const Ge=0;class rt{constructor(n){this._sortAcrossTiles=n.layout.get("symbol-z-order")!=="viewport-y"&&!n.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(n,a,h,m,_){const w=this._bucketParts;for(;this._currentTileIndexT.sortKey-C.sortKey));this._currentPartIndex{const w=l.exported.now()-m;return!this._forceFullPlacement&&w>2};for(;this._currentPlacementIndex>=0;){const w=a[n[this._currentPlacementIndex]],T=this.placement.collisionIndex.transform.zoom;if(w.type==="symbol"&&(!w.minzoom||w.minzoom<=T)&&(!w.maxzoom||w.maxzoom>T)){if(this._inProgressLayer||(this._inProgressLayer=new rt(w)),this._inProgressLayer.continuePlacement(h[w.source],this.placement,this._showCollisionBoxes,w,_))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(n){return this.placement.commit(n),this.placement}}const Ct=512/l.EXTENT/2;class zt{constructor(n,a,h){this.tileID=n,this.indexedSymbolInstances={},this.bucketInstanceId=h;for(let m=0;mn.overscaledZ)for(const T in w){const C=w[T];C.tileID.isChildOf(n)&&C.findMatches(a.symbolInstances,n,m)}else{const T=w[n.scaledTo(Number(_)).key];T&&T.findMatches(a.symbolInstances,n,m)}}for(let _=0;_{a[h]=!0});for(const h in this.layerIndexes)a[h]||delete this.layerIndexes[h]}}var un=l.createLayout([{name:"a_pos",type:"Int16",components:2}]);class Wt extends l.Evented{constructor(n){super(),this.sourceCache=n,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.renderHistory=[],this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.deltaZoom=1,this.renderHistorySize=n._cache.max,n.usedForTerrain=!0,n.tileSize=this.tileSize*2**this.deltaZoom}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null;for(const n in this._tiles){const a=this._tiles[n];a.textures.forEach(h=>h.destroy()),a.textures=[]}}update(n,a){this.sourceCache.update(n,a),this._renderableTilesKeys=[];for(const h of n.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:a}))this._renderableTilesKeys.push(h.key),this._tiles[h.key]||(h.posMatrix=new Float64Array(16),l.ortho(h.posMatrix,0,l.EXTENT,0,l.EXTENT,0,1),this._tiles[h.key]=new Lt(h,this.tileSize))}removeOutdated(n){const a={};this.renderHistory=this.renderHistory.filter((h,m)=>this.renderHistory.indexOf(h)===m).slice(0,this.renderHistorySize);for(const h of this._renderableTilesKeys)a[h]=!0;for(const h of this.renderHistory)a[h]=!0;for(const h in this._tiles)a[h]||(this._tiles[h].clearTextures(n),delete this._tiles[h])}getRenderableTiles(){return this._renderableTilesKeys.map(n=>this.getTileByID(n))}getTileByID(n){return this._tiles[n]}getTerrainCoords(n){const a={};for(const h of this._renderableTilesKeys){const m=this._tiles[h].tileID;if(m.canonical.equals(n.canonical)){const _=n.clone();_.posMatrix=new Float64Array(16),l.ortho(_.posMatrix,0,l.EXTENT,0,l.EXTENT,0,1),a[h]=_}else if(m.canonical.isChildOf(n.canonical)){const _=n.clone();_.posMatrix=new Float64Array(16);const w=m.canonical.z-n.canonical.z,T=m.canonical.x-(m.canonical.x>>w<>w<>w;l.ortho(_.posMatrix,0,z,0,z,0,1),l.translate(_.posMatrix,_.posMatrix,[-T*z,-C*z,0]),a[h]=_}else if(n.canonical.isChildOf(m.canonical)){const _=n.clone();_.posMatrix=new Float64Array(16);const w=n.canonical.z-m.canonical.z,T=n.canonical.x-(n.canonical.x>>w<>w<>w;l.ortho(_.posMatrix,0,l.EXTENT,0,l.EXTENT,0,1),l.translate(_.posMatrix,_.posMatrix,[T*z,C*z,0]),l.scale(_.posMatrix,_.posMatrix,[1/2**w,1/2**w,0]),a[h]=_}}return a}getSourceTile(n,a){const h=this.sourceCache._source;let m=n.overscaledZ-this.deltaZoom;if(m>h.maxzoom&&(m=h.maxzoom),m=h.minzoom&&(!_||!_.dem);)_=this.sourceCache.getTileByID(n.scaledTo(m--).key);return _}tilesAfterTime(n=Date.now()){return Object.values(this._tiles).filter(a=>a.timeLoaded>=n)}}class Kt{constructor(n,a,h){this.style=n,this.sourceCache=new Wt(a),this.options=h,this.exaggeration=typeof h.exaggeration=="number"?h.exaggeration:1,this.elevationOffset=typeof h.elevationOffset=="number"?h.elevationOffset:450,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024,this.clearRerenderCache()}getDEMElevation(n,a,h,m=l.EXTENT){if(!(a>=0&&a=0&&hn.canonical.z&&(n.canonical.z>=m?_=n.canonical.z-m:l.warnOnce("cannot calculate elevation if elevation maxzoom > source.maxzoom"));const w=n.canonical.x-(n.canonical.x>>_<<_),T=n.canonical.y-(n.canonical.y>>_<<_),C=l.fromScaling(new Float64Array(16),[1/(l.EXTENT<<_),1/(l.EXTENT<<_),0]);l.translate(C,C,[w*l.EXTENT,T*l.EXTENT,0]),this._demMatrixCache[n.key]={matrix:C,coord:n}}return{u_depth:2,u_terrain:3,u_terrain_dim:a&&a.dem&&a.dem.dim||1,u_terrain_matrix:h?this._demMatrixCache[n.key].matrix:this._emptyDemMatrix,u_terrain_unpack:a&&a.dem&&a.dem.getUnpackVector()||this._emptyDemUnpack,u_terrain_offset:this.elevationOffset,u_terrain_exaggeration:this.exaggeration,texture:(a&&a.demTexture||this._emptyDemTexture).texture,depthTexture:(this._fboDepthTexture||this._emptyDepthTexture).texture,tile:a}}getRTTFramebuffer(){const n=this.style.map.painter;if(!this._rttFramebuffer){const a=this.sourceCache.tileSize*this.qualityFactor;this._rttFramebuffer=n.context.createFramebuffer(a,a,!0),this._rttFramebuffer.depthAttachment.set(n.context.createRenderbuffer(n.context.gl.DEPTH_COMPONENT16,a,a))}return this._rttFramebuffer}getFramebuffer(n){const a=this.style.map.painter,h=a.width/devicePixelRatio,m=a.height/devicePixelRatio;return!this._fbo||this._fbo.width===h&&this._fbo.height===m||(this._fbo.destroy(),this._fboCoordsTexture.destroy(),this._fboDepthTexture.destroy(),delete this._fbo,delete this._fboDepthTexture,delete this._fboCoordsTexture),this._fboCoordsTexture||(this._fboCoordsTexture=new O(a.context,{width:h,height:m,data:null},a.context.gl.RGBA,{premultiply:!1}),this._fboCoordsTexture.bind(a.context.gl.NEAREST,a.context.gl.CLAMP_TO_EDGE)),this._fboDepthTexture||(this._fboDepthTexture=new O(a.context,{width:h,height:m,data:null},a.context.gl.RGBA,{premultiply:!1}),this._fboDepthTexture.bind(a.context.gl.NEAREST,a.context.gl.CLAMP_TO_EDGE)),this._fbo||(this._fbo=a.context.createFramebuffer(h,m,!0),this._fbo.depthAttachment.set(a.context.createRenderbuffer(a.context.gl.DEPTH_COMPONENT16,h,m))),this._fbo.colorAttachment.set(n==="coords"?this._fboCoordsTexture.texture:this._fboDepthTexture.texture),this._fbo}getCoordsTexture(){const n=this.style.map.painter.context;if(this._coordsTexture)return this._coordsTexture;const a=new Uint8Array(this._coordsTextureSize*this._coordsTextureSize*4);for(let _=0,w=0;_>8<<4|_>>8,a[w+3]=0;const h=new l.RGBAImage({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(a.buffer)),m=new O(n,h,n.gl.RGBA,{premultiply:!1});return m.bind(n.gl.NEAREST,n.gl.CLAMP_TO_EDGE),this._coordsTexture=m,m}pointCoordinate(n){const a=new Uint8Array(4),h=this.style.map.painter,m=h.context,_=m.gl;m.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),_.readPixels(n.x,h.height/devicePixelRatio-n.y-1,1,1,_.RGBA,_.UNSIGNED_BYTE,a),m.bindFramebuffer.set(null);const w=a[0]+(a[2]>>4<<8),T=a[1]+((15&a[2])<<8),C=this.coordsIndex[255-a[3]],z=C&&this.sourceCache.getTileByID(C);if(!z)return null;const N=this._coordsTextureSize,Z=(1<l.emitValidationErrors(d,n&&n.filter(a=>a.identifier!=="source.canvas")),En=l.pick(ge,["addLayer","removeLayer","setPaintProperty","setLayoutProperty","setFilter","addSource","removeSource","setLayerZoomRange","setLight","setTransition","setGeoJSONSourceData"]),gr=l.pick(ge,["setCenter","setZoom","setBearing","setPitch"]),Bn=function(){const d={},n=l.spec.$version;for(const a in l.spec.$root){const h=l.spec.$root[a];if(h.required){let m=null;m=a==="version"?n:h.type==="array"?[]:{},m!=null&&(d[a]=m)}}return d}();class Ar extends l.Evented{constructor(n,a={}){super(),this.map=n,this.dispatcher=new Le(Ue(),this),this.imageManager=new R,this.imageManager.setEventedParent(this),this.glyphManager=new ne(n._requestManager,a.localIdeographFontFamily),this.lineAtlas=new Ce(256,512),this.crossTileSymbolIndex=new Zt,this._layers={},this._serializedLayers={},this._order=[],this.sourceCaches={},this.zoomHistory=new l.ZoomHistory,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast("setReferrer",l.getReferrer());const h=this;this._rtlTextPluginCallback=Ar.registerForPluginStateChange(m=>{h.dispatcher.broadcast("syncRTLPluginState",{pluginStatus:m.pluginStatus,pluginURL:m.pluginURL},(_,w)=>{if(l.triggerPluginCompletionEvent(_),w&&w.every(T=>T))for(const T in h.sourceCaches)h.sourceCaches[T].reload()})}),this.on("data",m=>{if(m.dataType!=="source"||m.sourceDataType!=="metadata")return;const _=this.sourceCaches[m.sourceId];if(!_)return;const w=_.getSource();if(w&&w.vectorLayerIds)for(const T in this._layers){const C=this._layers[T];C.source===w.id&&this._validateLayer(C)}})}loadURL(n,a={}){this.fire(new l.Event("dataloading",{dataType:"style"}));const h=typeof a.validate!="boolean"||a.validate,m=this.map._requestManager.transformRequest(n,l.ResourceType.Style);this._request=l.getJSON(m,(_,w)=>{this._request=null,_?this.fire(new l.ErrorEvent(_)):w&&this._load(w,h)})}loadJSON(n,a={}){this.fire(new l.Event("dataloading",{dataType:"style"})),this._request=l.exported.frame(()=>{this._request=null,this._load(n,a.validate!==!1)})}loadEmpty(){this.fire(new l.Event("dataloading",{dataType:"style"})),this._load(Bn,!1)}_load(n,a){if(a&&cn(this,l.validateStyle(n)))return;this._loaded=!0,this.stylesheet=n;for(const m in n.sources)this.addSource(m,n.sources[m],{validate:!1});n.sprite?this._loadSprite(n.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(n.glyphs);const h=oe(this.stylesheet.layers);this._order=h.map(m=>m.id),this._layers={},this._serializedLayers={};for(let m of h)m=l.createStyleLayer(m),m.setEventedParent(this,{layer:{id:m.id}}),this._layers[m.id]=m,this._serializedLayers[m.id]=m.serialize();this.dispatcher.broadcast("setLayers",this._serializeLayers(this._order)),this.light=new be(this.stylesheet.light),this.setTerrain(this.stylesheet.terrain),this.fire(new l.Event("data",{dataType:"style"})),this.fire(new l.Event("style.load"))}_loadSprite(n){this._spriteRequest=function(a,h,m,_){let w,T,C;const z=m>1?"@2x":"";let N=l.getJSON(h.transformRequest(h.normalizeSpriteURL(a,z,".json"),l.ResourceType.SpriteJSON),(se,re)=>{N=null,C||(C=se,w=re,H())}),Z=l.getImage(h.transformRequest(h.normalizeSpriteURL(a,z,".png"),l.ResourceType.SpriteImage),(se,re)=>{Z=null,C||(C=se,T=re,H())});function H(){if(C)_(C);else if(w&&T){const se=l.exported.getImageData(T),re={};for(const ie in w){const{width:_e,height:Ee,x:ze,y:le,sdf:Be,pixelRatio:De,stretchX:qe,stretchY:We,content:ot}=w[ie],Ze=new l.RGBAImage({width:_e,height:Ee});l.RGBAImage.copy(se,Ze,{x:ze,y:le},{x:0,y:0},{width:_e,height:Ee}),re[ie]={data:Ze,pixelRatio:De,sdf:Be,stretchX:qe,stretchY:We,content:ot}}_(null,re)}}return{cancel(){N&&(N.cancel(),N=null),Z&&(Z.cancel(),Z=null)}}}(n,this.map._requestManager,this.map.getPixelRatio(),(a,h)=>{if(this._spriteRequest=null,a)this.fire(new l.ErrorEvent(a));else if(h)for(const m in h)this.imageManager.addImage(m,h[m]);this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new l.Event("data",{dataType:"style"}))})}_validateLayer(n){const a=this.sourceCaches[n.source];if(!a)return;const h=n.sourceLayer;if(!h)return;const m=a.getSource();(m.type==="geojson"||m.vectorLayerIds&&m.vectorLayerIds.indexOf(h)===-1)&&this.fire(new l.ErrorEvent(new Error(`Source layer "${h}" does not exist on source "${m.id}" as specified by style layer "${n.id}".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(const n in this.sourceCaches)if(!this.sourceCaches[n].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeLayers(n){const a=[];for(const h of n){const m=this._layers[h];m.type!=="custom"&&a.push(m.serialize())}return a}hasTransitions(){if(this.light&&this.light.hasTransition())return!0;for(const n in this.sourceCaches)if(this.sourceCaches[n].hasTransition())return!0;for(const n in this._layers)if(this._layers[n].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(n){if(!this._loaded)return;const a=this._changed;if(this._changed){const m=Object.keys(this._updatedLayers),_=Object.keys(this._removedLayers);(m.length||_.length)&&this._updateWorkerLayers(m,_);for(const w in this._updatedSources){const T=this._updatedSources[w];if(T==="reload")this._reloadSource(w);else{if(T!=="clear")throw new Error(`Invalid action ${T}`);this._clearSource(w)}}this._updateTilesForChangedImages();for(const w in this._updatedPaintProps)this._layers[w].updateTransitions(n);this.light.updateTransitions(n),this._resetUpdates()}const h={};for(const m in this.sourceCaches){const _=this.sourceCaches[m];h[m]=_.used,_.used=!1}for(const m of this._order){const _=this._layers[m];_.recalculate(n,this._availableImages),!_.isHidden(n.zoom)&&_.source&&(this.sourceCaches[_.source].used=!0)}for(const m in h){const _=this.sourceCaches[m];h[m]!==_.used&&_.fire(new l.Event("data",{sourceDataType:"visibility",dataType:"source",sourceId:m}))}this.light.recalculate(n),this.z=n.zoom,a&&this.fire(new l.Event("data",{dataType:"style"}))}_updateTilesForChangedImages(){const n=Object.keys(this._changedImages);if(n.length){for(const a in this.sourceCaches)this.sourceCaches[a].reloadTilesForDependencies(["icons","patterns"],n);this._changedImages={}}}_updateWorkerLayers(n,a){this.dispatcher.broadcast("updateLayers",{layers:this._serializeLayers(n),removedIds:a})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={}}setTerrain(n){if(this._checkLoaded(),this._terrainDataCallback&&this.off("data",this._terrainDataCallback),this._terrainfreezeElevationCallback&&this.map.off("freezeElevation",this._terrainfreezeElevationCallback),n){const a=this.sourceCaches[n.source];if(!a)throw new Error(`cannot load terrain, because there exists no source with ID: ${n.source}`);this.terrain=new Kt(this,a,n),this.map.transform.updateElevation(this.terrain),this._terrainfreezeElevationCallback=h=>{h.freeze?this.map.transform.freezeElevation=!0:(this.map.transform.freezeElevation=!1,this.map.transform.recalculateZoom(this.terrain))},this._terrainDataCallback=h=>{h.tile&&(h.sourceId===n.source?(this.map.transform.updateElevation(this.terrain),this.terrain.rememberForRerender(h.sourceId,h.tile.tileID)):h.source.type==="geojson"&&this.terrain.rememberForRerender(h.sourceId,h.tile.tileID))},this.on("data",this._terrainDataCallback),this.map.on("freezeElevation",this._terrainfreezeElevationCallback)}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.map.transform.updateElevation(this.terrain);this.map.fire(new l.Event("terrain",{terrain:n}))}setState(n){if(this._checkLoaded(),cn(this,l.validateStyle(n)))return!1;(n=l.clone$1(n)).layers=oe(n.layers);const a=function(m,_){if(!m)return[{command:ge.setStyle,args:[_]}];let w=[];try{if(!M(m.version,_.version))return[{command:ge.setStyle,args:[_]}];M(m.center,_.center)||w.push({command:ge.setCenter,args:[_.center]}),M(m.zoom,_.zoom)||w.push({command:ge.setZoom,args:[_.zoom]}),M(m.bearing,_.bearing)||w.push({command:ge.setBearing,args:[_.bearing]}),M(m.pitch,_.pitch)||w.push({command:ge.setPitch,args:[_.pitch]}),M(m.sprite,_.sprite)||w.push({command:ge.setSprite,args:[_.sprite]}),M(m.glyphs,_.glyphs)||w.push({command:ge.setGlyphs,args:[_.glyphs]}),M(m.transition,_.transition)||w.push({command:ge.setTransition,args:[_.transition]}),M(m.light,_.light)||w.push({command:ge.setLight,args:[_.light]});const T={},C=[];(function(N,Z,H,se){let re;for(re in Z=Z||{},N=N||{})Object.prototype.hasOwnProperty.call(N,re)&&(Object.prototype.hasOwnProperty.call(Z,re)||tt(re,H,se));for(re in Z)Object.prototype.hasOwnProperty.call(Z,re)&&(Object.prototype.hasOwnProperty.call(N,re)?M(N[re],Z[re])||(N[re].type==="geojson"&&Z[re].type==="geojson"&&ct(N,Z,re)?H.push({command:ge.setGeoJSONSourceData,args:[re,Z[re].data]}):Me(re,Z,H,se)):Ke(re,Z,H))})(m.sources,_.sources,C,T);const z=[];m.layers&&m.layers.forEach(N=>{T[N.source]?w.push({command:ge.removeLayer,args:[N.id]}):z.push(N)}),w=w.concat(C),function(N,Z,H){Z=Z||[];const se=(N=N||[]).map(je),re=Z.map(je),ie=N.reduce(yt,{}),_e=Z.reduce(yt,{}),Ee=se.slice(),ze=Object.create(null);let le,Be,De,qe,We,ot,Ze;for(le=0,Be=0;le!(m.command in gr));if(a.length===0)return!1;const h=a.filter(m=>!(m.command in En));if(h.length>0)throw new Error(`Unimplemented: ${h.map(m=>m.command).join(", ")}.`);return a.forEach(m=>{m.command!=="setTransition"&&this[m.command].apply(this,m.args)}),this.stylesheet=n,!0}addImage(n,a){if(this.getImage(n))return this.fire(new l.ErrorEvent(new Error(`An image named "${n}" already exists.`)));this.imageManager.addImage(n,a),this._afterImageUpdated(n)}updateImage(n,a){this.imageManager.updateImage(n,a)}getImage(n){return this.imageManager.getImage(n)}removeImage(n){if(!this.getImage(n))return this.fire(new l.ErrorEvent(new Error(`An image named "${n}" does not exist.`)));this.imageManager.removeImage(n),this._afterImageUpdated(n)}_afterImageUpdated(n){this._availableImages=this.imageManager.listImages(),this._changedImages[n]=!0,this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new l.Event("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(n,a,h={}){if(this._checkLoaded(),this.sourceCaches[n]!==void 0)throw new Error(`Source "${n}" already exists.`);if(!a.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(a).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(a.type)>=0&&this._validate(l.validateStyle.source,`sources.${n}`,a,null,h))return;this.map&&this.map._collectResourceTiming&&(a.collectResourceTiming=!0);const m=this.sourceCaches[n]=new Ut(n,a,this.dispatcher);m.style=this,m.setEventedParent(this,()=>({isSourceLoaded:this.loaded(),source:m.serialize(),sourceId:n})),m.onAdd(this.map),this._changed=!0}removeSource(n){if(this._checkLoaded(),this.sourceCaches[n]===void 0)throw new Error("There is no source with this ID");for(const h in this._layers)if(this._layers[h].source===n)return this.fire(new l.ErrorEvent(new Error(`Source "${n}" cannot be removed while layer "${h}" is using it.`)));const a=this.sourceCaches[n];delete this.sourceCaches[n],delete this._updatedSources[n],a.fire(new l.Event("data",{sourceDataType:"metadata",dataType:"source",sourceId:n})),a.setEventedParent(null),a.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(n,a){if(this._checkLoaded(),this.sourceCaches[n]===void 0)throw new Error(`There is no source with this ID=${n}`);const h=this.sourceCaches[n].getSource();if(h.type!=="geojson")throw new Error(`geojsonSource.type is ${h.type}, which is !== 'geojson`);h.setData(a),this._changed=!0}getSource(n){return this.sourceCaches[n]&&this.sourceCaches[n].getSource()}addLayer(n,a,h={}){this._checkLoaded();const m=n.id;if(this.getLayer(m))return void this.fire(new l.ErrorEvent(new Error(`Layer "${m}" already exists on this map.`)));let _;if(n.type==="custom"){if(cn(this,l.validateCustomStyleLayer(n)))return;_=l.createStyleLayer(n)}else{if(typeof n.source=="object"&&(this.addSource(m,n.source),n=l.clone$1(n),n=l.extend(n,{source:m})),this._validate(l.validateStyle.layer,`layers.${m}`,n,{arrayIndex:-1},h))return;_=l.createStyleLayer(n),this._validateLayer(_),_.setEventedParent(this,{layer:{id:m}}),this._serializedLayers[_.id]=_.serialize()}const w=a?this._order.indexOf(a):this._order.length;if(a&&w===-1)this.fire(new l.ErrorEvent(new Error(`Cannot add layer "${m}" before non-existing layer "${a}".`)));else{if(this._order.splice(w,0,m),this._layerOrderChanged=!0,this._layers[m]=_,this._removedLayers[m]&&_.source&&_.type!=="custom"){const T=this._removedLayers[m];delete this._removedLayers[m],T.type!==_.type?this._updatedSources[_.source]="clear":(this._updatedSources[_.source]="reload",this.sourceCaches[_.source].pause())}this._updateLayer(_),_.onAdd&&_.onAdd(this.map)}}moveLayer(n,a){if(this._checkLoaded(),this._changed=!0,!this._layers[n])return void this.fire(new l.ErrorEvent(new Error(`The layer '${n}' does not exist in the map's style and cannot be moved.`)));if(n===a)return;const h=this._order.indexOf(n);this._order.splice(h,1);const m=a?this._order.indexOf(a):this._order.length;a&&m===-1?this.fire(new l.ErrorEvent(new Error(`Cannot move layer "${n}" before non-existing layer "${a}".`))):(this._order.splice(m,0,n),this._layerOrderChanged=!0)}removeLayer(n){this._checkLoaded();const a=this._layers[n];if(!a)return void this.fire(new l.ErrorEvent(new Error(`Cannot remove non-existing layer "${n}".`)));a.setEventedParent(null);const h=this._order.indexOf(n);this._order.splice(h,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[n]=a,delete this._layers[n],delete this._serializedLayers[n],delete this._updatedLayers[n],delete this._updatedPaintProps[n],a.onRemove&&a.onRemove(this.map)}getLayer(n){return this._layers[n]}hasLayer(n){return n in this._layers}setLayerZoomRange(n,a,h){this._checkLoaded();const m=this.getLayer(n);m?m.minzoom===a&&m.maxzoom===h||(a!=null&&(m.minzoom=a),h!=null&&(m.maxzoom=h),this._updateLayer(m)):this.fire(new l.ErrorEvent(new Error(`Cannot set the zoom range of non-existing layer "${n}".`)))}setFilter(n,a,h={}){this._checkLoaded();const m=this.getLayer(n);if(m){if(!M(m.filter,a))return a==null?(m.filter=void 0,void this._updateLayer(m)):void(this._validate(l.validateStyle.filter,`layers.${m.id}.filter`,a,null,h)||(m.filter=l.clone$1(a),this._updateLayer(m)))}else this.fire(new l.ErrorEvent(new Error(`Cannot filter non-existing layer "${n}".`)))}getFilter(n){return l.clone$1(this.getLayer(n).filter)}setLayoutProperty(n,a,h,m={}){this._checkLoaded();const _=this.getLayer(n);_?M(_.getLayoutProperty(a),h)||(_.setLayoutProperty(a,h,m),this._updateLayer(_)):this.fire(new l.ErrorEvent(new Error(`Cannot style non-existing layer "${n}".`)))}getLayoutProperty(n,a){const h=this.getLayer(n);if(h)return h.getLayoutProperty(a);this.fire(new l.ErrorEvent(new Error(`Cannot get style of non-existing layer "${n}".`)))}setPaintProperty(n,a,h,m={}){this._checkLoaded();const _=this.getLayer(n);_?M(_.getPaintProperty(a),h)||(_.setPaintProperty(a,h,m)&&this._updateLayer(_),this._changed=!0,this._updatedPaintProps[n]=!0):this.fire(new l.ErrorEvent(new Error(`Cannot style non-existing layer "${n}".`)))}getPaintProperty(n,a){return this.getLayer(n).getPaintProperty(a)}setFeatureState(n,a){this._checkLoaded();const h=n.source,m=n.sourceLayer,_=this.sourceCaches[h];if(_===void 0)return void this.fire(new l.ErrorEvent(new Error(`The source '${h}' does not exist in the map's style.`)));const w=_.getSource().type;w==="geojson"&&m?this.fire(new l.ErrorEvent(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):w!=="vector"||m?(n.id===void 0&&this.fire(new l.ErrorEvent(new Error("The feature id parameter must be provided."))),_.setFeatureState(m,n.id,a)):this.fire(new l.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}removeFeatureState(n,a){this._checkLoaded();const h=n.source,m=this.sourceCaches[h];if(m===void 0)return void this.fire(new l.ErrorEvent(new Error(`The source '${h}' does not exist in the map's style.`)));const _=m.getSource().type,w=_==="vector"?n.sourceLayer:void 0;_!=="vector"||w?a&&typeof n.id!="string"&&typeof n.id!="number"?this.fire(new l.ErrorEvent(new Error("A feature id is required to remove its specific state property."))):m.removeFeatureState(w,n.id,a):this.fire(new l.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}getFeatureState(n){this._checkLoaded();const a=n.source,h=n.sourceLayer,m=this.sourceCaches[a];if(m!==void 0)return m.getSource().type!=="vector"||h?(n.id===void 0&&this.fire(new l.ErrorEvent(new Error("The feature id parameter must be provided."))),m.getFeatureState(h,n.id)):void this.fire(new l.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new l.ErrorEvent(new Error(`The source '${a}' does not exist in the map's style.`)))}getTransition(){return l.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){return l.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:l.mapObject(this.sourceCaches,n=>n.serialize()),layers:this._serializeLayers(this._order)},n=>n!==void 0)}_updateLayer(n){this._updatedLayers[n.id]=!0,n.source&&!this._updatedSources[n.source]&&this.sourceCaches[n.source].getSource().type!=="raster"&&(this._updatedSources[n.source]="reload",this.sourceCaches[n.source].pause()),this._changed=!0}_flattenAndSortRenderedFeatures(n){const a=w=>this._layers[w].type==="fill-extrusion",h={},m=[];for(let w=this._order.length-1;w>=0;w--){const T=this._order[w];if(a(T)){h[T]=w;for(const C of n){const z=C[T];if(z)for(const N of z)m.push(N)}}}m.sort((w,T)=>T.intersectionZ-w.intersectionZ);const _=[];for(let w=this._order.length-1;w>=0;w--){const T=this._order[w];if(a(T))for(let C=m.length-1;C>=0;C--){const z=m[C].feature;if(h[z.layer.id]{const We=_e.featureSortOrder;if(We){const ot=We.indexOf(De.featureIndex);return We.indexOf(qe.featureIndex)-ot}return qe.featureIndex-De.featureIndex});for(const De of Be)le.push(De)}}for(const _e in se)se[_e].forEach(Ee=>{const ze=Ee.feature,le=C[w[_e].source].getFeatureState(ze.layer["source-layer"],ze.id);ze.source=ze.layer.source,ze.layer["source-layer"]&&(ze.sourceLayer=ze.layer["source-layer"]),ze.state=le});return se}(this._layers,this._serializedLayers,this.sourceCaches,n,a,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(_)}querySourceFeatures(n,a){a&&a.filter&&this._validate(l.validateStyle.filter,"querySourceFeatures.filter",a.filter,null,a);const h=this.sourceCaches[n];return h?function(m,_){const w=m.getRenderableIds().map(z=>m.getTileByID(z)),T=[],C={};for(let z=0;zH.getTileByID(se)).sort((se,re)=>re.tileID.overscaledZ-se.tileID.overscaledZ||(se.tileID.isLessThan(re.tileID)?-1:1))}const Z=this.crossTileSymbolIndex.addLayer(N,C[N.source],n.center.lng);w=w||Z}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((_=_||this._layerOrderChanged||h===0)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(l.exported.now(),n.zoom))&&(this.pauseablePlacement=new $e(n,this.terrain,this._order,_,a,h,m,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,C),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(l.exported.now()),T=!0),w&&this.pauseablePlacement.placement.setStale()),T||w)for(const z of this._order){const N=this._layers[z];N.type==="symbol"&&this.placement.updateLayerOpacities(N,C[N.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(l.exported.now())}_releaseSymbolFadeTiles(){for(const n in this.sourceCaches)this.sourceCaches[n].releaseSymbolFadeTiles()}getImages(n,a,h){this.imageManager.getImages(a.icons,h),this._updateTilesForChangedImages();const m=this.sourceCaches[a.source];m&&m.setDependencies(a.tileID.key,a.type,a.icons)}getGlyphs(n,a,h){this.glyphManager.getGlyphs(a.stacks,h)}getResource(n,a,h){return l.makeRequest(a,h)}}Ar.getSourceType=function(d){return Se[d]},Ar.setSourceType=function(d,n){Se[d]=n},Ar.registerForPluginStateChange=l.registerForPluginStateChange;var is="attribute vec2 a_pos;uniform mat4 u_matrix;varying vec2 v_texture_pos;varying float v_depth;void main() {v_texture_pos=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos,get_elevation(a_pos),1.0);v_depth=gl_Position.z/gl_Position.w;}";const Zs={prelude:Tn(`#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_offset;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_offset)*u_terrain_exaggeration; +#else +return 0.0; +#endif +}`),background:Tn(`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:Tn(`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:Tn(`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:Tn("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:Tn(`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:Tn(`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:Tn("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:Tn("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:Tn("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:Tn(`#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:Tn(`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:Tn(`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:Tn(`#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:Tn(`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 baseDelta=10.0;float ele=get_elevation(a_centroid); +#else +float baseDelta=0.0;float ele=0.0; +#endif +base=max(0.0,ele+base-baseDelta);height=max(0.0,ele+height);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:Tn(`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 baseDelta=10.0;float ele=get_elevation(a_centroid); +#else +float baseDelta=0.0;float ele=0.0; +#endif +base=max(0.0,ele+base-baseDelta);height=max(0.0,ele+height);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:Tn(`#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:Tn(`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:Tn(`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:Tn(`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:Tn(`#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:Tn(`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:Tn(`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:Tn(`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:Tn(`#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 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 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:Tn(`#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:Tn("uniform sampler2D u_texture;varying vec2 v_texture_pos;void main() {gl_FragColor=texture2D(u_texture,v_texture_pos);}",is),terrainDepth:Tn("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);}",is),terrainCoords:Tn("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);}",is)};function Tn(d,n){const a=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,h=n.match(/attribute ([\w]+) ([\w]+)/g),m=d.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),_=n.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),w=_?_.concat(m):m,T={};return{fragmentSource:d=d.replace(a,(C,z,N,Z,H)=>(T[H]=!0,z==="define"?` +#ifndef HAS_UNIFORM_u_${H} +varying ${N} ${Z} ${H}; +#else +uniform ${N} ${Z} u_${H}; +#endif +`:` +#ifdef HAS_UNIFORM_u_${H} + ${N} ${Z} ${H} = u_${H}; +#endif +`)),vertexSource:n=n.replace(a,(C,z,N,Z,H)=>{const se=Z==="float"?"vec2":"vec4",re=H.match(/color/)?"color":se;return T[H]?z==="define"?` +#ifndef HAS_UNIFORM_u_${H} +uniform lowp float u_${H}_t; +attribute ${N} ${se} a_${H}; +varying ${N} ${Z} ${H}; +#else +uniform ${N} ${Z} u_${H}; +#endif +`:re==="vec4"?` +#ifndef HAS_UNIFORM_u_${H} + ${H} = a_${H}; +#else + ${N} ${Z} ${H} = u_${H}; +#endif +`:` +#ifndef HAS_UNIFORM_u_${H} + ${H} = unpack_mix_${re}(a_${H}, u_${H}_t); +#else + ${N} ${Z} ${H} = u_${H}; +#endif +`:z==="define"?` +#ifndef HAS_UNIFORM_u_${H} +uniform lowp float u_${H}_t; +attribute ${N} ${se} a_${H}; +#else +uniform ${N} ${Z} u_${H}; +#endif +`:re==="vec4"?` +#ifndef HAS_UNIFORM_u_${H} + ${N} ${Z} ${H} = a_${H}; +#else + ${N} ${Z} ${H} = u_${H}; +#endif +`:` +#ifndef HAS_UNIFORM_u_${H} + ${N} ${Z} ${H} = unpack_mix_${re}(a_${H}, u_${H}_t); +#else + ${N} ${Z} ${H} = u_${H}; +#endif +`}),staticAttributes:h,staticUniforms:w}}class Ql{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(n,a,h,m,_,w,T,C,z){this.context=n;let N=this.boundPaintVertexBuffers.length!==m.length;for(let Z=0;!N&&Z({u_depth:new l.Uniform1i(We,ot.u_depth),u_terrain:new l.Uniform1i(We,ot.u_terrain),u_terrain_dim:new l.Uniform1f(We,ot.u_terrain_dim),u_terrain_matrix:new l.UniformMatrix4f(We,ot.u_terrain_matrix),u_terrain_unpack:new l.Uniform4f(We,ot.u_terrain_unpack),u_terrain_offset:new l.Uniform1f(We,ot.u_terrain_offset),u_terrain_exaggeration:new l.Uniform1f(We,ot.u_terrain_exaggeration)}))(n,qe),this.binderUniforms=m?m.getUniforms(n,qe):[]}draw(n,a,h,m,_,w,T,C,z,N,Z,H,se,re,ie,_e,Ee,ze){const le=n.gl;if(this.failedToCreate)return;if(n.program.set(this.program),n.setDepthMode(h),n.setStencilMode(m),n.setColorMode(_),n.setCullFace(w),C){n.activeTexture.set(le.TEXTURE2),le.bindTexture(le.TEXTURE_2D,C.depthTexture),n.activeTexture.set(le.TEXTURE3),le.bindTexture(le.TEXTURE_2D,C.texture);for(const De in this.terrainUniforms)this.terrainUniforms[De].set(C[De])}for(const De in this.fixedUniforms)this.fixedUniforms[De].set(T[De]);ie&&ie.setUniforms(n,this.binderUniforms,se,{zoom:re});let Be=0;switch(a){case le.LINES:Be=2;break;case le.TRIANGLES:Be=3;break;case le.LINE_STRIP:Be=1}for(const De of H.get()){const qe=De.vaos||(De.vaos={});(qe[z]||(qe[z]=new Ql)).bind(n,this,N,ie?ie.getPaintVertexBuffers():[],Z,De.vertexOffset,_e,Ee,ze),le.drawElements(a,De.primitiveLength*Be,le.UNSIGNED_SHORT,De.primitiveOffset*Be*2)}}}function Jc(d,n,a){const h=1/yn(a,1,n.transform.tileZoom),m=Math.pow(2,a.tileID.overscaledZ),_=a.tileSize*Math.pow(2,n.transform.tileZoom)/m,w=_*(a.tileID.canonical.x+a.tileID.wrap*m),T=_*a.tileID.canonical.y;return{u_image:0,u_texsize:a.imageAtlasTexture.size,u_scale:[h,d.fromScale,d.toScale],u_fade:d.t,u_pixel_coord_upper:[w>>16,T>>16],u_pixel_coord_lower:[65535&w,65535&T]}}const tu=(d,n,a,h)=>{const m=n.style.light,_=m.properties.get("position"),w=[_.x,_.y,_.z],T=l.create$1();m.properties.get("anchor")==="viewport"&&l.fromRotation(T,-n.transform.angle),l.transformMat3(w,w,T);const C=m.properties.get("color");return{u_matrix:d,u_lightpos:w,u_lightintensity:m.properties.get("intensity"),u_lightcolor:[C.r,C.g,C.b],u_vertical_gradient:+a,u_opacity:h}},Vp=(d,n,a,h,m,_,w)=>l.extend(tu(d,n,a,h),Jc(_,n,w),{u_height_factor:-Math.pow(2,m.overscaledZ)/w.tileSize/8}),Fa=d=>({u_matrix:d}),nu=(d,n,a,h)=>l.extend(Fa(d),Jc(a,n,h)),Qc=(d,n)=>({u_matrix:d,u_world:n}),eh=(d,n,a,h,m)=>l.extend(nu(d,n,a,h),{u_world:m}),th=(d,n,a,h)=>{const m=d.transform;let _,w;if(h.paint.get("circle-pitch-alignment")==="map"){const T=yn(a,1,m.zoom);_=!0,w=[T,T]}else _=!1,w=m.pixelsToGLUnits;return{u_camera_to_center_distance:m.cameraToCenterDistance,u_scale_with_map:+(h.paint.get("circle-pitch-scale")==="map"),u_matrix:d.translatePosMatrix(n.posMatrix,a,h.paint.get("circle-translate"),h.paint.get("circle-translate-anchor")),u_pitch_with_map:+_,u_device_pixel_ratio:d.pixelRatio,u_extrude_scale:w}},Mo=(d,n,a)=>{const h=yn(a,1,n.zoom),m=Math.pow(2,n.zoom-a.tileID.overscaledZ),_=a.tileID.overscaleFactor();return{u_matrix:d,u_camera_to_center_distance:n.cameraToCenterDistance,u_pixels_to_tile_units:h,u_extrude_scale:[n.pixelsToGLUnits[0]/(h*m),n.pixelsToGLUnits[1]/(h*m)],u_overscale_factor:_}},qs=(d,n,a=1)=>({u_matrix:d,u_color:n,u_overlay:0,u_overlay_scale:a}),os=d=>({u_matrix:d}),Oa=(d,n,a,h)=>({u_matrix:d,u_extrude_scale:yn(n,1,a),u_intensity:h});function Na(d,n){const a=Math.pow(2,n.canonical.z),h=n.canonical.y;return[new l.MercatorCoordinate(0,h/a).toLngLat().lat,new l.MercatorCoordinate(0,(h+1)/a).toLngLat().lat]}const ss=(d,n,a,h)=>{const m=d.transform;return{u_matrix:Hs(d,n,a,h),u_ratio:1/yn(n,1,m.zoom),u_device_pixel_ratio:d.pixelRatio,u_units_to_pixels:[1/m.pixelsToGLUnits[0],1/m.pixelsToGLUnits[1]]}},ru=(d,n,a,h,m)=>l.extend(ss(d,n,a,m),{u_image:0,u_image_height:h}),Ua=(d,n,a,h,m)=>{const _=d.transform,w=Fn(n,_);return{u_matrix:Hs(d,n,a,m),u_texsize:n.imageAtlasTexture.size,u_ratio:1/yn(n,1,_.zoom),u_device_pixel_ratio:d.pixelRatio,u_image:0,u_scale:[w,h.fromScale,h.toScale],u_fade:h.t,u_units_to_pixels:[1/_.pixelsToGLUnits[0],1/_.pixelsToGLUnits[1]]}},Ws=(d,n,a,h,m,_)=>{const w=d.lineAtlas,T=Fn(n,d.transform),C=a.layout.get("line-cap")==="round",z=w.getDash(h.from,C),N=w.getDash(h.to,C),Z=z.width*m.fromScale,H=N.width*m.toScale;return l.extend(ss(d,n,a,_),{u_patternscale_a:[T/Z,-z.height/2],u_patternscale_b:[T/H,-N.height/2],u_sdfgamma:w.width/(256*Math.min(Z,H)*d.pixelRatio)/2,u_image:0,u_tex_y_a:z.y,u_tex_y_b:N.y,u_mix:m.t})};function Fn(d,n){return 1/yn(d,1,n.tileZoom)}function Hs(d,n,a,h){return d.translatePosMatrix(h?h.posMatrix:n.tileID.posMatrix,n,a.paint.get("line-translate"),a.paint.get("line-translate-anchor"))}const nh=(d,n,a,h,m)=>{return{u_matrix:d,u_tl_parent:n,u_scale_parent:a,u_buffer_scale:1,u_fade_t:h.mix,u_opacity:h.opacity*m.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:m.paint.get("raster-brightness-min"),u_brightness_high:m.paint.get("raster-brightness-max"),u_saturation_factor:(w=m.paint.get("raster-saturation"),w>0?1-1/(1.001-w):-w),u_contrast_factor:(_=m.paint.get("raster-contrast"),_>0?1/(1-_):1+_),u_spin_weights:rh(m.paint.get("raster-hue-rotate"))};var _,w};function rh(d){d*=Math.PI/180;const n=Math.sin(d),a=Math.cos(d);return[(2*a+1)/3,(-Math.sqrt(3)*n-a+1)/3,(Math.sqrt(3)*n-a+1)/3]}const iu=(d,n,a,h,m,_,w,T,C,z)=>{const N=m.transform;return{u_is_size_zoom_constant:+(d==="constant"||d==="source"),u_is_size_feature_constant:+(d==="constant"||d==="camera"),u_size_t:n?n.uSizeT:0,u_size:n?n.uSize:0,u_camera_to_center_distance:N.cameraToCenterDistance,u_pitch:N.pitch/360*2*Math.PI,u_rotate_symbol:+a,u_aspect_ratio:N.width/N.height,u_fade_change:m.options.fadeDuration?m.symbolFadeChange:1,u_matrix:_,u_label_plane_matrix:w,u_coord_matrix:T,u_is_text:+C,u_pitch_with_map:+h,u_texsize:z,u_texture:0}},Va=(d,n,a,h,m,_,w,T,C,z,N)=>{const Z=m.transform;return l.extend(iu(d,n,a,h,m,_,w,T,C,z),{u_gamma_scale:h?Math.cos(Z._pitch)*Z.cameraToCenterDistance:1,u_device_pixel_ratio:m.pixelRatio,u_is_halo:+N})},ih=(d,n,a,h,m,_,w,T,C,z)=>l.extend(Va(d,n,a,h,m,_,w,T,!0,C,!0),{u_texsize_icon:z,u_texture_icon:1}),jp=(d,n,a)=>({u_matrix:d,u_opacity:n,u_color:a}),$p=(d,n,a,h,m,_)=>l.extend(function(w,T,C,z){const N=C.imageManager.getPattern(w.from.toString()),Z=C.imageManager.getPattern(w.to.toString()),{width:H,height:se}=C.imageManager.getPixelSize(),re=Math.pow(2,z.tileID.overscaledZ),ie=z.tileSize*Math.pow(2,C.transform.tileZoom)/re,_e=ie*(z.tileID.canonical.x+z.tileID.wrap*re),Ee=ie*z.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:N.tl,u_pattern_br_a:N.br,u_pattern_tl_b:Z.tl,u_pattern_br_b:Z.br,u_texsize:[H,se],u_mix:T.t,u_pattern_size_a:N.displaySize,u_pattern_size_b:Z.displaySize,u_scale_a:T.fromScale,u_scale_b:T.toScale,u_tile_units_to_pixels:1/yn(z,1,C.transform.tileZoom),u_pixel_coord_upper:[_e>>16,Ee>>16],u_pixel_coord_lower:[65535&_e,65535&Ee]}}(h,_,a,m),{u_matrix:d,u_opacity:n}),ou={fillExtrusion:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_lightpos:new l.Uniform3f(d,n.u_lightpos),u_lightintensity:new l.Uniform1f(d,n.u_lightintensity),u_lightcolor:new l.Uniform3f(d,n.u_lightcolor),u_vertical_gradient:new l.Uniform1f(d,n.u_vertical_gradient),u_opacity:new l.Uniform1f(d,n.u_opacity)}),fillExtrusionPattern:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_lightpos:new l.Uniform3f(d,n.u_lightpos),u_lightintensity:new l.Uniform1f(d,n.u_lightintensity),u_lightcolor:new l.Uniform3f(d,n.u_lightcolor),u_vertical_gradient:new l.Uniform1f(d,n.u_vertical_gradient),u_height_factor:new l.Uniform1f(d,n.u_height_factor),u_image:new l.Uniform1i(d,n.u_image),u_texsize:new l.Uniform2f(d,n.u_texsize),u_pixel_coord_upper:new l.Uniform2f(d,n.u_pixel_coord_upper),u_pixel_coord_lower:new l.Uniform2f(d,n.u_pixel_coord_lower),u_scale:new l.Uniform3f(d,n.u_scale),u_fade:new l.Uniform1f(d,n.u_fade),u_opacity:new l.Uniform1f(d,n.u_opacity)}),fill:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix)}),fillPattern:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_image:new l.Uniform1i(d,n.u_image),u_texsize:new l.Uniform2f(d,n.u_texsize),u_pixel_coord_upper:new l.Uniform2f(d,n.u_pixel_coord_upper),u_pixel_coord_lower:new l.Uniform2f(d,n.u_pixel_coord_lower),u_scale:new l.Uniform3f(d,n.u_scale),u_fade:new l.Uniform1f(d,n.u_fade)}),fillOutline:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_world:new l.Uniform2f(d,n.u_world)}),fillOutlinePattern:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_world:new l.Uniform2f(d,n.u_world),u_image:new l.Uniform1i(d,n.u_image),u_texsize:new l.Uniform2f(d,n.u_texsize),u_pixel_coord_upper:new l.Uniform2f(d,n.u_pixel_coord_upper),u_pixel_coord_lower:new l.Uniform2f(d,n.u_pixel_coord_lower),u_scale:new l.Uniform3f(d,n.u_scale),u_fade:new l.Uniform1f(d,n.u_fade)}),circle:(d,n)=>({u_camera_to_center_distance:new l.Uniform1f(d,n.u_camera_to_center_distance),u_scale_with_map:new l.Uniform1i(d,n.u_scale_with_map),u_pitch_with_map:new l.Uniform1i(d,n.u_pitch_with_map),u_extrude_scale:new l.Uniform2f(d,n.u_extrude_scale),u_device_pixel_ratio:new l.Uniform1f(d,n.u_device_pixel_ratio),u_matrix:new l.UniformMatrix4f(d,n.u_matrix)}),collisionBox:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_camera_to_center_distance:new l.Uniform1f(d,n.u_camera_to_center_distance),u_pixels_to_tile_units:new l.Uniform1f(d,n.u_pixels_to_tile_units),u_extrude_scale:new l.Uniform2f(d,n.u_extrude_scale),u_overscale_factor:new l.Uniform1f(d,n.u_overscale_factor)}),collisionCircle:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_inv_matrix:new l.UniformMatrix4f(d,n.u_inv_matrix),u_camera_to_center_distance:new l.Uniform1f(d,n.u_camera_to_center_distance),u_viewport_size:new l.Uniform2f(d,n.u_viewport_size)}),debug:(d,n)=>({u_color:new l.UniformColor(d,n.u_color),u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_overlay:new l.Uniform1i(d,n.u_overlay),u_overlay_scale:new l.Uniform1f(d,n.u_overlay_scale)}),clippingMask:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix)}),heatmap:(d,n)=>({u_extrude_scale:new l.Uniform1f(d,n.u_extrude_scale),u_intensity:new l.Uniform1f(d,n.u_intensity),u_matrix:new l.UniformMatrix4f(d,n.u_matrix)}),heatmapTexture:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_world:new l.Uniform2f(d,n.u_world),u_image:new l.Uniform1i(d,n.u_image),u_color_ramp:new l.Uniform1i(d,n.u_color_ramp),u_opacity:new l.Uniform1f(d,n.u_opacity)}),hillshade:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_image:new l.Uniform1i(d,n.u_image),u_latrange:new l.Uniform2f(d,n.u_latrange),u_light:new l.Uniform2f(d,n.u_light),u_shadow:new l.UniformColor(d,n.u_shadow),u_highlight:new l.UniformColor(d,n.u_highlight),u_accent:new l.UniformColor(d,n.u_accent)}),hillshadePrepare:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_image:new l.Uniform1i(d,n.u_image),u_dimension:new l.Uniform2f(d,n.u_dimension),u_zoom:new l.Uniform1f(d,n.u_zoom),u_unpack:new l.Uniform4f(d,n.u_unpack)}),line:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_ratio:new l.Uniform1f(d,n.u_ratio),u_device_pixel_ratio:new l.Uniform1f(d,n.u_device_pixel_ratio),u_units_to_pixels:new l.Uniform2f(d,n.u_units_to_pixels)}),lineGradient:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_ratio:new l.Uniform1f(d,n.u_ratio),u_device_pixel_ratio:new l.Uniform1f(d,n.u_device_pixel_ratio),u_units_to_pixels:new l.Uniform2f(d,n.u_units_to_pixels),u_image:new l.Uniform1i(d,n.u_image),u_image_height:new l.Uniform1f(d,n.u_image_height)}),linePattern:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_texsize:new l.Uniform2f(d,n.u_texsize),u_ratio:new l.Uniform1f(d,n.u_ratio),u_device_pixel_ratio:new l.Uniform1f(d,n.u_device_pixel_ratio),u_image:new l.Uniform1i(d,n.u_image),u_units_to_pixels:new l.Uniform2f(d,n.u_units_to_pixels),u_scale:new l.Uniform3f(d,n.u_scale),u_fade:new l.Uniform1f(d,n.u_fade)}),lineSDF:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_ratio:new l.Uniform1f(d,n.u_ratio),u_device_pixel_ratio:new l.Uniform1f(d,n.u_device_pixel_ratio),u_units_to_pixels:new l.Uniform2f(d,n.u_units_to_pixels),u_patternscale_a:new l.Uniform2f(d,n.u_patternscale_a),u_patternscale_b:new l.Uniform2f(d,n.u_patternscale_b),u_sdfgamma:new l.Uniform1f(d,n.u_sdfgamma),u_image:new l.Uniform1i(d,n.u_image),u_tex_y_a:new l.Uniform1f(d,n.u_tex_y_a),u_tex_y_b:new l.Uniform1f(d,n.u_tex_y_b),u_mix:new l.Uniform1f(d,n.u_mix)}),raster:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_tl_parent:new l.Uniform2f(d,n.u_tl_parent),u_scale_parent:new l.Uniform1f(d,n.u_scale_parent),u_buffer_scale:new l.Uniform1f(d,n.u_buffer_scale),u_fade_t:new l.Uniform1f(d,n.u_fade_t),u_opacity:new l.Uniform1f(d,n.u_opacity),u_image0:new l.Uniform1i(d,n.u_image0),u_image1:new l.Uniform1i(d,n.u_image1),u_brightness_low:new l.Uniform1f(d,n.u_brightness_low),u_brightness_high:new l.Uniform1f(d,n.u_brightness_high),u_saturation_factor:new l.Uniform1f(d,n.u_saturation_factor),u_contrast_factor:new l.Uniform1f(d,n.u_contrast_factor),u_spin_weights:new l.Uniform3f(d,n.u_spin_weights)}),symbolIcon:(d,n)=>({u_is_size_zoom_constant:new l.Uniform1i(d,n.u_is_size_zoom_constant),u_is_size_feature_constant:new l.Uniform1i(d,n.u_is_size_feature_constant),u_size_t:new l.Uniform1f(d,n.u_size_t),u_size:new l.Uniform1f(d,n.u_size),u_camera_to_center_distance:new l.Uniform1f(d,n.u_camera_to_center_distance),u_pitch:new l.Uniform1f(d,n.u_pitch),u_rotate_symbol:new l.Uniform1i(d,n.u_rotate_symbol),u_aspect_ratio:new l.Uniform1f(d,n.u_aspect_ratio),u_fade_change:new l.Uniform1f(d,n.u_fade_change),u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_label_plane_matrix:new l.UniformMatrix4f(d,n.u_label_plane_matrix),u_coord_matrix:new l.UniformMatrix4f(d,n.u_coord_matrix),u_is_text:new l.Uniform1i(d,n.u_is_text),u_pitch_with_map:new l.Uniform1i(d,n.u_pitch_with_map),u_texsize:new l.Uniform2f(d,n.u_texsize),u_texture:new l.Uniform1i(d,n.u_texture)}),symbolSDF:(d,n)=>({u_is_size_zoom_constant:new l.Uniform1i(d,n.u_is_size_zoom_constant),u_is_size_feature_constant:new l.Uniform1i(d,n.u_is_size_feature_constant),u_size_t:new l.Uniform1f(d,n.u_size_t),u_size:new l.Uniform1f(d,n.u_size),u_camera_to_center_distance:new l.Uniform1f(d,n.u_camera_to_center_distance),u_pitch:new l.Uniform1f(d,n.u_pitch),u_rotate_symbol:new l.Uniform1i(d,n.u_rotate_symbol),u_aspect_ratio:new l.Uniform1f(d,n.u_aspect_ratio),u_fade_change:new l.Uniform1f(d,n.u_fade_change),u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_label_plane_matrix:new l.UniformMatrix4f(d,n.u_label_plane_matrix),u_coord_matrix:new l.UniformMatrix4f(d,n.u_coord_matrix),u_is_text:new l.Uniform1i(d,n.u_is_text),u_pitch_with_map:new l.Uniform1i(d,n.u_pitch_with_map),u_texsize:new l.Uniform2f(d,n.u_texsize),u_texture:new l.Uniform1i(d,n.u_texture),u_gamma_scale:new l.Uniform1f(d,n.u_gamma_scale),u_device_pixel_ratio:new l.Uniform1f(d,n.u_device_pixel_ratio),u_is_halo:new l.Uniform1i(d,n.u_is_halo)}),symbolTextAndIcon:(d,n)=>({u_is_size_zoom_constant:new l.Uniform1i(d,n.u_is_size_zoom_constant),u_is_size_feature_constant:new l.Uniform1i(d,n.u_is_size_feature_constant),u_size_t:new l.Uniform1f(d,n.u_size_t),u_size:new l.Uniform1f(d,n.u_size),u_camera_to_center_distance:new l.Uniform1f(d,n.u_camera_to_center_distance),u_pitch:new l.Uniform1f(d,n.u_pitch),u_rotate_symbol:new l.Uniform1i(d,n.u_rotate_symbol),u_aspect_ratio:new l.Uniform1f(d,n.u_aspect_ratio),u_fade_change:new l.Uniform1f(d,n.u_fade_change),u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_label_plane_matrix:new l.UniformMatrix4f(d,n.u_label_plane_matrix),u_coord_matrix:new l.UniformMatrix4f(d,n.u_coord_matrix),u_is_text:new l.Uniform1i(d,n.u_is_text),u_pitch_with_map:new l.Uniform1i(d,n.u_pitch_with_map),u_texsize:new l.Uniform2f(d,n.u_texsize),u_texsize_icon:new l.Uniform2f(d,n.u_texsize_icon),u_texture:new l.Uniform1i(d,n.u_texture),u_texture_icon:new l.Uniform1i(d,n.u_texture_icon),u_gamma_scale:new l.Uniform1f(d,n.u_gamma_scale),u_device_pixel_ratio:new l.Uniform1f(d,n.u_device_pixel_ratio),u_is_halo:new l.Uniform1i(d,n.u_is_halo)}),background:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_opacity:new l.Uniform1f(d,n.u_opacity),u_color:new l.UniformColor(d,n.u_color)}),backgroundPattern:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_opacity:new l.Uniform1f(d,n.u_opacity),u_image:new l.Uniform1i(d,n.u_image),u_pattern_tl_a:new l.Uniform2f(d,n.u_pattern_tl_a),u_pattern_br_a:new l.Uniform2f(d,n.u_pattern_br_a),u_pattern_tl_b:new l.Uniform2f(d,n.u_pattern_tl_b),u_pattern_br_b:new l.Uniform2f(d,n.u_pattern_br_b),u_texsize:new l.Uniform2f(d,n.u_texsize),u_mix:new l.Uniform1f(d,n.u_mix),u_pattern_size_a:new l.Uniform2f(d,n.u_pattern_size_a),u_pattern_size_b:new l.Uniform2f(d,n.u_pattern_size_b),u_scale_a:new l.Uniform1f(d,n.u_scale_a),u_scale_b:new l.Uniform1f(d,n.u_scale_b),u_pixel_coord_upper:new l.Uniform2f(d,n.u_pixel_coord_upper),u_pixel_coord_lower:new l.Uniform2f(d,n.u_pixel_coord_lower),u_tile_units_to_pixels:new l.Uniform1f(d,n.u_tile_units_to_pixels)}),terrain:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_texture:new l.Uniform1i(d,n.u_texture)}),terrainDepth:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix)}),terrainCoords:(d,n)=>({u_matrix:new l.UniformMatrix4f(d,n.u_matrix),u_texture:new l.Uniform1i(d,n.u_texture),u_terrain_coords_id:new l.Uniform1f(d,n.u_terrain_coords_id)})};class su{constructor(n,a,h){this.context=n;const m=n.gl;this.buffer=m.createBuffer(),this.dynamicDraw=!!h,this.context.unbindVAO(),n.bindElementBuffer.set(this.buffer),m.bufferData(m.ELEMENT_ARRAY_BUFFER,a.arrayBuffer,this.dynamicDraw?m.DYNAMIC_DRAW:m.STATIC_DRAW),this.dynamicDraw||delete a.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(n){const a=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),a.bufferSubData(a.ELEMENT_ARRAY_BUFFER,0,n.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}const au={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class lu{constructor(n,a,h,m){this.length=a.length,this.attributes=h,this.itemSize=a.bytesPerElement,this.dynamicDraw=m,this.context=n;const _=n.gl;this.buffer=_.createBuffer(),n.bindVertexBuffer.set(this.buffer),_.bufferData(_.ARRAY_BUFFER,a.arrayBuffer,this.dynamicDraw?_.DYNAMIC_DRAW:_.STATIC_DRAW),this.dynamicDraw||delete a.arrayBuffer}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(n){if(n.length!==this.length)throw new Error(`Length of new data is ${n.length}, which doesn't match current length of ${this.length}`);const a=this.context.gl;this.bind(),a.bufferSubData(a.ARRAY_BUFFER,0,n.arrayBuffer)}enableAttributes(n,a){for(let h=0;h0){const St=l.create(),ft=We;l.mul(St,qe.placementInvProjMatrix,d.transform.glCoordMatrix),l.mul(St,St,qe.placementViewportMatrix),N.push({circleArray:Ze,circleOffset:H,transform:ft,invTransform:St,coord:Be}),Z+=Ze.length/4,H=Z}ot&&z.draw(T,C.LINES,nn.disabled,zn.disabled,d.colorModeForRenderPass(),On.disabled,Mo(We,d.transform,De),d.style.terrain&&d.style.terrain.getTerrainData(Be),a.id,ot.layoutVertexBuffer,ot.indexBuffer,ot.segments,null,d.transform.zoom,null,null,ot.collisionVertexBuffer)}if(!w||!N.length)return;const se=d.useProgram("collisionCircle"),re=new l.CollisionCircleLayoutArray;re.resize(4*Z),re._trim();let ie=0;for(const le of N)for(let Be=0;Be=0&&(re[_e.associatedIconIndex]={shiftedAnchor:Xt,angle:Yt})}else At(_e.numGlyphs,H)}if(z){se.clear();const ie=d.icon.placedSymbolArray;for(let _e=0;_ed.style.terrain.getElevation(ot,Pu,gs):null,Fo=a.layout.get("text-rotation-alignment")==="map";$n(St,ot.posMatrix,d,m,fi,Gr,_e,z,Fo,mi)}const hr=d.translatePosMatrix(ot.posMatrix,Ze,_,w),Qt=Ee||m&&qe||nl?Yp:fi,_n=d.translatePosMatrix(Gr,Ze,_,w,!0),_r=Xt&&a.paint.get(m?"text-halo-width":"icon-halo-width").constantOr(1)!==0;let vr;vr=Xt?St.iconsInText?ih(Yt.kind,xn,ze,_e,d,hr,Qt,_n,hn,Ti):Va(Yt.kind,xn,ze,_e,d,hr,Qt,_n,m,hn,!0):iu(Yt.kind,xn,ze,_e,d,hr,Qt,_n,m,hn);const Un={program:vn,buffers:ft,uniformValues:vr,atlasTexture:bn,atlasTextureIcon:Ui,atlasInterpolation:yr,atlasInterpolationIcon:Ni,isSDF:Xt,hasHalo:_r};if(le&&St.canOverlap){Be=!0;const mi=ft.segments.get();for(const Fo of mi)We.push({segments:new l.SegmentVector([Fo]),sortKey:Fo.sortKey,state:Un,terrainData:ln})}else We.push({segments:ft.segments,sortKey:0,state:Un,terrainData:ln})}Be&&We.sort((ot,Ze)=>ot.sortKey-Ze.sortKey);for(const ot of We){const Ze=ot.state;if(H.activeTexture.set(se.TEXTURE0),Ze.atlasTexture.bind(Ze.atlasInterpolation,se.CLAMP_TO_EDGE),Ze.atlasTextureIcon&&(H.activeTexture.set(se.TEXTURE1),Ze.atlasTextureIcon&&Ze.atlasTextureIcon.bind(Ze.atlasInterpolationIcon,se.CLAMP_TO_EDGE)),Ze.isSDF){const St=Ze.uniformValues;Ze.hasHalo&&(St.u_is_halo=1,Js(Ze.buffers,ot.segments,a,d,Ze.program,De,N,Z,St,ot.terrainData)),St.u_is_halo=0}Js(Ze.buffers,ot.segments,a,d,Ze.program,De,N,Z,Ze.uniformValues,ot.terrainData)}}function Js(d,n,a,h,m,_,w,T,C,z){const N=h.context;m.draw(N,N.gl.TRIANGLES,_,w,T,On.disabled,C,z,a.id,d.layoutVertexBuffer,d.indexBuffer,n,a.paint,h.transform.zoom,d.programConfigurations.get(a.id),d.dynamicLayoutVertexBuffer,d.opacityVertexBuffer)}function Qs(d,n,a,h,m,_,w){const T=d.context.gl,C=a.paint.get("fill-pattern"),z=C&&C.constantOr(1),N=a.getCrossfadeParameters();let Z,H,se,re,ie;w?(H=z&&!a.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",Z=T.LINES):(H=z?"fillPattern":"fill",Z=T.TRIANGLES);for(const _e of h){const Ee=n.getTile(_e);if(z&&!Ee.patternsLoaded())continue;const ze=Ee.getBucket(a);if(!ze)continue;const le=ze.programConfigurations.get(a.id),Be=d.useProgram(H,le),De=d.style.terrain&&d.style.terrain.getTerrainData(_e);z&&(d.context.activeTexture.set(T.TEXTURE0),Ee.imageAtlasTexture.bind(T.LINEAR,T.CLAMP_TO_EDGE),le.updatePaintBuffers(N));const qe=C.constantOr(null);if(qe&&Ee.imageAtlas){const Ze=Ee.imageAtlas,St=Ze.patternPositions[qe.to.toString()],ft=Ze.patternPositions[qe.from.toString()];St&&ft&&le.setConstantPatternPositions(St,ft)}const We=De?_e:null,ot=d.translatePosMatrix(We?We.posMatrix:_e.posMatrix,Ee,a.paint.get("fill-translate"),a.paint.get("fill-translate-anchor"));if(w){re=ze.indexBuffer2,ie=ze.segments2;const Ze=[T.drawingBufferWidth,T.drawingBufferHeight];se=H==="fillOutlinePattern"&&z?eh(ot,d,N,Ee,Ze):Qc(ot,Ze)}else re=ze.indexBuffer,ie=ze.segments,se=z?nu(ot,d,N,Ee):Fa(ot);Be.draw(d.context,Z,m,d.stencilModeForClipping(_e),_,On.disabled,se,De,a.id,ze.layoutVertexBuffer,re,ie,a.paint,d.transform.zoom,le)}}function ea(d,n,a,h,m,_,w){const T=d.context,C=T.gl,z=a.paint.get("fill-extrusion-pattern"),N=z.constantOr(1),Z=a.getCrossfadeParameters(),H=a.paint.get("fill-extrusion-opacity");for(const se of h){const re=n.getTile(se),ie=re.getBucket(a);if(!ie)continue;const _e=d.style.terrain&&d.style.terrain.getTerrainData(se),Ee=ie.programConfigurations.get(a.id),ze=d.useProgram(N?"fillExtrusionPattern":"fillExtrusion",Ee);N&&(d.context.activeTexture.set(C.TEXTURE0),re.imageAtlasTexture.bind(C.LINEAR,C.CLAMP_TO_EDGE),Ee.updatePaintBuffers(Z));const le=z.constantOr(null);if(le&&re.imageAtlas){const We=re.imageAtlas,ot=We.patternPositions[le.to.toString()],Ze=We.patternPositions[le.from.toString()];ot&&Ze&&Ee.setConstantPatternPositions(ot,Ze)}const Be=d.translatePosMatrix(se.posMatrix,re,a.paint.get("fill-extrusion-translate"),a.paint.get("fill-extrusion-translate-anchor")),De=a.paint.get("fill-extrusion-vertical-gradient"),qe=N?Vp(Be,d,De,H,se,Z,re):tu(Be,d,De,H);ze.draw(T,T.gl.TRIANGLES,m,_,w,On.backCCW,qe,_e,a.id,ie.layoutVertexBuffer,ie.indexBuffer,ie.segments,a.paint,d.transform.zoom,Ee,d.style.terrain&&ie.centroidVertexBuffer)}}function yu(d,n,a,h,m,_,w){const T=d.context,C=T.gl,z=a.fbo;if(!z)return;const N=d.useProgram("hillshade"),Z=d.style.terrain&&d.style.terrain.getTerrainData(n);T.activeTexture.set(C.TEXTURE0),C.bindTexture(C.TEXTURE_2D,z.colorAttachment.get()),N.draw(T,C.TRIANGLES,m,_,w,On.disabled,((H,se,re,ie)=>{const _e=re.paint.get("hillshade-shadow-color"),Ee=re.paint.get("hillshade-highlight-color"),ze=re.paint.get("hillshade-accent-color");let le=re.paint.get("hillshade-illumination-direction")*(Math.PI/180);re.paint.get("hillshade-illumination-anchor")==="viewport"&&(le-=H.transform.angle);const Be=!H.options.moving;return{u_matrix:ie?ie.posMatrix:H.transform.calculatePosMatrix(se.tileID.toUnwrapped(),Be),u_image:0,u_latrange:Na(0,se.tileID),u_light:[re.paint.get("hillshade-exaggeration"),le],u_shadow:_e,u_highlight:Ee,u_accent:ze}})(d,a,h,Z?n:null),Z,h.id,d.rasterBoundsBuffer,d.quadTriangleIndexBuffer,d.rasterBoundsSegments)}function fh(d,n,a,h,m,_){const w=d.context,T=w.gl,C=n.dem;if(C&&C.data){const z=C.dim,N=C.stride,Z=C.getPixels();if(w.activeTexture.set(T.TEXTURE1),w.pixelStoreUnpackPremultiplyAlpha.set(!1),n.demTexture=n.demTexture||d.getTileTexture(N),n.demTexture){const se=n.demTexture;se.update(Z,{premultiply:!1}),se.bind(T.NEAREST,T.CLAMP_TO_EDGE)}else n.demTexture=new O(w,Z,T.RGBA,{premultiply:!1}),n.demTexture.bind(T.NEAREST,T.CLAMP_TO_EDGE);w.activeTexture.set(T.TEXTURE0);let H=n.fbo;if(!H){const se=new O(w,{width:z,height:z,data:null},T.RGBA);se.bind(T.LINEAR,T.CLAMP_TO_EDGE),H=n.fbo=w.createFramebuffer(z,z,!0),H.colorAttachment.set(se.texture)}w.bindFramebuffer.set(H.framebuffer),w.viewport.set([0,0,z,z]),d.useProgram("hillshadePrepare").draw(w,T.TRIANGLES,h,m,_,On.disabled,((se,re)=>{const ie=re.stride,_e=l.create();return l.ortho(_e,0,l.EXTENT,-l.EXTENT,0,0,1),l.translate(_e,_e,[0,-l.EXTENT,0]),{u_matrix:_e,u_image:1,u_dimension:[ie,ie],u_zoom:se.overscaledZ,u_unpack:re.getUnpackVector()}})(n.tileID,C),null,a.id,d.rasterBoundsBuffer,d.quadTriangleIndexBuffer,d.rasterBoundsSegments),n.needsHillshadePrepare=!1}}function Xa(d,n,a,h,m,_){const w=h.paint.get("raster-fade-duration");if(!_&&w>0){const T=l.exported.now(),C=(T-d.timeAdded)/w,z=n?(T-n.timeAdded)/w:-1,N=a.getSource(),Z=m.coveringZoomLevel({tileSize:N.tileSize,roundZoom:N.roundZoom}),H=!n||Math.abs(n.tileID.overscaledZ-Z)>Math.abs(d.tileID.overscaledZ-Z),se=H&&d.refreshedUponExpiration?1:l.clamp(H?C:1-z,0,1);return d.refreshedUponExpiration&&C>=1&&(d.refreshedUponExpiration=!1),n?{opacity:1,mix:1-se}:{opacity:se,mix:0}}return{opacity:1,mix:0}}const Ka=new l.Color(1,0,0,1),Ei=new l.Color(0,1,0,1),mh=new l.Color(0,0,1,1),_u=new l.Color(1,0,1,1),gh=new l.Color(0,1,1,1);function Ro(d,n,a,h){hs(d,0,n+a/2,d.transform.width,a,h)}function ta(d,n,a,h){hs(d,n-a/2,0,a,d.transform.height,h)}function hs(d,n,a,h,m,_){const w=d.context,T=w.gl;T.enable(T.SCISSOR_TEST),T.scissor(n*d.pixelRatio,a*d.pixelRatio,h*d.pixelRatio,m*d.pixelRatio),w.clear({color:_}),T.disable(T.SCISSOR_TEST)}function ef(d,n,a){const h=d.context,m=h.gl,_=a.posMatrix,w=d.useProgram("debug"),T=nn.disabled,C=zn.disabled,z=d.colorModeForRenderPass(),N="$debug",Z=d.style.terrain&&d.style.terrain.getTerrainData(a);h.activeTexture.set(m.TEXTURE0),d.emptyTexture.bind(m.LINEAR,m.CLAMP_TO_EDGE);const H=n.getTileByID(a.key).latestRawTileData,se=Math.floor((H&&H.byteLength||0)/1024),re=n.getTile(a).tileSize,ie=512/Math.min(re,512)*(a.overscaledZ/d.transform.zoom)*.5;let _e=a.canonical.toString();a.overscaledZ!==a.canonical.z&&(_e+=` => ${a.overscaledZ}`),function(Ee,ze){Ee.initDebugOverlayCanvas();const le=Ee.debugOverlayCanvas,Be=Ee.context.gl,De=Ee.debugOverlayCanvas.getContext("2d");De.clearRect(0,0,le.width,le.height),De.shadowColor="white",De.shadowBlur=2,De.lineWidth=1.5,De.strokeStyle="white",De.textBaseline="top",De.font="bold 36px Open Sans, sans-serif",De.fillText(ze,5,5),De.strokeText(ze,5,5),Ee.debugOverlayTexture.update(le),Ee.debugOverlayTexture.bind(Be.LINEAR,Be.CLAMP_TO_EDGE)}(d,`${_e} ${se}kB`),w.draw(h,m.TRIANGLES,T,C,Dn.alphaBlended,On.disabled,qs(_,l.Color.transparent,ie),null,N,d.debugBuffer,d.quadTriangleIndexBuffer,d.debugSegments),w.draw(h,m.LINE_STRIP,T,C,z,On.disabled,qs(_,l.Color.red),Z,N,d.debugBuffer,d.tileBorderIndexBuffer,d.debugSegments)}function Ya(d,n,a){const h=d.context,m=h.gl,_=d.colorModeForRenderPass(),w=new nn(m.LEQUAL,nn.ReadWrite,d.depthRangeFor3D),T=d.useProgram("terrain"),C=n.getTerrainMesh(),z=n.getTerrainData(a.tileID);h.bindFramebuffer.set(null),h.viewport.set([0,0,d.width,d.height]),h.activeTexture.set(m.TEXTURE0),m.bindTexture(m.TEXTURE_2D,n.getRTTFramebuffer().colorAttachment.get());const N=d.transform.calculatePosMatrix(a.tileID.toUnwrapped());T.draw(h,m.TRIANGLES,w,zn.disabled,_,On.backCCW,{u_matrix:N,u_texture:0},z,"terrain",C.vertexBuffer,C.indexBuffer,C.segments)}function yh(d,n,a,h){const m=d.context,_=a.tileSize*n.qualityFactor;a.textures[h]||(a.textures[h]=d.getTileTexture(_)||new O(m,{width:_,height:_,data:null},m.gl.RGBA),a.textures[h].bind(m.gl.LINEAR,m.gl.CLAMP_TO_EDGE),h===0&&n.sourceCache.renderHistory.unshift(a.tileID.key));const w=n.getRTTFramebuffer();w.colorAttachment.set(a.textures[h].texture),m.bindFramebuffer.set(w.framebuffer),m.viewport.set([0,0,_,_])}class _h{constructor(n){this._coordsDescendingInv={},this._coordsDescendingInvStr={},this.painter=n,this._renderToTexture={background:!0,fill:!0,line:!0,raster:!0},this._coordsDescendingInv={},this._coordsDescendingInvStr={},this._stacks=[],this._prevType=null,this._rerender={},this._renderableTiles=n.style.terrain.sourceCache.getRenderableTiles(),this._init()}_init(){const n=this.painter.style,a=n.terrain;for(const h in n.sourceCaches){this._coordsDescendingInv[h]={};const m=n.sourceCaches[h].getVisibleCoordinates();for(const _ of m){const w=a.sourceCache.getTerrainCoords(_);for(const T in w)this._coordsDescendingInv[h][T]||(this._coordsDescendingInv[h][T]=[]),this._coordsDescendingInv[h][T].push(w[T])}}for(const h of n._order){const m=n._layers[h],_=m.source;if(this._renderToTexture[m.type]&&!this._coordsDescendingInvStr[_]){this._coordsDescendingInvStr[_]={};for(const w in this._coordsDescendingInv[_])this._coordsDescendingInvStr[_][w]=this._coordsDescendingInv[_][w].map(T=>T.key).sort().join()}}return this._renderableTiles.forEach(h=>{for(const m in this._coordsDescendingInvStr){const _=this._coordsDescendingInvStr[m][h.tileID.key];_&&_!==h.textureCoords[m]&&h.clearTextures(this.painter),a.needsRerender(m,h.tileID)&&h.clearTextures(this.painter)}this._rerender[h.tileID.key]=!h.textures.length}),a.clearRerenderCache(),a.sourceCache.removeOutdated(this.painter),this}renderLayer(n){const a=n.type,h=this.painter,m=h.style._order,_=h.currentLayer,w=_+1===m.length;if(this._renderToTexture[a]&&(this._prevType&&this._renderToTexture[this._prevType]||this._stacks.push([]),this._prevType=a,this._stacks[this._stacks.length-1].push(m[_]),!w))return!0;if(this._renderToTexture[this._prevType]||a==="hillshade"||this._renderToTexture[a]&&w){this._prevType=a;const T=this._stacks.length-1,C=this._stacks[T]||[];for(const z of this._renderableTiles){if(yh(h,h.style.terrain,z,T),this._rerender[z.tileID.key]){h.context.clear({color:l.Color.transparent});for(let N=0;NC.style.terrain.getElevation(Ee,Ze,St):null)}}}(h,d,a,n,a.layout.get("text-rotation-alignment"),a.layout.get("text-pitch-alignment"),m),a.paint.get("icon-opacity").constantOr(1)!==0&&Ha(d,n,a,h,!1,a.paint.get("icon-translate"),a.paint.get("icon-translate-anchor"),a.layout.get("icon-rotation-alignment"),a.layout.get("icon-pitch-alignment"),a.layout.get("icon-keep-upright"),_,w),a.paint.get("text-opacity").constantOr(1)!==0&&Ha(d,n,a,h,!0,a.paint.get("text-translate"),a.paint.get("text-translate-anchor"),a.layout.get("text-rotation-alignment"),a.layout.get("text-pitch-alignment"),a.layout.get("text-keep-upright"),_,w),n.map.showCollisionBoxes&&(cs(d,n,a,h,a.paint.get("text-translate"),a.paint.get("text-translate-anchor"),!0),cs(d,n,a,h,a.paint.get("icon-translate"),a.paint.get("icon-translate-anchor"),!1))},circle:function(d,n,a,h){if(d.renderPass!=="translucent")return;const m=a.paint.get("circle-opacity"),_=a.paint.get("circle-stroke-width"),w=a.paint.get("circle-stroke-opacity"),T=!a.layout.get("circle-sort-key").isConstant();if(m.constantOr(1)===0&&(_.constantOr(1)===0||w.constantOr(1)===0))return;const C=d.context,z=C.gl,N=d.depthModeForSublayer(0,nn.ReadOnly),Z=zn.disabled,H=d.colorModeForRenderPass(),se=[];for(let re=0;rere.sortKey-ie.sortKey);for(const re of se){const{programConfiguration:ie,program:_e,layoutVertexBuffer:Ee,indexBuffer:ze,uniformValues:le,terrainData:Be}=re.state;_e.draw(C,z.TRIANGLES,N,Z,H,On.disabled,le,Be,a.id,Ee,ze,re.segments,a.paint,d.transform.zoom,ie)}},heatmap:function(d,n,a,h){if(a.paint.get("heatmap-opacity")!==0)if(d.renderPass==="offscreen"){const m=d.context,_=m.gl,w=zn.disabled,T=new Dn([_.ONE,_.ONE],l.Color.transparent,[!0,!0,!0,!0]);(function(C,z,N){const Z=C.gl;C.activeTexture.set(Z.TEXTURE1),C.viewport.set([0,0,z.width/4,z.height/4]);let H=N.heatmapFbo;if(H)Z.bindTexture(Z.TEXTURE_2D,H.colorAttachment.get()),C.bindFramebuffer.set(H.framebuffer);else{const se=Z.createTexture();Z.bindTexture(Z.TEXTURE_2D,se),Z.texParameteri(Z.TEXTURE_2D,Z.TEXTURE_WRAP_S,Z.CLAMP_TO_EDGE),Z.texParameteri(Z.TEXTURE_2D,Z.TEXTURE_WRAP_T,Z.CLAMP_TO_EDGE),Z.texParameteri(Z.TEXTURE_2D,Z.TEXTURE_MIN_FILTER,Z.LINEAR),Z.texParameteri(Z.TEXTURE_2D,Z.TEXTURE_MAG_FILTER,Z.LINEAR),H=N.heatmapFbo=C.createFramebuffer(z.width/4,z.height/4,!1),function(re,ie,_e,Ee){const ze=re.gl;ze.texImage2D(ze.TEXTURE_2D,0,ze.RGBA,ie.width/4,ie.height/4,0,ze.RGBA,re.extRenderToTextureHalfFloat?re.extTextureHalfFloat.HALF_FLOAT_OES:ze.UNSIGNED_BYTE,null),Ee.colorAttachment.set(_e)}(C,z,se,H)}})(m,d,a),m.clear({color:l.Color.transparent});for(let C=0;C{const re=l.create();l.ortho(re,0,N.width,N.height,0,0,1);const ie=N.context.gl;return{u_matrix:re,u_world:[ie.drawingBufferWidth,ie.drawingBufferHeight],u_image:0,u_color_ramp:1,u_opacity:Z.paint.get("heatmap-opacity")}})(m,_),null,_.id,m.viewportBuffer,m.quadTriangleIndexBuffer,m.viewportSegments,_.paint,m.transform.zoom)}(d,a))},line:function(d,n,a,h){if(d.renderPass!=="translucent")return;const m=a.paint.get("line-opacity"),_=a.paint.get("line-width");if(m.constantOr(1)===0||_.constantOr(1)===0)return;const w=d.depthModeForSublayer(0,nn.ReadOnly),T=d.colorModeForRenderPass(),C=a.paint.get("line-dasharray"),z=a.paint.get("line-pattern"),N=z.constantOr(1),Z=a.paint.get("line-gradient"),H=a.getCrossfadeParameters(),se=N?"linePattern":C?"lineSDF":Z?"lineGradient":"line",re=d.context,ie=re.gl;let _e=!0;for(const Ee of h){const ze=n.getTile(Ee);if(N&&!ze.patternsLoaded())continue;const le=ze.getBucket(a);if(!le)continue;const Be=le.programConfigurations.get(a.id),De=d.context.program.get(),qe=d.useProgram(se,Be),We=_e||qe.program!==De,ot=d.style.terrain&&d.style.terrain.getTerrainData(Ee),Ze=z.constantOr(null);if(Ze&&ze.imageAtlas){const Et=ze.imageAtlas,Xt=Et.patternPositions[Ze.to.toString()],Yt=Et.patternPositions[Ze.from.toString()];Xt&&Yt&&Be.setConstantPatternPositions(Xt,Yt)}const St=ot?Ee:null,ft=N?Ua(d,ze,a,H,St):C?Ws(d,ze,a,C,H,St):Z?ru(d,ze,a,le.lineClipsArray.length,St):ss(d,ze,a,St);if(N)re.activeTexture.set(ie.TEXTURE0),ze.imageAtlasTexture.bind(ie.LINEAR,ie.CLAMP_TO_EDGE),Be.updatePaintBuffers(H);else if(C&&(We||d.lineAtlas.dirty))re.activeTexture.set(ie.TEXTURE0),d.lineAtlas.bind(re);else if(Z){const Et=le.gradients[a.id];let Xt=Et.texture;if(a.gradientVersion!==Et.version){let Yt=256;if(a.stepInterpolant){const Ft=n.getSource().maxzoom,vn=Ee.canonical.z===Ft?Math.ceil(1<256&&this.clearStencil(),h.setColorMode(Dn.disabled),h.setDepthMode(nn.disabled);const _=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(const w of a){const T=this._tileClippingMaskIDs[w.key]=this.nextStencilID++,C=this.style.terrain&&this.style.terrain.getTerrainData(w);_.draw(h,m.TRIANGLES,nn.disabled,new zn({func:m.ALWAYS,mask:0},T,255,m.KEEP,m.KEEP,m.REPLACE),Dn.disabled,On.disabled,os(w.posMatrix),C,"$clipping",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();const n=this.nextStencilID++,a=this.context.gl;return new zn({func:a.NOTEQUAL,mask:255},n,255,a.KEEP,a.KEEP,a.REPLACE)}stencilModeForClipping(n){const a=this.context.gl;return new zn({func:a.EQUAL,mask:255},this._tileClippingMaskIDs[n.key],0,a.KEEP,a.KEEP,a.REPLACE)}stencilConfigForOverlap(n){const a=this.context.gl,h=n.sort((w,T)=>T.overscaledZ-w.overscaledZ),m=h[h.length-1].overscaledZ,_=h[0].overscaledZ-m+1;if(_>1){this.currentStencilSource=void 0,this.nextStencilID+_>256&&this.clearStencil();const w={};for(let T=0;T<_;T++)w[T+m]=new zn({func:a.GEQUAL,mask:255},T+this.nextStencilID,255,a.KEEP,a.KEEP,a.REPLACE);return this.nextStencilID+=_,[w,h]}return[{[m]:zn.disabled},h]}colorModeForRenderPass(){const n=this.context.gl;return this._showOverdrawInspector?new Dn([n.CONSTANT_COLOR,n.ONE],new l.Color(.125,.125,.125,0),[!0,!0,!0,!0]):this.renderPass==="opaque"?Dn.unblended:Dn.alphaBlended}depthModeForSublayer(n,a,h){if(!this.opaquePassEnabledForLayer())return nn.disabled;const m=1-((1+this.currentLayer)*this.numSublayers+n)*this.depthEpsilon;return new nn(h||this.context.gl.LEQUAL,a,[m,m])}opaquePassEnabledForLayer(){return this.currentLayer=0;this.currentLayer--){const z=this.style._layers[h[this.currentLayer]],N=m[z.source],Z=w[z.source];this._renderTileClippingMasks(z,Z),this.renderLayer(this,N,z,Z)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayer{Z.source&&!Z.isHidden(this.transform.zoom)&&(Z.source!==(N&&N.id)&&(N=this.style.sourceCaches[Z.source]),(!z||z.getSource().maxzoom0?a.pop():null}isPatternMissing(n){if(!n)return!1;if(!n.from||!n.to)return!0;const a=this.imageManager.getPattern(n.from.toString()),h=this.imageManager.getPattern(n.to.toString());return!a||!h}useProgram(n,a){this.cache=this.cache||{};const h=n+(a?a.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"")+(this.style.terrain?"/terrain":"");return this.cache[h]||(this.cache[h]=new Yc(this.context,n,Zs[n],a,ou[n],this._showOverdrawInspector,this.style.terrain)),this.cache[h]}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 n=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(n.FUNC_ADD)}initDebugOverlayCanvas(){this.debugOverlayCanvas==null&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new O(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()}}class Ja{constructor(n,a){this.points=n,this.planes=a}static fromInvProjectionMatrix(n,a,h){const m=Math.pow(2,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(T=>{const C=1/(T=l.transformMat4([],T,n))[3]/a*m;return l.mul$1(T,T,[C,C,1/T[3],C])}),w=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(T=>{const C=l.sub([],_[T[0]],_[T[1]]),z=l.sub([],_[T[2]],_[T[1]]),N=l.normalize([],l.cross([],C,z)),Z=-l.dot(N,_[T[1]]);return N.concat(Z)});return new Ja(_,w)}}class ra{constructor(n,a){this.min=n,this.max=a,this.center=l.scale$1([],l.add([],this.min,this.max),.5)}quadrant(n){const a=[n%2==0,n<2],h=l.clone$2(this.min),m=l.clone$2(this.max);for(let _=0;_=0&&w++;if(w===0)return 0;w!==a.length&&(h=!1)}if(h)return 2;for(let m=0;m<3;m++){let _=Number.MAX_VALUE,w=-Number.MAX_VALUE;for(let T=0;Tthis.max[m]-this.min[m])return 0}return 1}}class ds{constructor(n=0,a=0,h=0,m=0){if(isNaN(n)||n<0||isNaN(a)||a<0||isNaN(h)||h<0||isNaN(m)||m<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=n,this.bottom=a,this.left=h,this.right=m}interpolate(n,a,h){return a.top!=null&&n.top!=null&&(this.top=l.number(n.top,a.top,h)),a.bottom!=null&&n.bottom!=null&&(this.bottom=l.number(n.bottom,a.bottom,h)),a.left!=null&&n.left!=null&&(this.left=l.number(n.left,a.left,h)),a.right!=null&&n.right!=null&&(this.right=l.number(n.right,a.right,h)),this}getCenter(n,a){const h=l.clamp((this.left+n-this.right)/2,0,n),m=l.clamp((this.top+a-this.bottom)/2,0,a);return new l.pointGeometry(h,m)}equals(n){return this.top===n.top&&this.bottom===n.bottom&&this.left===n.left&&this.right===n.right}clone(){return new ds(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}class ia{constructor(n,a,h,m,_){this.tileSize=512,this.maxValidLatitude=85.051129,this.freezeElevation=!1,this._renderWorldCopies=_===void 0||!!_,this._minZoom=n||0,this._maxZoom=a||22,this._minPitch=h??0,this._maxPitch=m??60,this.setMaxBounds(),this.width=0,this.height=0,this._center=new l.LngLat(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new ds,this._posMatrixCache={},this._alignedPosMatrixCache={}}clone(){const n=new ia(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return n.tileSize=this.tileSize,n.latRange=this.latRange,n.width=this.width,n.height=this.height,n._center=this._center,n._elevation=this._elevation,n.zoom=this.zoom,n.angle=this.angle,n._fov=this._fov,n._pitch=this._pitch,n._unmodified=this._unmodified,n._edgeInsets=this._edgeInsets.clone(),n._calcMatrices(),n}get minZoom(){return this._minZoom}set minZoom(n){this._minZoom!==n&&(this._minZoom=n,this.zoom=Math.max(this.zoom,n))}get maxZoom(){return this._maxZoom}set maxZoom(n){this._maxZoom!==n&&(this._maxZoom=n,this.zoom=Math.min(this.zoom,n))}get minPitch(){return this._minPitch}set minPitch(n){this._minPitch!==n&&(this._minPitch=n,this.pitch=Math.max(this.pitch,n))}get maxPitch(){return this._maxPitch}set maxPitch(n){this._maxPitch!==n&&(this._maxPitch=n,this.pitch=Math.min(this.pitch,n))}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(n){n===void 0?n=!0:n===null&&(n=!1),this._renderWorldCopies=n}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new l.pointGeometry(this.width,this.height)}get bearing(){return-this.angle/Math.PI*180}set bearing(n){const a=-l.wrap(n,-180,180)*Math.PI/180;var h;this.angle!==a&&(this._unmodified=!1,this.angle=a,this._calcMatrices(),this.rotationMatrix=(h=new l.ARRAY_TYPE(4),l.ARRAY_TYPE!=Float32Array&&(h[1]=0,h[2]=0),h[0]=1,h[3]=1,h),function(m,_,w){var T=_[0],C=_[1],z=_[2],N=_[3],Z=Math.sin(w),H=Math.cos(w);m[0]=T*H+z*Z,m[1]=C*H+N*Z,m[2]=T*-Z+z*H,m[3]=C*-Z+N*H}(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(n){const a=l.clamp(n,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==a&&(this._unmodified=!1,this._pitch=a,this._calcMatrices())}get fov(){return this._fov/Math.PI*180}set fov(n){n=Math.max(.01,Math.min(60,n)),this._fov!==n&&(this._unmodified=!1,this._fov=n/180*Math.PI,this._calcMatrices())}get zoom(){return this._zoom}set zoom(n){const a=Math.min(Math.max(n,this.minZoom),this.maxZoom);this._zoom!==a&&(this._unmodified=!1,this._zoom=a,this.scale=this.zoomScale(a),this.tileZoom=Math.floor(a),this.zoomFraction=a-this.tileZoom,this._constrain(),this._calcMatrices())}get center(){return this._center}set center(n){n.lat===this._center.lat&&n.lng===this._center.lng||(this._unmodified=!1,this._center=n,this._constrain(),this._calcMatrices())}get elevation(){return this._elevation}set elevation(n){n!==this._elevation&&(this._elevation=n,this._constrain(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}set padding(n){this._edgeInsets.equals(n)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,n,1),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(n){return this._edgeInsets.equals(n)}interpolatePadding(n,a,h){this._unmodified=!1,this._edgeInsets.interpolate(n,a,h),this._constrain(),this._calcMatrices()}coveringZoomLevel(n){const a=(n.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/n.tileSize));return Math.max(0,a)}getVisibleUnwrappedCoordinates(n){const a=[new l.UnwrappedTileID(0,n)];if(this._renderWorldCopies){const h=this.pointCoordinate(new l.pointGeometry(0,0)),m=this.pointCoordinate(new l.pointGeometry(this.width,0)),_=this.pointCoordinate(new l.pointGeometry(this.width,this.height)),w=this.pointCoordinate(new l.pointGeometry(0,this.height)),T=Math.floor(Math.min(h.x,m.x,_.x,w.x)),C=Math.floor(Math.max(h.x,m.x,_.x,w.x)),z=1;for(let N=T-z;N<=C+z;N++)N!==0&&a.push(new l.UnwrappedTileID(N,n))}return a}coveringTiles(n){var a,h;let m=this.coveringZoomLevel(n);const _=m;if(n.minzoom!==void 0&&mn.maxzoom&&(m=n.maxzoom);const w=this.pointCoordinate(this.getCameraPoint()),T=l.MercatorCoordinate.fromLngLat(this.center),C=Math.pow(2,m),z=[C*w.x,C*w.y,0],N=[C*T.x,C*T.y,0],Z=Ja.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,m);let H=n.minzoom||0;!n.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(H=m);const se=n.terrain?2/Math.min(this.tileSize,n.tileSize)*this.tileSize:3,re=le=>({aabb:new ra([le*C,0,0],[(le+1)*C,C,0]),zoom:0,x:0,y:0,wrap:le,fullyVisible:!1}),ie=[],_e=[],Ee=m,ze=n.reparseOverscaled?_:m;if(this._renderWorldCopies)for(let le=1;le<=3;le++)ie.push(re(-le)),ie.push(re(le));for(ie.push(re(0));ie.length>0;){const le=ie.pop(),Be=le.x,De=le.y;let qe=le.fullyVisible;if(!qe){const Et=le.aabb.intersects(Z);if(Et===0)continue;qe=Et===2}const We=n.terrain?z:N,ot=le.aabb.distanceX(We),Ze=le.aabb.distanceY(We),St=Math.max(Math.abs(ot),Math.abs(Ze)),ft=se+(1<ft&&le.zoom>=H){const Et=Ee-le.zoom,Xt=z[0]-.5-(Be<>1),Ft=le.zoom+1;let vn=le.aabb.quadrant(Et);if(n.terrain){const xn=new l.OverscaledTileID(Ft,le.wrap,Ft,Xt,Yt),ln=n.terrain.getMinMaxElevation(xn),hn=(a=ln.minElevation)!==null&&a!==void 0?a:this.elevation,bn=(h=ln.maxElevation)!==null&&h!==void 0?h:this.elevation;vn=new ra([vn.min[0],vn.min[1],hn],[vn.max[0],vn.max[1],bn])}ie.push({aabb:vn,zoom:Ft,x:Xt,y:Yt,wrap:le.wrap,fullyVisible:qe})}}return _e.sort((le,Be)=>le.distanceSq-Be.distanceSq).map(le=>le.tileID)}resize(n,a){this.width=n,this.height=a,this.pixelsToGLUnits=[2/n,-2/a],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(n){return Math.pow(2,n)}scaleZoom(n){return Math.log(n)/Math.LN2}project(n){const a=l.clamp(n.lat,-this.maxValidLatitude,this.maxValidLatitude);return new l.pointGeometry(l.mercatorXfromLng(n.lng)*this.worldSize,l.mercatorYfromLat(a)*this.worldSize)}unproject(n){return new l.MercatorCoordinate(n.x/this.worldSize,n.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}updateElevation(n){this.freezeElevation||(this.elevation=n?this.getElevation(this._center,n):0)}getElevation(n,a){const h=l.MercatorCoordinate.fromLngLat(n),m=(1<w&&(m=w-re)}if(this.lngRange){const se=(T+C)/2,re=l.wrap(Z.x,se-this.worldSize/2,se+this.worldSize/2),ie=z.x/2;re-ieC&&(h=C-ie)}h===void 0&&m===void 0||(this.center=this.unproject(new l.pointGeometry(h!==void 0?h:Z.x,m!==void 0?m:Z.y)).wrap()),this._unmodified=N,this._constraining=!1}_calcMatrices(){if(!this.height)return;const n=this.centerOffset,a=this.point.x,h=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=l.mercatorZfromAltitude(1,this.center.lat)*this.worldSize;let m=l.identity(new Float64Array(16));l.scale(m,m,[this.width/2,-this.height/2,1]),l.translate(m,m,[1,-1,0]),this.labelPlaneMatrix=m,m=l.identity(new Float64Array(16)),l.scale(m,m,[1,-1,1]),l.translate(m,m,[-1,-1,0]),l.scale(m,m,[2/this.width,2/this.height,1]),this.glCoordMatrix=m,this.cameraToSeaLevelDistance=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch);const _=Math.PI/2+this._pitch,w=this._fov*(.5+n.y/this.height),T=Math.sin(w)*this.cameraToSeaLevelDistance/Math.sin(l.clamp(Math.PI-_-w,.01,Math.PI-.01)),C=this.getHorizon(),z=2*Math.atan(C/this.cameraToCenterDistance)*(.5+n.y/(2*C)),N=Math.sin(z)*this.cameraToSeaLevelDistance/Math.sin(l.clamp(Math.PI-_-z,.01,Math.PI-.01)),Z=Math.cos(Math.PI/2-this._pitch)*T+this.cameraToSeaLevelDistance,H=Math.cos(Math.PI/2-this._pitch)*N+this.cameraToSeaLevelDistance,se=1.01*Math.min(Z,H),re=this.height/50;m=new Float64Array(16),l.perspective(m,this._fov,this.width/this.height,re,se),m[8]=2*-n.x/this.width,m[9]=2*n.y/this.height,l.scale(m,m,[1,-1,1]),l.translate(m,m,[0,0,-this.cameraToCenterDistance]),l.rotateX(m,m,this._pitch),l.rotateZ(m,m,this.angle),l.translate(m,m,[-a,-h,0]),this.mercatorMatrix=l.scale([],m,[this.worldSize,this.worldSize,this.worldSize]),l.scale(m,m,[1,1,this._pixelPerMeter]),this.pixelMatrix=l.multiply(new Float64Array(16),this.labelPlaneMatrix,m),l.translate(m,m,[0,0,-this.elevation]),this.projMatrix=m,this.invProjMatrix=l.invert([],m),this.pixelMatrix3D=l.multiply(new Float64Array(16),this.labelPlaneMatrix,m);const ie=this.width%2/2,_e=this.height%2/2,Ee=Math.cos(this.angle),ze=Math.sin(this.angle),le=a-Math.round(a)+Ee*ie+ze*_e,Be=h-Math.round(h)+Ee*_e+ze*ie,De=new Float64Array(m);if(l.translate(De,De,[le>.5?le-1:le,Be>.5?Be-1:Be,0]),this.alignedProjMatrix=De,m=l.invert(new Float64Array(16),this.pixelMatrix),!m)throw new Error("failed to invert matrix");this.pixelMatrixInverse=m,this._posMatrixCache={},this._alignedPosMatrixCache={}}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;const n=this.pointCoordinate(new l.pointGeometry(0,0)),a=[n.x*this.worldSize,n.y*this.worldSize,0,1];return l.transformMat4(a,a,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){const n=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new l.pointGeometry(0,n))}getCameraQueryGeometry(n){const a=this.getCameraPoint();if(n.length===1)return[n[0],a];{let h=a.x,m=a.y,_=a.x,w=a.y;for(const T of n)h=Math.min(h,T.x),m=Math.min(m,T.y),_=Math.max(_,T.x),w=Math.max(w,T.y);return[new l.pointGeometry(h,m),new l.pointGeometry(_,m),new l.pointGeometry(_,w),new l.pointGeometry(h,w),new l.pointGeometry(h,m)]}}}class vh{constructor(n){this._hashName=n&&encodeURIComponent(n),l.bindAll(["_getCurrentHash","_onHashChange","_updateHash"],this),this._updateHash=function(a,h){let m=!1,_=null;const w=()=>{_=null,m&&(a(),_=setTimeout(w,300),m=!1)};return()=>(m=!0,_||w(),_)}(this._updateHashUnthrottled.bind(this))}addTo(n){return this._map=n,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(n){const a=this._map.getCenter(),h=Math.round(100*this._map.getZoom())/100,m=Math.ceil((h*Math.LN2+Math.log(512/360/.5))/Math.LN10),_=Math.pow(10,m),w=Math.round(a.lng*_)/_,T=Math.round(a.lat*_)/_,C=this._map.getBearing(),z=this._map.getPitch();let N="";if(N+=n?`/${w}/${T}/${h}`:`${h}/${T}/${w}`,(C||z)&&(N+="/"+Math.round(10*C)/10),z&&(N+=`/${Math.round(z)}`),this._hashName){const Z=this._hashName;let H=!1;const se=window.location.hash.slice(1).split("&").map(re=>{const ie=re.split("=")[0];return ie===Z?(H=!0,`${ie}=${N}`):re}).filter(re=>re);return H||se.push(`${Z}=${N}`),`#${se.join("&")}`}return`#${N}`}_getCurrentHash(){const n=window.location.hash.replace("#","");if(this._hashName){let a;return n.split("&").map(h=>h.split("=")).forEach(h=>{h[0]===this._hashName&&(a=h)}),(a&&a[1]||"").split("/")}return n.split("/")}_onHashChange(){const n=this._getCurrentHash();if(n.length>=3&&!n.some(a=>isNaN(a))){const a=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:a,pitch:+(n[4]||0)}),!0}return!1}_updateHashUnthrottled(){const n=window.location.href.replace(/(#.+)?$/,this.getHashString());try{window.history.replaceState(window.history.state,null,n)}catch{}}}const oa={linearity:.3,easing:l.bezier(0,0,.3,1)},xh=l.extend({deceleration:2500,maxSpeed:1400},oa),wh=l.extend({deceleration:20,maxSpeed:1400},oa),bh=l.extend({deceleration:1e3,maxSpeed:360},oa),ps=l.extend({deceleration:1e3,maxSpeed:90},oa);class Sh{constructor(n){this._map=n,this.clear()}clear(){this._inertiaBuffer=[]}record(n){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:l.exported.now(),settings:n})}_drainInertiaBuffer(){const n=this._inertiaBuffer,a=l.exported.now();for(;n.length>0&&a-n[0].time>160;)n.shift()}_onMoveEnd(n){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;const a={zoom:0,bearing:0,pitch:0,pan:new l.pointGeometry(0,0),pinchAround:void 0,around:void 0};for(const{settings:_}of this._inertiaBuffer)a.zoom+=_.zoomDelta||0,a.bearing+=_.bearingDelta||0,a.pitch+=_.pitchDelta||0,_.panDelta&&a.pan._add(_.panDelta),_.around&&(a.around=_.around),_.pinchAround&&(a.pinchAround=_.pinchAround);const h=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,m={};if(a.pan.mag()){const _=aa(a.pan.mag(),h,l.extend({},xh,n||{}));m.offset=a.pan.mult(_.amount/a.pan.mag()),m.center=this._map.transform.center,sa(m,_)}if(a.zoom){const _=aa(a.zoom,h,wh);m.zoom=this._map.transform.zoom+_.amount,sa(m,_)}if(a.bearing){const _=aa(a.bearing,h,bh);m.bearing=this._map.transform.bearing+l.clamp(_.amount,-179,179),sa(m,_)}if(a.pitch){const _=aa(a.pitch,h,ps);m.pitch=this._map.transform.pitch+_.amount,sa(m,_)}if(m.zoom||m.bearing){const _=a.pinchAround===void 0?a.around:a.pinchAround;m.around=_?this._map.unproject(_):this._map.getCenter()}return this.clear(),l.extend(m,{noMoveStart:!0})}}function sa(d,n){(!d.duration||d.durationa.unproject(C)),T=_.reduce((C,z,N,Z)=>C.add(z.div(Z.length)),new l.pointGeometry(0,0));super(n,{points:_,point:T,lngLats:w,lngLat:a.unproject(T),originalEvent:h}),this._defaultPrevented=!1}preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}}class ti extends l.Event{constructor(n,a,h){super(n,{originalEvent:h}),this._defaultPrevented=!1}preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}}class tf{constructor(n,a){this._map=n,this._clickTolerance=a.clickTolerance}reset(){delete this._mousedownPos}wheel(n){return this._firePreventable(new ti(n.type,this._map,n))}mousedown(n,a){return this._mousedownPos=a,this._firePreventable(new ei(n.type,this._map,n))}mouseup(n){this._map.fire(new ei(n.type,this._map,n))}click(n,a){this._mousedownPos&&this._mousedownPos.dist(a)>=this._clickTolerance||this._map.fire(new ei(n.type,this._map,n))}dblclick(n){return this._firePreventable(new ei(n.type,this._map,n))}mouseover(n){this._map.fire(new ei(n.type,this._map,n))}mouseout(n){this._map.fire(new ei(n.type,this._map,n))}touchstart(n){return this._firePreventable(new la(n.type,this._map,n))}touchmove(n){this._map.fire(new la(n.type,this._map,n))}touchend(n){this._map.fire(new la(n.type,this._map,n))}touchcancel(n){this._map.fire(new la(n.type,this._map,n))}_firePreventable(n){if(this._map.fire(n),n.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class po{constructor(n){this._map=n}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(n){this._map.fire(new ei(n.type,this._map,n))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new ei("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(n){this._delayContextMenu?this._contextMenuEvent=n:this._ignoreContextMenu||this._map.fire(new ei(n.type,this._map,n)),this._map.listens("contextmenu")&&n.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class Eh{constructor(n,a){this._map=n,this._el=n.getCanvasContainer(),this._container=n.getContainer(),this._clickTolerance=a.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(n,a){this.isEnabled()&&n.shiftKey&&n.button===0&&(A.disableDrag(),this._startPos=this._lastPos=a,this._active=!0)}mousemoveWindow(n,a){if(!this._active)return;const h=a;if(this._lastPos.equals(h)||!this._box&&h.dist(this._startPos)_.fitScreenCoordinates(h,m,this._map.getBearing(),{linear:!0})};this._fireEvent("boxzoomcancel",n)}keydown(n){this._active&&n.keyCode===27&&(this.reset(),this._fireEvent("boxzoomcancel",n))}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair","mapboxgl-crosshair"),this._box&&(A.remove(this._box),this._box=null),A.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(n,a){return this._map.fire(new l.Event(n,{originalEvent:a}))}}function Yi(d,n){if(d.length!==n.length)throw new Error(`The number of touches and points are not equal - touches ${d.length}, points ${n.length}`);const a={};for(let h=0;hthis.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===void 0&&(this.startTime=n.timeStamp),h.length===this.numTouches&&(this.centroid=function(m){const _=new l.pointGeometry(0,0);for(const w of m)_._add(w);return _.div(m.length)}(a),this.touches=Yi(h,a)))}touchmove(n,a,h){if(this.aborted||!this.centroid)return;const m=Yi(h,a);for(const _ in this.touches){const w=this.touches[_],T=m[_];(!T||T.dist(w)>30)&&(this.aborted=!0)}}touchend(n,a,h){if((!this.centroid||n.timeStamp-this.startTime>500)&&(this.aborted=!0),h.length===0){const m=!this.aborted&&this.centroid;if(this.reset(),m)return m}}}class xu{constructor(n){this.singleTap=new ua(n),this.numTaps=n.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(n,a,h){this.singleTap.touchstart(n,a,h)}touchmove(n,a,h){this.singleTap.touchmove(n,a,h)}touchend(n,a,h){const m=this.singleTap.touchend(n,a,h);if(m){const _=n.timeStamp-this.lastTime<500,w=!this.lastTap||this.lastTap.dist(m)<30;if(_&&w||this.reset(),this.count++,this.lastTime=n.timeStamp,this.lastTap=m,this.count===this.numTaps)return this.reset(),m}}}class nf{constructor(){this._zoomIn=new xu({numTouches:1,numTaps:2}),this._zoomOut=new xu({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(n,a,h){this._zoomIn.touchstart(n,a,h),this._zoomOut.touchstart(n,a,h)}touchmove(n,a,h){this._zoomIn.touchmove(n,a,h),this._zoomOut.touchmove(n,a,h)}touchend(n,a,h){const m=this._zoomIn.touchend(n,a,h),_=this._zoomOut.touchend(n,a,h);return m?(this._active=!0,n.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:w=>w.easeTo({duration:300,zoom:w.getZoom()+1,around:w.unproject(m)},{originalEvent:n})}):_?(this._active=!0,n.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:w=>w.easeTo({duration:300,zoom:w.getZoom()-1,around:w.unproject(_)},{originalEvent:n})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}const rf={0:1,2:2};class Qa{constructor(n){this.reset(),this._clickTolerance=n.clickTolerance||1}reset(){this._active=!1,this._moved=!1,delete this._lastPoint,delete this._eventButton}_correctButton(n,a){return!1}_move(n,a){return{}}mousedown(n,a){if(this._lastPoint)return;const h=A.mouseButton(n);this._correctButton(n,h)&&(this._lastPoint=a,this._eventButton=h)}mousemoveWindow(n,a){const h=this._lastPoint;if(h){if(n.preventDefault(),function(m,_){const w=rf[_];return m.buttons===void 0||(m.buttons&w)!==w}(n,this._eventButton))this.reset();else if(this._moved||!(a.dist(h){this._cancelCooperativeMessage=!1},200)}touchstart(n,a,h){return this._calculateTransform(n,a,h)}touchmove(n,a,h){if(this._map._cooperativeGestures&&(this._minTouches===2&&h.length<2&&!this._cancelCooperativeMessage?this._map._onCooperativeGesture(n,!1,h.length):this._cancelCooperativeMessage||(this._cancelCooperativeMessage=!0)),this._active&&!(h.length0&&(this._active=!0);const m=Yi(h,a),_=new l.pointGeometry(0,0),w=new l.pointGeometry(0,0);let T=0;for(const z in m){const N=m[z],Z=this._touches[z];Z&&(_._add(N),w._add(N.sub(Z)),T++,m[z]=N)}if(this._touches=m,TMath.abs(d.x)}class Su extends Lo{constructor(n){super(),this._map=n}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(n,a,h){super.touchstart(n,a,h),this._currentTouchCount=h.length}_start(n){this._lastPoints=n,bu(n[0].sub(n[1]))&&(this._valid=!1)}_move(n,a,h){if(this._map._cooperativeGestures&&this._currentTouchCount<3)return;const m=n[0].sub(this._lastPoints[0]),_=n[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(m,_,h.timeStamp),this._valid?(this._lastPoints=n,this._active=!0,{pitchDelta:(m.y+_.y)/2*-.5}):void 0}gestureBeginsVertically(n,a,h){if(this._valid!==void 0)return this._valid;const m=n.mag()>=2,_=a.mag()>=2;if(!m&&!_)return;if(!m||!_)return this._firstMove===void 0&&(this._firstMove=h),h-this._firstMove<100&&void 0;const w=n.y>0==a.y>0;return bu(n)&&bu(a)&&w}}const kh={panStep:100,bearingStep:15,pitchStep:10};class Ch{constructor(){const n=kh;this._panStep=n.panStep,this._bearingStep=n.bearingStep,this._pitchStep=n.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(n){if(n.altKey||n.ctrlKey||n.metaKey)return;let a=0,h=0,m=0,_=0,w=0;switch(n.keyCode){case 61:case 107:case 171:case 187:a=1;break;case 189:case 109:case 173:a=-1;break;case 37:n.shiftKey?h=-1:(n.preventDefault(),_=-1);break;case 39:n.shiftKey?h=1:(n.preventDefault(),_=1);break;case 38:n.shiftKey?m=1:(n.preventDefault(),w=-1);break;case 40:n.shiftKey?m=-1:(n.preventDefault(),w=1);break;default:return}return this._rotationDisabled&&(h=0,m=0),{cameraAnimation:T=>{const C=T.getZoom();T.easeTo({duration:300,easeId:"keyboardHandler",easing:sf,zoom:a?Math.round(C)+a*(n.shiftKey?2:1):C,bearing:T.getBearing()+h*this._bearingStep,pitch:T.getPitch()+m*this._pitchStep,offset:[-_*this._panStep,-w*this._panStep],center:T.getCenter()},{originalEvent:n})}}}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 sf(d){return d*(2-d)}const Ih=4.000244140625;class Eu{constructor(n,a){this._map=n,this._el=n.getCanvasContainer(),this._handler=a,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222,l.bindAll(["_onTimeout"],this)}setZoomRate(n){this._defaultZoomRate=n}setWheelZoomRate(n){this._wheelZoomRate=n}isEnabled(){return!!this._enabled}isActive(){return!!this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(n){this.isEnabled()||(this._enabled=!0,this._aroundCenter=n&&n.around==="center")}disable(){this.isEnabled()&&(this._enabled=!1)}wheel(n){if(!this.isEnabled())return;if(this._map._cooperativeGestures){if(!this._map._metaPress)return;n.preventDefault()}let a=n.deltaMode===WheelEvent.DOM_DELTA_LINE?40*n.deltaY:n.deltaY;const h=l.exported.now(),m=h-(this._lastWheelEventTime||0);this._lastWheelEventTime=h,a!==0&&a%Ih==0?this._type="wheel":a!==0&&Math.abs(a)<4?this._type="trackpad":m>400?(this._type=null,this._lastValue=a,this._timeout=setTimeout(this._onTimeout,40,n)):this._type||(this._type=Math.abs(m*a)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,a+=this._lastValue)),n.shiftKey&&a&&(a/=4),this._type&&(this._lastWheelEvent=n,this._delta-=a,this._active||this._start(n)),n.preventDefault()}_onTimeout(n){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(n)}_start(n){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 a=A.mousePos(this._el,n);this._around=l.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(a)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;const n=this._map.transform;if(this._delta!==0){const T=this._type==="wheel"&&Math.abs(this._delta)>Ih?this._wheelZoomRate:this._defaultZoomRate;let C=2/(1+Math.exp(-Math.abs(this._delta*T)));this._delta<0&&C!==0&&(C=1/C);const z=typeof this._targetZoom=="number"?n.zoomScale(this._targetZoom):n.scale;this._targetZoom=Math.min(n.maxZoom,Math.max(n.minZoom,n.scaleZoom(z*C))),this._type==="wheel"&&(this._startZoom=n.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}const a=typeof this._targetZoom=="number"?this._targetZoom:n.zoom,h=this._startZoom,m=this._easing;let _,w=!1;if(this._type==="wheel"&&h&&m){const T=Math.min((l.exported.now()-this._lastWheelEventTime)/200,1),C=m(T);_=l.number(h,a,C),T<1?this._frameId||(this._frameId=!0):w=!0}else _=a,w=!0;return this._active=!0,w&&(this._active=!1,this._finishTimeout=setTimeout(()=>{this._zooming=!1,this._handler._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!w,zoomDelta:_-n.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(n){let a=l.ease;if(this._prevEase){const h=this._prevEase,m=(l.exported.now()-h.start)/h.duration,_=h.easing(m+.01)-h.easing(m),w=.27/Math.sqrt(_*_+1e-4)*.01,T=Math.sqrt(.0729-w*w);a=l.bezier(w,T,.25,1)}return this._prevEase={start:l.exported.now(),duration:n,easing:a},a}reset(){this._active=!1}}class Tu{constructor(n,a){this._clickZoom=n,this._tapZoom=a}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 ku{constructor(){this.reset()}reset(){this._active=!1}dblclick(n,a){return n.preventDefault(),{cameraAnimation:h=>{h.easeTo({duration:300,zoom:h.getZoom()+(n.shiftKey?-1:1),around:h.unproject(a)},{originalEvent:n})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Cu{constructor(){this._tap=new xu({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()}touchstart(n,a,h){this._swipePoint||(this._tapTime&&n.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?h.length>0&&(this._swipePoint=a[0],this._swipeTouch=h[0].identifier):this._tap.touchstart(n,a,h))}touchmove(n,a,h){if(this._tapTime){if(this._swipePoint){if(h[0].identifier!==this._swipeTouch)return;const m=a[0],_=m.y-this._swipePoint.y;return this._swipePoint=m,n.preventDefault(),this._active=!0,{zoomDelta:_/128}}}else this._tap.touchmove(n,a,h)}touchend(n,a,h){this._tapTime?this._swipePoint&&h.length===0&&this.reset():this._tap.touchend(n,a,h)&&(this._tapTime=n.timeStamp)}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class $r{constructor(n,a,h){this._el=n,this._mousePan=a,this._touchPan=h}enable(n){this._inertiaOptions=n||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("maplibregl-touch-drag-pan","mapboxgl-touch-drag-pan")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("maplibregl-touch-drag-pan","mapboxgl-touch-drag-pan")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class mo{constructor(n,a,h){this._pitchWithRotate=n.pitchWithRotate,this._mouseRotate=a,this._mousePitch=h}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 Ah{constructor(n,a,h,m){this._el=n,this._touchZoom=a,this._touchRotate=h,this._tapDragZoom=m,this._rotationDisabled=!1,this._enabled=!0}enable(n){this._touchZoom.enable(n),this._rotationDisabled||this._touchRotate.enable(n),this._tapDragZoom.enable(),this._el.classList.add("maplibregl-touch-zoom-rotate","mapboxgl-touch-zoom-rotate")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("maplibregl-touch-zoom-rotate","mapboxgl-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 fs=d=>d.zoom||d.drag||d.pitch||d.rotate;class Iu extends l.Event{}function ha(d){return d.panDelta&&d.panDelta.mag()||d.zoomDelta||d.bearingDelta||d.pitchDelta}class zh{constructor(n,a){this._map=n,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Sh(n),this._bearingSnap=a.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(a),l.bindAll(["handleEvent","handleWindowEvent"],this);const h=this._el;this._listeners=[[h,"touchstart",{passive:!0}],[h,"touchmove",{passive:!1}],[h,"touchend",void 0],[h,"touchcancel",void 0],[h,"mousedown",void 0],[h,"mousemove",void 0],[h,"mouseup",void 0],[document,"mousemove",{capture:!0}],[document,"mouseup",void 0],[h,"mouseover",void 0],[h,"mouseout",void 0],[h,"dblclick",void 0],[h,"click",void 0],[h,"keydown",{capture:!1}],[h,"keyup",void 0],[h,"wheel",{passive:!1}],[h,"contextmenu",void 0],[window,"blur",void 0]];for(const[m,_,w]of this._listeners)A.addEventListener(m,_,m===document?this.handleWindowEvent:this.handleEvent,w)}destroy(){for(const[n,a,h]of this._listeners)A.removeEventListener(n,a,n===document?this.handleWindowEvent:this.handleEvent,h)}_addDefaultHandlers(n){const a=this._map,h=a.getCanvasContainer();this._add("mapEvent",new tf(a,n));const m=a.boxZoom=new Eh(a,n);this._add("boxZoom",m);const _=new nf,w=new ku;a.doubleClickZoom=new Tu(w,_),this._add("tapZoom",_),this._add("clickZoom",w);const T=new Cu;this._add("tapDragZoom",T);const C=a.touchPitch=new Su(a);this._add("touchPitch",C);const z=new Ji(n),N=new kt(n);a.dragRotate=new mo(n,z,N),this._add("mouseRotate",z,["mousePitch"]),this._add("mousePitch",N,["mouseRotate"]);const Z=new ca(n),H=new Th(n,a);a.dragPan=new $r(h,Z,H),this._add("mousePan",Z),this._add("touchPan",H,["touchZoom","touchRotate"]);const se=new of,re=new _t;a.touchZoomRotate=new Ah(h,re,se,T),this._add("touchRotate",se,["touchPan","touchZoom"]),this._add("touchZoom",re,["touchPan","touchRotate"]);const ie=a.scrollZoom=new Eu(a,this);this._add("scrollZoom",ie,["mousePan"]);const _e=a.keyboard=new Ch;this._add("keyboard",_e),this._add("blockableMapEvent",new po(a));for(const Ee of["boxZoom","doubleClickZoom","tapDragZoom","touchPitch","dragRotate","dragPan","touchZoomRotate","scrollZoom","keyboard"])n.interactive&&n[Ee]&&a[Ee].enable(n[Ee])}_add(n,a,h){this._handlers.push({handlerName:n,handler:a,allowed:h}),this._handlersById[n]=a}stop(n){if(!this._updatingCamera){for(const{handler:a}of this._handlers)a.reset();this._inertia.clear(),this._fireEvents({},{},n),this._changes=[]}}isActive(){for(const{handler:n}of this._handlers)if(n.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!fs(this._eventsInProgress)||this.isZooming()}_blockedByActive(n,a,h){for(const m in n)if(m!==h&&(!a||a.indexOf(m)<0))return!0;return!1}handleWindowEvent(n){this.handleEvent(n,`${n.type}Window`)}_getMapTouches(n){const a=[];for(const h of n)this._el.contains(h.target)&&a.push(h);return a}handleEvent(n,a){if(n.type==="blur")return void this.stop(!0);this._updatingCamera=!0;const h=n.type==="renderFrame"?void 0:n,m={needsRenderFrame:!1},_={},w={},T=n.touches,C=T?this._getMapTouches(T):void 0,z=C?A.touchPos(this._el,C):A.mousePos(this._el,n);for(const{handlerName:H,handler:se,allowed:re}of this._handlers){if(!se.isEnabled())continue;let ie;this._blockedByActive(w,re,H)?se.reset():se[a||n.type]&&(ie=se[a||n.type](n,z,C),this.mergeHandlerResult(m,_,ie,H,h),ie&&ie.needsRenderFrame&&this._triggerRenderFrame()),(ie||se.isActive())&&(w[H]=se)}const N={};for(const H in this._previousActiveHandlers)w[H]||(N[H]=h);this._previousActiveHandlers=w,(Object.keys(N).length||ha(m))&&(this._changes.push([m,_,N]),this._triggerRenderFrame()),(Object.keys(w).length||ha(m))&&this._map._stop(!0),this._updatingCamera=!1;const{cameraAnimation:Z}=m;Z&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],Z(this._map))}mergeHandlerResult(n,a,h,m,_){if(!h)return;l.extend(n,h);const w={handlerName:m,originalEvent:h.originalEvent||_};h.zoomDelta!==void 0&&(a.zoom=w),h.panDelta!==void 0&&(a.drag=w),h.pitchDelta!==void 0&&(a.pitch=w),h.bearingDelta!==void 0&&(a.rotate=w)}_applyChanges(){const n={},a={},h={};for(const[m,_,w]of this._changes)m.panDelta&&(n.panDelta=(n.panDelta||new l.pointGeometry(0,0))._add(m.panDelta)),m.zoomDelta&&(n.zoomDelta=(n.zoomDelta||0)+m.zoomDelta),m.bearingDelta&&(n.bearingDelta=(n.bearingDelta||0)+m.bearingDelta),m.pitchDelta&&(n.pitchDelta=(n.pitchDelta||0)+m.pitchDelta),m.around!==void 0&&(n.around=m.around),m.pinchAround!==void 0&&(n.pinchAround=m.pinchAround),m.noInertia&&(n.noInertia=m.noInertia),l.extend(a,_),l.extend(h,w);this._updateMapTransform(n,a,h),this._changes=[]}_updateMapTransform(n,a,h){const m=this._map,_=m.transform,w=m.style&&m.style.terrain;if(!(ha(n)||w&&this._drag))return this._fireEvents(a,h,!0);let{panDelta:T,zoomDelta:C,bearingDelta:z,pitchDelta:N,around:Z,pinchAround:H}=n;H!==void 0&&(Z=H),m._stop(!0),Z=Z||m.transform.centerPoint;const se=_.pointLocation(T?Z.sub(T):Z);z&&(_.bearing+=z),N&&(_.pitch+=N),C&&(_.zoom+=C),w?a.drag&&!this._drag?(this._drag={center:_.centerPoint,lngLat:_.pointLocation(Z),point:Z,handlerName:a.drag.handlerName},m.fire(new l.Event("freezeElevation",{freeze:!0}))):this._drag&&h[this._drag.handlerName]?(m.fire(new l.Event("freezeElevation",{freeze:!1})),this._drag=null):a.drag&&this._drag&&(_.center=_.pointLocation(_.centerPoint.sub(T))):_.setLocationAtPoint(se,Z),this._map._update(),n.noInertia||this._inertia.record(n),this._fireEvents(a,h,!0)}_fireEvents(n,a,h){const m=fs(this._eventsInProgress),_=fs(n),w={};for(const N in n){const{originalEvent:Z}=n[N];this._eventsInProgress[N]||(w[`${N}start`]=Z),this._eventsInProgress[N]=n[N]}!m&&_&&this._fireEvent("movestart",_.originalEvent);for(const N in w)this._fireEvent(N,w[N]);_&&this._fireEvent("move",_.originalEvent);for(const N in n){const{originalEvent:Z}=n[N];this._fireEvent(N,Z)}const T={};let C;for(const N in this._eventsInProgress){const{handlerName:Z,originalEvent:H}=this._eventsInProgress[N];this._handlersById[Z].isActive()||(delete this._eventsInProgress[N],C=a[Z]||H,T[`${N}end`]=C)}for(const N in T)this._fireEvent(N,T[N]);const z=fs(this._eventsInProgress);if(h&&(m||_)&&!z){this._updatingCamera=!0;const N=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),Z=H=>H!==0&&-this._bearingSnap{delete this._frameId,this.handleEvent(new Iu("renderFrame",{timeStamp:n})),this._applyChanges()})}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}const pi={extend:(d,...n)=>l.extend(d,...n),run(d){d()},logToElement(d,n=!1,a="log"){const h=window.document.getElementById(a);h&&(n&&(h.innerHTML=""),h.innerHTML+=`
${d}`)}};class Nn extends l.Evented{constructor(n,a){super(),this._moving=!1,this._zooming=!1,this.transform=n,this._bearingSnap=a.bearingSnap,l.bindAll(["_renderFrameCallback"],this)}getCenter(){return new l.LngLat(this.transform.center.lng,this.transform.center.lat)}setCenter(n,a){return this.jumpTo({center:n},a)}panBy(n,a,h){return n=l.pointGeometry.convert(n).mult(-1),this.panTo(this.transform.center,l.extend({offset:n},a),h)}panTo(n,a,h){return this.easeTo(l.extend({center:n},a),h)}getZoom(){return this.transform.zoom}setZoom(n,a){return this.jumpTo({zoom:n},a),this}zoomTo(n,a,h){return this.easeTo(l.extend({zoom:n},a),h)}zoomIn(n,a){return this.zoomTo(this.getZoom()+1,n,a),this}zoomOut(n,a){return this.zoomTo(this.getZoom()-1,n,a),this}getBearing(){return this.transform.bearing}setBearing(n,a){return this.jumpTo({bearing:n},a),this}getPadding(){return this.transform.padding}setPadding(n,a){return this.jumpTo({padding:n},a),this}rotateTo(n,a,h){return this.easeTo(l.extend({bearing:n},a),h)}resetNorth(n,a){return this.rotateTo(0,l.extend({duration:1e3},n),a),this}resetNorthPitch(n,a){return this.easeTo(l.extend({bearing:0,pitch:0,duration:1e3},n),a),this}snapToNorth(n,a){return Math.abs(this.getBearing()){if(this._zooming&&(h.zoom=l.number(m,C,qe)),this._rotating&&(h.bearing=l.number(_,z,qe)),this._pitching&&(h.pitch=l.number(w,N,qe)),this._padding&&(h.interpolatePadding(T,Z,qe),se=h.centerPoint.add(H)),le)h.setLocationAtPoint(le,Be);else{const We=h.zoomScale(h.zoom-m),ot=C>m?Math.min(2,ze):Math.max(.5,ze),Ze=Math.pow(ot,1-qe),St=h.unproject(_e.add(Ee.mult(qe*Ze)).mult(We));h.setLocationAtPoint(h.renderWorldCopies?St.wrap():St,se)}this._fireMoveEvents(a)},qe=>{this._afterEase(a,qe)},n),this}_prepareEase(n,a,h={}){this._moving=!0,this.fire(new l.Event("freezeElevation",{freeze:!0})),a||h.moving||this.fire(new l.Event("movestart",n)),this._zooming&&!h.zooming&&this.fire(new l.Event("zoomstart",n)),this._rotating&&!h.rotating&&this.fire(new l.Event("rotatestart",n)),this._pitching&&!h.pitching&&this.fire(new l.Event("pitchstart",n))}_fireMoveEvents(n){this.fire(new l.Event("move",n)),this._zooming&&this.fire(new l.Event("zoom",n)),this._rotating&&this.fire(new l.Event("rotate",n)),this._pitching&&this.fire(new l.Event("pitch",n))}_afterEase(n,a){if(this._easeId&&a&&this._easeId===a)return;delete this._easeId,this.fire(new l.Event("freezeElevation",{freeze:!1}));const h=this._zooming,m=this._rotating,_=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,h&&this.fire(new l.Event("zoomend",n)),m&&this.fire(new l.Event("rotateend",n)),_&&this.fire(new l.Event("pitchend",n)),this.fire(new l.Event("moveend",n))}flyTo(n,a){if(!n.essential&&l.exported.prefersReducedMotion){const Ft=l.pick(n,["center","zoom","bearing","pitch","around"]);return this.jumpTo(Ft,a)}this.stop(),n=l.extend({offset:[0,0],speed:1.2,curve:1.42,easing:l.ease},n);const h=this.transform,m=this.getZoom(),_=this.getBearing(),w=this.getPitch(),T=this.getPadding(),C="zoom"in n?l.clamp(+n.zoom,h.minZoom,h.maxZoom):m,z="bearing"in n?this._normalizeBearing(n.bearing,_):_,N="pitch"in n?+n.pitch:w,Z="padding"in n?n.padding:h.padding,H=h.zoomScale(C-m),se=l.pointGeometry.convert(n.offset);let re=h.centerPoint.add(se);const ie=h.pointLocation(re),_e=l.LngLat.convert(n.center||ie);this._normalizeCenter(_e);const Ee=h.project(ie),ze=h.project(_e).sub(Ee);let le=n.curve;const Be=Math.max(h.width,h.height),De=Be/H,qe=ze.mag();if("minZoom"in n){const Ft=l.clamp(Math.min(n.minZoom,m,C),h.minZoom,h.maxZoom),vn=Be/h.zoomScale(Ft-m);le=Math.sqrt(vn/qe*2)}const We=le*le;function ot(Ft){const vn=(De*De-Be*Be+(Ft?-1:1)*We*We*qe*qe)/(2*(Ft?De:Be)*We*qe);return Math.log(Math.sqrt(vn*vn+1)-vn)}function Ze(Ft){return(Math.exp(Ft)-Math.exp(-Ft))/2}function St(Ft){return(Math.exp(Ft)+Math.exp(-Ft))/2}const ft=ot(0);let Et=function(Ft){return St(ft)/St(ft+le*Ft)},Xt=function(Ft){return Be*((St(ft)*(Ze(vn=ft+le*Ft)/St(vn))-Ze(ft))/We)/qe;var vn},Yt=(ot(1)-ft)/le;if(Math.abs(qe)<1e-6||!isFinite(Yt)){if(Math.abs(Be-De)<1e-6)return this.easeTo(n,a);const Ft=Den.maxDuration&&(n.duration=0),this._zooming=!0,this._rotating=_!==z,this._pitching=N!==w,this._padding=!h.isPaddingEqual(Z),this._prepareEase(a,!1),this._ease(Ft=>{const vn=Ft*Yt,xn=1/Et(vn);h.zoom=Ft===1?C:m+h.scaleZoom(xn),this._rotating&&(h.bearing=l.number(_,z,Ft)),this._pitching&&(h.pitch=l.number(w,N,Ft)),this._padding&&(h.interpolatePadding(T,Z,Ft),re=h.centerPoint.add(se));const ln=Ft===1?_e:h.unproject(Ee.add(ze.mult(Xt(vn))).mult(xn));h.setLocationAtPoint(h.renderWorldCopies?ln.wrap():ln,re),this._fireMoveEvents(a)},()=>this._afterEase(a),n),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(n,a){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){const h=this._onEaseEnd;delete this._onEaseEnd,h.call(this,a)}if(!n){const h=this.handlers;h&&h.stop(!1)}return this}_ease(n,a,h){h.animate===!1||h.duration===0?(n(1),a()):(this._easeStart=l.exported.now(),this._easeOptions=h,this._onEaseFrame=n,this._onEaseEnd=a,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_renderFrameCallback(){const n=Math.min((l.exported.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(n)),n<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()}_normalizeBearing(n,a){n=l.wrap(n,-180,180);const h=Math.abs(n-a);return Math.abs(n-360-a)180?-360:h<-180?360:0}}class da{constructor(n={}){this.options=n,l.bindAll(["_toggleAttribution","_updateData","_updateCompact","_updateCompactMinimize"],this)}getDefaultPosition(){return"bottom-right"}onAdd(n){return this._map=n,this._compact=this.options&&this.options.compact,this._container=A.create("details","maplibregl-ctrl maplibregl-ctrl-attrib mapboxgl-ctrl mapboxgl-ctrl-attrib"),this._compactButton=A.create("summary","maplibregl-ctrl-attrib-button mapboxgl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=A.create("div","maplibregl-ctrl-attrib-inner mapboxgl-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(){A.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(n,a){const h=this._map._getUIString(`AttributionControl.${a}`);n.title=h,n.setAttribute("aria-label",h)}_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","mapboxgl-compact-show")):(this._container.classList.add("maplibregl-compact-show","mapboxgl-compact-show"),this._container.removeAttribute("open")))}_updateData(n){!n||n.sourceDataType!=="metadata"&&n.sourceDataType!=="visibility"&&n.dataType!=="style"&&n.type!=="terrain"||this._updateAttributions()}_updateAttributions(){if(!this._map.style)return;let n=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?n=n.concat(this.options.customAttribution.map(m=>typeof m!="string"?"":m)):typeof this.options.customAttribution=="string"&&n.push(this.options.customAttribution)),this._map.style.stylesheet){const m=this._map.style.stylesheet;this.styleOwner=m.owner,this.styleId=m.id}const a=this._map.style.sourceCaches;for(const m in a){const _=a[m];if(_.used||_.usedForTerrain){const w=_.getSource();w.attribution&&n.indexOf(w.attribution)<0&&n.push(w.attribution)}}n=n.filter(m=>String(m).trim()),n.sort((m,_)=>m.length-_.length),n=n.filter((m,_)=>{for(let w=_+1;w=0)return!1;return!0});const h=n.join(" | ");h!==this._attribHTML&&(this._attribHTML=h,n.length?(this._innerContainer.innerHTML=h,this._container.classList.remove("maplibregl-attrib-empty","mapboxgl-attrib-empty")):this._container.classList.add("maplibregl-attrib-empty","mapboxgl-attrib-empty"),this._updateCompact(),this._editLink=null)}_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","mapboxgl-compact","maplibregl-compact-show","mapboxgl-compact-show")):(this._container.setAttribute("open",""),this._container.classList.contains("maplibregl-compact")&&this._container.classList.remove("maplibregl-compact","maplibregl-compact-show","mapboxgl-compact","mapboxgl-compact-show"))}_updateCompactMinimize(){this._container.classList.contains("maplibregl-compact")&&this._container.classList.contains("maplibregl-compact-show")&&this._container.classList.remove("maplibregl-compact-show","mapboxgl-compact-show")}}class tl{constructor(n={}){this.options=n,l.bindAll(["_updateCompact"],this)}getDefaultPosition(){return"bottom-left"}onAdd(n){this._map=n,this._compact=this.options&&this.options.compact,this._container=A.create("div","maplibregl-ctrl mapboxgl-ctrl");const a=A.create("a","maplibregl-ctrl-logo mapboxgl-ctrl-logo");return a.target="_blank",a.rel="noopener nofollow",a.href="https://maplibre.org/",a.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),a.setAttribute("rel","noopener nofollow"),this._container.appendChild(a),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){A.remove(this._container),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0}_updateCompact(){const n=this._container.children;if(n.length){const a=n[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact!==!1&&a.classList.add("maplibregl-compact","mapboxgl-compact"):a.classList.remove("maplibregl-compact","mapboxgl-compact")}}}class Ph{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(n){const a=++this._id;return this._queue.push({callback:n,id:a,cancelled:!1}),a}remove(n){const a=this._currentlyRunning,h=a?this._queue.concat(a):this._queue;for(const m of h)if(m.id===n)return void(m.cancelled=!0)}run(n=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");const a=this._currentlyRunning=this._queue;this._queue=[];for(const h of a)if(!h.cancelled&&(h.callback(n),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}const Mh={"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"},Dh={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,localIdeographFontFamily:"sans-serif",transformRequest:null,fadeDuration:300,crossSourceCollisions:!0},af={showCompass:!0,showZoom:!0,visualizePitch:!1};class Fi{constructor(n,a,h=!1){this._clickTolerance=10,this.element=a,this.mouseRotate=new Ji({clickTolerance:n.dragRotate._mouseRotate._clickTolerance}),this.map=n,h&&(this.mousePitch=new kt({clickTolerance:n.dragRotate._mousePitch._clickTolerance})),l.bindAll(["mousedown","mousemove","mouseup","touchstart","touchmove","touchend","reset"],this),A.addEventListener(a,"mousedown",this.mousedown),A.addEventListener(a,"touchstart",this.touchstart,{passive:!1}),A.addEventListener(a,"touchmove",this.touchmove),A.addEventListener(a,"touchend",this.touchend),A.addEventListener(a,"touchcancel",this.reset)}down(n,a){this.mouseRotate.mousedown(n,a),this.mousePitch&&this.mousePitch.mousedown(n,a),A.disableDrag()}move(n,a){const h=this.map,m=this.mouseRotate.mousemoveWindow(n,a);if(m&&m.bearingDelta&&h.setBearing(h.getBearing()+m.bearingDelta),this.mousePitch){const _=this.mousePitch.mousemoveWindow(n,a);_&&_.pitchDelta&&h.setPitch(h.getPitch()+_.pitchDelta)}}off(){const n=this.element;A.removeEventListener(n,"mousedown",this.mousedown),A.removeEventListener(n,"touchstart",this.touchstart,{passive:!1}),A.removeEventListener(n,"touchmove",this.touchmove),A.removeEventListener(n,"touchend",this.touchend),A.removeEventListener(n,"touchcancel",this.reset),this.offTemp()}offTemp(){A.enableDrag(),A.removeEventListener(window,"mousemove",this.mousemove),A.removeEventListener(window,"mouseup",this.mouseup)}mousedown(n){this.down(l.extend({},n,{ctrlKey:!0,preventDefault:()=>n.preventDefault()}),A.mousePos(this.element,n)),A.addEventListener(window,"mousemove",this.mousemove),A.addEventListener(window,"mouseup",this.mouseup)}mousemove(n){this.move(n,A.mousePos(this.element,n))}mouseup(n){this.mouseRotate.mouseupWindow(n),this.mousePitch&&this.mousePitch.mouseupWindow(n),this.offTemp()}touchstart(n){n.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=A.touchPos(this.element,n.targetTouches)[0],this.down({type:"mousedown",button:0,ctrlKey:!0,preventDefault:()=>n.preventDefault()},this._startPos))}touchmove(n){n.targetTouches.length!==1?this.reset():(this._lastPos=A.touchPos(this.element,n.targetTouches)[0],this.move({preventDefault:()=>n.preventDefault()},this._lastPos))}touchend(n){n.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)180;){const h=a.locationPoint(d);if(h.x>=0&&h.y>=0&&h.x<=a.width&&h.y<=a.height)break;d.lng>a.center.lng?d.lng-=360:d.lng+=360}return d}const Pt={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 jt(d,n,a){const h=d.classList;for(const m in Pt)h.remove(`maplibregl-${a}-anchor-${m}`,`mapboxgl-${a}-anchor-${m}`);h.add(`maplibregl-${a}-anchor-${n}`,`mapboxgl-${a}-anchor-${n}`)}class ms extends l.Evented{constructor(n,a){if(super(),(n instanceof HTMLElement||a)&&(n=l.extend({element:n},a)),l.bindAll(["_update","_onMove","_onUp","_addDragHandler","_onMapClick","_onKeyPress"],this),this._anchor=n&&n.anchor||"center",this._color=n&&n.color||"#3FB1CE",this._scale=n&&n.scale||1,this._draggable=n&&n.draggable||!1,this._clickTolerance=n&&n.clickTolerance||0,this._isDragging=!1,this._state="inactive",this._rotation=n&&n.rotation||0,this._rotationAlignment=n&&n.rotationAlignment||"auto",this._pitchAlignment=n&&n.pitchAlignment&&n.pitchAlignment!=="auto"?n.pitchAlignment:this._rotationAlignment,n&&n.element)this._element=n.element,this._offset=l.pointGeometry.convert(n&&n.offset||[0,0]);else{this._defaultMarker=!0,this._element=A.create("div"),this._element.setAttribute("aria-label","Map marker");const h=A.createNS("http://www.w3.org/2000/svg","svg"),m=41,_=27;h.setAttributeNS(null,"display","block"),h.setAttributeNS(null,"height",`${m}px`),h.setAttributeNS(null,"width",`${_}px`),h.setAttributeNS(null,"viewBox",`0 0 ${_} ${m}`);const w=A.createNS("http://www.w3.org/2000/svg","g");w.setAttributeNS(null,"stroke","none"),w.setAttributeNS(null,"stroke-width","1"),w.setAttributeNS(null,"fill","none"),w.setAttributeNS(null,"fill-rule","evenodd");const T=A.createNS("http://www.w3.org/2000/svg","g");T.setAttributeNS(null,"fill-rule","nonzero");const C=A.createNS("http://www.w3.org/2000/svg","g");C.setAttributeNS(null,"transform","translate(3.0, 29.0)"),C.setAttributeNS(null,"fill","#000000");const z=[{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 ze of z){const le=A.createNS("http://www.w3.org/2000/svg","ellipse");le.setAttributeNS(null,"opacity","0.04"),le.setAttributeNS(null,"cx","10.5"),le.setAttributeNS(null,"cy","5.80029008"),le.setAttributeNS(null,"rx",ze.rx),le.setAttributeNS(null,"ry",ze.ry),C.appendChild(le)}const N=A.createNS("http://www.w3.org/2000/svg","g");N.setAttributeNS(null,"fill",this._color);const Z=A.createNS("http://www.w3.org/2000/svg","path");Z.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"),N.appendChild(Z);const H=A.createNS("http://www.w3.org/2000/svg","g");H.setAttributeNS(null,"opacity","0.25"),H.setAttributeNS(null,"fill","#000000");const se=A.createNS("http://www.w3.org/2000/svg","path");se.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"),H.appendChild(se);const re=A.createNS("http://www.w3.org/2000/svg","g");re.setAttributeNS(null,"transform","translate(6.0, 7.0)"),re.setAttributeNS(null,"fill","#FFFFFF");const ie=A.createNS("http://www.w3.org/2000/svg","g");ie.setAttributeNS(null,"transform","translate(8.0, 8.0)");const _e=A.createNS("http://www.w3.org/2000/svg","circle");_e.setAttributeNS(null,"fill","#000000"),_e.setAttributeNS(null,"opacity","0.25"),_e.setAttributeNS(null,"cx","5.5"),_e.setAttributeNS(null,"cy","5.5"),_e.setAttributeNS(null,"r","5.4999962");const Ee=A.createNS("http://www.w3.org/2000/svg","circle");Ee.setAttributeNS(null,"fill","#FFFFFF"),Ee.setAttributeNS(null,"cx","5.5"),Ee.setAttributeNS(null,"cy","5.5"),Ee.setAttributeNS(null,"r","5.4999962"),ie.appendChild(_e),ie.appendChild(Ee),T.appendChild(C),T.appendChild(N),T.appendChild(H),T.appendChild(re),T.appendChild(ie),h.appendChild(T),h.setAttributeNS(null,"height",m*this._scale+"px"),h.setAttributeNS(null,"width",_*this._scale+"px"),this._element.appendChild(h),this._offset=l.pointGeometry.convert(n&&n.offset||[0,-14])}this._element.classList.add("maplibregl-marker","mapboxgl-marker"),this._element.addEventListener("dragstart",h=>{h.preventDefault()}),this._element.addEventListener("mousedown",h=>{h.preventDefault()}),jt(this._element,this._anchor,"marker"),this._popup=null}addTo(n){return this.remove(),this._map=n,n.getCanvasContainer().appendChild(this._element),n.on("move",this._update),n.on("moveend",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),A.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(n){return this._lngLat=l.LngLat.convert(n),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(n){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),n){if(!("offset"in n.options)){const m=Math.sqrt(Math.pow(13.5,2)/2);n.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[m,-1*(38.1-13.5+m)],"bottom-right":[-m,-1*(38.1-13.5+m)],left:[13.5,-1*(38.1-13.5)],right:[-13.5,-1*(38.1-13.5)]}:this._offset}this._popup=n,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}_onKeyPress(n){const a=n.code,h=n.charCode||n.keyCode;a!=="Space"&&a!=="Enter"&&h!==32&&h!==13||this.togglePopup()}_onMapClick(n){const a=n.originalEvent.target,h=this._element;this._popup&&(a===h||h.contains(a))&&this.togglePopup()}getPopup(){return this._popup}togglePopup(){const n=this._popup;return n?(n.isOpen()?n.remove():n.addTo(this._map),this):this}_update(n){if(!this._map)return;this._map.transform.renderWorldCopies&&(this._lngLat=pa(this._lngLat,this._pos,this._map.transform)),this._pos=this._map.project(this._lngLat)._add(this._offset);let a="";this._rotationAlignment==="viewport"||this._rotationAlignment==="auto"?a=`rotateZ(${this._rotation}deg)`:this._rotationAlignment==="map"&&(a=`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()),A.setTransform(this._element,`${Pt[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${h} ${a}`),this._map.style&&this._map.style.terrain&&!this._opacityTimeout&&(this._opacityTimeout=setTimeout(()=>{const m=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=m.distanceTo(this._lngLat)>20*_?"0.2":"1.0",this._opacityTimeout=null},100))}getOffset(){return this._offset}setOffset(n){return this._offset=l.pointGeometry.convert(n),this._update(),this}_onMove(n){if(!this._isDragging){const a=this._clickTolerance||this._map._clickTolerance;this._isDragging=n.point.dist(this._pointerdownPos)>=a}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.Event("dragstart"))),this.fire(new l.Event("drag")))}_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.Event("dragend")),this._state="inactive"}_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))}setDraggable(n){return this._draggable=!!n,this._map&&(n?(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(n){return this._rotation=n||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(n){return this._rotationAlignment=n||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(n){return this._pitchAlignment=n&&n!=="auto"?n:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}}const Au={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0};let go,Sr=0,yo=!1;const Oi={maxWidth:100,unit:"metric"};function Rh(d,n,a){const h=a&&a.maxWidth||100,m=d._container.clientHeight/2,_=d.unproject([0,m]),w=d.unproject([h,m]),T=_.distanceTo(w);if(a&&a.unit==="imperial"){const C=3.2808*T;C>5280?_o(n,h,C/5280,d._getUIString("ScaleControl.Miles")):_o(n,h,C,d._getUIString("ScaleControl.Feet"))}else a&&a.unit==="nautical"?_o(n,h,T/1852,d._getUIString("ScaleControl.NauticalMiles")):T>=1e3?_o(n,h,T/1e3,d._getUIString("ScaleControl.Kilometers")):_o(n,h,T,d._getUIString("ScaleControl.Meters"))}function _o(d,n,a,h){const m=function(_){const w=Math.pow(10,`${Math.floor(_)}`.length-1);let T=_/w;return T=T>=10?10:T>=5?5:T>=3?3:T>=2?2:T>=1?1:function(C){const z=Math.pow(10,Math.ceil(-Math.log(C)/Math.LN10));return Math.round(C*z)/z}(T),w*T}(a);d.style.width=n*(m/a)+"px",d.innerHTML=`${m} ${h}`}const Yn={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px"},sr=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function zu(d){if(d){if(typeof d=="number"){const n=Math.round(Math.sqrt(.5*Math.pow(d,2)));return{center:new l.pointGeometry(0,0),top:new l.pointGeometry(0,d),"top-left":new l.pointGeometry(n,n),"top-right":new l.pointGeometry(-n,n),bottom:new l.pointGeometry(0,-d),"bottom-left":new l.pointGeometry(n,-n),"bottom-right":new l.pointGeometry(-n,-n),left:new l.pointGeometry(d,0),right:new l.pointGeometry(-d,0)}}if(d instanceof l.pointGeometry||Array.isArray(d)){const n=l.pointGeometry.convert(d);return{center:n,top:n,"top-left":n,"top-right":n,bottom:n,"bottom-left":n,"bottom-right":n,left:n,right:n}}return{center:l.pointGeometry.convert(d.center||[0,0]),top:l.pointGeometry.convert(d.top||[0,0]),"top-left":l.pointGeometry.convert(d["top-left"]||[0,0]),"top-right":l.pointGeometry.convert(d["top-right"]||[0,0]),bottom:l.pointGeometry.convert(d.bottom||[0,0]),"bottom-left":l.pointGeometry.convert(d["bottom-left"]||[0,0]),"bottom-right":l.pointGeometry.convert(d["bottom-right"]||[0,0]),left:l.pointGeometry.convert(d.left||[0,0]),right:l.pointGeometry.convert(d.right||[0,0])}}return zu(new l.pointGeometry(0,0))}const Bo={supported:S,setRTLTextPlugin:l.setRTLTextPlugin,getRTLTextPluginStatus:l.getRTLTextPluginStatus,Map:class extends Nn{constructor(d){var n;if(l.PerformanceUtils.mark(l.PerformanceMarkers.create),(d=l.extend({},Dh,d)).minZoom!=null&&d.maxZoom!=null&&d.minZoom>d.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(d.minPitch!=null&&d.maxPitch!=null&&d.minPitch>d.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(d.minPitch!=null&&d.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(d.maxPitch!=null&&d.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(super(new ia(d.minZoom,d.maxZoom,d.minPitch,d.maxPitch,d.renderWorldCopies),{bearingSnap:d.bearingSnap}),this._interactive=d.interactive,this._cooperativeGestures=d.cooperativeGestures,this._maxTileCacheSize=d.maxTileCacheSize,this._failIfMajorPerformanceCaveat=d.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=d.preserveDrawingBuffer,this._antialias=d.antialias,this._trackResize=d.trackResize,this._bearingSnap=d.bearingSnap,this._refreshExpiredTiles=d.refreshExpiredTiles,this._fadeDuration=d.fadeDuration,this._crossSourceCollisions=d.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=d.collectResourceTiming,this._renderTaskQueue=new Ph,this._controls=[],this._mapId=l.uniqueId(),this._locale=l.extend({},Mh,d.locale),this._clickTolerance=d.clickTolerance,this._pixelRatio=(n=d.pixelRatio)!==null&&n!==void 0?n:devicePixelRatio,this._requestManager=new F(d.transformRequest),typeof d.container=="string"){if(this._container=document.getElementById(d.container),!this._container)throw new Error(`Container '${d.container}' not found.`)}else{if(!(d.container instanceof HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=d.container}if(d.maxBounds&&this.setMaxBounds(d.maxBounds),l.bindAll(["_onWindowOnline","_onWindowResize","_onMapScroll","_contextLost","_contextRestored"],this),this._setupContainer(),this._setupPainter(),this.painter===void 0)throw new Error("Failed to initialize WebGL.");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)}),typeof window<"u"&&(addEventListener("online",this._onWindowOnline,!1),addEventListener("resize",this._onWindowResize,!1),addEventListener("orientationchange",this._onWindowResize,!1)),this.handlers=new zh(this,d),this._cooperativeGestures&&this._setupCooperativeGestures(),this._hash=d.hash&&new vh(typeof d.hash=="string"&&d.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:d.center,zoom:d.zoom,bearing:d.bearing,pitch:d.pitch}),d.bounds&&(this.resize(),this.fitBounds(d.bounds,l.extend({},d.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=d.localIdeographFontFamily,d.style&&this.setStyle(d.style,{localIdeographFontFamily:d.localIdeographFontFamily}),d.attributionControl&&this.addControl(new da({customAttribution:d.customAttribution})),d.maplibreLogo&&this.addControl(new tl,d.logoPosition),this.on("style.load",()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)}),this.on("data",a=>{this._update(a.dataType==="style"),this.fire(new l.Event(`${a.dataType}data`,a))}),this.on("dataloading",a=>{this.fire(new l.Event(`${a.dataType}dataloading`,a))}),this.on("dataabort",a=>{this.fire(new l.Event("sourcedataabort",a))})}_getMapId(){return this._mapId}addControl(d,n){if(n===void 0&&(n=d.getDefaultPosition?d.getDefaultPosition():"top-right"),!d||!d.onAdd)return this.fire(new l.ErrorEvent(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));const a=d.onAdd(this);this._controls.push(d);const h=this._controlPositions[n];return n.indexOf("bottom")!==-1?h.insertBefore(a,h.firstChild):h.appendChild(a),this}removeControl(d){if(!d||!d.onRemove)return this.fire(new l.ErrorEvent(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));const n=this._controls.indexOf(d);return n>-1&&this._controls.splice(n,1),d.onRemove(this),this}hasControl(d){return this._controls.indexOf(d)>-1}calculateCameraOptionsFromTo(d,n,a,h){return h==null&&this.style.terrain&&(h=this.transform.getElevation(a,this.style.terrain)),super.calculateCameraOptionsFromTo(d,n,a,h)}resize(d){const n=this._containerDimensions(),a=n[0],h=n[1];this._resizeCanvas(a,h,this.getPixelRatio()),this.transform.resize(a,h),this.painter.resize(a,h,this.getPixelRatio());const m=!this._moving;return m&&(this.stop(),this.fire(new l.Event("movestart",d)).fire(new l.Event("move",d))),this.fire(new l.Event("resize",d)),m&&this.fire(new l.Event("moveend",d)),this}getPixelRatio(){return this._pixelRatio}setPixelRatio(d){const[n,a]=this._containerDimensions();this._pixelRatio=d,this._resizeCanvas(n,a,d),this.painter.resize(n,a,d)}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(d){return this.transform.setMaxBounds(l.LngLatBounds.convert(d)),this._update()}setMinZoom(d){if((d=d??-2)>=-2&&d<=this.transform.maxZoom)return this.transform.minZoom=d,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=d,this._update(),this.getZoom()>d&&this.setZoom(d),this;throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(d){if((d=d??0)<0)throw new Error("minPitch must be greater than or equal to 0");if(d>=0&&d<=this.transform.maxPitch)return this.transform.minPitch=d,this._update(),this.getPitch()85)throw new Error("maxPitch must be less than or equal to 85");if(d>=this.transform.minPitch)return this.transform.maxPitch=d,this._update(),this.getPitch()>d&&this.setPitch(d),this;throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(d){return this.transform.renderWorldCopies=d,this._update()}project(d){return this.transform.locationPoint(l.LngLat.convert(d),this.style&&this.style.terrain)}unproject(d){return this.transform.pointLocation(l.pointGeometry.convert(d),this.style&&this.style.terrain)}isMoving(){return this._moving||this.handlers.isMoving()}isZooming(){return this._zooming||this.handlers.isZooming()}isRotating(){return this._rotating||this.handlers.isRotating()}_createDelegatedListener(d,n,a){if(d==="mouseenter"||d==="mouseover"){let h=!1;return{layer:n,listener:a,delegates:{mousemove:_=>{const w=this.getLayer(n)?this.queryRenderedFeatures(_.point,{layers:[n]}):[];w.length?h||(h=!0,a.call(this,new ei(d,this,_.originalEvent,{features:w}))):h=!1},mouseout:()=>{h=!1}}}}if(d==="mouseleave"||d==="mouseout"){let h=!1;return{layer:n,listener:a,delegates:{mousemove:w=>{(this.getLayer(n)?this.queryRenderedFeatures(w.point,{layers:[n]}):[]).length?h=!0:h&&(h=!1,a.call(this,new ei(d,this,w.originalEvent)))},mouseout:w=>{h&&(h=!1,a.call(this,new ei(d,this,w.originalEvent)))}}}}{const h=m=>{const _=this.getLayer(n)?this.queryRenderedFeatures(m.point,{layers:[n]}):[];_.length&&(m.features=_,a.call(this,m),delete m.features)};return{layer:n,listener:a,delegates:{[d]:h}}}}on(d,n,a){if(a===void 0)return super.on(d,n);const h=this._createDelegatedListener(d,n,a);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[d]=this._delegatedListeners[d]||[],this._delegatedListeners[d].push(h);for(const m in h.delegates)this.on(m,h.delegates[m]);return this}once(d,n,a){if(a===void 0)return super.once(d,n);const h=this._createDelegatedListener(d,n,a);for(const m in h.delegates)this.once(m,h.delegates[m]);return this}off(d,n,a){return a===void 0?super.off(d,n):(this._delegatedListeners&&this._delegatedListeners[d]&&(h=>{const m=this._delegatedListeners[d];for(let _=0;_{h?this.fire(new l.ErrorEvent(h)):m&&this._updateDiff(m,n)})}else typeof d=="object"&&this._updateDiff(d,n)}_updateDiff(d,n){try{this.style.setState(d)&&this._update(!0)}catch(a){l.warnOnce(`Unable to perform style diff: ${a.message||a.error||a}. Rebuilding the style from scratch.`),this._updateStyle(d,n)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():l.warnOnce("There is no style added to the map.")}addSource(d,n){return this._lazyInitEmptyStyle(),this.style.addSource(d,n),this._update(!0)}isSourceLoaded(d){const n=this.style&&this.style.sourceCaches[d];if(n!==void 0)return n.loaded();this.fire(new l.ErrorEvent(new Error(`There is no source with ID '${d}'`)))}setTerrain(d){return this.style.setTerrain(d),this}getTerrain(){return this.style.terrain&&this.style.terrain.options}areTilesLoaded(){const d=this.style&&this.style.sourceCaches;for(const n in d){const a=d[n]._tiles;for(const h in a){const m=a[h];if(m.state!=="loaded"&&m.state!=="errored")return!1}}return!0}addSourceType(d,n,a){return this._lazyInitEmptyStyle(),this.style.addSourceType(d,n,a)}removeSource(d){return this.style.removeSource(d),this._update(!0)}getSource(d){return this.style.getSource(d)}addImage(d,n,{pixelRatio:a=1,sdf:h=!1,stretchX:m,stretchY:_,content:w}={}){if(this._lazyInitEmptyStyle(),n instanceof HTMLImageElement||l.isImageBitmap(n)){const{width:T,height:C,data:z}=l.exported.getImageData(n);this.style.addImage(d,{data:new l.RGBAImage({width:T,height:C},z),pixelRatio:a,stretchX:m,stretchY:_,content:w,sdf:h,version:0})}else{if(n.width===void 0||n.height===void 0)return this.fire(new l.ErrorEvent(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:T,height:C,data:z}=n,N=n;this.style.addImage(d,{data:new l.RGBAImage({width:T,height:C},new Uint8Array(z)),pixelRatio:a,stretchX:m,stretchY:_,content:w,sdf:h,version:0,userImage:N}),N.onAdd&&N.onAdd(this,d)}}}updateImage(d,n){const a=this.style.getImage(d);if(!a)return this.fire(new l.ErrorEvent(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));const h=n instanceof HTMLImageElement||l.isImageBitmap(n)?l.exported.getImageData(n):n,{width:m,height:_,data:w}=h;if(m===void 0||_===void 0)return this.fire(new l.ErrorEvent(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(m!==a.data.width||_!==a.data.height)return this.fire(new l.ErrorEvent(new Error("The width and height of the updated image must be that same as the previous version of the image")));const T=!(n instanceof HTMLImageElement||l.isImageBitmap(n));a.data.replace(w,T),this.style.updateImage(d,a)}hasImage(d){return d?!!this.style.getImage(d):(this.fire(new l.ErrorEvent(new Error("Missing required image id"))),!1)}removeImage(d){this.style.removeImage(d)}loadImage(d,n){l.getImage(this._requestManager.transformRequest(d,l.ResourceType.Image),n)}listImages(){return this.style.listImages()}addLayer(d,n){return this._lazyInitEmptyStyle(),this.style.addLayer(d,n),this._update(!0)}moveLayer(d,n){return this.style.moveLayer(d,n),this._update(!0)}removeLayer(d){return this.style.removeLayer(d),this._update(!0)}getLayer(d){return this.style.getLayer(d)}setLayerZoomRange(d,n,a){return this.style.setLayerZoomRange(d,n,a),this._update(!0)}setFilter(d,n,a={}){return this.style.setFilter(d,n,a),this._update(!0)}getFilter(d){return this.style.getFilter(d)}setPaintProperty(d,n,a,h={}){return this.style.setPaintProperty(d,n,a,h),this._update(!0)}getPaintProperty(d,n){return this.style.getPaintProperty(d,n)}setLayoutProperty(d,n,a,h={}){return this.style.setLayoutProperty(d,n,a,h),this._update(!0)}getLayoutProperty(d,n){return this.style.getLayoutProperty(d,n)}setLight(d,n={}){return this._lazyInitEmptyStyle(),this.style.setLight(d,n),this._update(!0)}getLight(){return this.style.getLight()}setFeatureState(d,n){return this.style.setFeatureState(d,n),this._update()}removeFeatureState(d,n){return this.style.removeFeatureState(d,n),this._update()}getFeatureState(d){return this.style.getFeatureState(d)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let d=0,n=0;return this._container&&(d=this._container.clientWidth||400,n=this._container.clientHeight||300),[d,n]}_setupContainer(){const d=this._container;d.classList.add("maplibregl-map","mapboxgl-map");const n=this._canvasContainer=A.create("div","maplibregl-canvas-container mapboxgl-canvas-container",d);this._interactive&&n.classList.add("maplibregl-interactive","mapboxgl-interactive"),this._canvas=A.create("canvas","maplibregl-canvas mapboxgl-canvas",n),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 a=this._containerDimensions();this._resizeCanvas(a[0],a[1],this.getPixelRatio());const h=this._controlContainer=A.create("div","maplibregl-control-container mapboxgl-control-container",d),m=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach(_=>{m[_]=A.create("div",`maplibregl-ctrl-${_} mapboxgl-ctrl-${_}`,h)}),this._container.addEventListener("scroll",this._onMapScroll,!1)}_setupCooperativeGestures(){const d=this._container;this._metaPress=!1,this._cooperativeGesturesScreen=A.create("div","maplibregl-cooperative-gesture-screen",d);let n="Control",a=typeof this._cooperativeGestures!="boolean"&&this._cooperativeGestures.windowsHelpText?this._cooperativeGestures.windowsHelpText:"Use Ctrl + scroll to zoom the map";navigator.platform.indexOf("Mac")===0&&(a=typeof this._cooperativeGestures!="boolean"&&this._cooperativeGestures.macHelpText?this._cooperativeGestures.macHelpText:"Use ⌘ + scroll to zoom the map",n="Meta"),this._cooperativeGesturesScreen.innerHTML=` +
${a}
+
${typeof this._cooperativeGestures!="boolean"&&this._cooperativeGestures.mobileHelpText?this._cooperativeGestures.mobileHelpText:"Use two fingers to move the map"}
+ `,document.addEventListener("keydown",h=>{h.key===n&&(this._metaPress=!0)}),document.addEventListener("keyup",h=>{h.key===n&&(this._metaPress=!1)}),this._canvasContainer.addEventListener("wheel",h=>{this._onCooperativeGesture(h,this._metaPress,1)},!1),this._canvasContainer.classList.remove("mapboxgl-touch-drag-pan","maplibregl-touch-drag-pan")}_resizeCanvas(d,n,a){this._canvas.width=a*d,this._canvas.height=a*n,this._canvas.style.width=`${d}px`,this._canvas.style.height=`${n}px`}_setupPainter(){const d=l.extend({},S.webGLContextAttributes,{failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1}),n=this._canvas.getContext("webgl",d)||this._canvas.getContext("experimental-webgl",d);n?(this.painter=new vu(n,this.transform),l.exported$1.testSupport(n)):this.fire(new l.ErrorEvent(new Error("Failed to initialize WebGL")))}_contextLost(d){d.preventDefault(),this._frame&&(this._frame.cancel(),this._frame=null),this.fire(new l.Event("webglcontextlost",{originalEvent:d}))}_contextRestored(d){this._setupPainter(),this.resize(),this._update(),this.fire(new l.Event("webglcontextrestored",{originalEvent:d}))}_onMapScroll(d){if(d.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1}_onCooperativeGesture(d,n,a){return!n&&a<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(d){return this.style?(this._styleDirty=this._styleDirty||d,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(d){return this._update(),this._renderTaskQueue.add(d)}_cancelRenderFrame(d){this._renderTaskQueue.remove(d)}_render(d){let n,a=0;const h=this.painter.context.extTimerQuery;if(this.listens("gpu-timing-frame")&&(n=h.createQueryEXT(),h.beginQueryEXT(h.TIME_ELAPSED_EXT,n),a=l.exported.now()),this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(d),this._removed)return;let m=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;const w=this.transform.zoom,T=l.exported.now();this.style.zoomHistory.update(w,T);const C=new l.EvaluationParameters(w,{now:T,fadeDuration:this._fadeDuration,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),z=C.crossFadingFactor();z===1&&z===this._crossFadingFactor||(m=!0,this._crossFadingFactor=z),this.style.update(C)}if(this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.style.terrain&&this.style.terrain.sourceCache.update(this.transform,this.style.terrain),this.transform.updateElevation(this.style.terrain),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,this._fadeDuration,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:this._fadeDuration,showPadding:this.showPadding,gpuTiming:!!this.listens("gpu-timing-layer")}),this.fire(new l.Event("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,l.PerformanceUtils.mark(l.PerformanceMarkers.load),this.fire(new l.Event("load"))),this.style&&(this.style.hasTransitions()||m)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles(),this.listens("gpu-timing-frame")){const w=l.exported.now()-a;h.endQueryEXT(h.TIME_ELAPSED_EXT,n),setTimeout(()=>{const T=h.getQueryObjectEXT(n,h.QUERY_RESULT_EXT)/1e6;h.deleteQueryEXT(n),this.fire(new l.Event("gpu-timing-frame",{cpuTime:w,gpuTime:T}))},50)}if(this.listens("gpu-timing-layer")){const w=this.painter.collectGpuTimers();setTimeout(()=>{const T=this.painter.queryGpuTimers(w);this.fire(new l.Event("gpu-timing-layer",{layerTimes:T}))},50)}const _=this._sourcesDirty||this._styleDirty||this._placementDirty;return _||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new l.Event("idle")),!this._loaded||this._fullyLoaded||_||(this._fullyLoaded=!0,l.PerformanceUtils.mark(l.PerformanceMarkers.fullLoad)),this}redraw(){return this.style&&(this._frame&&(this._frame.cancel(),this._frame=null),this._render(0)),this}remove(){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("resize",this._onWindowResize,!1),removeEventListener("orientationchange",this._onWindowResize,!1),removeEventListener("online",this._onWindowOnline,!1));const d=this.painter.context.gl.getExtension("WEBGL_lose_context");d&&d.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),A.remove(this._canvasContainer),A.remove(this._controlContainer),this._cooperativeGestures&&A.remove(this._cooperativeGesturesScreen),this._container.classList.remove("maplibregl-map","mapboxgl-map"),l.PerformanceUtils.clearMetrics(),this._removed=!0,this.fire(new l.Event("remove"))}triggerRepaint(){this.style&&!this._frame&&(this._frame=l.exported.frame(d=>{l.PerformanceUtils.frame(d),this._frame=null,this._render(d)}))}_onWindowOnline(){this._update()}_onWindowResize(d){this._trackResize&&this.resize({originalEvent:d})._update()}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(d){this._showTileBoundaries!==d&&(this._showTileBoundaries=d,this._update())}get showPadding(){return!!this._showPadding}set showPadding(d){this._showPadding!==d&&(this._showPadding=d,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(d){this._showCollisionBoxes!==d&&(this._showCollisionBoxes=d,d?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(d){this._showOverdrawInspector!==d&&(this._showOverdrawInspector=d,this._update())}get repaint(){return!!this._repaint}set repaint(d){this._repaint!==d&&(this._repaint=d,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(d){this._vertices=d,this._update()}_setCacheLimits(d,n){l.setCacheLimits(d,n)}get version(){return"2.4.0"}},NavigationControl:class{constructor(d){this.options=l.extend({},af,d),this._container=A.create("div","maplibregl-ctrl maplibregl-ctrl-group mapboxgl-ctrl mapboxgl-ctrl-group"),this._container.addEventListener("contextmenu",n=>n.preventDefault()),this.options.showZoom&&(l.bindAll(["_setButtonTitle","_updateZoomButtons"],this),this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in mapboxgl-ctrl-zoom-in",n=>this._map.zoomIn({},{originalEvent:n})),A.create("span","maplibregl-ctrl-icon mapboxgl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out mapboxgl-ctrl-zoom-out",n=>this._map.zoomOut({},{originalEvent:n})),A.create("span","maplibregl-ctrl-icon mapboxgl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(l.bindAll(["_rotateCompassArrow"],this),this._compass=this._createButton("maplibregl-ctrl-compass mapboxgl-ctrl-compass",n=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:n}):this._map.resetNorth({},{originalEvent:n})}),this._compassIcon=A.create("span","maplibregl-ctrl-icon mapboxgl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}_updateZoomButtons(){const d=this._map.getZoom(),n=d===this._map.getMaxZoom(),a=d===this._map.getMinZoom();this._zoomInButton.disabled=n,this._zoomOutButton.disabled=a,this._zoomInButton.setAttribute("aria-disabled",n.toString()),this._zoomOutButton.setAttribute("aria-disabled",a.toString())}_rotateCompassArrow(){const d=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=d}onAdd(d){return this._map=d,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 Fi(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){A.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(d,n){const a=A.create("button",d,this._container);return a.type="button",a.addEventListener("click",n),a}_setButtonTitle(d,n){const a=this._map._getUIString(`NavigationControl.${n}`);d.title=a,d.setAttribute("aria-label",a)}},GeolocateControl:class extends l.Evented{constructor(d){super(),this.options=l.extend({},Au,d),l.bindAll(["_onSuccess","_onError","_onZoom","_finish","_setupUI","_updateCamera","_updateMarker"],this)}onAdd(d){var n;return this._map=d,this._container=A.create("div","maplibregl-ctrl maplibregl-ctrl-group mapboxgl-ctrl mapboxgl-ctrl-group"),n=this._setupUI,go!==void 0?n(go):window.navigator.permissions!==void 0?window.navigator.permissions.query({name:"geolocation"}).then(a=>{go=a.state!=="denied",n(go)}):(go=!!window.navigator.geolocation,n(go)),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(),A.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,Sr=0,yo=!1}_isOutOfMapMaxBounds(d){const n=this._map.getMaxBounds(),a=d.coords;return n&&(a.longituden.getEast()||a.latituden.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active","mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error","mapboxgl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active","mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error","mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting","mapboxgl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background","mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background-error","mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting","mapboxgl-ctrl-geolocate-waiting");break;case"ACTIVE_ERROR":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_onSuccess(d){if(this._map){if(this._isOutOfMapMaxBounds(d))return this._setErrorState(),this.fire(new l.Event("outofmaxbounds",d)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=d,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting","mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error","mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active","mapboxgl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting","mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error","mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background","mapboxgl-ctrl-geolocate-background");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(d),this.options.trackUserLocation&&this._watchState!=="ACTIVE_LOCK"||this._updateCamera(d),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale","mapboxgl-user-location-dot-stale"),this.fire(new l.Event("geolocate",d)),this._finish()}}_updateCamera(d){const n=new l.LngLat(d.coords.longitude,d.coords.latitude),a=d.coords.accuracy,h=this._map.getBearing(),m=l.extend({bearing:h},this.options.fitBoundsOptions);this._map.fitBounds(n.toBounds(a),m,{geolocateSource:!0})}_updateMarker(d){if(d){const n=new l.LngLat(d.coords.longitude,d.coords.latitude);this._accuracyCircleMarker.setLngLat(n).addTo(this._map),this._userLocationDotMarker.setLngLat(n).addTo(this._map),this._accuracy=d.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()}_updateCircleRadius(){const d=this._map._container.clientHeight/2,n=this._map.unproject([0,d]),a=this._map.unproject([1,d]),h=n.distanceTo(a),m=Math.ceil(2*this._accuracy/h);this._circleElement.style.width=`${m}px`,this._circleElement.style.height=`${m}px`}_onZoom(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}_onError(d){if(this._map){if(this.options.trackUserLocation)if(d.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting","mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active","mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error","mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background","mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error","mapboxgl-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(d.code===3&&yo)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale","mapboxgl-user-location-dot-stale"),this.fire(new l.Event("error",d)),this._finish()}}_finish(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0}_setupUI(d){if(this._container.addEventListener("contextmenu",n=>n.preventDefault()),this._geolocateButton=A.create("button","maplibregl-ctrl-geolocate mapboxgl-ctrl-geolocate",this._container),A.create("span","maplibregl-ctrl-icon mapboxgl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",d===!1){l.warnOnce("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=A.create("div","maplibregl-user-location-dot mapboxgl-user-location-dot"),this._userLocationDotMarker=new ms(this._dotElement),this._circleElement=A.create("div","maplibregl-user-location-accuracy-circle mapboxgl-user-location-accuracy-circle"),this._accuracyCircleMarker=new ms({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","mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active","mapboxgl-ctrl-geolocate-active"),this.fire(new l.Event("trackuserlocationend")))})}trigger(){if(!this._setup)return l.warnOnce("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.Event("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":Sr--,yo=!1,this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting","mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active","mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error","mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background","mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error","mapboxgl-ctrl-geolocate-background-error"),this.fire(new l.Event("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background","mapboxgl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new l.Event("trackuserlocationstart"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting","mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active","mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active","mapboxgl-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 d;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting","mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),Sr++,Sr>1?(d={maximumAge:6e5,timeout:0},yo=!0):(d=this.options.positionOptions,yo=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,d)}}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","mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)}},AttributionControl:da,LogoControl:tl,ScaleControl:class{constructor(d){this.options=l.extend({},Oi,d),l.bindAll(["_onMove","setUnit"],this)}getDefaultPosition(){return"bottom-left"}_onMove(){Rh(this._map,this._container,this.options)}onAdd(d){return this._map=d,this._container=A.create("div","maplibregl-ctrl maplibregl-ctrl-scale mapboxgl-ctrl mapboxgl-ctrl-scale",d.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){A.remove(this._container),this._map.off("move",this._onMove),this._map=void 0}setUnit(d){this.options.unit=d,Rh(this._map,this._container,this.options)}},FullscreenControl:class{constructor(d){this._fullscreen=!1,d&&d.container&&(d.container instanceof HTMLElement?this._container=d.container:l.warnOnce("Full screen control 'container' must be a DOM element.")),l.bindAll(["_onClickFullscreen","_changeIcon"],this),"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(d){return this._map=d,this._container||(this._container=this._map.getContainer()),this._controlContainer=A.create("div","maplibregl-ctrl maplibregl-ctrl-group mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display="none",l.warnOnce("This device does not support fullscreen mode.")),this._controlContainer}onRemove(){A.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._changeIcon)}_checkFullscreenSupport(){return!!(document.fullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled||document.webkitFullscreenEnabled)}_setupUI(){const d=this._fullscreenButton=A.create("button","maplibregl-ctrl-fullscreen mapboxgl-ctrl-fullscreen",this._controlContainer);A.create("span","maplibregl-ctrl-icon mapboxgl-ctrl-icon",d).setAttribute("aria-hidden","true"),d.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._changeIcon)}_updateTitle(){const d=this._getTitle();this._fullscreenButton.setAttribute("aria-label",d),this._fullscreenButton.title=d}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_changeIcon(){(window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"),this._fullscreenButton.classList.toggle("mapboxgl-ctrl-shrink"),this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"),this._fullscreenButton.classList.toggle("mapboxgl-ctrl-fullscreen"),this._updateTitle())}_onClickFullscreen(){this._isFullscreen()?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._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()}},TerrainControl:class{constructor(d){this.options=d,l.bindAll(["_toggleTerrain","_updateTerrainIcon"],this)}onAdd(d){return this._map=d,this._container=A.create("div","maplibregl-ctrl maplibregl-ctrl-group mapboxgl-ctrl mapboxgl-ctrl-group"),this._terrainButton=A.create("button","maplibregl-ctrl-terrain mapboxgl-ctrl-terrain",this._container),A.create("span","maplibregl-ctrl-icon mapboxgl-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(){A.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}_toggleTerrain(){this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()}_updateTerrainIcon(){this._terrainButton.classList.remove("maplibregl-ctrl-terrain","mapboxgl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled","mapboxgl-ctrl-terrain-enabled"),this._map.style.terrain?(this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled","mapboxgl-ctrl-terrain-enabled"),this._terrainButton.title=this._map._getUIString("TerrainControl.disableTerrain")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain","mapboxgl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.enableTerrain"))}},Popup:class extends l.Evented{constructor(d){super(),this.options=l.extend(Object.create(Yn),d),l.bindAll(["_update","_onClose","remove","_onMouseMove","_onMouseUp","_onDrag"],this)}addTo(d){return this._map&&this.remove(),this._map=d,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","mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer","mapboxgl-track-pointer")):this._map.on("move",this._update),this.fire(new l.Event("open")),this}isOpen(){return!!this._map}remove(){return this._content&&A.remove(this._content),this._container&&(A.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.Event("close")),this}getLngLat(){return this._lngLat}setLngLat(d){return this._lngLat=l.LngLat.convert(d),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","mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.remove("maplibregl-track-pointer","mapboxgl-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","mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer","mapboxgl-track-pointer")),this}getElement(){return this._container}setText(d){return this.setDOMContent(document.createTextNode(d))}setHTML(d){const n=document.createDocumentFragment(),a=document.createElement("body");let h;for(a.innerHTML=d;h=a.firstChild,h;)n.appendChild(h);return this.setDOMContent(n)}getMaxWidth(){return this._container&&this._container.style.maxWidth}setMaxWidth(d){return this.options.maxWidth=d,this._update(),this}setDOMContent(d){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=A.create("div","maplibregl-popup-content mapboxgl-popup-content",this._container);return this._content.appendChild(d),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(d){this._container&&this._container.classList.add(d)}removeClassName(d){this._container&&this._container.classList.remove(d)}setOffset(d){return this.options.offset=d,this._update(),this}toggleClassName(d){if(this._container)return this._container.classList.toggle(d)}_createCloseButton(){this.options.closeButton&&(this._closeButton=A.create("button","maplibregl-popup-close-button mapboxgl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))}_onMouseUp(d){this._update(d.point)}_onMouseMove(d){this._update(d.point)}_onDrag(d){this._update(d.point)}_update(d){if(!this._map||!this._lngLat&&!this._trackPointer||!this._content||(this._container||(this._container=A.create("div","maplibregl-popup mapboxgl-popup",this._map.getContainer()),this._tip=A.create("div","maplibregl-popup-tip mapboxgl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(" ").forEach(_=>this._container.classList.add(_)),this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer","mapboxgl-popup-track-pointer")),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=pa(this._lngLat,this._pos,this._map.transform)),this._trackPointer&&!d))return;const n=this._pos=this._trackPointer&&d?d:this._map.project(this._lngLat);let a=this.options.anchor;const h=zu(this.options.offset);if(!a){const _=this._container.offsetWidth,w=this._container.offsetHeight;let T;T=n.y+h.bottom.ythis._map.transform.height-w?["bottom"]:[],n.x<_/2?T.push("left"):n.x>this._map.transform.width-_/2&&T.push("right"),a=T.length===0?"bottom":T.join("-")}const m=n.add(h[a]).round();A.setTransform(this._container,`${Pt[a]} translate(${m.x}px,${m.y}px)`),jt(this._container,a,"popup")}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;const d=this._container.querySelector(sr);d&&d.focus()}_onClose(){this.remove()}},Marker:ms,Style:Ar,LngLat:l.LngLat,LngLatBounds:l.LngLatBounds,Point:l.pointGeometry,MercatorCoordinate:l.MercatorCoordinate,Evented:l.Evented,AJAXError:l.AJAXError,config:l.config,CanvasSource:Ae,GeoJSONSource:Xe,ImageSource:Pe,RasterDEMTileSource:et,RasterTileSource:$,VectorTileSource:Oe,VideoSource:nt,prewarm:function(){Ue().acquire(sn)},clearPrewarmedResources:function(){const d=He;d&&(d.isPreloaded()&&d.numActive()===1?(d.release(sn),He=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()"))},get version(){return"2.4.0"},get workerCount(){return dn.workerCount},set workerCount(d){dn.workerCount=d},get maxParallelImageRequests(){return l.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(d){l.config.MAX_PARALLEL_IMAGE_REQUESTS=d},clearStorage(d){l.clearTileCache(d)},workerUrl:"",addProtocol(d,n){l.config.REGISTERED_PROTOCOLS[d]=n},removeProtocol(d){delete l.config.REGISTERED_PROTOCOLS[d]}};return pi.extend(Bo,{isSafari:l.isSafari,getPerformanceMetrics:l.PerformanceUtils.getPerformanceMetrics}),Bo});var x=p;return x})})(sw);var f5=sw.exports;const vg=yp(f5);function wd(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var lw={exports:{}};/*! + +JSZip v3.10.1 - A JavaScript class for generating and reading zip files + + +(c) 2009-2016 Stuart Knightley +Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. + +JSZip uses the library pako released under the MIT license : +https://github.com/nodeca/pako/blob/main/LICENSE +*/(function(e,r){(function(s){e.exports=s()})(function(){return function s(c,p,g){function x(k,D){if(!p[k]){if(!c[k]){var M=typeof wd=="function"&&wd;if(!D&&M)return M(k,!0);if(l)return l(k,!0);var A=new Error("Cannot find module '"+k+"'");throw A.code="MODULE_NOT_FOUND",A}var F=p[k]={exports:{}};c[k][0].call(F.exports,function(W){var O=c[k][1][W];return x(O||W)},F,F.exports,s,c,p,g)}return p[k].exports}for(var l=typeof wd=="function"&&wd,S=0;S>2,F=(3&k)<<4|D>>4,W=1>6:64,O=2>4,D=(15&A)<<4|(F=l.indexOf(S.charAt(O++)))>>2,M=(3&F)<<6|(W=l.indexOf(S.charAt(O++))),L[Y++]=k,F!==64&&(L[Y++]=D),W!==64&&(L[Y++]=M);return L}},{"./support":30,"./utils":32}],2:[function(s,c,p){var g=s("./external"),x=s("./stream/DataWorker"),l=s("./stream/Crc32Probe"),S=s("./stream/DataLengthProbe");function k(D,M,A,F,W){this.compressedSize=D,this.uncompressedSize=M,this.crc32=A,this.compression=F,this.compressedContent=W}k.prototype={getContentWorker:function(){var D=new x(g.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new S("data_length")),M=this;return D.on("end",function(){if(this.streamInfo.data_length!==M.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),D},getCompressedWorker:function(){return new x(g.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},k.createWorkerFrom=function(D,M,A){return D.pipe(new l).pipe(new S("uncompressedSize")).pipe(M.compressWorker(A)).pipe(new S("compressedSize")).withStreamInfo("compression",M)},c.exports=k},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(s,c,p){var g=s("./stream/GenericWorker");p.STORE={magic:"\0\0",compressWorker:function(){return new g("STORE compression")},uncompressWorker:function(){return new g("STORE decompression")}},p.DEFLATE=s("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(s,c,p){var g=s("./utils"),x=function(){for(var l,S=[],k=0;k<256;k++){l=k;for(var D=0;D<8;D++)l=1&l?3988292384^l>>>1:l>>>1;S[k]=l}return S}();c.exports=function(l,S){return l!==void 0&&l.length?g.getTypeOf(l)!=="string"?function(k,D,M,A){var F=x,W=A+M;k^=-1;for(var O=A;O>>8^F[255&(k^D[O])];return-1^k}(0|S,l,l.length,0):function(k,D,M,A){var F=x,W=A+M;k^=-1;for(var O=A;O>>8^F[255&(k^D.charCodeAt(O))];return-1^k}(0|S,l,l.length,0):0}},{"./utils":32}],5:[function(s,c,p){p.base64=!1,p.binary=!1,p.dir=!1,p.createFolders=!0,p.date=null,p.compression=null,p.compressionOptions=null,p.comment=null,p.unixPermissions=null,p.dosPermissions=null},{}],6:[function(s,c,p){var g=null;g=typeof Promise<"u"?Promise:s("lie"),c.exports={Promise:g}},{lie:37}],7:[function(s,c,p){var g=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",x=s("pako"),l=s("./utils"),S=s("./stream/GenericWorker"),k=g?"uint8array":"array";function D(M,A){S.call(this,"FlateWorker/"+M),this._pako=null,this._pakoAction=M,this._pakoOptions=A,this.meta={}}p.magic="\b\0",l.inherits(D,S),D.prototype.processChunk=function(M){this.meta=M.meta,this._pako===null&&this._createPako(),this._pako.push(l.transformTo(k,M.data),!1)},D.prototype.flush=function(){S.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},D.prototype.cleanUp=function(){S.prototype.cleanUp.call(this),this._pako=null},D.prototype._createPako=function(){this._pako=new x[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var M=this;this._pako.onData=function(A){M.push({data:A,meta:M.meta})}},p.compressWorker=function(M){return new D("Deflate",M)},p.uncompressWorker=function(){return new D("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(s,c,p){function g(F,W){var O,Y="";for(O=0;O>>=8;return Y}function x(F,W,O,Y,R,L){var G,te,ne=F.file,ve=F.compression,fe=L!==k.utf8encode,be=l.transformTo("string",L(ne.name)),Ce=l.transformTo("string",k.utf8encode(ne.name)),Le=ne.comment,lt=l.transformTo("string",L(Le)),he=l.transformTo("string",k.utf8encode(Le)),Oe=Ce.length!==ne.name.length,$=he.length!==Le.length,Ve="",et="",Xe="",Ye=ne.dir,Pe=ne.date,nt={crc32:0,compressedSize:0,uncompressedSize:0};W&&!O||(nt.crc32=F.crc32,nt.compressedSize=F.compressedSize,nt.uncompressedSize=F.uncompressedSize);var Ae=0;W&&(Ae|=8),fe||!Oe&&!$||(Ae|=2048);var Se=0,bt=0;Ye&&(Se|=16),R==="UNIX"?(bt=798,Se|=function(at,Lt){var rn=at;return at||(rn=Lt?16893:33204),(65535&rn)<<16}(ne.unixPermissions,Ye)):(bt=20,Se|=function(at){return 63&(at||0)}(ne.dosPermissions)),G=Pe.getUTCHours(),G<<=6,G|=Pe.getUTCMinutes(),G<<=5,G|=Pe.getUTCSeconds()/2,te=Pe.getUTCFullYear()-1980,te<<=4,te|=Pe.getUTCMonth()+1,te<<=5,te|=Pe.getUTCDate(),Oe&&(et=g(1,1)+g(D(be),4)+Ce,Ve+="up"+g(et.length,2)+et),$&&(Xe=g(1,1)+g(D(lt),4)+he,Ve+="uc"+g(Xe.length,2)+Xe);var ut="";return ut+=` +\0`,ut+=g(Ae,2),ut+=ve.magic,ut+=g(G,2),ut+=g(te,2),ut+=g(nt.crc32,4),ut+=g(nt.compressedSize,4),ut+=g(nt.uncompressedSize,4),ut+=g(be.length,2),ut+=g(Ve.length,2),{fileRecord:M.LOCAL_FILE_HEADER+ut+be+Ve,dirRecord:M.CENTRAL_FILE_HEADER+g(bt,2)+ut+g(lt.length,2)+"\0\0\0\0"+g(Se,4)+g(Y,4)+be+Ve+lt}}var l=s("../utils"),S=s("../stream/GenericWorker"),k=s("../utf8"),D=s("../crc32"),M=s("../signature");function A(F,W,O,Y){S.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=W,this.zipPlatform=O,this.encodeFileName=Y,this.streamFiles=F,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}l.inherits(A,S),A.prototype.push=function(F){var W=F.meta.percent||0,O=this.entriesCount,Y=this._sources.length;this.accumulate?this.contentBuffer.push(F):(this.bytesWritten+=F.data.length,S.prototype.push.call(this,{data:F.data,meta:{currentFile:this.currentFile,percent:O?(W+100*(O-Y-1))/O:100}}))},A.prototype.openedSource=function(F){this.currentSourceOffset=this.bytesWritten,this.currentFile=F.file.name;var W=this.streamFiles&&!F.file.dir;if(W){var O=x(F,W,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:O.fileRecord,meta:{percent:0}})}else this.accumulate=!0},A.prototype.closedSource=function(F){this.accumulate=!1;var W=this.streamFiles&&!F.file.dir,O=x(F,W,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(O.dirRecord),W)this.push({data:function(Y){return M.DATA_DESCRIPTOR+g(Y.crc32,4)+g(Y.compressedSize,4)+g(Y.uncompressedSize,4)}(F),meta:{percent:100}});else for(this.push({data:O.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},A.prototype.flush=function(){for(var F=this.bytesWritten,W=0;W=this.index;S--)k=(k<<8)+this.byteAt(S);return this.index+=l,k},readString:function(l){return g.transformTo("string",this.readData(l))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var l=this.readInt(4);return new Date(Date.UTC(1980+(l>>25&127),(l>>21&15)-1,l>>16&31,l>>11&31,l>>5&63,(31&l)<<1))}},c.exports=x},{"../utils":32}],19:[function(s,c,p){var g=s("./Uint8ArrayReader");function x(l){g.call(this,l)}s("../utils").inherits(x,g),x.prototype.readData=function(l){this.checkOffset(l);var S=this.data.slice(this.zero+this.index,this.zero+this.index+l);return this.index+=l,S},c.exports=x},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(s,c,p){var g=s("./DataReader");function x(l){g.call(this,l)}s("../utils").inherits(x,g),x.prototype.byteAt=function(l){return this.data.charCodeAt(this.zero+l)},x.prototype.lastIndexOfSignature=function(l){return this.data.lastIndexOf(l)-this.zero},x.prototype.readAndCheckSignature=function(l){return l===this.readData(4)},x.prototype.readData=function(l){this.checkOffset(l);var S=this.data.slice(this.zero+this.index,this.zero+this.index+l);return this.index+=l,S},c.exports=x},{"../utils":32,"./DataReader":18}],21:[function(s,c,p){var g=s("./ArrayReader");function x(l){g.call(this,l)}s("../utils").inherits(x,g),x.prototype.readData=function(l){if(this.checkOffset(l),l===0)return new Uint8Array(0);var S=this.data.subarray(this.zero+this.index,this.zero+this.index+l);return this.index+=l,S},c.exports=x},{"../utils":32,"./ArrayReader":17}],22:[function(s,c,p){var g=s("../utils"),x=s("../support"),l=s("./ArrayReader"),S=s("./StringReader"),k=s("./NodeBufferReader"),D=s("./Uint8ArrayReader");c.exports=function(M){var A=g.getTypeOf(M);return g.checkSupport(A),A!=="string"||x.uint8array?A==="nodebuffer"?new k(M):x.uint8array?new D(g.transformTo("uint8array",M)):new l(g.transformTo("array",M)):new S(M)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(s,c,p){p.LOCAL_FILE_HEADER="PK",p.CENTRAL_FILE_HEADER="PK",p.CENTRAL_DIRECTORY_END="PK",p.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",p.ZIP64_CENTRAL_DIRECTORY_END="PK",p.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(s,c,p){var g=s("./GenericWorker"),x=s("../utils");function l(S){g.call(this,"ConvertWorker to "+S),this.destType=S}x.inherits(l,g),l.prototype.processChunk=function(S){this.push({data:x.transformTo(this.destType,S.data),meta:S.meta})},c.exports=l},{"../utils":32,"./GenericWorker":28}],25:[function(s,c,p){var g=s("./GenericWorker"),x=s("../crc32");function l(){g.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}s("../utils").inherits(l,g),l.prototype.processChunk=function(S){this.streamInfo.crc32=x(S.data,this.streamInfo.crc32||0),this.push(S)},c.exports=l},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(s,c,p){var g=s("../utils"),x=s("./GenericWorker");function l(S){x.call(this,"DataLengthProbe for "+S),this.propName=S,this.withStreamInfo(S,0)}g.inherits(l,x),l.prototype.processChunk=function(S){if(S){var k=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=k+S.data.length}x.prototype.processChunk.call(this,S)},c.exports=l},{"../utils":32,"./GenericWorker":28}],27:[function(s,c,p){var g=s("../utils"),x=s("./GenericWorker");function l(S){x.call(this,"DataWorker");var k=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,S.then(function(D){k.dataIsReady=!0,k.data=D,k.max=D&&D.length||0,k.type=g.getTypeOf(D),k.isPaused||k._tickAndRepeat()},function(D){k.error(D)})}g.inherits(l,x),l.prototype.cleanUp=function(){x.prototype.cleanUp.call(this),this.data=null},l.prototype.resume=function(){return!!x.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,g.delay(this._tickAndRepeat,[],this)),!0)},l.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(g.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},l.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var S=null,k=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":S=this.data.substring(this.index,k);break;case"uint8array":S=this.data.subarray(this.index,k);break;case"array":case"nodebuffer":S=this.data.slice(this.index,k)}return this.index=k,this.push({data:S,meta:{percent:this.max?this.index/this.max*100:0}})},c.exports=l},{"../utils":32,"./GenericWorker":28}],28:[function(s,c,p){function g(x){this.name=x||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}g.prototype={push:function(x){this.emit("data",x)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(x){this.emit("error",x)}return!0},error:function(x){return!this.isFinished&&(this.isPaused?this.generatedError=x:(this.isFinished=!0,this.emit("error",x),this.previous&&this.previous.error(x),this.cleanUp()),!0)},on:function(x,l){return this._listeners[x].push(l),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(x,l){if(this._listeners[x])for(var S=0;S "+x:x}},c.exports=g},{}],29:[function(s,c,p){var g=s("../utils"),x=s("./ConvertWorker"),l=s("./GenericWorker"),S=s("../base64"),k=s("../support"),D=s("../external"),M=null;if(k.nodestream)try{M=s("../nodejs/NodejsStreamOutputAdapter")}catch{}function A(W,O){return new D.Promise(function(Y,R){var L=[],G=W._internalType,te=W._outputType,ne=W._mimeType;W.on("data",function(ve,fe){L.push(ve),O&&O(fe)}).on("error",function(ve){L=[],R(ve)}).on("end",function(){try{var ve=function(fe,be,Ce){switch(fe){case"blob":return g.newBlob(g.transformTo("arraybuffer",be),Ce);case"base64":return S.encode(be);default:return g.transformTo(fe,be)}}(te,function(fe,be){var Ce,Le=0,lt=null,he=0;for(Ce=0;Ce"u")p.blob=!1;else{var g=new ArrayBuffer(0);try{p.blob=new Blob([g],{type:"application/zip"}).size===0}catch{try{var x=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);x.append(g),p.blob=x.getBlob("application/zip").size===0}catch{p.blob=!1}}}try{p.nodestream=!!s("readable-stream").Readable}catch{p.nodestream=!1}},{"readable-stream":16}],31:[function(s,c,p){for(var g=s("./utils"),x=s("./support"),l=s("./nodejsUtils"),S=s("./stream/GenericWorker"),k=new Array(256),D=0;D<256;D++)k[D]=252<=D?6:248<=D?5:240<=D?4:224<=D?3:192<=D?2:1;k[254]=k[254]=1;function M(){S.call(this,"utf-8 decode"),this.leftOver=null}function A(){S.call(this,"utf-8 encode")}p.utf8encode=function(F){return x.nodebuffer?l.newBufferFrom(F,"utf-8"):function(W){var O,Y,R,L,G,te=W.length,ne=0;for(L=0;L>>6:(Y<65536?O[G++]=224|Y>>>12:(O[G++]=240|Y>>>18,O[G++]=128|Y>>>12&63),O[G++]=128|Y>>>6&63),O[G++]=128|63&Y);return O}(F)},p.utf8decode=function(F){return x.nodebuffer?g.transformTo("nodebuffer",F).toString("utf-8"):function(W){var O,Y,R,L,G=W.length,te=new Array(2*G);for(O=Y=0;O>10&1023,te[Y++]=56320|1023&R)}return te.length!==Y&&(te.subarray?te=te.subarray(0,Y):te.length=Y),g.applyFromCharCode(te)}(F=g.transformTo(x.uint8array?"uint8array":"array",F))},g.inherits(M,S),M.prototype.processChunk=function(F){var W=g.transformTo(x.uint8array?"uint8array":"array",F.data);if(this.leftOver&&this.leftOver.length){if(x.uint8array){var O=W;(W=new Uint8Array(O.length+this.leftOver.length)).set(this.leftOver,0),W.set(O,this.leftOver.length)}else W=this.leftOver.concat(W);this.leftOver=null}var Y=function(L,G){var te;for((G=G||L.length)>L.length&&(G=L.length),te=G-1;0<=te&&(192&L[te])==128;)te--;return te<0||te===0?G:te+k[L[te]]>G?te:G}(W),R=W;Y!==W.length&&(x.uint8array?(R=W.subarray(0,Y),this.leftOver=W.subarray(Y,W.length)):(R=W.slice(0,Y),this.leftOver=W.slice(Y,W.length))),this.push({data:p.utf8decode(R),meta:F.meta})},M.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:p.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},p.Utf8DecodeWorker=M,g.inherits(A,S),A.prototype.processChunk=function(F){this.push({data:p.utf8encode(F.data),meta:F.meta})},p.Utf8EncodeWorker=A},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(s,c,p){var g=s("./support"),x=s("./base64"),l=s("./nodejsUtils"),S=s("./external");function k(O){return O}function D(O,Y){for(var R=0;R>8;this.dir=!!(16&this.externalFileAttributes),F==0&&(this.dosPermissions=63&this.externalFileAttributes),F==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var F=g(this.extraFields[1].value);this.uncompressedSize===x.MAX_VALUE_32BITS&&(this.uncompressedSize=F.readInt(8)),this.compressedSize===x.MAX_VALUE_32BITS&&(this.compressedSize=F.readInt(8)),this.localHeaderOffset===x.MAX_VALUE_32BITS&&(this.localHeaderOffset=F.readInt(8)),this.diskNumberStart===x.MAX_VALUE_32BITS&&(this.diskNumberStart=F.readInt(4))}},readExtraFields:function(F){var W,O,Y,R=F.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});F.index+4>>6:(F<65536?A[Y++]=224|F>>>12:(A[Y++]=240|F>>>18,A[Y++]=128|F>>>12&63),A[Y++]=128|F>>>6&63),A[Y++]=128|63&F);return A},p.buf2binstring=function(M){return D(M,M.length)},p.binstring2buf=function(M){for(var A=new g.Buf8(M.length),F=0,W=A.length;F>10&1023,L[W++]=56320|1023&O)}return D(L,W)},p.utf8border=function(M,A){var F;for((A=A||M.length)>M.length&&(A=M.length),F=A-1;0<=F&&(192&M[F])==128;)F--;return F<0||F===0?A:F+S[M[F]]>A?F:A}},{"./common":41}],43:[function(s,c,p){c.exports=function(g,x,l,S){for(var k=65535&g|0,D=g>>>16&65535|0,M=0;l!==0;){for(l-=M=2e3>>1:x>>>1;l[S]=x}return l}();c.exports=function(x,l,S,k){var D=g,M=k+S;x^=-1;for(var A=k;A>>8^D[255&(x^l[A])];return-1^x}},{}],46:[function(s,c,p){var g,x=s("../utils/common"),l=s("./trees"),S=s("./adler32"),k=s("./crc32"),D=s("./messages"),M=0,A=4,F=0,W=-2,O=-1,Y=4,R=2,L=8,G=9,te=286,ne=30,ve=19,fe=2*te+1,be=15,Ce=3,Le=258,lt=Le+Ce+1,he=42,Oe=113,$=1,Ve=2,et=3,Xe=4;function Ye(U,He){return U.msg=D[He],He}function Pe(U){return(U<<1)-(4U.avail_out&&(Ue=U.avail_out),Ue!==0&&(x.arraySet(U.output,He.pending_buf,He.pending_out,Ue,U.next_out),U.next_out+=Ue,He.pending_out+=Ue,U.total_out+=Ue,U.avail_out-=Ue,He.pending-=Ue,He.pending===0&&(He.pending_out=0))}function Se(U,He){l._tr_flush_block(U,0<=U.block_start?U.block_start:-1,U.strstart-U.block_start,He),U.block_start=U.strstart,Ae(U.strm)}function bt(U,He){U.pending_buf[U.pending++]=He}function ut(U,He){U.pending_buf[U.pending++]=He>>>8&255,U.pending_buf[U.pending++]=255&He}function at(U,He){var Ue,ae,oe=U.max_chain_length,ge=U.strstart,Ke=U.prev_length,tt=U.nice_match,Me=U.strstart>U.w_size-lt?U.strstart-(U.w_size-lt):0,ct=U.window,Ne=U.w_mask,je=U.prev,yt=U.strstart+Le,Bt=ct[ge+Ke-1],ke=ct[ge+Ke];U.prev_length>=U.good_match&&(oe>>=2),tt>U.lookahead&&(tt=U.lookahead);do if(ct[(Ue=He)+Ke]===ke&&ct[Ue+Ke-1]===Bt&&ct[Ue]===ct[ge]&&ct[++Ue]===ct[ge+1]){ge+=2,Ue++;do;while(ct[++ge]===ct[++Ue]&&ct[++ge]===ct[++Ue]&&ct[++ge]===ct[++Ue]&&ct[++ge]===ct[++Ue]&&ct[++ge]===ct[++Ue]&&ct[++ge]===ct[++Ue]&&ct[++ge]===ct[++Ue]&&ct[++ge]===ct[++Ue]&&geMe&&--oe!=0);return Ke<=U.lookahead?Ke:U.lookahead}function Lt(U){var He,Ue,ae,oe,ge,Ke,tt,Me,ct,Ne,je=U.w_size;do{if(oe=U.window_size-U.lookahead-U.strstart,U.strstart>=je+(je-lt)){for(x.arraySet(U.window,U.window,je,je,0),U.match_start-=je,U.strstart-=je,U.block_start-=je,He=Ue=U.hash_size;ae=U.head[--He],U.head[He]=je<=ae?ae-je:0,--Ue;);for(He=Ue=je;ae=U.prev[--He],U.prev[He]=je<=ae?ae-je:0,--Ue;);oe+=je}if(U.strm.avail_in===0)break;if(Ke=U.strm,tt=U.window,Me=U.strstart+U.lookahead,ct=oe,Ne=void 0,Ne=Ke.avail_in,ct=Ce)for(ge=U.strstart-U.insert,U.ins_h=U.window[ge],U.ins_h=(U.ins_h<=Ce&&(U.ins_h=(U.ins_h<=Ce)if(ae=l._tr_tally(U,U.strstart-U.match_start,U.match_length-Ce),U.lookahead-=U.match_length,U.match_length<=U.max_lazy_match&&U.lookahead>=Ce){for(U.match_length--;U.strstart++,U.ins_h=(U.ins_h<=Ce&&(U.ins_h=(U.ins_h<=Ce&&U.match_length<=U.prev_length){for(oe=U.strstart+U.lookahead-Ce,ae=l._tr_tally(U,U.strstart-1-U.prev_match,U.prev_length-Ce),U.lookahead-=U.prev_length-1,U.prev_length-=2;++U.strstart<=oe&&(U.ins_h=(U.ins_h<U.pending_buf_size-5&&(Ue=U.pending_buf_size-5);;){if(U.lookahead<=1){if(Lt(U),U.lookahead===0&&He===M)return $;if(U.lookahead===0)break}U.strstart+=U.lookahead,U.lookahead=0;var ae=U.block_start+Ue;if((U.strstart===0||U.strstart>=ae)&&(U.lookahead=U.strstart-ae,U.strstart=ae,Se(U,!1),U.strm.avail_out===0)||U.strstart-U.block_start>=U.w_size-lt&&(Se(U,!1),U.strm.avail_out===0))return $}return U.insert=0,He===A?(Se(U,!0),U.strm.avail_out===0?et:Xe):(U.strstart>U.block_start&&(Se(U,!1),U.strm.avail_out),$)}),new Ut(4,4,8,4,rn),new Ut(4,5,16,8,rn),new Ut(4,6,32,32,rn),new Ut(4,4,16,16,$t),new Ut(8,16,32,32,$t),new Ut(8,16,128,128,$t),new Ut(8,32,128,256,$t),new Ut(32,128,258,1024,$t),new Ut(32,258,258,4096,$t)],p.deflateInit=function(U,He){return dn(U,He,L,15,8,0)},p.deflateInit2=dn,p.deflateReset=sn,p.deflateResetKeep=on,p.deflateSetHeader=function(U,He){return U&&U.state?U.state.wrap!==2?W:(U.state.gzhead=He,F):W},p.deflate=function(U,He){var Ue,ae,oe,ge;if(!U||!U.state||5>8&255),bt(ae,ae.gzhead.time>>16&255),bt(ae,ae.gzhead.time>>24&255),bt(ae,ae.level===9?2:2<=ae.strategy||ae.level<2?4:0),bt(ae,255&ae.gzhead.os),ae.gzhead.extra&&ae.gzhead.extra.length&&(bt(ae,255&ae.gzhead.extra.length),bt(ae,ae.gzhead.extra.length>>8&255)),ae.gzhead.hcrc&&(U.adler=k(U.adler,ae.pending_buf,ae.pending,0)),ae.gzindex=0,ae.status=69):(bt(ae,0),bt(ae,0),bt(ae,0),bt(ae,0),bt(ae,0),bt(ae,ae.level===9?2:2<=ae.strategy||ae.level<2?4:0),bt(ae,3),ae.status=Oe);else{var Ke=L+(ae.w_bits-8<<4)<<8;Ke|=(2<=ae.strategy||ae.level<2?0:ae.level<6?1:ae.level===6?2:3)<<6,ae.strstart!==0&&(Ke|=32),Ke+=31-Ke%31,ae.status=Oe,ut(ae,Ke),ae.strstart!==0&&(ut(ae,U.adler>>>16),ut(ae,65535&U.adler)),U.adler=1}if(ae.status===69)if(ae.gzhead.extra){for(oe=ae.pending;ae.gzindex<(65535&ae.gzhead.extra.length)&&(ae.pending!==ae.pending_buf_size||(ae.gzhead.hcrc&&ae.pending>oe&&(U.adler=k(U.adler,ae.pending_buf,ae.pending-oe,oe)),Ae(U),oe=ae.pending,ae.pending!==ae.pending_buf_size));)bt(ae,255&ae.gzhead.extra[ae.gzindex]),ae.gzindex++;ae.gzhead.hcrc&&ae.pending>oe&&(U.adler=k(U.adler,ae.pending_buf,ae.pending-oe,oe)),ae.gzindex===ae.gzhead.extra.length&&(ae.gzindex=0,ae.status=73)}else ae.status=73;if(ae.status===73)if(ae.gzhead.name){oe=ae.pending;do{if(ae.pending===ae.pending_buf_size&&(ae.gzhead.hcrc&&ae.pending>oe&&(U.adler=k(U.adler,ae.pending_buf,ae.pending-oe,oe)),Ae(U),oe=ae.pending,ae.pending===ae.pending_buf_size)){ge=1;break}ge=ae.gzindexoe&&(U.adler=k(U.adler,ae.pending_buf,ae.pending-oe,oe)),ge===0&&(ae.gzindex=0,ae.status=91)}else ae.status=91;if(ae.status===91)if(ae.gzhead.comment){oe=ae.pending;do{if(ae.pending===ae.pending_buf_size&&(ae.gzhead.hcrc&&ae.pending>oe&&(U.adler=k(U.adler,ae.pending_buf,ae.pending-oe,oe)),Ae(U),oe=ae.pending,ae.pending===ae.pending_buf_size)){ge=1;break}ge=ae.gzindexoe&&(U.adler=k(U.adler,ae.pending_buf,ae.pending-oe,oe)),ge===0&&(ae.status=103)}else ae.status=103;if(ae.status===103&&(ae.gzhead.hcrc?(ae.pending+2>ae.pending_buf_size&&Ae(U),ae.pending+2<=ae.pending_buf_size&&(bt(ae,255&U.adler),bt(ae,U.adler>>8&255),U.adler=0,ae.status=Oe)):ae.status=Oe),ae.pending!==0){if(Ae(U),U.avail_out===0)return ae.last_flush=-1,F}else if(U.avail_in===0&&Pe(He)<=Pe(Ue)&&He!==A)return Ye(U,-5);if(ae.status===666&&U.avail_in!==0)return Ye(U,-5);if(U.avail_in!==0||ae.lookahead!==0||He!==M&&ae.status!==666){var tt=ae.strategy===2?function(Me,ct){for(var Ne;;){if(Me.lookahead===0&&(Lt(Me),Me.lookahead===0)){if(ct===M)return $;break}if(Me.match_length=0,Ne=l._tr_tally(Me,0,Me.window[Me.strstart]),Me.lookahead--,Me.strstart++,Ne&&(Se(Me,!1),Me.strm.avail_out===0))return $}return Me.insert=0,ct===A?(Se(Me,!0),Me.strm.avail_out===0?et:Xe):Me.last_lit&&(Se(Me,!1),Me.strm.avail_out===0)?$:Ve}(ae,He):ae.strategy===3?function(Me,ct){for(var Ne,je,yt,Bt,ke=Me.window;;){if(Me.lookahead<=Le){if(Lt(Me),Me.lookahead<=Le&&ct===M)return $;if(Me.lookahead===0)break}if(Me.match_length=0,Me.lookahead>=Ce&&0Me.lookahead&&(Me.match_length=Me.lookahead)}if(Me.match_length>=Ce?(Ne=l._tr_tally(Me,1,Me.match_length-Ce),Me.lookahead-=Me.match_length,Me.strstart+=Me.match_length,Me.match_length=0):(Ne=l._tr_tally(Me,0,Me.window[Me.strstart]),Me.lookahead--,Me.strstart++),Ne&&(Se(Me,!1),Me.strm.avail_out===0))return $}return Me.insert=0,ct===A?(Se(Me,!0),Me.strm.avail_out===0?et:Xe):Me.last_lit&&(Se(Me,!1),Me.strm.avail_out===0)?$:Ve}(ae,He):g[ae.level].func(ae,He);if(tt!==et&&tt!==Xe||(ae.status=666),tt===$||tt===et)return U.avail_out===0&&(ae.last_flush=-1),F;if(tt===Ve&&(He===1?l._tr_align(ae):He!==5&&(l._tr_stored_block(ae,0,0,!1),He===3&&(nt(ae.head),ae.lookahead===0&&(ae.strstart=0,ae.block_start=0,ae.insert=0))),Ae(U),U.avail_out===0))return ae.last_flush=-1,F}return He!==A?F:ae.wrap<=0?1:(ae.wrap===2?(bt(ae,255&U.adler),bt(ae,U.adler>>8&255),bt(ae,U.adler>>16&255),bt(ae,U.adler>>24&255),bt(ae,255&U.total_in),bt(ae,U.total_in>>8&255),bt(ae,U.total_in>>16&255),bt(ae,U.total_in>>24&255)):(ut(ae,U.adler>>>16),ut(ae,65535&U.adler)),Ae(U),0=Ue.w_size&&(ge===0&&(nt(Ue.head),Ue.strstart=0,Ue.block_start=0,Ue.insert=0),ct=new x.Buf8(Ue.w_size),x.arraySet(ct,He,Ne-Ue.w_size,Ue.w_size,0),He=ct,Ne=Ue.w_size),Ke=U.avail_in,tt=U.next_in,Me=U.input,U.avail_in=Ne,U.next_in=0,U.input=He,Lt(Ue);Ue.lookahead>=Ce;){for(ae=Ue.strstart,oe=Ue.lookahead-(Ce-1);Ue.ins_h=(Ue.ins_h<>>=Ce=be>>>24,G-=Ce,(Ce=be>>>16&255)===0)Ve[D++]=65535&be;else{if(!(16&Ce)){if(!(64&Ce)){be=te[(65535&be)+(L&(1<>>=Ce,G-=Ce),G<15&&(L+=$[S++]<>>=Ce=be>>>24,G-=Ce,!(16&(Ce=be>>>16&255))){if(!(64&Ce)){be=ne[(65535&be)+(L&(1<>>=Ce,G-=Ce,(Ce=D-M)>3,L&=(1<<(G-=Le<<3))-1,g.next_in=S,g.next_out=D,g.avail_in=S>>24&255)+(he>>>8&65280)+((65280&he)<<8)+((255&he)<<24)}function L(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new g.Buf16(320),this.work=new g.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function G(he){var Oe;return he&&he.state?(Oe=he.state,he.total_in=he.total_out=Oe.total=0,he.msg="",Oe.wrap&&(he.adler=1&Oe.wrap),Oe.mode=W,Oe.last=0,Oe.havedict=0,Oe.dmax=32768,Oe.head=null,Oe.hold=0,Oe.bits=0,Oe.lencode=Oe.lendyn=new g.Buf32(O),Oe.distcode=Oe.distdyn=new g.Buf32(Y),Oe.sane=1,Oe.back=-1,A):F}function te(he){var Oe;return he&&he.state?((Oe=he.state).wsize=0,Oe.whave=0,Oe.wnext=0,G(he)):F}function ne(he,Oe){var $,Ve;return he&&he.state?(Ve=he.state,Oe<0?($=0,Oe=-Oe):($=1+(Oe>>4),Oe<48&&(Oe&=15)),Oe&&(Oe<8||15=Xe.wsize?(g.arraySet(Xe.window,Oe,$-Xe.wsize,Xe.wsize,0),Xe.wnext=0,Xe.whave=Xe.wsize):(Ve<(et=Xe.wsize-Xe.wnext)&&(et=Ve),g.arraySet(Xe.window,Oe,$-Ve,et,Xe.wnext),(Ve-=et)?(g.arraySet(Xe.window,Oe,$-Ve,Ve,0),Xe.wnext=Ve,Xe.whave=Xe.wsize):(Xe.wnext+=et,Xe.wnext===Xe.wsize&&(Xe.wnext=0),Xe.whave>>8&255,$.check=l($.check,ge,2,0),Se=Ae=0,$.mode=2;break}if($.flags=0,$.head&&($.head.done=!1),!(1&$.wrap)||(((255&Ae)<<8)+(Ae>>8))%31){he.msg="incorrect header check",$.mode=30;break}if((15&Ae)!=8){he.msg="unknown compression method",$.mode=30;break}if(Se-=4,U=8+(15&(Ae>>>=4)),$.wbits===0)$.wbits=U;else if(U>$.wbits){he.msg="invalid window size",$.mode=30;break}$.dmax=1<>8&1),512&$.flags&&(ge[0]=255&Ae,ge[1]=Ae>>>8&255,$.check=l($.check,ge,2,0)),Se=Ae=0,$.mode=3;case 3:for(;Se<32;){if(Pe===0)break e;Pe--,Ae+=Ve[Xe++]<>>8&255,ge[2]=Ae>>>16&255,ge[3]=Ae>>>24&255,$.check=l($.check,ge,4,0)),Se=Ae=0,$.mode=4;case 4:for(;Se<16;){if(Pe===0)break e;Pe--,Ae+=Ve[Xe++]<>8),512&$.flags&&(ge[0]=255&Ae,ge[1]=Ae>>>8&255,$.check=l($.check,ge,2,0)),Se=Ae=0,$.mode=5;case 5:if(1024&$.flags){for(;Se<16;){if(Pe===0)break e;Pe--,Ae+=Ve[Xe++]<>>8&255,$.check=l($.check,ge,2,0)),Se=Ae=0}else $.head&&($.head.extra=null);$.mode=6;case 6:if(1024&$.flags&&(Pe<(at=$.length)&&(at=Pe),at&&($.head&&(U=$.head.extra_len-$.length,$.head.extra||($.head.extra=new Array($.head.extra_len)),g.arraySet($.head.extra,Ve,Xe,at,U)),512&$.flags&&($.check=l($.check,Ve,at,Xe)),Pe-=at,Xe+=at,$.length-=at),$.length))break e;$.length=0,$.mode=7;case 7:if(2048&$.flags){if(Pe===0)break e;for(at=0;U=Ve[Xe+at++],$.head&&U&&$.length<65536&&($.head.name+=String.fromCharCode(U)),U&&at>9&1,$.head.done=!0),he.adler=$.check=0,$.mode=12;break;case 10:for(;Se<32;){if(Pe===0)break e;Pe--,Ae+=Ve[Xe++]<>>=7&Se,Se-=7&Se,$.mode=27;break}for(;Se<3;){if(Pe===0)break e;Pe--,Ae+=Ve[Xe++]<>>=1)){case 0:$.mode=14;break;case 1:if(Le($),$.mode=20,Oe!==6)break;Ae>>>=2,Se-=2;break e;case 2:$.mode=17;break;case 3:he.msg="invalid block type",$.mode=30}Ae>>>=2,Se-=2;break;case 14:for(Ae>>>=7&Se,Se-=7&Se;Se<32;){if(Pe===0)break e;Pe--,Ae+=Ve[Xe++]<>>16^65535)){he.msg="invalid stored block lengths",$.mode=30;break}if($.length=65535&Ae,Se=Ae=0,$.mode=15,Oe===6)break e;case 15:$.mode=16;case 16:if(at=$.length){if(Pe>>=5,Se-=5,$.ndist=1+(31&Ae),Ae>>>=5,Se-=5,$.ncode=4+(15&Ae),Ae>>>=4,Se-=4,286<$.nlen||30<$.ndist){he.msg="too many length or distance symbols",$.mode=30;break}$.have=0,$.mode=18;case 18:for(;$.have<$.ncode;){for(;Se<3;){if(Pe===0)break e;Pe--,Ae+=Ve[Xe++]<>>=3,Se-=3}for(;$.have<19;)$.lens[Ke[$.have++]]=0;if($.lencode=$.lendyn,$.lenbits=7,Ue={bits:$.lenbits},He=k(0,$.lens,0,19,$.lencode,0,$.work,Ue),$.lenbits=Ue.bits,He){he.msg="invalid code lengths set",$.mode=30;break}$.have=0,$.mode=19;case 19:for(;$.have<$.nlen+$.ndist;){for(;Ut=(oe=$.lencode[Ae&(1<<$.lenbits)-1])>>>16&255,Nt=65535&oe,!(($t=oe>>>24)<=Se);){if(Pe===0)break e;Pe--,Ae+=Ve[Xe++]<>>=$t,Se-=$t,$.lens[$.have++]=Nt;else{if(Nt===16){for(ae=$t+2;Se>>=$t,Se-=$t,$.have===0){he.msg="invalid bit length repeat",$.mode=30;break}U=$.lens[$.have-1],at=3+(3&Ae),Ae>>>=2,Se-=2}else if(Nt===17){for(ae=$t+3;Se>>=$t)),Ae>>>=3,Se-=3}else{for(ae=$t+7;Se>>=$t)),Ae>>>=7,Se-=7}if($.have+at>$.nlen+$.ndist){he.msg="invalid bit length repeat",$.mode=30;break}for(;at--;)$.lens[$.have++]=U}}if($.mode===30)break;if($.lens[256]===0){he.msg="invalid code -- missing end-of-block",$.mode=30;break}if($.lenbits=9,Ue={bits:$.lenbits},He=k(D,$.lens,0,$.nlen,$.lencode,0,$.work,Ue),$.lenbits=Ue.bits,He){he.msg="invalid literal/lengths set",$.mode=30;break}if($.distbits=6,$.distcode=$.distdyn,Ue={bits:$.distbits},He=k(M,$.lens,$.nlen,$.ndist,$.distcode,0,$.work,Ue),$.distbits=Ue.bits,He){he.msg="invalid distances set",$.mode=30;break}if($.mode=20,Oe===6)break e;case 20:$.mode=21;case 21:if(6<=Pe&&258<=nt){he.next_out=Ye,he.avail_out=nt,he.next_in=Xe,he.avail_in=Pe,$.hold=Ae,$.bits=Se,S(he,ut),Ye=he.next_out,et=he.output,nt=he.avail_out,Xe=he.next_in,Ve=he.input,Pe=he.avail_in,Ae=$.hold,Se=$.bits,$.mode===12&&($.back=-1);break}for($.back=0;Ut=(oe=$.lencode[Ae&(1<<$.lenbits)-1])>>>16&255,Nt=65535&oe,!(($t=oe>>>24)<=Se);){if(Pe===0)break e;Pe--,Ae+=Ve[Xe++]<>on)])>>>16&255,Nt=65535&oe,!(on+($t=oe>>>24)<=Se);){if(Pe===0)break e;Pe--,Ae+=Ve[Xe++]<>>=on,Se-=on,$.back+=on}if(Ae>>>=$t,Se-=$t,$.back+=$t,$.length=Nt,Ut===0){$.mode=26;break}if(32&Ut){$.back=-1,$.mode=12;break}if(64&Ut){he.msg="invalid literal/length code",$.mode=30;break}$.extra=15&Ut,$.mode=22;case 22:if($.extra){for(ae=$.extra;Se>>=$.extra,Se-=$.extra,$.back+=$.extra}$.was=$.length,$.mode=23;case 23:for(;Ut=(oe=$.distcode[Ae&(1<<$.distbits)-1])>>>16&255,Nt=65535&oe,!(($t=oe>>>24)<=Se);){if(Pe===0)break e;Pe--,Ae+=Ve[Xe++]<>on)])>>>16&255,Nt=65535&oe,!(on+($t=oe>>>24)<=Se);){if(Pe===0)break e;Pe--,Ae+=Ve[Xe++]<>>=on,Se-=on,$.back+=on}if(Ae>>>=$t,Se-=$t,$.back+=$t,64&Ut){he.msg="invalid distance code",$.mode=30;break}$.offset=Nt,$.extra=15&Ut,$.mode=24;case 24:if($.extra){for(ae=$.extra;Se>>=$.extra,Se-=$.extra,$.back+=$.extra}if($.offset>$.dmax){he.msg="invalid distance too far back",$.mode=30;break}$.mode=25;case 25:if(nt===0)break e;if(at=ut-nt,$.offset>at){if((at=$.offset-at)>$.whave&&$.sane){he.msg="invalid distance too far back",$.mode=30;break}Lt=at>$.wnext?(at-=$.wnext,$.wsize-at):$.wnext-at,at>$.length&&(at=$.length),rn=$.window}else rn=et,Lt=Ye-$.offset,at=$.length;for(ntfe?(Ce=Lt[rn+Y[Oe]],Se[bt+Y[Oe]]):(Ce=96,0),L=1<>Ye)+(G-=L)]=be<<24|Ce<<16|Le|0,G!==0;);for(L=1<>=1;if(L!==0?(Ae&=L-1,Ae+=L):Ae=0,Oe++,--ut[he]==0){if(he===Ve)break;he=M[A+Y[Oe]]}if(et>>7)]}function bt(oe,ge){oe.pending_buf[oe.pending++]=255&ge,oe.pending_buf[oe.pending++]=ge>>>8&255}function ut(oe,ge,Ke){oe.bi_valid>R-Ke?(oe.bi_buf|=ge<>R-oe.bi_valid,oe.bi_valid+=Ke-R):(oe.bi_buf|=ge<>>=1,Ke<<=1,0<--ge;);return Ke>>>1}function rn(oe,ge,Ke){var tt,Me,ct=new Array(Y+1),Ne=0;for(tt=1;tt<=Y;tt++)ct[tt]=Ne=Ne+Ke[tt-1]<<1;for(Me=0;Me<=ge;Me++){var je=oe[2*Me+1];je!==0&&(oe[2*Me]=Lt(ct[je]++,je))}}function $t(oe){var ge;for(ge=0;ge>1;1<=Ke;Ke--)on(oe,ct,Ke);for(Me=yt;Ke=oe.heap[1],oe.heap[1]=oe.heap[oe.heap_len--],on(oe,ct,1),tt=oe.heap[1],oe.heap[--oe.heap_max]=Ke,oe.heap[--oe.heap_max]=tt,ct[2*Me]=ct[2*Ke]+ct[2*tt],oe.depth[Me]=(oe.depth[Ke]>=oe.depth[tt]?oe.depth[Ke]:oe.depth[tt])+1,ct[2*Ke+1]=ct[2*tt+1]=Me,oe.heap[1]=Me++,on(oe,ct,1),2<=oe.heap_len;);oe.heap[--oe.heap_max]=oe.heap[1],function(ke,it){var Wn,pn,Ht,en,Ln,$n,Gn=it.dyn_tree,ht=it.max_code,qt=it.stat_desc.static_tree,Gt=it.stat_desc.has_stree,er=it.stat_desc.extra_bits,Sn=it.stat_desc.extra_base,At=it.stat_desc.max_length,Cn=0;for(en=0;en<=Y;en++)ke.bl_count[en]=0;for(Gn[2*ke.heap[ke.heap_max]+1]=0,Wn=ke.heap_max+1;Wn>=7;Me>>=1)if(1&Bt&&je.dyn_ltree[2*yt]!==0)return x;if(je.dyn_ltree[18]!==0||je.dyn_ltree[20]!==0||je.dyn_ltree[26]!==0)return l;for(yt=32;yt>>3,(ct=oe.static_len+3+7>>>3)<=Me&&(Me=ct)):Me=ct=Ke+5,Ke+4<=Me&&ge!==-1?ae(oe,ge,Ke,tt):oe.strategy===4||ct===Me?(ut(oe,2+(tt?1:0),3),sn(oe,lt,he)):(ut(oe,4+(tt?1:0),3),function(je,yt,Bt,ke){var it;for(ut(je,yt-257,5),ut(je,Bt-1,5),ut(je,ke-4,4),it=0;it>>8&255,oe.pending_buf[oe.d_buf+2*oe.last_lit+1]=255&ge,oe.pending_buf[oe.l_buf+oe.last_lit]=255&Ke,oe.last_lit++,ge===0?oe.dyn_ltree[2*Ke]++:(oe.matches++,ge--,oe.dyn_ltree[2*($[Ke]+M+1)]++,oe.dyn_dtree[2*Se(ge)]++),oe.last_lit===oe.lit_bufsize-1},p._tr_align=function(oe){ut(oe,2,3),at(oe,G,lt),function(ge){ge.bi_valid===16?(bt(ge,ge.bi_buf),ge.bi_buf=0,ge.bi_valid=0):8<=ge.bi_valid&&(ge.pending_buf[ge.pending++]=255&ge.bi_buf,ge.bi_buf>>=8,ge.bi_valid-=8)}(oe)}},{"../utils/common":41}],53:[function(s,c,p){c.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(s,c,p){(function(g){(function(x,l){if(!x.setImmediate){var S,k,D,M,A=1,F={},W=!1,O=x.document,Y=Object.getPrototypeOf&&Object.getPrototypeOf(x);Y=Y&&Y.setTimeout?Y:x,S={}.toString.call(x.process)==="[object process]"?function(te){process.nextTick(function(){L(te)})}:function(){if(x.postMessage&&!x.importScripts){var te=!0,ne=x.onmessage;return x.onmessage=function(){te=!1},x.postMessage("","*"),x.onmessage=ne,te}}()?(M="setImmediate$"+Math.random()+"$",x.addEventListener?x.addEventListener("message",G,!1):x.attachEvent("onmessage",G),function(te){x.postMessage(M+te,"*")}):x.MessageChannel?((D=new MessageChannel).port1.onmessage=function(te){L(te.data)},function(te){D.port2.postMessage(te)}):O&&"onreadystatechange"in O.createElement("script")?(k=O.documentElement,function(te){var ne=O.createElement("script");ne.onreadystatechange=function(){L(te),ne.onreadystatechange=null,k.removeChild(ne),ne=null},k.appendChild(ne)}):function(te){setTimeout(L,0,te)},Y.setImmediate=function(te){typeof te!="function"&&(te=new Function(""+te));for(var ne=new Array(arguments.length-1),ve=0;ve"u"?g===void 0?this:g:self)}).call(this,typeof ko<"u"?ko:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})})(lw);var m5=lw.exports;const g5=yp(m5);var uw={exports:{}};(function(e,r){(function(s,c){c()})(ko,function(){function s(k,D){return typeof D>"u"?D={autoBom:!1}:typeof D!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),D={autoBom:!D}),D.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(k.type)?new Blob(["\uFEFF",k],{type:k.type}):k}function c(k,D,M){var A=new XMLHttpRequest;A.open("GET",k),A.responseType="blob",A.onload=function(){S(A.response,D,M)},A.onerror=function(){console.error("could not download file")},A.send()}function p(k){var D=new XMLHttpRequest;D.open("HEAD",k,!1);try{D.send()}catch{}return 200<=D.status&&299>=D.status}function g(k){try{k.dispatchEvent(new MouseEvent("click"))}catch{var D=document.createEvent("MouseEvents");D.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),k.dispatchEvent(D)}}var x=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof ko=="object"&&ko.global===ko?ko:void 0,l=x.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),S=x.saveAs||(typeof window!="object"||window!==x?function(){}:"download"in HTMLAnchorElement.prototype&&!l?function(k,D,M){var A=x.URL||x.webkitURL,F=document.createElement("a");D=D||k.name||"download",F.download=D,F.rel="noopener",typeof k=="string"?(F.href=k,F.origin===location.origin?g(F):p(F.href)?c(k,D,M):g(F,F.target="_blank")):(F.href=A.createObjectURL(k),setTimeout(function(){A.revokeObjectURL(F.href)},4e4),setTimeout(function(){g(F)},0))}:"msSaveOrOpenBlob"in navigator?function(k,D,M){if(D=D||k.name||"download",typeof k!="string")navigator.msSaveOrOpenBlob(s(k,M),D);else if(p(k))c(k,D,M);else{var A=document.createElement("a");A.href=k,A.target="_blank",setTimeout(function(){g(A)})}}:function(k,D,M,A){if(A=A||open("","_blank"),A&&(A.document.title=A.document.body.innerText="downloading..."),typeof k=="string")return c(k,D,M);var F=k.type==="application/octet-stream",W=/constructor/i.test(x.HTMLElement)||x.safari,O=/CriOS\/[\d]+/.test(navigator.userAgent);if((O||F&&W||l)&&typeof FileReader<"u"){var Y=new FileReader;Y.onloadend=function(){var G=Y.result;G=O?G:G.replace(/^data:[^;]*;/,"data:attachment/file;"),A?A.location.href=G:location=G,A=null},Y.readAsDataURL(k)}else{var R=x.URL||x.webkitURL,L=R.createObjectURL(k);A?A.location=L:location.href=L,A=null,setTimeout(function(){R.revokeObjectURL(L)},4e4)}});x.saveAs=S.saveAs=S,e.exports=S})})(uw);var y5=uw.exports;const Fc="Noto Sans Regular",_5=[{name:'Font stack "Barlow Regular"',files:["Barlow-Regular.ttf"]},{name:'Font stack "Lato Bold"',files:["Lato-Bold.ttf"]},{name:'Font stack "Lato Bold,Barlow Regular"',files:["Lato-Bold.ttf","Barlow-Regular.ttf"]}],v5=[["name","default"],["name:en","en"],["name:ru","ru"],["name:ar","ar"],["name:zh-Hant","zh-Hant"],["name:zh-Hans","zh-Hans"],["name:ja","ja"],["name:ko","ko"],["name:fr","fr"],["name:uk","uk"],["name:de","de"],["name:fi","fi"],["name:pl","pl"],["name:es","es"],["name:be","be"],["name:br","br"],["name:he","he"],["name:sr","sr"],["name:sv","sv"],["name:it","it"],["name:ga","ga"],["name:el","el"],["name:kn","kn"],["name:th","th"],["name:nl","nl"],["name:ca","ca"],["name:hu","hu"],["name:eu","eu"],["name:oc","oc"],["name:lt","lt"],["name:cs","cs"],["name:ro","ro"],["name:hi","hi"],["name:ka","ka"],["name:fa","fa"],["name:pt","pt"],["name:my","my"],["name:nan","nan"],["name:ku","ku"],["name:ur","ur"],["name:vi","vi"],["name:bg","bg"],["name:hsb","hsb"],["name:bo","bo"],["name:hak","hak"],["name:tay","tay"],["name:szy","szy"],["name:ami","ami"],["name:se","se"]];function x5(){for(var e=arguments.length,r=new Array(e),s=0;sc=>{r.forEach(p=>p(c))},r)}const Rp=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Hl(e){const r=Object.prototype.toString.call(e);return r==="[object Window]"||r==="[object global]"}function Cy(e){return"nodeType"in e}function hi(e){var r,s;return e?Hl(e)?e:Cy(e)&&(r=(s=e.ownerDocument)==null?void 0:s.defaultView)!=null?r:window:window}function Iy(e){const{Document:r}=hi(e);return e instanceof r}function Zc(e){return Hl(e)?!1:e instanceof hi(e).HTMLElement}function w5(e){return e instanceof hi(e).SVGElement}function Xl(e){return e?Hl(e)?e.document:Cy(e)?Iy(e)?e:Zc(e)?e.ownerDocument:document:document:document}const Ki=Rp?ye.useLayoutEffect:ye.useEffect;function Lp(e){const r=ye.useRef(e);return Ki(()=>{r.current=e}),ye.useCallback(function(){for(var s=arguments.length,c=new Array(s),p=0;p{e.current=setInterval(c,p)},[]),s=ye.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[r,s]}function Oc(e,r){r===void 0&&(r=[e]);const s=ye.useRef(e);return Ki(()=>{s.current!==e&&(s.current=e)},r),s}function qc(e,r){const s=ye.useRef();return ye.useMemo(()=>{const c=e(s.current);return s.current=c,c},[...r])}function lp(e){const r=Lp(e),s=ye.useRef(null),c=ye.useCallback(p=>{p!==s.current&&(r==null||r(p,s.current)),s.current=p},[]);return[s,c]}function up(e){const r=ye.useRef();return ye.useEffect(()=>{r.current=e},[e]),r.current}let _m={};function Wc(e,r){return ye.useMemo(()=>{if(r)return r;const s=_m[e]==null?0:_m[e]+1;return _m[e]=s,e+"-"+s},[e,r])}function cw(e){return function(r){for(var s=arguments.length,c=new Array(s>1?s-1:0),p=1;p{const l=Object.entries(x);for(const[S,k]of l){const D=g[S];D!=null&&(g[S]=D+e*k)}return g},{...r})}}const Rl=cw(1),cp=cw(-1);function S5(e){return"clientX"in e&&"clientY"in e}function Bp(e){if(!e)return!1;const{KeyboardEvent:r}=hi(e.target);return r&&e instanceof r}function E5(e){if(!e)return!1;const{TouchEvent:r}=hi(e.target);return r&&e instanceof r}function hp(e){if(E5(e)){if(e.touches&&e.touches.length){const{clientX:r,clientY:s}=e.touches[0];return{x:r,y:s}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:r,clientY:s}=e.changedTouches[0];return{x:r,y:s}}}return S5(e)?{x:e.clientX,y:e.clientY}:null}const Po=Object.freeze({Translate:{toString(e){if(!e)return;const{x:r,y:s}=e;return"translate3d("+(r?Math.round(r):0)+"px, "+(s?Math.round(s):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:r,scaleY:s}=e;return"scaleX("+r+") scaleY("+s+")"}},Transform:{toString(e){if(e)return[Po.Translate.toString(e),Po.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:r,duration:s,easing:c}=e;return r+" "+s+"ms "+c}}}),pv="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function T5(e){return e.matches(pv)?e:e.querySelector(pv)}const k5={display:"none"};function C5(e){let{id:r,value:s}=e;return Xn.createElement("div",{id:r,style:k5},s)}const I5={position:"fixed",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};function A5(e){let{id:r,announcement:s}=e;return Xn.createElement("div",{id:r,style:I5,role:"status","aria-live":"assertive","aria-atomic":!0},s)}function z5(){const[e,r]=ye.useState("");return{announce:ye.useCallback(c=>{c!=null&&r(c)},[]),announcement:e}}const hw=ye.createContext(null);function P5(e){const r=ye.useContext(hw);ye.useEffect(()=>{if(!r)throw new Error("useDndMonitor must be used within a children of ");return r(e)},[e,r])}function M5(){const[e]=ye.useState(()=>new Set),r=ye.useCallback(c=>(e.add(c),()=>e.delete(c)),[e]);return[ye.useCallback(c=>{let{type:p,event:g}=c;e.forEach(x=>{var l;return(l=x[p])==null?void 0:l.call(x,g)})},[e]),r]}const D5={draggable:` + To pick up a draggable item, press the space bar. + While dragging, use the arrow keys to move the item. + Press space again to drop the item in its new position, or press escape to cancel. + `},R5={onDragStart(e){let{active:r}=e;return"Picked up draggable item "+r.id+"."},onDragOver(e){let{active:r,over:s}=e;return s?"Draggable item "+r.id+" was moved over droppable area "+s.id+".":"Draggable item "+r.id+" is no longer over a droppable area."},onDragEnd(e){let{active:r,over:s}=e;return s?"Draggable item "+r.id+" was dropped over droppable area "+s.id:"Draggable item "+r.id+" was dropped."},onDragCancel(e){let{active:r}=e;return"Dragging was cancelled. Draggable item "+r.id+" was dropped."}};function L5(e){let{announcements:r=R5,container:s,hiddenTextDescribedById:c,screenReaderInstructions:p=D5}=e;const{announce:g,announcement:x}=z5(),l=Wc("DndLiveRegion"),[S,k]=ye.useState(!1);if(ye.useEffect(()=>{k(!0)},[]),P5(ye.useMemo(()=>({onDragStart(M){let{active:A}=M;g(r.onDragStart({active:A}))},onDragMove(M){let{active:A,over:F}=M;r.onDragMove&&g(r.onDragMove({active:A,over:F}))},onDragOver(M){let{active:A,over:F}=M;g(r.onDragOver({active:A,over:F}))},onDragEnd(M){let{active:A,over:F}=M;g(r.onDragEnd({active:A,over:F}))},onDragCancel(M){let{active:A,over:F}=M;g(r.onDragCancel({active:A,over:F}))}}),[g,r])),!S)return null;const D=Xn.createElement(Xn.Fragment,null,Xn.createElement(C5,{id:c,value:p.draggable}),Xn.createElement(A5,{id:l,announcement:x}));return s?Io.createPortal(D,s):D}var kr;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(kr||(kr={}));function dp(){}function B5(e,r){return ye.useMemo(()=>({sensor:e,options:r??{}}),[e,r])}function F5(){for(var e=arguments.length,r=new Array(e),s=0;s[...r].filter(c=>c!=null),[...r])}const ho=Object.freeze({x:0,y:0});function O5(e,r){return Math.sqrt(Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2))}function N5(e,r){const s=hp(e);if(!s)return"0 0";const c={x:(s.x-r.left)/r.width*100,y:(s.y-r.top)/r.height*100};return c.x+"% "+c.y+"%"}function U5(e,r){let{data:{value:s}}=e,{data:{value:c}}=r;return s-c}function V5(e,r){let{data:{value:s}}=e,{data:{value:c}}=r;return c-s}function j5(e,r){if(!e||e.length===0)return null;const[s]=e;return r?s[r]:s}function fv(e,r,s){return r===void 0&&(r=e.left),s===void 0&&(s=e.top),{x:r+e.width*.5,y:s+e.height*.5}}const $5=e=>{let{collisionRect:r,droppableRects:s,droppableContainers:c}=e;const p=fv(r,r.left,r.top),g=[];for(const x of c){const{id:l}=x,S=s.get(l);if(S){const k=O5(fv(S),p);g.push({id:l,data:{droppableContainer:x,value:k}})}}return g.sort(U5)};function G5(e,r){const s=Math.max(r.top,e.top),c=Math.max(r.left,e.left),p=Math.min(r.left+r.width,e.left+e.width),g=Math.min(r.top+r.height,e.top+e.height),x=p-c,l=g-s;if(c{let{collisionRect:r,droppableRects:s,droppableContainers:c}=e;const p=[];for(const g of c){const{id:x}=g,l=s.get(x);if(l){const S=G5(l,r);S>0&&p.push({id:x,data:{droppableContainer:g,value:S}})}}return p.sort(V5)};function q5(e,r,s){return{...e,scaleX:r&&s?r.width/s.width:1,scaleY:r&&s?r.height/s.height:1}}function dw(e,r){return e&&r?{x:e.left-r.left,y:e.top-r.top}:ho}function W5(e){return function(s){for(var c=arguments.length,p=new Array(c>1?c-1:0),g=1;g({...x,top:x.top+e*l.y,bottom:x.bottom+e*l.y,left:x.left+e*l.x,right:x.right+e*l.x}),{...s})}}const H5=W5(1);function pw(e){if(e.startsWith("matrix3d(")){const r=e.slice(9,-1).split(/, /);return{x:+r[12],y:+r[13],scaleX:+r[0],scaleY:+r[5]}}else if(e.startsWith("matrix(")){const r=e.slice(7,-1).split(/, /);return{x:+r[4],y:+r[5],scaleX:+r[0],scaleY:+r[3]}}return null}function X5(e,r,s){const c=pw(r);if(!c)return e;const{scaleX:p,scaleY:g,x,y:l}=c,S=e.left-x-(1-p)*parseFloat(s),k=e.top-l-(1-g)*parseFloat(s.slice(s.indexOf(" ")+1)),D=p?e.width/p:e.width,M=g?e.height/g:e.height;return{width:D,height:M,top:k,right:S+D,bottom:k+M,left:S}}const K5={ignoreTransform:!1};function Kl(e,r){r===void 0&&(r=K5);let s=e.getBoundingClientRect();if(r.ignoreTransform){const{transform:k,transformOrigin:D}=hi(e).getComputedStyle(e);k&&(s=X5(s,k,D))}const{top:c,left:p,width:g,height:x,bottom:l,right:S}=s;return{top:c,left:p,width:g,height:x,bottom:l,right:S}}function mv(e){return Kl(e,{ignoreTransform:!0})}function Y5(e){const r=e.innerWidth,s=e.innerHeight;return{top:0,left:0,right:r,bottom:s,width:r,height:s}}function J5(e,r){return r===void 0&&(r=hi(e).getComputedStyle(e)),r.position==="fixed"}function Q5(e,r){r===void 0&&(r=hi(e).getComputedStyle(e));const s=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(p=>{const g=r[p];return typeof g=="string"?s.test(g):!1})}function Ay(e,r){const s=[];function c(p){if(r!=null&&s.length>=r||!p)return s;if(Iy(p)&&p.scrollingElement!=null&&!s.includes(p.scrollingElement))return s.push(p.scrollingElement),s;if(!Zc(p)||w5(p)||s.includes(p))return s;const g=hi(e).getComputedStyle(p);return p!==e&&Q5(p,g)&&s.push(p),J5(p,g)?s:c(p.parentNode)}return e?c(e):s}function fw(e){const[r]=Ay(e,1);return r??null}function vm(e){return!Rp||!e?null:Hl(e)?e:Cy(e)?Iy(e)||e===Xl(e).scrollingElement?window:Zc(e)?e:null:null}function mw(e){return Hl(e)?e.scrollX:e.scrollLeft}function gw(e){return Hl(e)?e.scrollY:e.scrollTop}function xg(e){return{x:mw(e),y:gw(e)}}var Lr;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(Lr||(Lr={}));function yw(e){return!Rp||!e?!1:e===document.scrollingElement}function _w(e){const r={x:0,y:0},s=yw(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},c={x:e.scrollWidth-s.width,y:e.scrollHeight-s.height},p=e.scrollTop<=r.y,g=e.scrollLeft<=r.x,x=e.scrollTop>=c.y,l=e.scrollLeft>=c.x;return{isTop:p,isLeft:g,isBottom:x,isRight:l,maxScroll:c,minScroll:r}}const eS={x:.2,y:.2};function tS(e,r,s,c,p){let{top:g,left:x,right:l,bottom:S}=s;c===void 0&&(c=10),p===void 0&&(p=eS);const{isTop:k,isBottom:D,isLeft:M,isRight:A}=_w(e),F={x:0,y:0},W={x:0,y:0},O={height:r.height*p.y,width:r.width*p.x};return!k&&g<=r.top+O.height?(F.y=Lr.Backward,W.y=c*Math.abs((r.top+O.height-g)/O.height)):!D&&S>=r.bottom-O.height&&(F.y=Lr.Forward,W.y=c*Math.abs((r.bottom-O.height-S)/O.height)),!A&&l>=r.right-O.width?(F.x=Lr.Forward,W.x=c*Math.abs((r.right-O.width-l)/O.width)):!M&&x<=r.left+O.width&&(F.x=Lr.Backward,W.x=c*Math.abs((r.left+O.width-x)/O.width)),{direction:F,speed:W}}function nS(e){if(e===document.scrollingElement){const{innerWidth:g,innerHeight:x}=window;return{top:0,left:0,right:g,bottom:x,width:g,height:x}}const{top:r,left:s,right:c,bottom:p}=e.getBoundingClientRect();return{top:r,left:s,right:c,bottom:p,width:e.clientWidth,height:e.clientHeight}}function vw(e){return e.reduce((r,s)=>Rl(r,xg(s)),ho)}function rS(e){return e.reduce((r,s)=>r+mw(s),0)}function iS(e){return e.reduce((r,s)=>r+gw(s),0)}function xw(e,r){if(r===void 0&&(r=Kl),!e)return;const{top:s,left:c,bottom:p,right:g}=r(e);fw(e)&&(p<=0||g<=0||s>=window.innerHeight||c>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const oS=[["x",["left","right"],rS],["y",["top","bottom"],iS]];class zy{constructor(r,s){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const c=Ay(s),p=vw(c);this.rect={...r},this.width=r.width,this.height=r.height;for(const[g,x,l]of oS)for(const S of x)Object.defineProperty(this,S,{get:()=>{const k=l(c),D=p[g]-k;return this.rect[S]+D},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class yc{constructor(r){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(s=>{var c;return(c=this.target)==null?void 0:c.removeEventListener(...s)})},this.target=r}add(r,s,c){var p;(p=this.target)==null||p.addEventListener(r,s,c),this.listeners.push([r,s,c])}}function sS(e){const{EventTarget:r}=hi(e);return e instanceof r?e:Xl(e)}function xm(e,r){const s=Math.abs(e.x),c=Math.abs(e.y);return typeof r=="number"?Math.sqrt(s**2+c**2)>r:"x"in r&&"y"in r?s>r.x&&c>r.y:"x"in r?s>r.x:"y"in r?c>r.y:!1}var $i;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})($i||($i={}));function gv(e){e.preventDefault()}function aS(e){e.stopPropagation()}var In;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter"})(In||(In={}));const ww={start:[In.Space,In.Enter],cancel:[In.Esc],end:[In.Space,In.Enter]},lS=(e,r)=>{let{currentCoordinates:s}=r;switch(e.code){case In.Right:return{...s,x:s.x+25};case In.Left:return{...s,x:s.x-25};case In.Down:return{...s,y:s.y+25};case In.Up:return{...s,y:s.y-25}}};class bw{constructor(r){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=r;const{event:{target:s}}=r;this.props=r,this.listeners=new yc(Xl(s)),this.windowListeners=new yc(hi(s)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add($i.Resize,this.handleCancel),this.windowListeners.add($i.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add($i.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:r,onStart:s}=this.props,c=r.node.current;c&&xw(c),s(ho)}handleKeyDown(r){if(Bp(r)){const{active:s,context:c,options:p}=this.props,{keyboardCodes:g=ww,coordinateGetter:x=lS,scrollBehavior:l="smooth"}=p,{code:S}=r;if(g.end.includes(S)){this.handleEnd(r);return}if(g.cancel.includes(S)){this.handleCancel(r);return}const{collisionRect:k}=c.current,D=k?{x:k.left,y:k.top}:ho;this.referenceCoordinates||(this.referenceCoordinates=D);const M=x(r,{active:s,context:c.current,currentCoordinates:D});if(M){const A=cp(M,D),F={x:0,y:0},{scrollableAncestors:W}=c.current;for(const O of W){const Y=r.code,{isTop:R,isRight:L,isLeft:G,isBottom:te,maxScroll:ne,minScroll:ve}=_w(O),fe=nS(O),be={x:Math.min(Y===In.Right?fe.right-fe.width/2:fe.right,Math.max(Y===In.Right?fe.left:fe.left+fe.width/2,M.x)),y:Math.min(Y===In.Down?fe.bottom-fe.height/2:fe.bottom,Math.max(Y===In.Down?fe.top:fe.top+fe.height/2,M.y))},Ce=Y===In.Right&&!L||Y===In.Left&&!G,Le=Y===In.Down&&!te||Y===In.Up&&!R;if(Ce&&be.x!==M.x){const lt=O.scrollLeft+A.x,he=Y===In.Right&<<=ne.x||Y===In.Left&<>=ve.x;if(he&&!A.y){O.scrollTo({left:lt,behavior:l});return}he?F.x=O.scrollLeft-lt:F.x=Y===In.Right?O.scrollLeft-ne.x:O.scrollLeft-ve.x,F.x&&O.scrollBy({left:-F.x,behavior:l});break}else if(Le&&be.y!==M.y){const lt=O.scrollTop+A.y,he=Y===In.Down&<<=ne.y||Y===In.Up&<>=ve.y;if(he&&!A.x){O.scrollTo({top:lt,behavior:l});return}he?F.y=O.scrollTop-lt:F.y=Y===In.Down?O.scrollTop-ne.y:O.scrollTop-ve.y,F.y&&O.scrollBy({top:-F.y,behavior:l});break}}this.handleMove(r,Rl(cp(M,this.referenceCoordinates),F))}}}handleMove(r,s){const{onMove:c}=this.props;r.preventDefault(),c(s)}handleEnd(r){const{onEnd:s}=this.props;r.preventDefault(),this.detach(),s()}handleCancel(r){const{onCancel:s}=this.props;r.preventDefault(),this.detach(),s()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}bw.activators=[{eventName:"onKeyDown",handler:(e,r,s)=>{let{keyboardCodes:c=ww,onActivation:p}=r,{active:g}=s;const{code:x}=e.nativeEvent;if(c.start.includes(x)){const l=g.activatorNode.current;return l&&e.target!==l?!1:(e.preventDefault(),p==null||p({event:e.nativeEvent}),!0)}return!1}}];function yv(e){return!!(e&&"distance"in e)}function _v(e){return!!(e&&"delay"in e)}class Py{constructor(r,s,c){var p;c===void 0&&(c=sS(r.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=r,this.events=s;const{event:g}=r,{target:x}=g;this.props=r,this.events=s,this.document=Xl(x),this.documentListeners=new yc(this.document),this.listeners=new yc(c),this.windowListeners=new yc(hi(x)),this.initialCoordinates=(p=hp(g))!=null?p:ho,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:r,props:{options:{activationConstraint:s}}}=this;if(this.listeners.add(r.move.name,this.handleMove,{passive:!1}),this.listeners.add(r.end.name,this.handleEnd),this.windowListeners.add($i.Resize,this.handleCancel),this.windowListeners.add($i.DragStart,gv),this.windowListeners.add($i.VisibilityChange,this.handleCancel),this.windowListeners.add($i.ContextMenu,gv),this.documentListeners.add($i.Keydown,this.handleKeydown),s){if(yv(s))return;if(_v(s)){this.timeoutId=setTimeout(this.handleStart,s.delay);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handleStart(){const{initialCoordinates:r}=this,{onStart:s}=this.props;r&&(this.activated=!0,this.documentListeners.add($i.Click,aS,{capture:!0}),this.removeTextSelection(),this.documentListeners.add($i.SelectionChange,this.removeTextSelection),s(r))}handleMove(r){var s;const{activated:c,initialCoordinates:p,props:g}=this,{onMove:x,options:{activationConstraint:l}}=g;if(!p)return;const S=(s=hp(r))!=null?s:ho,k=cp(p,S);if(!c&&l){if(_v(l))return xm(k,l.tolerance)?this.handleCancel():void 0;if(yv(l))return l.tolerance!=null&&xm(k,l.tolerance)?this.handleCancel():xm(k,l.distance)?this.handleStart():void 0}r.cancelable&&r.preventDefault(),x(S)}handleEnd(){const{onEnd:r}=this.props;this.detach(),r()}handleCancel(){const{onCancel:r}=this.props;this.detach(),r()}handleKeydown(r){r.code===In.Esc&&this.handleCancel()}removeTextSelection(){var r;(r=this.document.getSelection())==null||r.removeAllRanges()}}const uS={move:{name:"pointermove"},end:{name:"pointerup"}};class My extends Py{constructor(r){const{event:s}=r,c=Xl(s.target);super(r,uS,c)}}My.activators=[{eventName:"onPointerDown",handler:(e,r)=>{let{nativeEvent:s}=e,{onActivation:c}=r;return!s.isPrimary||s.button!==0?!1:(c==null||c({event:s}),!0)}}];const cS={move:{name:"mousemove"},end:{name:"mouseup"}};var wg;(function(e){e[e.RightClick=2]="RightClick"})(wg||(wg={}));class hS extends Py{constructor(r){super(r,cS,Xl(r.event.target))}}hS.activators=[{eventName:"onMouseDown",handler:(e,r)=>{let{nativeEvent:s}=e,{onActivation:c}=r;return s.button===wg.RightClick?!1:(c==null||c({event:s}),!0)}}];const wm={move:{name:"touchmove"},end:{name:"touchend"}};class dS extends Py{constructor(r){super(r,wm)}static setup(){return window.addEventListener(wm.move.name,r,{capture:!1,passive:!1}),function(){window.removeEventListener(wm.move.name,r)};function r(){}}}dS.activators=[{eventName:"onTouchStart",handler:(e,r)=>{let{nativeEvent:s}=e,{onActivation:c}=r;const{touches:p}=s;return p.length>1?!1:(c==null||c({event:s}),!0)}}];var _c;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(_c||(_c={}));var pp;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(pp||(pp={}));function pS(e){let{acceleration:r,activator:s=_c.Pointer,canScroll:c,draggingRect:p,enabled:g,interval:x=5,order:l=pp.TreeOrder,pointerCoordinates:S,scrollableAncestors:k,scrollableAncestorRects:D,delta:M,threshold:A}=e;const F=mS({delta:M,disabled:!g}),[W,O]=b5(),Y=ye.useRef({x:0,y:0}),R=ye.useRef({x:0,y:0}),L=ye.useMemo(()=>{switch(s){case _c.Pointer:return S?{top:S.y,bottom:S.y,left:S.x,right:S.x}:null;case _c.DraggableRect:return p}},[s,p,S]),G=ye.useRef(null),te=ye.useCallback(()=>{const ve=G.current;if(!ve)return;const fe=Y.current.x*R.current.x,be=Y.current.y*R.current.y;ve.scrollBy(fe,be)},[]),ne=ye.useMemo(()=>l===pp.TreeOrder?[...k].reverse():k,[l,k]);ye.useEffect(()=>{if(!g||!k.length||!L){O();return}for(const ve of ne){if((c==null?void 0:c(ve))===!1)continue;const fe=k.indexOf(ve),be=D[fe];if(!be)continue;const{direction:Ce,speed:Le}=tS(ve,be,L,r,A);for(const lt of["x","y"])F[lt][Ce[lt]]||(Le[lt]=0,Ce[lt]=0);if(Le.x>0||Le.y>0){O(),G.current=ve,W(te,x),Y.current=Le,R.current=Ce;return}}Y.current={x:0,y:0},R.current={x:0,y:0},O()},[r,te,c,O,g,x,JSON.stringify(L),JSON.stringify(F),W,k,ne,D,JSON.stringify(A)])}const fS={x:{[Lr.Backward]:!1,[Lr.Forward]:!1},y:{[Lr.Backward]:!1,[Lr.Forward]:!1}};function mS(e){let{delta:r,disabled:s}=e;const c=up(r);return qc(p=>{if(s||!c||!p)return fS;const g={x:Math.sign(r.x-c.x),y:Math.sign(r.y-c.y)};return{x:{[Lr.Backward]:p.x[Lr.Backward]||g.x===-1,[Lr.Forward]:p.x[Lr.Forward]||g.x===1},y:{[Lr.Backward]:p.y[Lr.Backward]||g.y===-1,[Lr.Forward]:p.y[Lr.Forward]||g.y===1}}},[s,r,c])}function gS(e,r){const s=r!==null?e.get(r):void 0,c=s?s.node.current:null;return qc(p=>{var g;return r===null?null:(g=c??p)!=null?g:null},[c,r])}function yS(e,r){return ye.useMemo(()=>e.reduce((s,c)=>{const{sensor:p}=c,g=p.activators.map(x=>({eventName:x.eventName,handler:r(x.handler,c)}));return[...s,...g]},[]),[e,r])}var $l;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})($l||($l={}));var bg;(function(e){e.Optimized="optimized"})(bg||(bg={}));const vv=new Map;function _S(e,r){let{dragging:s,dependencies:c,config:p}=r;const[g,x]=ye.useState(null),{frequency:l,measure:S,strategy:k}=p,D=ye.useRef(e),M=Y(),A=Oc(M),F=ye.useCallback(function(R){R===void 0&&(R=[]),!A.current&&x(L=>L===null?R:L.concat(R.filter(G=>!L.includes(G))))},[A]),W=ye.useRef(null),O=qc(R=>{if(M&&!s)return vv;if(!R||R===vv||D.current!==e||g!=null){const L=new Map;for(let G of e){if(!G)continue;if(g&&g.length>0&&!g.includes(G.id)&&G.rect.current){L.set(G.id,G.rect.current);continue}const te=G.node.current,ne=te?new zy(S(te),te):null;G.rect.current=ne,ne&&L.set(G.id,ne)}return L}return R},[e,g,s,M,S]);return ye.useEffect(()=>{D.current=e},[e]),ye.useEffect(()=>{M||F()},[s,M]),ye.useEffect(()=>{g&&g.length>0&&x(null)},[JSON.stringify(g)]),ye.useEffect(()=>{M||typeof l!="number"||W.current!==null||(W.current=setTimeout(()=>{F(),W.current=null},l))},[l,M,F,...c]),{droppableRects:O,measureDroppableContainers:F,measuringScheduled:g!=null};function Y(){switch(k){case $l.Always:return!1;case $l.BeforeDragging:return s;default:return!s}}}function Dy(e,r){return qc(s=>e?s||(typeof r=="function"?r(e):e):null,[r,e])}function vS(e,r){return Dy(e,r)}function xS(e){let{callback:r,disabled:s}=e;const c=Lp(r),p=ye.useMemo(()=>{if(s||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:g}=window;return new g(c)},[c,s]);return ye.useEffect(()=>()=>p==null?void 0:p.disconnect(),[p]),p}function Fp(e){let{callback:r,disabled:s}=e;const c=Lp(r),p=ye.useMemo(()=>{if(s||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:g}=window;return new g(c)},[s]);return ye.useEffect(()=>()=>p==null?void 0:p.disconnect(),[p]),p}function wS(e){return new zy(Kl(e),e)}function xv(e,r,s){r===void 0&&(r=wS);const[c,p]=ye.useReducer(l,null),g=xS({callback(S){if(e)for(const k of S){const{type:D,target:M}=k;if(D==="childList"&&M instanceof HTMLElement&&M.contains(e)){p();break}}}}),x=Fp({callback:p});return Ki(()=>{p(),e?(x==null||x.observe(e),g==null||g.observe(document.body,{childList:!0,subtree:!0})):(x==null||x.disconnect(),g==null||g.disconnect())},[e]),c;function l(S){if(!e)return null;if(e.isConnected===!1){var k;return(k=S??s)!=null?k:null}const D=r(e);return JSON.stringify(S)===JSON.stringify(D)?S:D}}function bS(e){const r=Dy(e);return dw(e,r)}const wv=[];function SS(e){const r=ye.useRef(e),s=qc(c=>e?c&&c!==wv&&e&&r.current&&e.parentNode===r.current.parentNode?c:Ay(e):wv,[e]);return ye.useEffect(()=>{r.current=e},[e]),s}function ES(e){const[r,s]=ye.useState(null),c=ye.useRef(e),p=ye.useCallback(g=>{const x=vm(g.target);x&&s(l=>l?(l.set(x,xg(x)),new Map(l)):null)},[]);return ye.useEffect(()=>{const g=c.current;if(e!==g){x(g);const l=e.map(S=>{const k=vm(S);return k?(k.addEventListener("scroll",p,{passive:!0}),[k,xg(k)]):null}).filter(S=>S!=null);s(l.length?new Map(l):null),c.current=e}return()=>{x(e),x(g)};function x(l){l.forEach(S=>{const k=vm(S);k==null||k.removeEventListener("scroll",p)})}},[p,e]),ye.useMemo(()=>e.length?r?Array.from(r.values()).reduce((g,x)=>Rl(g,x),ho):vw(e):ho,[e,r])}function bv(e,r){r===void 0&&(r=[]);const s=ye.useRef(null);return ye.useEffect(()=>{s.current=null},r),ye.useEffect(()=>{const c=e!==ho;c&&!s.current&&(s.current=e),!c&&s.current&&(s.current=null)},[e]),s.current?cp(e,s.current):ho}function TS(e){ye.useEffect(()=>{if(!Rp)return;const r=e.map(s=>{let{sensor:c}=s;return c.setup==null?void 0:c.setup()});return()=>{for(const s of r)s==null||s()}},e.map(r=>{let{sensor:s}=r;return s}))}function kS(e,r){return ye.useMemo(()=>e.reduce((s,c)=>{let{eventName:p,handler:g}=c;return s[p]=x=>{g(x,r)},s},{}),[e,r])}function Sw(e){return ye.useMemo(()=>e?Y5(e):null,[e])}const bm=[];function CS(e,r){r===void 0&&(r=Kl);const[s]=e,c=Sw(s?hi(s):null),[p,g]=ye.useReducer(l,bm),x=Fp({callback:g});return e.length>0&&p===bm&&g(),Ki(()=>{e.length?e.forEach(S=>x==null?void 0:x.observe(S)):(x==null||x.disconnect(),g())},[e]),p;function l(){return e.length?e.map(S=>yw(S)?c:new zy(r(S),S)):bm}}function Ew(e){if(!e)return null;if(e.children.length>1)return e;const r=e.children[0];return Zc(r)?r:e}function IS(e){let{measure:r}=e;const[s,c]=ye.useState(null),p=ye.useCallback(k=>{for(const{target:D}of k)if(Zc(D)){c(M=>{const A=r(D);return M?{...M,width:A.width,height:A.height}:A});break}},[r]),g=Fp({callback:p}),x=ye.useCallback(k=>{const D=Ew(k);g==null||g.disconnect(),D&&(g==null||g.observe(D)),c(D?r(D):null)},[r,g]),[l,S]=lp(x);return ye.useMemo(()=>({nodeRef:l,rect:s,setRef:S}),[s,l,S])}const AS=[{sensor:My,options:{}},{sensor:bw,options:{}}],zS={current:{}},Fd={draggable:{measure:mv},droppable:{measure:mv,strategy:$l.WhileDragging,frequency:bg.Optimized},dragOverlay:{measure:Kl}};class vc extends Map{get(r){var s;return r!=null&&(s=super.get(r))!=null?s:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(r=>{let{disabled:s}=r;return!s})}getNodeFor(r){var s,c;return(s=(c=this.get(r))==null?void 0:c.node.current)!=null?s:void 0}}const PS={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new vc,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:dp},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Fd,measureDroppableContainers:dp,windowRect:null,measuringScheduled:!1},Tw={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:dp,draggableNodes:new Map,over:null,measureDroppableContainers:dp},Hc=ye.createContext(Tw),kw=ye.createContext(PS);function MS(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new vc}}}function DS(e,r){switch(r.type){case kr.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:r.initialCoordinates,active:r.active}};case kr.DragMove:return e.draggable.active?{...e,draggable:{...e.draggable,translate:{x:r.coordinates.x-e.draggable.initialCoordinates.x,y:r.coordinates.y-e.draggable.initialCoordinates.y}}}:e;case kr.DragEnd:case kr.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case kr.RegisterDroppable:{const{element:s}=r,{id:c}=s,p=new vc(e.droppable.containers);return p.set(c,s),{...e,droppable:{...e.droppable,containers:p}}}case kr.SetDroppableDisabled:{const{id:s,key:c,disabled:p}=r,g=e.droppable.containers.get(s);if(!g||c!==g.key)return e;const x=new vc(e.droppable.containers);return x.set(s,{...g,disabled:p}),{...e,droppable:{...e.droppable,containers:x}}}case kr.UnregisterDroppable:{const{id:s,key:c}=r,p=e.droppable.containers.get(s);if(!p||c!==p.key)return e;const g=new vc(e.droppable.containers);return g.delete(s),{...e,droppable:{...e.droppable,containers:g}}}default:return e}}function RS(e){let{disabled:r}=e;const{active:s,activatorEvent:c,draggableNodes:p}=ye.useContext(Hc),g=up(c),x=up(s==null?void 0:s.id);return ye.useEffect(()=>{if(!r&&!c&&g&&x!=null){if(!Bp(g)||document.activeElement===g.target)return;const l=p.get(x);if(!l)return;const{activatorNode:S,node:k}=l;if(!S.current&&!k.current)return;requestAnimationFrame(()=>{for(const D of[S.current,k.current]){if(!D)continue;const M=T5(D);if(M){M.focus();break}}})}},[c,r,p,x,g]),null}function Cw(e,r){let{transform:s,...c}=r;return e!=null&&e.length?e.reduce((p,g)=>g({transform:p,...c}),s):s}function LS(e){return ye.useMemo(()=>({draggable:{...Fd.draggable,...e==null?void 0:e.draggable},droppable:{...Fd.droppable,...e==null?void 0:e.droppable},dragOverlay:{...Fd.dragOverlay,...e==null?void 0:e.dragOverlay}}),[e==null?void 0:e.draggable,e==null?void 0:e.droppable,e==null?void 0:e.dragOverlay])}function BS(e){let{activeNode:r,measure:s,initialRect:c,config:p=!0}=e;const g=ye.useRef(!1),{x,y:l}=typeof p=="boolean"?{x:p,y:p}:p;Ki(()=>{if(!x&&!l||!r){g.current=!1;return}if(g.current||!c)return;const k=r==null?void 0:r.node.current;if(!k||k.isConnected===!1)return;const D=s(k),M=dw(D,c);if(x||(M.x=0),l||(M.y=0),g.current=!0,Math.abs(M.x)>0||Math.abs(M.y)>0){const A=fw(k);A&&A.scrollBy({top:M.y,left:M.x})}},[r,x,l,c,s])}const Op=ye.createContext({...ho,scaleX:1,scaleY:1});var ks;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(ks||(ks={}));const FS=ye.memo(function(r){var s,c,p,g;let{id:x,accessibility:l,autoScroll:S=!0,children:k,sensors:D=AS,collisionDetection:M=Z5,measuring:A,modifiers:F,...W}=r;const O=ye.useReducer(DS,void 0,MS),[Y,R]=O,[L,G]=M5(),[te,ne]=ye.useState(ks.Uninitialized),ve=te===ks.Initialized,{draggable:{active:fe,nodes:be,translate:Ce},droppable:{containers:Le}}=Y,lt=fe?be.get(fe):null,he=ye.useRef({initial:null,translated:null}),Oe=ye.useMemo(()=>{var Sn;return fe!=null?{id:fe,data:(Sn=lt==null?void 0:lt.data)!=null?Sn:zS,rect:he}:null},[fe,lt]),$=ye.useRef(null),[Ve,et]=ye.useState(null),[Xe,Ye]=ye.useState(null),Pe=Oc(W,Object.values(W)),nt=Wc("DndDescribedBy",x),Ae=ye.useMemo(()=>Le.getEnabled(),[Le]),Se=LS(A),{droppableRects:bt,measureDroppableContainers:ut,measuringScheduled:at}=_S(Ae,{dragging:ve,dependencies:[Ce.x,Ce.y],config:Se.droppable}),Lt=gS(be,fe),rn=ye.useMemo(()=>Xe?hp(Xe):null,[Xe]),$t=er(),Ut=vS(Lt,Se.draggable.measure);BS({activeNode:fe?be.get(fe):null,config:$t.layoutShiftCompensation,initialRect:Ut,measure:Se.draggable.measure});const Nt=xv(Lt,Se.draggable.measure,Ut),on=xv(Lt?Lt.parentElement:null),sn=ye.useRef({activatorEvent:null,active:null,activeNode:Lt,collisionRect:null,collisions:null,droppableRects:bt,draggableNodes:be,draggingNode:null,draggingNodeRect:null,droppableContainers:Le,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),dn=Le.getNodeFor((s=sn.current.over)==null?void 0:s.id),U=IS({measure:Se.dragOverlay.measure}),He=(c=U.nodeRef.current)!=null?c:Lt,Ue=ve?(p=U.rect)!=null?p:Nt:null,ae=!!(U.nodeRef.current&&U.rect),oe=bS(ae?null:Nt),ge=Sw(He?hi(He):null),Ke=SS(ve?dn??Lt:null),tt=CS(Ke),Me=Cw(F,{transform:{x:Ce.x-oe.x,y:Ce.y-oe.y,scaleX:1,scaleY:1},activatorEvent:Xe,active:Oe,activeNodeRect:Nt,containerNodeRect:on,draggingNodeRect:Ue,over:sn.current.over,overlayNodeRect:U.rect,scrollableAncestors:Ke,scrollableAncestorRects:tt,windowRect:ge}),ct=rn?Rl(rn,Ce):null,Ne=ES(Ke),je=bv(Ne),yt=bv(Ne,[Nt]),Bt=Rl(Me,je),ke=Ue?H5(Ue,Me):null,it=Oe&&ke?M({active:Oe,collisionRect:ke,droppableRects:bt,droppableContainers:Ae,pointerCoordinates:ct}):null,Wn=j5(it,"id"),[pn,Ht]=ye.useState(null),en=ae?Me:Rl(Me,yt),Ln=q5(en,(g=pn==null?void 0:pn.rect)!=null?g:null,Nt),$n=ye.useCallback((Sn,At)=>{let{sensor:Cn,options:An}=At;if($.current==null)return;const cr=be.get($.current);if(!cr)return;const yn=Sn.nativeEvent,Mn=new Cn({active:$.current,activeNode:cr,event:yn,options:An,context:sn,onStart(mr){const Ir=$.current;if(Ir==null)return;const Jr=be.get(Ir);if(!Jr)return;const{onDragStart:di}=Pe.current,Si={active:{id:Ir,data:Jr.data,rect:he}};Io.unstable_batchedUpdates(()=>{di==null||di(Si),ne(ks.Initializing),R({type:kr.DragStart,initialCoordinates:mr,active:Ir}),L({type:"onDragStart",event:Si})})},onMove(mr){R({type:kr.DragMove,coordinates:mr})},onEnd:an(kr.DragEnd),onCancel:an(kr.DragCancel)});Io.unstable_batchedUpdates(()=>{et(Mn),Ye(Sn.nativeEvent)});function an(mr){return async function(){const{active:Jr,collisions:di,over:Si,scrollAdjustedTranslate:Bi}=sn.current;let ee=null;if(Jr&&Bi){const{cancelDrop:P}=Pe.current;ee={activatorEvent:yn,active:Jr,collisions:di,delta:Bi,over:Si},mr===kr.DragEnd&&typeof P=="function"&&await Promise.resolve(P(ee))&&(mr=kr.DragCancel)}$.current=null,Io.unstable_batchedUpdates(()=>{R({type:mr}),ne(ks.Uninitialized),Ht(null),et(null),Ye(null);const P=mr===kr.DragEnd?"onDragEnd":"onDragCancel";if(ee){const j=Pe.current[P];j==null||j(ee),L({type:P,event:ee})}})}}},[be]),Gn=ye.useCallback((Sn,At)=>(Cn,An)=>{const cr=Cn.nativeEvent,yn=be.get(An);if($.current!==null||!yn||cr.dndKit||cr.defaultPrevented)return;const Mn={active:yn};Sn(Cn,At.options,Mn)===!0&&(cr.dndKit={capturedBy:At.sensor},$.current=An,$n(Cn,At))},[be,$n]),ht=yS(D,Gn);TS(D),Ki(()=>{Nt&&te===ks.Initializing&&ne(ks.Initialized)},[Nt,te]),ye.useEffect(()=>{const{onDragMove:Sn}=Pe.current,{active:At,activatorEvent:Cn,collisions:An,over:cr}=sn.current;if(!At||!Cn)return;const yn={active:At,activatorEvent:Cn,collisions:An,delta:{x:Bt.x,y:Bt.y},over:cr};Io.unstable_batchedUpdates(()=>{Sn==null||Sn(yn),L({type:"onDragMove",event:yn})})},[Bt.x,Bt.y]),ye.useEffect(()=>{const{active:Sn,activatorEvent:At,collisions:Cn,droppableContainers:An,scrollAdjustedTranslate:cr}=sn.current;if(!Sn||$.current==null||!At||!cr)return;const{onDragOver:yn}=Pe.current,Mn=An.get(Wn),an=Mn&&Mn.rect.current?{id:Mn.id,rect:Mn.rect.current,data:Mn.data,disabled:Mn.disabled}:null,mr={active:Sn,activatorEvent:At,collisions:Cn,delta:{x:cr.x,y:cr.y},over:an};Io.unstable_batchedUpdates(()=>{Ht(an),yn==null||yn(mr),L({type:"onDragOver",event:mr})})},[Wn]),Ki(()=>{sn.current={activatorEvent:Xe,active:Oe,activeNode:Lt,collisionRect:ke,collisions:it,droppableRects:bt,draggableNodes:be,draggingNode:He,draggingNodeRect:Ue,droppableContainers:Le,over:pn,scrollableAncestors:Ke,scrollAdjustedTranslate:Bt},he.current={initial:Ue,translated:ke}},[Oe,Lt,it,ke,be,He,Ue,bt,Le,pn,Ke,Bt]),pS({...$t,delta:Ce,draggingRect:ke,pointerCoordinates:ct,scrollableAncestors:Ke,scrollableAncestorRects:tt});const qt=ye.useMemo(()=>({active:Oe,activeNode:Lt,activeNodeRect:Nt,activatorEvent:Xe,collisions:it,containerNodeRect:on,dragOverlay:U,draggableNodes:be,droppableContainers:Le,droppableRects:bt,over:pn,measureDroppableContainers:ut,scrollableAncestors:Ke,scrollableAncestorRects:tt,measuringConfiguration:Se,measuringScheduled:at,windowRect:ge}),[Oe,Lt,Nt,Xe,it,on,U,be,Le,bt,pn,ut,Ke,tt,Se,at,ge]),Gt=ye.useMemo(()=>({activatorEvent:Xe,activators:ht,active:Oe,activeNodeRect:Nt,ariaDescribedById:{draggable:nt},dispatch:R,draggableNodes:be,over:pn,measureDroppableContainers:ut}),[Xe,ht,Oe,Nt,R,nt,be,pn,ut]);return Xn.createElement(hw.Provider,{value:G},Xn.createElement(Hc.Provider,{value:Gt},Xn.createElement(kw.Provider,{value:qt},Xn.createElement(Op.Provider,{value:Ln},k)),Xn.createElement(RS,{disabled:(l==null?void 0:l.restoreFocus)===!1})),Xn.createElement(L5,{...l,hiddenTextDescribedById:nt}));function er(){const Sn=(Ve==null?void 0:Ve.autoScrollEnabled)===!1,At=typeof S=="object"?S.enabled===!1:S===!1,Cn=ve&&!Sn&&!At;return typeof S=="object"?{...S,enabled:Cn}:{enabled:Cn}}}),OS=ye.createContext(null),Sv="button",NS="Droppable";function US(e){let{id:r,data:s,disabled:c=!1,attributes:p}=e;const g=Wc(NS),{activators:x,activatorEvent:l,active:S,activeNodeRect:k,ariaDescribedById:D,draggableNodes:M,over:A}=ye.useContext(Hc),{role:F=Sv,roleDescription:W="draggable",tabIndex:O=0}=p??{},Y=(S==null?void 0:S.id)===r,R=ye.useContext(Y?Op:OS),[L,G]=lp(),[te,ne]=lp(),ve=kS(x,r),fe=Oc(s);Ki(()=>(M.set(r,{id:r,key:g,node:L,activatorNode:te,data:fe}),()=>{const Ce=M.get(r);Ce&&Ce.key===g&&M.delete(r)}),[M,r]);const be=ye.useMemo(()=>({role:F,tabIndex:O,"aria-disabled":c,"aria-pressed":Y&&F===Sv?!0:void 0,"aria-roledescription":W,"aria-describedby":D.draggable}),[c,F,O,Y,W,D.draggable]);return{active:S,activatorEvent:l,activeNodeRect:k,attributes:be,isDragging:Y,listeners:c?void 0:ve,node:L,over:A,setNodeRef:G,setActivatorNodeRef:ne,transform:R}}function Iw(){return ye.useContext(kw)}const VS="Droppable",jS={timeout:25};function Aw(e){let{data:r,disabled:s=!1,id:c,resizeObserverConfig:p}=e;const g=Wc(VS),{active:x,dispatch:l,over:S,measureDroppableContainers:k}=ye.useContext(Hc),D=ye.useRef({disabled:s}),M=ye.useRef(!1),A=ye.useRef(null),F=ye.useRef(null),{disabled:W,updateMeasurementsFor:O,timeout:Y}={...jS,...p},R=Oc(O??c),L=ye.useCallback(()=>{if(!M.current){M.current=!0;return}F.current!=null&&clearTimeout(F.current),F.current=setTimeout(()=>{k(Array.isArray(R.current)?R.current:[R.current]),F.current=null},Y)},[Y]),G=Fp({callback:L,disabled:W||!x}),te=ye.useCallback((be,Ce)=>{G&&(Ce&&(G.unobserve(Ce),M.current=!1),be&&G.observe(be))},[G]),[ne,ve]=lp(te),fe=Oc(r);return ye.useEffect(()=>{!G||!ne.current||(G.disconnect(),M.current=!1,G.observe(ne.current))},[ne,G]),Ki(()=>(l({type:kr.RegisterDroppable,element:{id:c,key:g,disabled:s,node:ne,rect:A,data:fe}}),()=>l({type:kr.UnregisterDroppable,key:g,id:c})),[c]),ye.useEffect(()=>{s!==D.current.disabled&&(l({type:kr.SetDroppableDisabled,id:c,key:g,disabled:s}),D.current.disabled=s)},[c,g,s,l]),{active:x,rect:A,isOver:(S==null?void 0:S.id)===c,node:ne,over:S,setNodeRef:ve}}function $S(e){let{animation:r,children:s}=e;const[c,p]=ye.useState(null),[g,x]=ye.useState(null),l=up(s);return!s&&!c&&l&&p(l),Ki(()=>{if(!g)return;const S=c==null?void 0:c.key,k=c==null?void 0:c.props.id;if(S==null||k==null){p(null);return}Promise.resolve(r(k,g)).then(()=>{p(null)})},[r,c,g]),Xn.createElement(Xn.Fragment,null,s,c?ye.cloneElement(c,{ref:x}):null)}const GS={x:0,y:0,scaleX:1,scaleY:1};function ZS(e){let{children:r}=e;return Xn.createElement(Hc.Provider,{value:Tw},Xn.createElement(Op.Provider,{value:GS},r))}const qS={position:"fixed",touchAction:"none"},WS=e=>Bp(e)?"transform 250ms ease":void 0,HS=ye.forwardRef((e,r)=>{let{as:s,activatorEvent:c,adjustScale:p,children:g,className:x,rect:l,style:S,transform:k,transition:D=WS}=e;if(!l)return null;const M=p?k:{...k,scaleX:1,scaleY:1},A={...qS,width:l.width,height:l.height,top:l.top,left:l.left,transform:Po.Transform.toString(M),transformOrigin:p&&c?N5(c,l):void 0,transition:typeof D=="function"?D(c):D,...S};return Xn.createElement(s,{className:x,style:A,ref:r},g)}),XS=e=>r=>{let{active:s,dragOverlay:c}=r;const p={},{styles:g,className:x}=e;if(g!=null&&g.active)for(const[l,S]of Object.entries(g.active))S!==void 0&&(p[l]=s.node.style.getPropertyValue(l),s.node.style.setProperty(l,S));if(g!=null&&g.dragOverlay)for(const[l,S]of Object.entries(g.dragOverlay))S!==void 0&&c.node.style.setProperty(l,S);return x!=null&&x.active&&s.node.classList.add(x.active),x!=null&&x.dragOverlay&&c.node.classList.add(x.dragOverlay),function(){for(const[S,k]of Object.entries(p))s.node.style.setProperty(S,k);x!=null&&x.active&&s.node.classList.remove(x.active)}},KS=e=>{let{transform:{initial:r,final:s}}=e;return[{transform:Po.Transform.toString(r)},{transform:Po.Transform.toString(s)}]},Sg={duration:250,easing:"ease",keyframes:KS,sideEffects:XS({styles:{active:{opacity:"0"}}})};function YS(e){let{config:r,draggableNodes:s,droppableContainers:c,measuringConfiguration:p}=e;return Lp((g,x)=>{if(r===null)return;const l=s.get(g);if(!l)return;const S=l.node.current;if(!S)return;const k=Ew(x);if(!k)return;const{transform:D}=hi(x).getComputedStyle(x),M=pw(D);if(!M)return;const A=typeof r=="function"?r:JS(r);return xw(S,p.draggable.measure),A({active:{id:g,data:l.data,node:S,rect:p.draggable.measure(S)},draggableNodes:s,dragOverlay:{node:x,rect:p.dragOverlay.measure(k)},droppableContainers:c,measuringConfiguration:p,transform:M})})}function JS(e){const{duration:r,easing:s,sideEffects:c,keyframes:p}={...Sg,...e};return g=>{let{active:x,dragOverlay:l,transform:S,...k}=g;if(!r)return;const D={x:l.rect.left-x.rect.left,y:l.rect.top-x.rect.top},M={scaleX:S.scaleX!==1?x.rect.width*S.scaleX/l.rect.width:1,scaleY:S.scaleY!==1?x.rect.height*S.scaleY/l.rect.height:1},A={x:S.x-D.x,y:S.y-D.y,...M},F=p({...k,active:x,dragOverlay:l,transform:{initial:S,final:A}}),[W]=F,O=F[F.length-1];if(JSON.stringify(W)===JSON.stringify(O))return;const Y=c==null?void 0:c({active:x,dragOverlay:l,...k}),R=l.node.animate(F,{duration:r,easing:s,fill:"forwards"});return new Promise(L=>{R.onfinish=()=>{Y==null||Y(),L()}})}}let Ev=0;function QS(e){return ye.useMemo(()=>{if(e!=null)return Ev++,Ev},[e])}const eE=Xn.memo(e=>{let{adjustScale:r=!1,children:s,dropAnimation:c,style:p,transition:g,modifiers:x,wrapperElement:l="div",className:S,zIndex:k=999}=e;const{activatorEvent:D,active:M,activeNodeRect:A,containerNodeRect:F,draggableNodes:W,droppableContainers:O,dragOverlay:Y,over:R,measuringConfiguration:L,scrollableAncestors:G,scrollableAncestorRects:te,windowRect:ne}=Iw(),ve=ye.useContext(Op),fe=QS(M==null?void 0:M.id),be=Cw(x,{activatorEvent:D,active:M,activeNodeRect:A,containerNodeRect:F,draggingNodeRect:Y.rect,over:R,overlayNodeRect:Y.rect,scrollableAncestors:G,scrollableAncestorRects:te,transform:ve,windowRect:ne}),Ce=Dy(A),Le=YS({config:c,draggableNodes:W,droppableContainers:O,measuringConfiguration:L}),lt=Ce?Y.setRef:void 0;return Xn.createElement(ZS,null,Xn.createElement($S,{animation:Le},M&&fe?Xn.createElement(HS,{key:fe,id:M.id,ref:lt,as:l,activatorEvent:D,adjustScale:r,className:S,transition:g,rect:Ce,style:{zIndex:k,...p},transform:be},s):null))});function Np(e,r,s){const c=e.slice();return c.splice(s<0?c.length+s:s,0,c.splice(r,1)[0]),c}function tE(e,r){return e.reduce((s,c,p)=>{const g=r.get(c);return g&&(s[p]=g),s},Array(e.length))}function bd(e){return e!==null&&e>=0}function nE(e,r){if(e===r)return!0;if(e.length!==r.length)return!1;for(let s=0;s{let{rects:r,activeIndex:s,overIndex:c,index:p}=e;const g=Np(r,c,s),x=r[p],l=g[p];return!l||!x?null:{x:l.left-x.left,y:l.top-x.top,scaleX:l.width/x.width,scaleY:l.height/x.height}},Sd={scaleX:1,scaleY:1},iE=e=>{var r;let{activeIndex:s,activeNodeRect:c,index:p,rects:g,overIndex:x}=e;const l=(r=g[s])!=null?r:c;if(!l)return null;if(p===s){const k=g[x];return k?{x:0,y:ss&&p<=x?{x:0,y:-l.height-S,...Sd}:p=x?{x:0,y:l.height+S,...Sd}:{x:0,y:0,...Sd}};function oE(e,r,s){const c=e[r],p=e[r-1],g=e[r+1];return c?sc.map(ve=>typeof ve=="object"&&"id"in ve?ve.id:ve),[c]),W=x!=null,O=x?F.indexOf(x.id):-1,Y=k?F.indexOf(k.id):-1,R=ye.useRef(F),L=!nE(F,R.current),G=Y!==-1&&O===-1||L,te=rE(g);Ki(()=>{L&&W&&D(F)},[L,F,W,D]),ye.useEffect(()=>{R.current=F},[F]);const ne=ye.useMemo(()=>({activeIndex:O,containerId:M,disabled:te,disableTransforms:G,items:F,overIndex:Y,useDragOverlay:A,sortedRects:tE(F,S),strategy:p}),[O,M,te.draggable,te.droppable,G,F,Y,S,A,p]);return Xn.createElement(Mw.Provider,{value:ne},r)}const aE=e=>{let{id:r,items:s,activeIndex:c,overIndex:p}=e;return Np(s,c,p).indexOf(r)},lE=e=>{let{containerId:r,isSorting:s,wasDragging:c,index:p,items:g,newIndex:x,previousItems:l,previousContainerId:S,transition:k}=e;return!k||!c||l!==g&&p===x?!1:s?!0:x!==p&&r===S},uE={duration:200,easing:"ease"},Dw="transform",cE=Po.Transition.toString({property:Dw,duration:0,easing:"linear"}),hE={roleDescription:"sortable"};function dE(e){let{disabled:r,index:s,node:c,rect:p}=e;const[g,x]=ye.useState(null),l=ye.useRef(s);return Ki(()=>{if(!r&&s!==l.current&&c.current){const S=p.current;if(S){const k=Kl(c.current,{ignoreTransform:!0}),D={x:S.left-k.left,y:S.top-k.top,scaleX:S.width/k.width,scaleY:S.height/k.height};(D.x||D.y)&&x(D)}}s!==l.current&&(l.current=s)},[r,s,c,p]),ye.useEffect(()=>{g&&x(null)},[g]),g}function pE(e){let{animateLayoutChanges:r=lE,attributes:s,disabled:c,data:p,getNewIndex:g=aE,id:x,strategy:l,resizeObserverConfig:S,transition:k=uE}=e;const{items:D,containerId:M,activeIndex:A,disabled:F,disableTransforms:W,sortedRects:O,overIndex:Y,useDragOverlay:R,strategy:L}=ye.useContext(Mw),G=fE(c,F),te=D.indexOf(x),ne=ye.useMemo(()=>({sortable:{containerId:M,index:te,items:D},...p}),[M,p,te,D]),ve=ye.useMemo(()=>D.slice(D.indexOf(x)),[D,x]),{rect:fe,node:be,isOver:Ce,setNodeRef:Le}=Aw({id:x,data:ne,disabled:G.droppable,resizeObserverConfig:{updateMeasurementsFor:ve,...S}}),{active:lt,activatorEvent:he,activeNodeRect:Oe,attributes:$,setNodeRef:Ve,listeners:et,isDragging:Xe,over:Ye,setActivatorNodeRef:Pe,transform:nt}=US({id:x,data:ne,attributes:{...hE,...s},disabled:G.draggable}),Ae=x5(Le,Ve),Se=!!lt,bt=Se&&!W&&bd(A)&&bd(Y),ut=!R&&Xe,at=ut&&bt?nt:null,rn=bt?at??(l??L)({rects:O,activeNodeRect:Oe,activeIndex:A,overIndex:Y,index:te}):null,$t=bd(A)&&bd(Y)?g({id:x,items:D,activeIndex:A,overIndex:Y}):te,Ut=lt==null?void 0:lt.id,Nt=ye.useRef({activeId:Ut,items:D,newIndex:$t,containerId:M}),on=D!==Nt.current.items,sn=r({active:lt,containerId:M,isDragging:Xe,isSorting:Se,id:x,index:te,items:D,newIndex:Nt.current.newIndex,previousItems:Nt.current.items,previousContainerId:Nt.current.containerId,transition:k,wasDragging:Nt.current.activeId!=null}),dn=dE({disabled:!sn,index:te,node:be,rect:fe});return ye.useEffect(()=>{Se&&Nt.current.newIndex!==$t&&(Nt.current.newIndex=$t),M!==Nt.current.containerId&&(Nt.current.containerId=M),D!==Nt.current.items&&(Nt.current.items=D)},[Se,$t,M,D]),ye.useEffect(()=>{if(Ut===Nt.current.activeId)return;if(Ut&&!Nt.current.activeId){Nt.current.activeId=Ut;return}const He=setTimeout(()=>{Nt.current.activeId=Ut},50);return()=>clearTimeout(He)},[Ut]),{active:lt,activeIndex:A,attributes:$,data:ne,rect:fe,index:te,newIndex:$t,items:D,isOver:Ce,isSorting:Se,isDragging:Xe,listeners:et,node:be,overIndex:Y,over:Ye,setNodeRef:Ae,setActivatorNodeRef:Pe,setDroppableNodeRef:Le,setDraggableNodeRef:Ve,transform:dn??rn,transition:U()};function U(){if(dn||on&&Nt.current.newIndex===te)return cE;if(!(ut&&!Bp(he)||!k)&&(Se||sn))return Po.Transition.toString({...k,property:Dw})}}function fE(e,r){var s,c;return typeof e=="boolean"?{draggable:e,droppable:!1}:{draggable:(s=e==null?void 0:e.draggable)!=null?s:r.draggable,droppable:(c=e==null?void 0:e.droppable)!=null?c:r.droppable}}In.Down,In.Right,In.Up,In.Left;function mE(e,r,s,c,p,g){const x=e.findIndex(ka(s)),l=e.findIndex(ka(r)),S=e[l],k=Np(e,l,x),D=k[x-1],M=k[x+1],A=Math.round(c/p),F=S.depth+A,W=(M==null?void 0:M.depth)??0,O=Math.min(((D==null?void 0:D.depth)??-1)+1,g),Y=Math.min(Math.max(F,W),O),R=function(){if(Y)for(let G=x-1;G>=0;G--){const te=k[G];if(Y>te.depth)return te;if(Y===te.depth)return te.parent}}();return{depth:Y,parent:R}}function Eg(e){return e!=null&&e.parent?Eg(e.parent):e}function*Rw(e,r,s=0){for(const c of e)yield{...c,depth:s},r!=null&&r.includes(c.id)||(yield*Rw(c.children,r,s+1))}function Ll(e,r){return Array.from(Rw(e,r))}function ka(e){return r=>r.id===e}function Lw(e,r=0){return e.reduce((s,c)=>Lw(c.children,s+1),r)}function Tg(e){var c;const r={children:[]},s=new Map(e.map(p=>[p.id,{...p,children:[]}]));for(const p of s.values()){const g=s.get((c=p.parent)==null?void 0:c.id);p.parent=g,(g||r).children.push(p)}return r.children}function Bw(e,r,s=[{children:e}]){if(!e.length)return e;for(const c of e)if(c.children.length&&s.length>r){const[p]=s,g=Ll([c]).map(S=>({...S,parent:p,children:[]})),x=p.children,l=x.findIndex(ka(c.id));x.splice(l,1,...g)}else Bw(c.children,r,[c,...s]);return e}function Fw(e){return{id:Math.random().toString(36).slice(2,7),parent:void 0,children:[],data:{file:e}}}async function gE(e){const[r,...s]=await Promise.all(e.files.map(c=>fetch(c).then(p=>p.blob()).then(p=>new File([p],c)).then(Fw)));return Object.assign(r,{children:s.map(c=>({...c,parent:r}))})}function Cl(e){var r;return((r=e.data.glyphs)==null?void 0:r.length)===256}function yE(e){const[r]=Tg(Ll([e]).map(s=>({...s,data:{...s.data,stackName:void 0,glyphs:void 0}})));return r}var yi=(e=>(e.Ready="Ready",e.Running="Running",e.Finished="Finished",e))(yi||{});const _E={stacks:[],status:yi.Ready,config:{font:Fc,fontSize:14,langCode:"name",customText:""}};function vE(e,r){var s;switch(r.type){case"addFontStacks":return{...e,status:yi.Ready,stacks:[...e.stacks,...r.stacks]};case"setFontStacks":{const c=r.stacks.map(x=>{var l;return(l=r.modifiedStackIds)!=null&&l.includes(x.id)?yE(x):x}),p=c.filter(Cl),g=p.some(x=>x.id===e.config.font)?e.config.font:((s=p.at(-1))==null?void 0:s.id)||Fc;return{...e,status:c.length&&c.every(Cl)?yi.Finished:yi.Ready,stacks:c,config:e.config.font!==g?{...e.config,font:g}:e.config}}case"startConversion":return{...e,status:r.toConvert.length?yi.Running:yi.Finished,stacks:e.stacks.map(c=>r.toConvert.includes(c)?{...c,data:{...c.data,glyphs:[]}}:c)};case"updateConversionStatus":{const{stackId:c,stackName:p,glyph:g}=r.data;let x=!1;const l=e.stacks.map(S=>{if(S.id===c){const k=[...S.data.glyphs,g],D={...S,data:{...S.data,stackName:p,glyphs:k}};return x=Cl(D),D}return S});return{...e,status:l.every(Cl)?yi.Finished:yi.Running,stacks:l,config:x?{...e.config,font:c}:e.config}}case"updateMapConfig":return{...e,config:{...e.config,...r.changes}};default:return e}}function xE(){return Mt.jsx("svg",{viewBox:"0 0 98 96",xmlns:"http://www.w3.org/2000/svg",children:Mt.jsx("path",{d:"M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z",fill:"#24292f"})})}const wE="_ExampleItem_1b4yh_1",bE={ExampleItem:wE};function SE({status:e,onExampleLoad:r}){return Mt.jsx("ul",{children:_5.map(s=>Mt.jsx("li",{className:bE.ExampleItem,children:Mt.jsx("button",{disabled:e===yi.Running,onClick:()=>r(s),children:s.name})},s.name))})}var Ow={exports:{}},EE="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",TE=EE,kE=TE;function Nw(){}function Uw(){}Uw.resetWarningCache=Nw;var CE=function(){function e(c,p,g,x,l,S){if(S!==kE){var k=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw k.name="Invariant Violation",k}}e.isRequired=e;function r(){return e}var s={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:r,element:e,elementType:e,instanceOf:r,node:e,objectOf:r,oneOf:r,oneOfType:r,shape:r,exact:r,checkPropTypes:Uw,resetWarningCache:Nw};return s.PropTypes=s,s};Ow.exports=CE();var IE=Ow.exports;const jn=yp(IE);function Yl(e,r,s,c){function p(g){return g instanceof s?g:new s(function(x){x(g)})}return new(s||(s=Promise))(function(g,x){function l(D){try{k(c.next(D))}catch(M){x(M)}}function S(D){try{k(c.throw(D))}catch(M){x(M)}}function k(D){D.done?g(D.value):p(D.value).then(l,S)}k((c=c.apply(e,r||[])).next())})}function Jl(e,r){var s={label:0,sent:function(){if(g[0]&1)throw g[1];return g[1]},trys:[],ops:[]},c,p,g,x;return x={next:l(0),throw:l(1),return:l(2)},typeof Symbol=="function"&&(x[Symbol.iterator]=function(){return this}),x;function l(k){return function(D){return S([k,D])}}function S(k){if(c)throw new TypeError("Generator is already executing.");for(;x&&(x=0,k[0]&&(s=0)),s;)try{if(c=1,p&&(g=k[0]&2?p.return:k[0]?p.throw||((g=p.return)&&g.call(p),0):p.next)&&!(g=g.call(p,k[1])).done)return g;switch(p=0,g&&(k=[k[0]&2,g.value]),k[0]){case 0:case 1:g=k;break;case 4:return s.label++,{value:k[1],done:!1};case 5:s.label++,p=k[1],k=[0];continue;case 7:k=s.ops.pop(),s.trys.pop();continue;default:if(g=s.trys,!(g=g.length>0&&g[g.length-1])&&(k[0]===6||k[0]===2)){s=0;continue}if(k[0]===3&&(!g||k[1]>g[0]&&k[1]0)&&!(p=c.next()).done;)g.push(p.value)}catch(l){x={error:l}}finally{try{p&&!p.done&&(s=c.return)&&s.call(c)}finally{if(x)throw x.error}}return g}function kv(e,r,s){if(s||arguments.length===2)for(var c=0,p=r.length,g;c0?c:e.name,writable:!1,configurable:!1,enumerable:!0})}return s}function zE(e){var r=e.name,s=r&&r.lastIndexOf(".")!==-1;if(s&&!e.type){var c=r.split(".").pop().toLowerCase(),p=AE.get(c);p&&Object.defineProperty(e,"type",{value:p,writable:!1,configurable:!1,enumerable:!0})}return e}var PE=[".DS_Store","Thumbs.db"];function ME(e){return Yl(this,void 0,void 0,function(){return Jl(this,function(r){return fp(e)&&DE(e.dataTransfer)?[2,FE(e.dataTransfer,e.type)]:RE(e)?[2,LE(e)]:Array.isArray(e)&&e.every(function(s){return"getFile"in s&&typeof s.getFile=="function"})?[2,BE(e)]:[2,[]]})})}function DE(e){return fp(e)}function RE(e){return fp(e)&&fp(e.target)}function fp(e){return typeof e=="object"&&e!==null}function LE(e){return kg(e.target.files).map(function(r){return Xc(r)})}function BE(e){return Yl(this,void 0,void 0,function(){var r;return Jl(this,function(s){switch(s.label){case 0:return[4,Promise.all(e.map(function(c){return c.getFile()}))];case 1:return r=s.sent(),[2,r.map(function(c){return Xc(c)})]}})})}function FE(e,r){return Yl(this,void 0,void 0,function(){var s,c;return Jl(this,function(p){switch(p.label){case 0:return e.items?(s=kg(e.items).filter(function(g){return g.kind==="file"}),r!=="drop"?[2,s]:[4,Promise.all(s.map(OE))]):[3,2];case 1:return c=p.sent(),[2,Cv(Vw(c))];case 2:return[2,Cv(kg(e.files).map(function(g){return Xc(g)}))]}})})}function Cv(e){return e.filter(function(r){return PE.indexOf(r.name)===-1})}function kg(e){if(e===null)return[];for(var r=[],s=0;se.length)&&(r=e.length);for(var s=0,c=new Array(r);ss)return[!1,Mv(s)];if(e.sizes)return[!1,Mv(s)]}return[!0,null]}function ba(e){return e!=null}function eT(e){var r=e.files,s=e.accept,c=e.minSize,p=e.maxSize,g=e.multiple,x=e.maxFiles,l=e.validator;return!g&&r.length>1||g&&x>=1&&r.length>x?!1:r.every(function(S){var k=Zw(S,s),D=Nc(k,1),M=D[0],A=qw(S,c,p),F=Nc(A,1),W=F[0],O=l?l(S):null;return M&&W&&!O})}function mp(e){return typeof e.isPropagationStopped=="function"?e.isPropagationStopped():typeof e.cancelBubble<"u"?e.cancelBubble:!1}function Ed(e){return e.dataTransfer?Array.prototype.some.call(e.dataTransfer.types,function(r){return r==="Files"||r==="application/x-moz-file"}):!!e.target&&!!e.target.files}function Rv(e){e.preventDefault()}function tT(e){return e.indexOf("MSIE")!==-1||e.indexOf("Trident/")!==-1}function nT(e){return e.indexOf("Edge/")!==-1}function rT(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:window.navigator.userAgent;return tT(e)||nT(e)}function So(){for(var e=arguments.length,r=new Array(e),s=0;s1?p-1:0),x=1;xe.length)&&(r=e.length);for(var s=0,c=new Array(r);s=0)&&Object.prototype.propertyIsEnumerable.call(e,c)&&(s[c]=e[c])}return s}function xT(e,r){if(e==null)return{};var s={},c=Object.keys(e),p,g;for(g=0;g=0)&&(s[p]=e[p]);return s}var Ry=ye.forwardRef(function(e,r){var s=e.children,c=gp(e,uT),p=Yw(c),g=p.open,x=gp(p,cT);return ye.useImperativeHandle(r,function(){return{open:g}},[g]),Xn.createElement(ye.Fragment,null,s(nr(nr({},x),{},{open:g})))});Ry.displayName="Dropzone";var Kw={disabled:!1,getFilesFromEvent:ME,maxSize:1/0,minSize:0,multiple:!0,maxFiles:0,preventDropOnDocument:!0,noClick:!1,noKeyboard:!1,noDrag:!1,noDragEventsBubbling:!1,validator:null,useFsAccessApi:!0,autoFocus:!1};Ry.defaultProps=Kw;Ry.propTypes={children:jn.func,accept:jn.objectOf(jn.arrayOf(jn.string)),multiple:jn.bool,preventDropOnDocument:jn.bool,noClick:jn.bool,noKeyboard:jn.bool,noDrag:jn.bool,noDragEventsBubbling:jn.bool,minSize:jn.number,maxSize:jn.number,maxFiles:jn.number,disabled:jn.bool,getFilesFromEvent:jn.func,onFileDialogCancel:jn.func,onFileDialogOpen:jn.func,useFsAccessApi:jn.bool,autoFocus:jn.bool,onDragEnter:jn.func,onDragLeave:jn.func,onDragOver:jn.func,onDrop:jn.func,onDropAccepted:jn.func,onDropRejected:jn.func,onError:jn.func,validator:jn.func};var zg={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,acceptedFiles:[],fileRejections:[]};function Yw(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=nr(nr({},Kw),e),s=r.accept,c=r.disabled,p=r.getFilesFromEvent,g=r.maxSize,x=r.minSize,l=r.multiple,S=r.maxFiles,k=r.onDragEnter,D=r.onDragLeave,M=r.onDragOver,A=r.onDrop,F=r.onDropAccepted,W=r.onDropRejected,O=r.onFileDialogCancel,Y=r.onFileDialogOpen,R=r.useFsAccessApi,L=r.autoFocus,G=r.preventDropOnDocument,te=r.noClick,ne=r.noKeyboard,ve=r.noDrag,fe=r.noDragEventsBubbling,be=r.onError,Ce=r.validator,Le=ye.useMemo(function(){return sT(s)},[s]),lt=ye.useMemo(function(){return oT(s)},[s]),he=ye.useMemo(function(){return typeof Y=="function"?Y:Bv},[Y]),Oe=ye.useMemo(function(){return typeof O=="function"?O:Bv},[O]),$=ye.useRef(null),Ve=ye.useRef(null),et=ye.useReducer(wT,zg),Xe=Sm(et,2),Ye=Xe[0],Pe=Xe[1],nt=Ye.isFocused,Ae=Ye.isFileDialogActive,Se=ye.useRef(typeof window<"u"&&window.isSecureContext&&R&&iT()),bt=function(){!Se.current&&Ae&&setTimeout(function(){if(Ve.current){var je=Ve.current.files;je.length||(Pe({type:"closeDialog"}),Oe())}},300)};ye.useEffect(function(){return window.addEventListener("focus",bt,!1),function(){window.removeEventListener("focus",bt,!1)}},[Ve,Ae,Oe,Se]);var ut=ye.useRef([]),at=function(je){$.current&&$.current.contains(je.target)||(je.preventDefault(),ut.current=[])};ye.useEffect(function(){return G&&(document.addEventListener("dragover",Rv,!1),document.addEventListener("drop",at,!1)),function(){G&&(document.removeEventListener("dragover",Rv),document.removeEventListener("drop",at))}},[$,G]),ye.useEffect(function(){return!c&&L&&$.current&&$.current.focus(),function(){}},[$,L,c]);var Lt=ye.useCallback(function(Ne){be?be(Ne):console.error(Ne)},[be]),rn=ye.useCallback(function(Ne){Ne.preventDefault(),Ne.persist(),Ke(Ne),ut.current=[].concat(pT(ut.current),[Ne.target]),Ed(Ne)&&Promise.resolve(p(Ne)).then(function(je){if(!(mp(Ne)&&!fe)){var yt=je.length,Bt=yt>0&&eT({files:je,accept:Le,minSize:x,maxSize:g,multiple:l,maxFiles:S,validator:Ce}),ke=yt>0&&!Bt;Pe({isDragAccept:Bt,isDragReject:ke,isDragActive:!0,type:"setDraggedFiles"}),k&&k(Ne)}}).catch(function(je){return Lt(je)})},[p,k,Lt,fe,Le,x,g,l,S,Ce]),$t=ye.useCallback(function(Ne){Ne.preventDefault(),Ne.persist(),Ke(Ne);var je=Ed(Ne);if(je&&Ne.dataTransfer)try{Ne.dataTransfer.dropEffect="copy"}catch{}return je&&M&&M(Ne),!1},[M,fe]),Ut=ye.useCallback(function(Ne){Ne.preventDefault(),Ne.persist(),Ke(Ne);var je=ut.current.filter(function(Bt){return $.current&&$.current.contains(Bt)}),yt=je.indexOf(Ne.target);yt!==-1&&je.splice(yt,1),ut.current=je,!(je.length>0)&&(Pe({type:"setDraggedFiles",isDragActive:!1,isDragAccept:!1,isDragReject:!1}),Ed(Ne)&&D&&D(Ne))},[$,D,fe]),Nt=ye.useCallback(function(Ne,je){var yt=[],Bt=[];Ne.forEach(function(ke){var it=Zw(ke,Le),Wn=Sm(it,2),pn=Wn[0],Ht=Wn[1],en=qw(ke,x,g),Ln=Sm(en,2),$n=Ln[0],Gn=Ln[1],ht=Ce?Ce(ke):null;if(pn&&$n&&!ht)yt.push(ke);else{var qt=[Ht,Gn];ht&&(qt=qt.concat(ht)),Bt.push({file:ke,errors:qt.filter(function(Gt){return Gt})})}}),(!l&&yt.length>1||l&&S>=1&&yt.length>S)&&(yt.forEach(function(ke){Bt.push({file:ke,errors:[QE]})}),yt.splice(0)),Pe({acceptedFiles:yt,fileRejections:Bt,type:"setFiles"}),A&&A(yt,Bt,je),Bt.length>0&&W&&W(Bt,je),yt.length>0&&F&&F(yt,je)},[Pe,l,Le,x,g,S,A,F,W,Ce]),on=ye.useCallback(function(Ne){Ne.preventDefault(),Ne.persist(),Ke(Ne),ut.current=[],Ed(Ne)&&Promise.resolve(p(Ne)).then(function(je){mp(Ne)&&!fe||Nt(je,Ne)}).catch(function(je){return Lt(je)}),Pe({type:"reset"})},[p,Nt,Lt,fe]),sn=ye.useCallback(function(){if(Se.current){Pe({type:"openDialog"}),he();var Ne={multiple:l,types:lt};window.showOpenFilePicker(Ne).then(function(je){return p(je)}).then(function(je){Nt(je,null),Pe({type:"closeDialog"})}).catch(function(je){aT(je)?(Oe(je),Pe({type:"closeDialog"})):lT(je)?(Se.current=!1,Ve.current?(Ve.current.value=null,Ve.current.click()):Lt(new Error("Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no was provided."))):Lt(je)});return}Ve.current&&(Pe({type:"openDialog"}),he(),Ve.current.value=null,Ve.current.click())},[Pe,he,Oe,R,Nt,Lt,lt,l]),dn=ye.useCallback(function(Ne){!$.current||!$.current.isEqualNode(Ne.target)||(Ne.key===" "||Ne.key==="Enter"||Ne.keyCode===32||Ne.keyCode===13)&&(Ne.preventDefault(),sn())},[$,sn]),U=ye.useCallback(function(){Pe({type:"focus"})},[]),He=ye.useCallback(function(){Pe({type:"blur"})},[]),Ue=ye.useCallback(function(){te||(rT()?setTimeout(sn,0):sn())},[te,sn]),ae=function(je){return c?null:je},oe=function(je){return ne?null:ae(je)},ge=function(je){return ve?null:ae(je)},Ke=function(je){fe&&je.stopPropagation()},tt=ye.useMemo(function(){return function(){var Ne=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},je=Ne.refKey,yt=je===void 0?"ref":je,Bt=Ne.role,ke=Ne.onKeyDown,it=Ne.onFocus,Wn=Ne.onBlur,pn=Ne.onClick,Ht=Ne.onDragEnter,en=Ne.onDragOver,Ln=Ne.onDragLeave,$n=Ne.onDrop,Gn=gp(Ne,hT);return nr(nr(Ag({onKeyDown:oe(So(ke,dn)),onFocus:oe(So(it,U)),onBlur:oe(So(Wn,He)),onClick:ae(So(pn,Ue)),onDragEnter:ge(So(Ht,rn)),onDragOver:ge(So(en,$t)),onDragLeave:ge(So(Ln,Ut)),onDrop:ge(So($n,on)),role:typeof Bt=="string"&&Bt!==""?Bt:"presentation"},yt,$),!c&&!ne?{tabIndex:0}:{}),Gn)}},[$,dn,U,He,Ue,rn,$t,Ut,on,ne,ve,c]),Me=ye.useCallback(function(Ne){Ne.stopPropagation()},[]),ct=ye.useMemo(function(){return function(){var Ne=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},je=Ne.refKey,yt=je===void 0?"ref":je,Bt=Ne.onChange,ke=Ne.onClick,it=gp(Ne,dT),Wn=Ag({accept:Le,multiple:l,type:"file",style:{display:"none"},onChange:ae(So(Bt,on)),onClick:ae(So(ke,Me)),tabIndex:-1},yt,Ve);return nr(nr({},Wn),it)}},[Ve,s,l,on,c]);return nr(nr({},Ye),{},{isFocused:nt&&!c,getRootProps:tt,getInputProps:ct,rootRef:$,inputRef:Ve,open:ae(sn)})}function wT(e,r){switch(r.type){case"focus":return nr(nr({},e),{},{isFocused:!0});case"blur":return nr(nr({},e),{},{isFocused:!1});case"openDialog":return nr(nr({},zg),{},{isFileDialogActive:!0});case"closeDialog":return nr(nr({},e),{},{isFileDialogActive:!1});case"setDraggedFiles":return nr(nr({},e),{},{isDragActive:r.isDragActive,isDragAccept:r.isDragAccept,isDragReject:r.isDragReject});case"setFiles":return nr(nr({},e),{},{acceptedFiles:r.acceptedFiles,fileRejections:r.fileRejections});case"reset":return nr({},zg);default:return e}}function Bv(){}const bT="_Input_yn5x9_1",ST="_Button_yn5x9_28",ET="_outline_yn5x9_42",TT="_FileInput_yn5x9_57",kT="_Select_yn5x9_81",CT="_Range_yn5x9_92",Yo={Input:bT,Button:ST,outline:ET,FileInput:TT,Select:kT,Range:CT};function Jw(e){var r,s,c="";if(typeof e=="string"||typeof e=="number")c+=e;else if(typeof e=="object")if(Array.isArray(e))for(r=0;r!(e.isSorting||e.wasDragging);function Ov(e){const{id:r,depth:s,indentationWidth:c,fileName:p,disabled:g,progress:x,tooltip:l,dragOverlay:S,childCount:k,overTrashBin:D}=e,{attributes:M,isDragging:A,isSorting:F,listeners:W,setDraggableNodeRef:O,setDroppableNodeRef:Y,transform:R,transition:L}=pE({id:r,animateLayoutChanges:VT,disabled:g});return ye.useEffect(()=>{if(S)return document.body.style.setProperty("cursor","grabbing"),()=>{document.body.style.removeProperty("cursor")}},[S]),Mt.jsx("li",{className:Jo(Eo.FileTreeItem,S&&Eo.dragOverlay,A&&Eo.newPositionOutline,(F||g)&&Eo.disabledInteraction,g&&Eo.disabled,D&&Eo.overTrashBin),ref:Y,style:{"--indent":`${c*s}px`},"data-tooltip":l,children:Mt.jsxs("div",{className:Eo.Draggable,ref:O,style:{transform:Po.Translate.toString(R),transition:L},...M,...W,tabIndex:void 0,children:[D?Mt.jsx("span",{className:Eo.deletionWarning,children:"Remove"}):null,Mt.jsx("span",{children:p}),x!==void 0?Mt.jsx("progress",{value:x,max:256,className:Eo.ProgressBar}):null,k?Mt.jsx("span",{className:Eo.ChildrenCount,children:k+1}):null]})})}const jT="_FilesSection_177tf_1",$T="_UploadFilesDropzoneActive_177tf_21",GT="_FilesSectionHeader_177tf_32",ZT="_ClearButton_177tf_42",qT="_FilesSectionFooter_177tf_56",WT="_importantButton_177tf_57",HT="_loading_177tf_66",Ss={FilesSection:jT,UploadFilesDropzoneActive:$T,FilesSectionHeader:GT,ClearButton:ZT,FilesSectionFooter:qT,importantButton:WT,loading:HT,"border-animation":"_border-animation_177tf_1"},XT={droppable:{strategy:$l.Always}},KT={keyframes({transform:e}){return[{opacity:1,transform:Po.Transform.toString(e.initial)},{opacity:0,transform:Po.Transform.toString({...e.final,x:e.final.x+5,y:e.final.y+5})}]},easing:"ease-out",sideEffects({active:e}){e.node.animate([{opacity:0},{opacity:1}],{duration:Sg.duration,easing:Sg.easing})}};function YT(e){const{status:r,stacks:s,indentationWidth:c=24,depthLimit:p=1,onFilesUpload:g,onStacksChange:x,onConversionStart:l,onDownloadZip:S}=e,k=r===yi.Running,{getRootProps:D,getInputProps:M,isDragActive:A}=Yw({disabled:k,onDrop:g,accept:{"font/otf":[".otf"],"font/ttf":[".ttf"]},multiple:!0,noClick:!0,noKeyboard:!0}),[F,W]=ye.useState(),[O,Y]=ye.useState(),[R,L]=ye.useState(0),G=ye.useMemo(()=>Ll(s,F?[F]:[]),[F,s]),te=F?G.find(ka(F)):void 0,ne=F&&O?mE(G,F,O,R,c,p):void 0,ve=F5(B5(My)),fe=ye.useMemo(()=>G.map(({id:$})=>$),[G]);return Mt.jsx("ul",{...D(),className:Jo(Ss.FilesSection,A&&Ss.UploadFilesDropzoneActive),children:Mt.jsxs(FS,{sensors:ve,collisionDetection:$5,measuring:XT,onDragStart:be,onDragMove:Ce,onDragOver:Le,onDragEnd:lt,onDragCancel:he,children:[Mt.jsxs("li",{className:Ss.FilesSectionHeader,children:[Mt.jsx(IT,{...M({tabIndex:void 0,style:void 0}),disabled:k,title:`Loaded ${s.length} font stacks`,value:""}),Mt.jsx(JT,{outline:!0,className:Ss.ClearButton,"data-hidden":!s.length,disabled:!s.length||k,title:"Clear all files",onClick:()=>x([]),children:"Clear"})]}),Mt.jsxs(sE,{items:fe,strategy:iE,disabled:k,children:[G.map(({id:$,depth:Ve,data:et})=>{var Xe;return Mt.jsx(Ov,{id:$,depth:$===F&&ne?ne.depth:Ve,indentationWidth:c,fileName:et.file.name,disabled:k,progress:k?(Xe=et.glyphs)==null?void 0:Xe.length:void 0,tooltip:k&&et.glyphs?[et.stackName,`${et.glyphs.length} / 256 files generated`].filter(Boolean).join(`\r +`):void 0},$)}),Io.createPortal(Mt.jsx(eE,{dropAnimation:KT,children:te?Mt.jsx(Ov,{id:te.id,depth:te.depth,indentationWidth:c,fileName:te.data.file.name,dragOverlay:!0,childCount:Lw(te.children),overTrashBin:O===Mg}):null}),document.body)]}),Mt.jsx("li",{className:Jo(Ss.FilesSectionFooter),children:r===yi.Ready?Mt.jsx(Pg,{className:Ss.importantButton,disabled:!s.length,onClick:l,children:"Convert"}):Mt.jsx(Pg,{className:Jo(Ss.importantButton,r===yi.Running&&Ss.loading),disabled:r!==yi.Finished,onClick:S,children:"Download .zip"})})]})});function be({active:{id:$}}){W($),Y($)}function Ce({delta:$}){L($.x)}function Le({over:$}){Y($==null?void 0:$.id)}function lt({active:$,over:Ve}){var et,Xe,Ye,Pe;if(Oe(),(Ve==null?void 0:Ve.id)===Mg){const nt=Ll(s,[$.id]).filter(Ae=>Ae.id!==$.id);return x(Tg(nt))}if(ne&&Ve){const nt=Ll(s),Ae=nt.findIndex(ka(Ve.id)),Se=nt.findIndex(ka($.id)),bt=nt[Se];if(Ae!==Se||((et=bt.parent)==null?void 0:et.id)!==((Xe=ne.parent)==null?void 0:Xe.id)){const ut=[Eg(bt).id,(Ye=Eg(ne.parent))==null?void 0:Ye.id];bt.parent=(Pe=ne.parent)!=null&&Pe.id?nt.find(ka(ne.parent.id)):void 0;const at=Np(nt,Se,Ae),Lt=Tg(at);return Bw(Lt,p),x(Lt,ut)}}}function he(){Oe()}function Oe(){Y(void 0),W(void 0),L(0)}}const Mg="trash";function JT(e){const{setNodeRef:r,isOver:s}=Aw({id:Mg});return Mt.jsx(Pg,{ref:r,...e,"data-remove-file":s})}const QT="_MapSettingSection_ojf16_1",ek="_fontSizeValue_ojf16_19",Nv={MapSettingSection:QT,fontSizeValue:ek};function tk(e){const{stacks:r,mapConfig:s,onMapConfigChange:c}=e,p=r.filter(Cl);return Mt.jsxs("ul",{className:Nv.MapSettingSection,children:[Mt.jsx("li",{children:Mt.jsxs("label",{children:["Font",Mt.jsxs(Fv,{value:s.font,onChange:g=>{c({font:g.target.value})},children:[Mt.jsx("option",{value:Fc,children:Fc}),p.map(({id:g,data:{stackName:x}})=>Mt.jsx("option",{value:g,children:x},g)),Mt.jsx("option",{disabled:!0,children:"Convert files to add more fonts"})]})]})}),Mt.jsx("li",{children:Mt.jsxs("label",{children:["Language",Mt.jsx(Fv,{value:s.langCode,onChange:g=>{c({langCode:g.target.value})},children:v5.map(([g,x])=>Mt.jsx("option",{value:g,children:x},g))})]})}),Mt.jsx("li",{children:Mt.jsxs("label",{children:["Custom text",Mt.jsx(AT,{type:"search",value:s.customText,onChange:g=>{c({customText:g.target.value})}})]})}),Mt.jsx("li",{children:Mt.jsxs("label",{children:["Text Size ",Mt.jsxs("span",{className:Nv.fontSizeValue,children:[s.fontSize,"px"]}),Mt.jsx(zT,{min:"8",max:"48",value:s.fontSize,onChange:g=>{c({fontSize:+g.target.value})}})]})})]})}const nk="modulepreload",rk=function(e){return"/font-maker/"+e},Uv={},ik=function(r,s,c){if(!s||s.length===0)return r();const p=document.getElementsByTagName("link");return Promise.all(s.map(g=>{if(g=rk(g),g in Uv)return;Uv[g]=!0;const x=g.endsWith(".css"),l=x?'[rel="stylesheet"]':"";if(!!c)for(let D=p.length-1;D>=0;D--){const M=p[D];if(M.href===g&&(!x||M.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${g}"]${l}`))return;const k=document.createElement("link");if(k.rel=x?"stylesheet":nk,x||(k.as="script",k.crossOrigin=""),k.href=g,document.head.appendChild(k),x)return new Promise((D,M)=>{k.addEventListener("load",D),k.addEventListener("error",()=>M(new Error(`Unable to preload CSS for ${g}`)))})})).then(()=>r())},ok=ye.createContext(null);function sk(e){const r=e.clone();return r.pixelsToGLUnits=e.pixelsToGLUnits,r}function Vv(e){return{longitude:e.center.lng,latitude:e.center.lat,zoom:e.zoom,pitch:e.pitch,bearing:e.bearing,padding:e.padding}}function jv(e,r){const s=r.viewState||r;let c=!1;if("longitude"in s&&"latitude"in s){const p=e.center;e.center=new p.constructor(s.longitude,s.latitude),c=c||p!==e.center}if("zoom"in s){const p=e.zoom;e.zoom=s.zoom,c=c||p!==e.zoom}if("bearing"in s){const p=e.bearing;e.bearing=s.bearing,c=c||p!==e.bearing}if("pitch"in s){const p=e.pitch;e.pitch=s.pitch,c=c||p!==e.pitch}return s.padding&&!e.isPaddingEqual(s.padding)&&(c=!0,e.padding=s.padding),c}const ak=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function $v(e){if(!e)return null;if(typeof e=="string"||("toJS"in e&&(e=e.toJS()),!e.layers))return e;const r={};for(const c of e.layers)r[c.id]=c;const s=e.layers.map(c=>{const p=r[c.ref];let g=null;if("interactive"in c&&(g={...c},delete g.interactive),p){g=g||{...c},delete g.ref;for(const x of ak)x in p&&(g[x]=p[x])}return g||c});return{...e,layers:s}}function lk(e,r){const s=Array.isArray(e)?e[0]:e?e.x:0,c=Array.isArray(e)?e[1]:e?e.y:0,p=Array.isArray(r)?r[0]:r?r.x:0,g=Array.isArray(r)?r[1]:r?r.y:0;return s===p&&c===g}function As(e,r){if(e===r)return!0;if(!e||!r)return!1;if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return!1;for(let s=0;s{const g=this.props[Zv[p.type]];g&&g(p)},this._onPointerEvent=p=>{(p.type==="mousemove"||p.type==="mouseout")&&this._updateHover(p);const g=this.props[Gv[p.type]];g&&(this.props.interactiveLayerIds&&p.type!=="mouseover"&&p.type!=="mouseout"&&(p.features=this._hoveredFeatures||this._queryRenderedFeatures(p.point)),g(p),delete p.features)},this._onCameraEvent=p=>{if(!this._internalUpdate){const g=this.props[Em[p.type]];g&&g(p)}p.type in this._deferredEvents&&(this._deferredEvents[p.type]=!1)},this._MapClass=r,this.props=s,this._initialize(c)}get map(){return this._map}get transform(){return this._renderTransform}setProps(r){const s=this.props;this.props=r;const c=this._updateSettings(r,s);c&&this._createShadowTransform(this._map);const p=this._updateSize(r),g=this._updateViewState(r,!0);this._updateStyle(r,s),this._updateStyleComponents(r,s),this._updateHandlers(r,s),(c||p||g&&!this._map.isMoving())&&this.redraw()}static reuse(r,s){const c=Gl.savedMaps.pop();if(!c)return null;const p=c.map,g=p.getContainer();for(s.className=g.className;g.childNodes.length>0;)s.appendChild(g.childNodes[0]);p._container=s,c.setProps({...r,styleDiffing:!1}),p.resize();const{initialViewState:x}=r;return x&&(x.bounds?p.fitBounds(x.bounds,{...x.fitBoundsOptions,duration:0}):c._updateViewState(x,!1)),p.isStyleLoaded()?p.fire("load"):p.once("styledata",()=>p.fire("load")),p.triggerRepaint(),c}_initialize(r){const{props:s}=this,c={...s,...s.initialViewState,accessToken:s.mapboxAccessToken||hk()||null,container:r,style:$v(s.mapStyle)},p=c.initialViewState||c.viewState||c;if(Object.assign(c,{center:[p.longitude||0,p.latitude||0],zoom:p.zoom||0,pitch:p.pitch||0,bearing:p.bearing||0}),s.gl){const k=HTMLCanvasElement.prototype.getContext;HTMLCanvasElement.prototype.getContext=()=>(HTMLCanvasElement.prototype.getContext=k,s.gl)}const g=new this._MapClass(c);p.padding&&g.setPadding(p.padding),s.cursor&&(g.getCanvas().style.cursor=s.cursor),this._createShadowTransform(g);const x=g._render;g._render=k=>{this._inRender=!0,x.call(g,k),this._inRender=!1};const l=g._renderTaskQueue.run;g._renderTaskQueue.run=k=>{l.call(g._renderTaskQueue,k),this._onBeforeRepaint()},g.on("render",()=>this._onAfterRepaint());const S=g.fire;g.fire=this._fireEvent.bind(this,S),g.on("resize",()=>{this._renderTransform.resize(g.transform.width,g.transform.height)}),g.on("styledata",()=>this._updateStyleComponents(this.props,{})),g.on("sourcedata",()=>this._updateStyleComponents(this.props,{}));for(const k in Gv)g.on(k,this._onPointerEvent);for(const k in Em)g.on(k,this._onCameraEvent);for(const k in Zv)g.on(k,this._onEvent);this._map=g}recycle(){const s=this.map.getContainer().querySelector("[mapboxgl-children]");s==null||s.remove(),Gl.savedMaps.push(this)}destroy(){this._map.remove()}redraw(){const r=this._map;!this._inRender&&r.style&&(r._frame&&(r._frame.cancel(),r._frame=null),r._render())}_createShadowTransform(r){const s=sk(r.transform);r.painter.transform=s,this._renderTransform=s}_updateSize(r){const{viewState:s}=r;if(s){const c=this._map;if(s.width!==c.transform.width||s.height!==c.transform.height)return c.resize(),!0}return!1}_updateViewState(r,s){if(this._internalUpdate)return!1;const c=this._map,p=this._renderTransform,{zoom:g,pitch:x,bearing:l}=p,S=c.isMoving();S&&(p.cameraElevationReference="sea");const k=jv(p,{...Vv(c.transform),...r});if(S&&(p.cameraElevationReference="ground"),k&&s){const D=this._deferredEvents;D.move=!0,D.zoom||(D.zoom=g!==p.zoom),D.rotate||(D.rotate=l!==p.bearing),D.pitch||(D.pitch=x!==p.pitch)}return S||jv(c.transform,r),k}_updateSettings(r,s){const c=this._map;let p=!1;for(const g of uk)g in r&&!As(r[g],s[g])&&(p=!0,c[`set${g[0].toUpperCase()}${g.slice(1)}`](r[g]));return p}_updateStyle(r,s){if(r.cursor!==s.cursor&&(this._map.getCanvas().style.cursor=r.cursor),r.mapStyle!==s.mapStyle){const c={diff:r.styleDiffing};return"localIdeographFontFamily"in r&&(c.localIdeographFontFamily=r.localIdeographFontFamily),this._map.setStyle($v(r.mapStyle),c),!0}return!1}_updateStyleComponents(r,s){const c=this._map;let p=!1;return c.style.loaded()&&("light"in r&&!As(r.light,s.light)&&(p=!0,c.setLight(r.light)),"fog"in r&&!As(r.fog,s.fog)&&(p=!0,c.setFog(r.fog)),"terrain"in r&&!As(r.terrain,s.terrain)&&(!r.terrain||c.getSource(r.terrain.source))&&(p=!0,c.setTerrain(r.terrain))),p}_updateHandlers(r,s){const c=this._map;let p=!1;for(const g of ck){const x=r[g];As(x,s[g])||(p=!0,x?c[g].enable(x):c[g].disable())}return p}_queryRenderedFeatures(r){const s=this._map,{interactiveLayerIds:c=[]}=this.props;try{return s.queryRenderedFeatures(r,{layers:c.filter(s.getLayer.bind(s))})}catch{return[]}}_updateHover(r){var s;const{props:c}=this;if(c.interactiveLayerIds&&(c.onMouseMove||c.onMouseEnter||c.onMouseLeave)){const g=r.type,x=((s=this._hoveredFeatures)===null||s===void 0?void 0:s.length)>0,l=this._queryRenderedFeatures(r.point),S=l.length>0;!S&&x&&(r.type="mouseleave",this._onPointerEvent(r)),this._hoveredFeatures=l,S&&!x&&(r.type="mouseenter",this._onPointerEvent(r)),r.type=g}else this._hoveredFeatures=null}_fireEvent(r,s,c){const p=this._map,g=p.transform,x=typeof s=="string"?s:s.type;return x==="move"&&this._updateViewState(this.props,!1),x in Em&&(typeof s=="object"&&(s.viewState=Vv(g)),this._map.isMoving())?(p.transform=this._renderTransform,r.call(p,s,c),p.transform=g,p):(r.call(p,s,c),p)}_onBeforeRepaint(){const r=this._map;this._internalUpdate=!0;for(const c in this._deferredEvents)this._deferredEvents[c]&&r.fire(c);this._internalUpdate=!1;const s=this._map.transform;this._map.transform=this._renderTransform,this._onAfterRepaint=()=>{this._map.transform=s}}}Gl.savedMaps=[];function hk(){let e=null;if(typeof location<"u"){const r=/access_token=([^&\/]*)/.exec(location.search);e=r&&r[1]}try{e=e||{}.MapboxAccessToken}catch{}try{e=e||{}.REACT_APP_MAPBOX_ACCESS_TOKEN}catch{}return e}const dk=["setMaxBounds","setMinZoom","setMaxZoom","setMinPitch","setMaxPitch","setRenderWorldCopies","setProjection","setStyle","addSource","removeSource","addLayer","removeLayer","setLayerZoomRange","setFilter","setPaintProperty","setLayoutProperty","setLight","setTerrain","setFog","remove"];function pk(e,r){if(!e)return null;const s=e.map,c={getMap:()=>s,getCenter:()=>e.transform.center,getZoom:()=>e.transform.zoom,getBearing:()=>e.transform.bearing,getPitch:()=>e.transform.pitch,getPadding:()=>e.transform.padding,getBounds:()=>e.transform.getBounds(),project:p=>e.transform.locationPoint(r.LngLat.convert(p)),unproject:p=>e.transform.pointLocation(r.Point.convert(p)),queryTerrainElevation:(p,g)=>{const x=s.transform;s.transform=e.transform;const l=s.queryTerrainElevation(p,g);return s.transform=x,l}};for(const p of fk(s))!(p in c)&&!dk.includes(p)&&(c[p]=s[p].bind(s));return c}function fk(e){const r=new Set;let s=e;for(;s;){for(const c of Object.getOwnPropertyNames(s))c[0]!=="_"&&typeof e[c]=="function"&&c!=="fire"&&c!=="setEventedParent"&&r.add(c);s=Object.getPrototypeOf(s)}return Array.from(r)}const mk=typeof document<"u"?ye.useLayoutEffect:ye.useEffect,gk=["baseApiUrl","maxParallelImageRequests","workerClass","workerCount","workerUrl"];function yk(e,r){for(const s of gk)s in r&&(e[s]=r[s]);r.RTLTextPlugin&&e.getRTLTextPluginStatus&&e.getRTLTextPluginStatus()==="unavailable"&&e.setRTLTextPlugin(r.RTLTextPlugin,s=>{s&&console.error(s)},!1)}const Up=ye.createContext(null),_k={minZoom:0,maxZoom:22,minPitch:0,maxPitch:60,scrollZoom:!0,boxZoom:!0,dragRotate:!0,dragPan:!0,keyboard:!0,doubleClickZoom:!0,touchZoomRotate:!0,touchPitch:!0,mapStyle:{version:8,sources:{},layers:[]},styleDiffing:!0,projection:"mercator",renderWorldCopies:!0,onError:e=>console.error(e.error),RTLTextPlugin:"https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.2.3/mapbox-gl-rtl-text.js"},Ly=ye.forwardRef((e,r)=>{const s=ye.useContext(ok),[c,p]=ye.useState(null),g=ye.useRef(),{current:x}=ye.useRef({mapLib:null,map:null});ye.useEffect(()=>{const k=e.mapLib;let D=!0,M;return Promise.resolve(k||ik(()=>import("./index-fc2e9253.js").then(A=>A.i),[])).then(A=>{if(D){if(A.Map||(A=A.default),!A||!A.Map)throw new Error("Invalid mapLib");if(yk(A,e),A.supported(e))e.reuseMaps&&(M=Gl.reuse(e,g.current)),M||(M=new Gl(A.Map,e,g.current)),x.map=pk(M,A),x.mapLib=A,p(M),s==null||s.onMapMount(x.map,e.id);else throw new Error("Map is not supported by this browser")}}).catch(A=>{e.onError({type:"error",target:null,originalEvent:null,error:A})}),()=>{D=!1,M&&(s==null||s.onMapUnmount(e.id),e.reuseMaps?M.recycle():M.destroy())}},[]),mk(()=>{c&&c.setProps(e)}),ye.useImperativeHandle(r,()=>x.map,[c]);const l=ye.useMemo(()=>({position:"relative",width:"100%",height:"100%",...e.style}),[e.style]),S={height:"100%"};return ye.createElement("div",{id:e.id,ref:g,style:l},c&&ye.createElement(Up.Provider,{value:x},ye.createElement("div",{"mapboxgl-children":"",style:S},e.children)))});Ly.displayName="Map";Ly.defaultProps=_k;const vk=/box|flex|grid|column|lineHeight|fontWeight|opacity|order|tabSize|zIndex/;function Ba(e,r){if(!e||!r)return;const s=e.style;for(const c in r){const p=r[c];Number.isFinite(p)&&!vk.test(c)?s[c]=`${p}px`:s[c]=p}}const xk={draggable:!1,popup:null,rotation:0,rotationAlignment:"auto",pitchAlignment:"auto"};function Qw(e){const{map:r,mapLib:s}=ye.useContext(Up),c=ye.useRef({props:e});c.current.props=e;const p=ye.useMemo(()=>{let g=!1;ye.Children.forEach(e.children,S=>{S&&(g=!0)});const x={...e,element:g?document.createElement("div"):null},l=new s.Marker(x).setLngLat([e.longitude,e.latitude]);return l.getElement().addEventListener("click",S=>{var k,D;(D=(k=c.current.props).onClick)===null||D===void 0||D.call(k,{type:"click",target:l,originalEvent:S})}),l.on("dragstart",S=>{var k,D;const M=S;M.lngLat=p.getLngLat(),(D=(k=c.current.props).onDragStart)===null||D===void 0||D.call(k,M)}),l.on("drag",S=>{var k,D;const M=S;M.lngLat=p.getLngLat(),(D=(k=c.current.props).onDrag)===null||D===void 0||D.call(k,M)}),l.on("dragend",S=>{var k,D;const M=S;M.lngLat=p.getLngLat(),(D=(k=c.current.props).onDragEnd)===null||D===void 0||D.call(k,M)}),l},[]);return ye.useEffect(()=>(p.addTo(r.getMap()),()=>{p.remove()}),[]),ye.useEffect(()=>{Ba(p.getElement(),e.style)},[e.style]),(p.getLngLat().lng!==e.longitude||p.getLngLat().lat!==e.latitude)&&p.setLngLat([e.longitude,e.latitude]),e.offset&&!lk(p.getOffset(),e.offset)&&p.setOffset(e.offset),p.isDraggable()!==e.draggable&&p.setDraggable(e.draggable),p.getRotation()!==e.rotation&&p.setRotation(e.rotation),p.getRotationAlignment()!==e.rotationAlignment&&p.setRotationAlignment(e.rotationAlignment),p.getPitchAlignment()!==e.pitchAlignment&&p.setPitchAlignment(e.pitchAlignment),p.getPopup()!==e.popup&&p.setPopup(e.popup),Io.createPortal(e.children,p.getElement())}Qw.defaultProps=xk;ye.memo(Qw);function qv(e){return new Set(e?e.trim().split(/\s+/):[])}function wk(e){const{map:r,mapLib:s}=ye.useContext(Up),c=ye.useMemo(()=>document.createElement("div"),[]),p=ye.useRef({props:e});p.current.props=e;const g=ye.useMemo(()=>{const x={...e},l=new s.Popup(x).setLngLat([e.longitude,e.latitude]);return l.once("open",S=>{var k,D;(D=(k=p.current.props).onOpen)===null||D===void 0||D.call(k,S)}),l},[]);if(ye.useEffect(()=>{const x=l=>{var S,k;(k=(S=p.current.props).onClose)===null||k===void 0||k.call(S,l)};return g.on("close",x),g.setDOMContent(c).addTo(r.getMap()),()=>{g.off("close",x),g.isOpen()&&g.remove()}},[]),ye.useEffect(()=>{Ba(g.getElement(),e.style)},[e.style]),g.isOpen()&&((g.getLngLat().lng!==e.longitude||g.getLngLat().lat!==e.latitude)&&g.setLngLat([e.longitude,e.latitude]),e.offset&&!As(g.options.offset,e.offset)&&g.setOffset(e.offset),(g.options.anchor!==e.anchor||g.options.maxWidth!==e.maxWidth)&&(g.options.anchor=e.anchor,g.setMaxWidth(e.maxWidth)),g.options.className!==e.className)){const x=qv(g.options.className),l=qv(e.className);for(const S of x)l.has(S)||g.removeClassName(S);for(const S of l)x.has(S)||g.addClassName(S);g.options.className=e.className}return Io.createPortal(e.children,c)}ye.memo(wk);function Kc(e,r,s,c){const p=ye.useContext(Up),g=ye.useMemo(()=>e(p),[]);return ye.useEffect(()=>{const x=c||s||r,l=typeof r=="function"&&typeof s=="function"?r:null,S=typeof s=="function"?s:typeof r=="function"?r:null,{map:k}=p;return k.hasControl(g)||(k.addControl(g,x==null?void 0:x.position),l&&l(p)),()=>{S&&S(p),k.hasControl(g)&&k.removeControl(g)}},[]),g}function bk(e){const r=Kc(({mapLib:s})=>new s.AttributionControl(e),{position:e.position});return ye.useEffect(()=>{Ba(r._container,e.style)},[e.style]),null}ye.memo(bk);function Sk(e){const r=Kc(({mapLib:s})=>new s.FullscreenControl({container:e.containerId&&document.getElementById(e.containerId)}),{position:e.position});return ye.useEffect(()=>{Ba(r._controlContainer,e.style)},[e.style]),null}ye.memo(Sk);const eb=ye.forwardRef((e,r)=>{const s=ye.useRef({props:e}),c=Kc(({mapLib:p})=>{const g=new p.GeolocateControl(e),x=g._setupUI;return g._setupUI=l=>{g._container.hasChildNodes()||x(l)},g.on("geolocate",l=>{var S,k;(k=(S=s.current.props).onGeolocate)===null||k===void 0||k.call(S,l)}),g.on("error",l=>{var S,k;(k=(S=s.current.props).onError)===null||k===void 0||k.call(S,l)}),g.on("outofmaxbounds",l=>{var S,k;(k=(S=s.current.props).onOutOfMaxBounds)===null||k===void 0||k.call(S,l)}),g.on("trackuserlocationstart",l=>{var S,k;(k=(S=s.current.props).onTrackUserLocationStart)===null||k===void 0||k.call(S,l)}),g.on("trackuserlocationend",l=>{var S,k;(k=(S=s.current.props).onTrackUserLocationEnd)===null||k===void 0||k.call(S,l)}),g},{position:e.position});return s.current.props=e,ye.useImperativeHandle(r,()=>({trigger:()=>c.trigger()}),[]),ye.useEffect(()=>{Ba(c._container,e.style)},[e.style]),null});eb.displayName="GeolocateControl";ye.memo(eb);function Ek(e){const r=Kc(({mapLib:s})=>new s.NavigationControl(e),{position:e.position});return ye.useEffect(()=>{Ba(r._container,e.style)},[e.style]),null}const Tk=ye.memo(Ek),kk={unit:"metric",maxWidth:100};function tb(e){const r=Kc(({mapLib:s})=>new s.ScaleControl(e),{position:e.position});return(r.options.unit!==e.unit||r.options.maxWidth!==e.maxWidth)&&(r.options.maxWidth=e.maxWidth,r.setUnit(e.unit)),ye.useEffect(()=>{Ba(r._container,e.style)},[e.style]),null}tb.defaultProps=kk;ye.memo(tb);function Ck(e){return ye.useMemo(()=>({version:8,name:"MapLibre",metadata:{"maptiler:copyright":"This style was generated on MapTiler Cloud. Usage is governed by the license terms in https://github.com/maplibre/demotiles/blob/gh-pages/LICENSE"},sources:{maplibre:{url:"https://demotiles.maplibre.org/tiles/tiles.json",type:"vector"},capitals:{type:"geojson",data:"capitals_filtered.geojson",attribution:'City data © OpenStreetMap'},crimea:{type:"geojson",data:{type:"Feature",geometry:{type:"Polygon",coordinates:[[[34.00905273547181,46.55925987559425],[33.64325260204026,46.34533545368038],[33.628682598560204,46.12569762665683],[33.64292861730951,46.10476396128129],[33.648473474905984,46.09033047763651],[33.63876482059936,46.077976784785335],[33.62782672238245,46.06747935719011],[33.62911357645072,46.05708111413949],[33.642686868727424,46.02192963417187],[33.6429723910654,46.01521185644708],[33.636224138774026,46.006705833212465],[33.63052626465907,45.99692992186792],[33.63193836679693,45.988472992911284],[33.64276684834442,45.984575360297384],[33.646928693041986,45.97981936210982],[33.638745893564305,45.96829769147004],[33.61958133326394,45.951176418494185],[33.63181380398527,45.9445404758078],[33.638921676216,45.94737012930554],[33.64561542516918,45.95403251372139],[33.65666403976448,45.95687114427736],[33.6825817382811,45.95878100879199],[33.738791807037614,45.94836945227263],[33.758180142697,45.94072970008301],[33.77735917288169,45.92923970233858],[33.75927796793485,45.92241179584471],[33.72529865009221,45.91587363154565],[33.70875012326826,45.91008760988058],[33.69378857293381,45.91480850795665],[33.69092650243843,45.89657370898402],[33.693592356906805,45.87271465766318],[33.69226765972388,45.86041392418218],[33.6704813511748,45.8584273836251],[33.65936345808916,45.85944682601249],[33.653870582376726,45.86425922279372],[33.65107345584843,45.87089907254003],[33.63067378180233,45.88040685247182],[33.61945300059696,45.88147266102649],[33.60987421595539,45.88048951126686],[33.59906957603934,45.877610457390375],[33.57828877687868,45.86810261756233],[33.55357394560386,45.84700625141778],[33.530220674480375,45.84221983655459],[33.5192297395441,45.84121682367507],[33.50832088442496,45.84313067048083],[33.48901101848409,45.85268298292175],[33.482152996405716,45.854578171799005],[33.46719955896293,45.849912739405056],[33.42447496599681,45.83075886348303],[33.40940172404095,45.82691953557702],[33.37918350072067,45.802867525073566],[33.37362145339398,45.79619281922518],[33.33805543634864,45.78577808972071],[33.26498872665803,45.75410774187094],[33.22887541283427,45.75131270772724],[33.19548267281132,45.7644887297206],[33.1789202379222,45.78010311364778],[33.1688456078636,45.78470227904205],[33.161012432811674,45.77921593899549],[33.15951585299757,45.76864464913777],[33.165962301438725,45.762685940125465],[33.1750888126426,45.759218220695715],[33.181464829753,45.75490447884948],[33.17613930782352,45.7437961960276],[33.16369168844906,45.735912015025065],[32.93692665480876,45.662114646778264],[32.86839112407645,45.63044340698664],[32.83803944575723,45.60834075026611],[32.82702772424804,45.59576101516498],[32.82433467080986,45.58705137380335],[32.82563941622885,45.579605763895614],[32.82993674258438,45.56978311819469],[32.82851940940563,45.56227808675749],[32.813310142795274,45.55930933158257],[32.80213583657516,45.560145780074464],[32.78258622159436,45.565158335073846],[32.77333922465823,45.56689313356526],[32.758306734735356,45.565030173463356],[32.750177256846115,45.55943726334968],[32.74340732630185,45.55261895849793],[32.73524549539499,45.54598788110354],[32.72031700779701,45.53735927760957],[32.70536040418847,45.53169142131733],[32.68589438933773,45.52663379187257],[32.66370583186284,45.52563107058867],[32.64312077736798,45.52188979044979],[32.525284074162556,45.45838108691365],[32.49490411219156,45.43524910229854],[32.48107654411925,45.408986638827514],[32.48514589713025,45.39458067125969],[32.51256939517424,45.34060655033625],[32.535915460470335,45.33777248012882],[32.57027153843481,45.32510892683359],[32.590830644991826,45.32038723212662],[32.66380378113439,45.320421746458976],[32.67760722618917,45.32609231279554],[32.71316246802607,45.353283572618125],[32.72817188836078,45.36074681043402],[32.750518060251466,45.36371725645313],[32.89973931692998,45.35412322462227],[32.941197846443885,45.34245505845169],[32.97701667405008,45.32596743563991],[33.04296090827762,45.2853982930032],[33.05274355585479,45.28154273654923],[33.06850284417635,45.27703461892352],[33.07825272648239,45.272210805127315],[33.089426322403455,45.25656353201492],[33.09897492343546,45.247820101667884],[33.12384611720435,45.238235755071685],[33.15767197859745,45.20755227709648],[33.172959979330074,45.19681657531794],[33.21837666514142,45.187878368659824],[33.24017433636709,45.180191106261134],[33.248571989896675,45.16588271012458],[33.259649216030766,45.155918961282026],[33.28309785485047,45.16064860772312],[33.31767999550894,45.17535522412791],[33.35458473323109,45.18598673360148],[33.39725661527919,45.18973663076909],[33.41344561756824,45.18490731877088],[33.468468576977216,45.149132412229676],[33.537128652906205,45.11719769268973],[33.56161328289443,45.094099022711475],[33.57837628774928,45.053145935448015],[33.58247744978442,45.027377243150454],[33.5851414316958,45.01816461606674],[33.6031021265521,44.993103583251695],[33.605922209331794,44.986905272229734],[33.60843524291815,44.97039962759274],[33.61943161357851,44.93184946652454],[33.619484500808824,44.90819321920554],[33.61549738593425,44.88894092276257],[33.608561183117274,44.871288478948514],[33.59889474705494,44.859790298912856],[33.55904244709464,44.850057575124595],[33.54667558363471,44.83724531175508],[33.53701832136994,44.81871953508235],[33.5303157846202,44.798338017069625],[33.5249116915937,44.78918633101301],[33.51669091675143,44.784809980590666],[33.524785531609865,44.77183212449111],[33.5302902535075,44.75724515985675],[33.53710734694323,44.73034290771247],[33.54650992495621,44.70989226909535],[33.5481286806762,44.699106546699085],[33.543995566510915,44.68230506537358],[33.53580273994743,44.6726082589706],[33.52337411931097,44.661863083605255],[33.515320778874354,44.6491266698327],[33.516377841582795,44.63464990118433],[33.52466971637648,44.62863961572572],[33.557474298027785,44.62473000923737],[33.5710648827386,44.620853511273225],[33.55105839203679,44.61506440493406],[33.499905706797676,44.61452599304897],[33.48451102966331,44.60992438254493],[33.47658499621011,44.60714391514574],[33.46705078205747,44.60616254193252],[33.44476599234898,44.607062134677875],[33.4353466482458,44.60509936890821],[33.413591053005575,44.593500212748125],[33.40543527945235,44.59055535193136],[33.37510958624222,44.58564691897425],[33.37074452434078,44.58851022190515],[33.372237834990756,44.576810695127364],[33.37913003799301,44.56412673079859],[33.48759131590526,44.51024086451031],[33.50011215135888,44.50041002882833],[33.517917009115365,44.49074142372788],[33.53836387802215,44.49164280212756],[33.56041892763031,44.4966411022441],[33.57822378538677,44.497542389459795],[33.59062975079095,44.48975808594983],[33.619577003408466,44.46229988129974],[33.62635433636015,44.45336293328907],[33.63175322871038,44.434828756313124],[33.645537634715026,44.42498521035591],[33.721007257593925,44.39946630464436],[33.74168386660085,44.39560878121904],[33.80727466517129,44.39454176175843],[33.81841706002561,44.39552670349164],[33.83909366903248,44.40143600575672],[33.85149963444792,44.40143600575945],[33.91467816197718,44.38387049706651],[33.938111652185,44.38083293528811],[33.957065210440874,44.38272116790142],[34.06614966692763,44.42019923628979],[34.088893936836286,44.42200415824283],[34.10279321289039,44.42487551014821],[34.135933345669,44.44163597968952],[34.14696087047267,44.44959070749778],[34.16058918507403,44.466287285335795],[34.170123399227776,44.48186111741296],[34.182759104731986,44.49267838558103],[34.22923417224524,44.49949719774551],[34.24301857824986,44.50744404277697],[34.263903954150294,44.53186886058606],[34.26631622520165,44.53555362837611],[34.26631622520165,44.54153064468656],[34.27033667695244,44.545378535987936],[34.2757355693048,44.54644280144541],[34.285384653508004,44.54562413743594],[34.299973149863405,44.54554227040174],[34.32260254971496,44.543577427039224],[34.3308731933177,44.54546040325087],[34.340292537420794,44.55798473830754],[34.38042135640006,44.631830317636684],[34.41495238900856,44.673669777529994],[34.424193090575585,44.68239452736094],[34.42959198292681,44.68884644523774],[34.469399167794535,44.730194532749294],[34.47376422969597,44.73011292571252],[34.47376422969597,44.72635887754967],[34.475142670296464,44.723502373339585],[34.499724861011515,44.74292382044041],[34.532800295801195,44.752620844929055],[34.61217550038418,44.76534519537847],[34.65065696715081,44.777088262503725],[34.72084256772871,44.811080759265764],[34.756796893391225,44.82094054159748],[34.82646979041766,44.81208604604609],[34.84289620758207,44.816893835303176],[34.856910353686715,44.82373813182468],[34.889648317948144,44.817871641692506],[34.90733830566026,44.820886440346584],[34.922960632465504,44.83050015059965],[34.92950822531711,44.83652826953224],[34.94179932067178,44.84019370922482],[34.95282684547897,44.841415470643284],[34.98567967978991,44.840275160795755],[35.0053224583441,44.83538786296728],[35.017958163849414,44.82219008824552],[35.02703289780189,44.80890779582285],[35.037933245998005,44.79869792240089],[35.08073333784134,44.793525442788905],[35.1080207326404,44.824553365795765],[35.130368105574235,44.86879838545747],[35.15485200090768,44.90071251697748],[35.17111229780758,44.90746386008772],[35.21522068940149,44.91421441031795],[35.233163085981715,44.925728224907715],[35.25636688416236,44.95896657181197],[35.27300098099195,44.96690119386028],[35.29748487632534,44.95605693543271],[35.30496087491386,44.96121482614441],[35.315240372954605,44.965711070514175],[35.31935217217088,44.96941359539801],[35.36757236298112,44.94362319076086],[35.36103086422793,44.97364475976596],[35.362152264014156,44.98593980935419],[35.374674561627444,44.997835734117416],[35.389439658813274,45.00180049366759],[35.42270785247763,45.00087540764923],[35.43504325012745,45.00470780964241],[35.43504325012745,45.011446929213974],[35.40631957913584,45.02015821022701],[35.40089948016896,45.025046135473445],[35.39790908073891,45.03482073400548],[35.40052568024015,45.042216617888045],[35.40631957913584,45.051328088783805],[35.40744097892215,45.06294640963205],[35.41734667704213,45.0708666385693],[35.469304867139925,45.10068964922732],[35.5070260597534,45.113341616151644],[35.54758335202416,45.12019982412133],[35.59019654390909,45.11993606213795],[35.63411803553862,45.11439677872579],[35.70669729572677,45.09480210570922],[35.771782422456766,45.06572995732262],[35.78430472007,45.057941041321754],[35.81250040352472,45.031852200991295],[35.81941570220667,45.021152336906454],[35.82763930064016,44.99895365027004],[35.848198296721705,44.99208088455586],[35.916977483614176,45.00172895661731],[35.99360646900681,44.997896355361604],[36.00893226608571,45.00926125333629],[36.02539976723364,45.03288661039673],[36.047827762958946,45.048074065419456],[36.078666257082034,45.03883000769565],[36.079137312377895,45.046610970582435],[36.135020401727616,45.02125162210126],[36.2241716847341,45.00751061631556],[36.24398308095806,45.011474706353084],[36.24828178013877,45.01649549321965],[36.25332807917695,45.03247980324494],[36.25743987839326,45.03842324279259],[36.267158676549116,45.043573724415154],[36.2783726744118,45.04555455542638],[36.36740852558336,45.04833265291825],[36.44029951169139,45.06787222615526],[36.45375630913995,45.07631970334319],[36.455251508854985,45.09202341204062],[36.44142091149291,45.10709638287736],[36.41432041665814,45.12872568311289],[36.40852651776157,45.149160473330085],[36.409997342308856,45.171615955386955],[36.418312796420764,45.23001671705953],[36.42672329481775,45.25186253492981],[36.43756477765089,45.27227491599612],[36.4497132753354,45.28542626329343],[36.45905827355429,45.28753019598713],[36.4814862692796,45.28845064200263],[36.4909554290368,45.29213135137758],[36.49637552800283,45.300940007322055],[36.49394582846682,45.305015191082816],[36.48871262946426,45.30935296803605],[36.48460083024801,45.315924724862185],[36.489647129296515,45.336413860372005],[36.502169426909745,45.34731734941451],[36.52104632331191,45.35033842661815],[36.544281237819945,45.34731734942025],[36.57455903204905,45.33601971904315],[36.585399229982954,45.333917585593355],[36.59810088537549,45.334837278577254],[36.630808379142394,45.34048649352954],[36.637536777859964,45.3511265071989],[36.63099527910589,45.3741073632589],[36.61359545390113,45.40895280985421],[36.59845655678569,45.421547717459106],[36.58331765967199,45.42731944465129],[36.566309762912795,45.42548305000767],[36.54836736633254,45.41210180010589],[36.53285466928139,45.4090840212946],[36.51565987255873,45.41957994832251],[36.49117597722616,45.44279525429408],[36.47043008117939,45.4458112314303],[36.411182792482634,45.43610707766504],[36.391371396258705,45.43991025572652],[36.35959840231365,45.45407156049933],[36.33960010612526,45.45695583486963],[36.33025510790637,45.454464879327446],[36.32053630976225,45.44856480887407],[36.31156511147125,45.4438443081136],[36.29885591389362,45.442795254299995],[36.3072664122906,45.46115087970253],[36.30016421364425,45.47320989503609],[36.283717016779036,45.476355300848866],[36.267082919949445,45.46704963343626],[36.25213092279836,45.46115087970253],[36.13681364478941,45.46219959214511],[36.11700224855986,45.45721803432335],[36.097003952371466,45.441483909606006],[36.06952965760803,45.43046741078453],[36.0655449627526,45.42553028973455],[36.05134056545904,45.39535242162091],[36.022557970944945,45.368441166003805],[35.986486277818386,45.362926059418186],[35.94723728529826,45.372380198658874],[35.87220216002379,45.404075760536614],[35.85388596351393,45.413916621802144],[35.84715756479628,45.426379251448395],[35.8524047739447,45.44386497541683],[35.85950697259193,45.45933624762881],[35.857824872912545,45.469953901705],[35.83278027768503,45.47087138287168],[35.8167068807486,45.46392436820739],[35.80362388324218,45.44963442058864],[35.79469305616038,45.42980210462429],[35.791889556694684,45.41209230278156],[35.772265060435046,45.39214572935421],[35.767405661361295,45.38873311015669],[35.75189296431793,45.386632934388984],[35.7481549650407,45.379938103368545],[35.746846665290036,45.369960021421576],[35.74423006578874,45.36076812520648],[35.71619507113218,45.34040932557082],[35.69451467527287,45.32989869277279],[35.51720627467216,45.29506847418358],[35.48038698168983,45.2979608697527],[35.33194061536096,45.371562726652314],[35.04491375777232,45.669545248704424],[35.00230056589345,45.7290693869553],[34.70631294999043,46.024929846739866],[34.35868883309806,46.106725558140795],[34.00905273547181,46.55925987559425]]]}}}},glyphs:"memfont://{fontstack}/{range}.pbf",layers:[{id:"background",type:"background",paint:{"background-color":"#d8f2ff"}},{id:"coastline",type:"line",source:"maplibre","source-layer":"countries",layout:{"line-cap":"round","line-join":"round"},paint:{"line-blur":.5,"line-color":"#198ec8","line-width":["interpolate",["linear"],["zoom"],0,2,6,6,14,9,22,18]}},{id:"countries-fill",type:"fill",source:"maplibre","source-layer":"countries",paint:{"fill-color":["match",["get","ADM0_A3"],["ARM","ATG","AUS","BTN","CAN","COG","CZE","GHA","GIN","HTI","ISL","JOR","KHM","KOR","LVA","MLT","MNE","MOZ","PER","SAH","SGP","SLV","SOM","TJK","TUV","UKR","WSM"],"#d6c7ff",["AZE","BGD","CHL","CMR","CSI","DEU","DJI","GUY","HUN","IOA","JAM","LBN","LBY","LSO","MDG","MKD","MNG","MRT","NIU","NZL","PCN","PYF","SAU","SHN","STP","TTO","UGA","UZB","ZMB"],"#ebca8a",["AGO","ASM","ATF","BDI","BFA","BGR","BLZ","BRA","CHN","CRI","ESP","HKG","HRV","IDN","IRN","ISR","KNA","LBR","LCA","MAC","MUS","NOR","PLW","POL","PRI","SDN","TUN","UMI","USA","USG","VIR","VUT"],"#c1e599",["ARE","ARG","BHS","CIV","CLP","DMA","ETH","GAB","GRD","HMD","IND","IOT","IRL","IRQ","ITA","KOS","LUX","MEX","NAM","NER","PHL","PRT","RUS","SEN","SUR","TZA","VAT"],"#e7e58f",["AUT","BEL","BHR","BMU","BRB","CYN","DZA","EST","FLK","GMB","GUM","HND","JEY","KGZ","LIE","MAF","MDA","NGA","NRU","SLB","SOL","SRB","SWZ","THA","TUR","VEN","VGB"],"#98dda1",["AIA","BIH","BLM","BRN","CAF","CHE","COM","CPV","CUB","ECU","ESB","FSM","GAZ","GBR","GEO","KEN","LTU","MAR","MCO","MDV","NFK","NPL","PNG","PRY","QAT","SLE","SPM","SYC","TCA","TKM","TLS","VNM","WEB","WSB","YEM","ZWE"],"#83d5f4",["ABW","ALB","AND","ATC","BOL","COD","CUW","CYM","CYP","EGY","FJI","GGY","IMN","KAB","KAZ","KWT","LAO","MLI","MNP","MSR","MYS","NIC","NLD","PAK","PAN","PRK","ROU","SGS","SVN","SWE","TGO","TWN","VCT","ZAF"],"#b1bbf9",["ATA","GRL"],"#ffffff","#eab38f"]}},{id:"countries-boundary",type:"line",source:"maplibre","source-layer":"countries",layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"rgba(255, 255, 255, 1)","line-width":["interpolate",["linear"],["zoom"],1,1,6,2,14,6,22,12],"line-opacity":["interpolate",["linear"],["zoom"],3,.5,6,1]}},{id:"capitals-label",type:"symbol",source:"capitals",layout:{"text-font":[e.font],"text-size":e.fontSize,"text-field":e.customText||["to-string",["get",e.langCode]]},paint:{"text-color":"rgba(8, 37, 77, 1)","text-halo-blur":["interpolate",["linear"],["zoom"],2,.2,6,0],"text-halo-color":"rgba(255, 255, 255, 1)","text-halo-width":["interpolate",["linear"],["zoom"],2,1,6,1.6]}},{id:"crimea-fill",type:"fill",source:"crimea",paint:{"fill-color":"#d6c7ff"}}]}),[e])}function Ik({mapConfig:e}){const r=Ck(e);return Mt.jsx(Ly,{mapLib:vg,RTLTextPlugin:"https://unpkg.com/@mapbox/mapbox-gl-rtl-text@0.2.3/mapbox-gl-rtl-text.min.js",mapStyle:r,children:Mt.jsx(Tk,{})})}const Ak="_FullPage_14qpf_1",zk="_SidePanel_14qpf_5",Pk="_MapPreview_14qpf_10",Mk="_SectionWrapper_14qpf_45",fl={FullPage:Ak,SidePanel:zk,MapPreview:Pk,SectionWrapper:Mk},Tm=new Worker("worker.js");function Dk(){const[e,r]=ye.useReducer(vE,_E),{status:s,stacks:c,config:p}=e,g=ye.useRef(c);g.current=c,ye.useEffect(()=>(Tm.onmessage=function(k){r({type:"updateConversionStatus",data:k.data})},vg.addProtocol("memfont",(k,D)=>{var F,W;const M=new RegExp(/memfont:\/\/(.+)\/(\d+)-(\d+)\.pbf/),A=k.url.match(M);if(A){const[O,Y,R,L]=A,G=`${R}-${L}.pbf`;if(Y===Fc)fetch(`https://demotiles.maplibre.org/font/${Y}/${G}`).then(te=>te.arrayBuffer()).then(te=>D(null,new Uint8Array(te),null,null));else{const te=(W=(F=g.current.find(ne=>ne.id===Y))==null?void 0:F.data.glyphs)==null?void 0:W.find(ne=>ne.name===G);setTimeout(()=>{if(!te)throw Error(`Can't find range "${k.url}"`);D(null,new Uint8Array(te.buffer),null,null)},0)}}return{cancel:()=>{}}}),()=>{Tm.onmessage=null,vg.removeProtocol("memfont")}),[]);const x=ye.useMemo(()=>({exampleLoad:async k=>{const D=await gE(k);r({type:"addFontStacks",stacks:[D]})},fontFilesUpload:k=>{if(k.length){const D=k.sort((M,A)=>M.name.localeCompare(A.name)).map(Fw);r({type:"addFontStacks",stacks:D})}},fontStacksChange:(k,D)=>{r({type:"setFontStacks",stacks:k,modifiedStackIds:D})},mapConfigChange:k=>{r({type:"updateMapConfig",changes:k})}}),[]);async function l(){const k=c.filter(D=>!Cl(D));r({type:"startConversion",toConvert:k});for(const D of k){const M=Ll([D]),A=await Promise.all(M.map(F=>F.data.file.arrayBuffer()));Tm.postMessage({stackId:D.id,buffers:A},A)}}async function S(){const k=new g5;for(const{data:{stackName:M,glyphs:A}}of c){const F=k.folder(M);for(const{name:W,buffer:O}of A)F.file(W,O)}const D=await k.generateAsync({type:"blob"});y5.saveAs(D,`font-maker-${new Date().toISOString()}.zip`)}return Mt.jsxs("main",{className:fl.FullPage,children:[Mt.jsxs("aside",{className:fl.SidePanel,children:[Mt.jsxs("header",{children:[Mt.jsx("h1",{children:Mt.jsx("a",{href:"/font-maker",target:"_blank",children:"Font Maker"})}),Mt.jsx("a",{href:"https://github.com/maplibre/font-maker",target:"_blank",children:Mt.jsx(xE,{})})]}),Mt.jsxs("section",{className:fl.SectionWrapper,children:[Mt.jsx("h2",{children:"Load Examples"}),Mt.jsx(SE,{status:s,onExampleLoad:x.exampleLoad})]}),Mt.jsxs("section",{className:fl.SectionWrapper,children:[Mt.jsx("h2",{children:"Convert .otf or .ttf files"}),Mt.jsx(YT,{status:s,stacks:c,onFilesUpload:x.fontFilesUpload,onStacksChange:x.fontStacksChange,onConversionStart:l,onDownloadZip:S})]}),Mt.jsxs("section",{className:fl.SectionWrapper,children:[Mt.jsx("h2",{children:"Map settings"}),Mt.jsx(tk,{stacks:c,mapConfig:p,onMapConfigChange:x.mapConfigChange})]})]}),Mt.jsx("div",{className:fl.MapPreview,children:Mt.jsx(Ik,{mapConfig:p})})]})}km.createRoot(document.getElementById("root")).render(Mt.jsx(Xn.StrictMode,{children:Mt.jsx(Dk,{})})); diff --git a/assets/index-4ab0b3a4.css b/assets/index-4ab0b3a4.css new file mode 100644 index 0000000..850f101 --- /dev/null +++ b/assets/index-4ab0b3a4.css @@ -0,0 +1 @@ +._ExampleItem_1b4yh_1{font-size:var(--font-small);border:1px solid var(--border-color);border-bottom-width:0}._ExampleItem_1b4yh_1:first-child{border-top-right-radius:var(--border-radius);border-top-left-radius:var(--border-radius)}._ExampleItem_1b4yh_1:last-child{border-bottom-right-radius:var(--border-radius);border-bottom-left-radius:var(--border-radius);border-bottom-width:1px}._ExampleItem_1b4yh_1 button{border:none;border-radius:inherit;background-color:transparent;color:var(--color);font-size:var(--font-small);font-family:inherit;padding:calc(var(--spacing) * 2);width:100%;text-align:start;transition:color var(--transition)}._ExampleItem_1b4yh_1 button:is(:hover,:active,:focus){--color: var(--primary-hover)}._ExampleItem_1b4yh_1 button:is([disabled]){--color: var(--disabled-color)}._ExampleItem_1b4yh_1 button:not([disabled]){cursor:pointer}._Input_yn5x9_1{padding:calc(var(--spacing) * 1) calc(var(--spacing) * 2);border:1px solid var(--border-color);border-radius:var(--border-radius);background-color:var(--background-color);color:var(--color);font-size:var(--font-normal);font-family:inherit;transition:background-color var(--transition),border-color var(--transition),color var(--transition),opacity var(--transition)}._Input_yn5x9_1:is([disabled]){--background-color: var(--disabled-bacground-color);--border-color: var(--disabled-border-color);--color: var(--disabled-color);pointer-events:none}._Input_yn5x9_1:is(input[type=search],select){outline:none;height:2em}._Input_yn5x9_1:is(input[type=search],select):is(:hover,:active,:focus){--border-color: var(--primary)}._Button_yn5x9_28{--background-color: var(--primary);--border-color: var(--primary);--color: var(--primary-inverse);font-size:var(--font-normal);cursor:pointer}._Button_yn5x9_28:is(:hover,:active,:focus){--background-color: var(--primary-hover);--border-color: var(--primary-hover);--color: var(--primary-inverse)}._Button_yn5x9_28._outline_yn5x9_42{--background-color: transparent}._Button_yn5x9_28._outline_yn5x9_42:not([disabled]){--border-color: var(--primary);--color: var(--primary)}._Button_yn5x9_28._outline_yn5x9_42:is(:hover,:active,:focus){--border-color: var(--primary-hover);--color: var(--primary-hover)}._FileInput_yn5x9_57{--background-color: var(--primary);--border-color: transparent;--color: var(--primary-inverse);cursor:pointer;font-size:0}._FileInput_yn5x9_57:is(:hover,:active,:focus-visible){--background-color: var(--primary-hover)}._FileInput_yn5x9_57::file-selector-button{border:none;padding:0;background-color:unset;color:inherit;cursor:inherit;font-size:var(--font-normal);width:100%}._Select_yn5x9_81{padding-right:calc(var(--spacing) * 4 + 1em);-webkit-appearance:none;-moz-appearance:none;appearance:none;text-overflow:ellipsis;background-image:url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="rgb(65, 84, 98)" %3E%3Cpath d="M6 9 12 15 18 9" vector-effect="non-scaling-stroke" stroke-linejoin="round" stroke-linecap="round"/%3E%3C/svg%3E');background-position:center right calc(var(--spacing) * 2);background-size:1em auto;background-repeat:no-repeat}._Range_yn5x9_92{--border: 1px solid var(--border-color);--track-height: calc(var(--spacing) * 1.5);--thumb-size: calc(var(--spacing) * 5);--thumb-transition: border-color var(--transition);font-size:var(--font-normal);-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;display:block;height:2em}._Range_yn5x9_92::-webkit-slider-runnable-track{-webkit-appearance:none;appearance:none;height:var(--track-height);border:var(--border);border-radius:var(--border-radius)}._Range_yn5x9_92::-moz-range-track{box-sizing:border-box;-moz-appearance:none;appearance:none;height:var(--track-height);border:var(--border);border-radius:var(--border-radius)}._Range_yn5x9_92::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:var(--thumb-size);height:var(--thumb-size);margin-top:calc(-1px - (var(--thumb-size) - var(--track-height)) / 2);border:var(--border);border-radius:50%;background:var(--background-color);cursor:pointer;-webkit-transition:var(--thumb-transition);transition:var(--thumb-transition)}._Range_yn5x9_92:is(:hover,:active,:focus)::-webkit-slider-thumb{--border: 1px solid var(--primary)}._Range_yn5x9_92::-moz-range-thumb{box-sizing:border-box;-moz-appearance:none;appearance:none;width:var(--thumb-size);height:var(--thumb-size);margin-top:calc(-1px - (var(--thumb-size) - var(--track-height)) / 2);border:var(--border);border-radius:50%;background:var(--background-color);cursor:pointer;-moz-transition:var(--thumb-transition);transition:var(--thumb-transition)}._Range_yn5x9_92:is(:hover,:active,:focus)::-moz-range-thumb{--border: 1px solid var(--primary)}._FileTreeItem_nzhk4_1{padding-left:var(--indent);margin-bottom:-1px;font-size:var(--font-small)}._FileTreeItem_nzhk4_1._dragOverlay_nzhk4_6{padding:calc(var(--spacing) * 1) 0 0 calc(var(--spacing) * 5);list-style:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}._FileTreeItem_nzhk4_1._dragOverlay_nzhk4_6 ._Draggable_nzhk4_12{--vertical-padding: calc(var(--spacing) * 1);padding-right:calc(var(--spacing) * 6);border-radius:var(--border-radius)}._FileTreeItem_nzhk4_1._newPositionOutline_nzhk4_19{opacity:.5}._FileTreeItem_nzhk4_1._disabledInteraction_nzhk4_23 ._Draggable_nzhk4_12{touch-action:none;cursor:inherit}._FileTreeItem_nzhk4_1._disabled_nzhk4_23{cursor:default}._FileTreeItem_nzhk4_1._overTrashBin_nzhk4_34 ._Draggable_nzhk4_12{--border-color: var(--danger)}._FileTreeItem_nzhk4_1._overTrashBin_nzhk4_34 ._deletionWarning_nzhk4_39{color:var(--danger);margin-right:var(--spacing)}._Draggable_nzhk4_12{--vertical-padding: calc(var(--spacing) * 2);--horizontal-padding: calc(var(--spacing) * 2);position:relative;padding:var(--vertical-padding) var(--horizontal-padding);border:1px solid var(--border-color);background-color:var(--background-color);touch-action:manipulation;cursor:grab;transform:translateZ(0)}._ProgressBar_nzhk4_61{position:absolute;bottom:0;left:0;width:100%;height:2px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background-color:var(--progress-bar-background-color)}._ProgressBar_nzhk4_61:not([value="256"]){animation:_opacity-animation_nzhk4_1 2s infinite ease 1.1s}._ProgressBar_nzhk4_61::-webkit-progress-bar{background:none}._ProgressBar_nzhk4_61[value]::-webkit-progress-value{background-color:var(--progress-bar-progress)}._ProgressBar_nzhk4_61[value="256"]::-webkit-progress-value{background-color:var(--progress-bar-completed)}._ProgressBar_nzhk4_61::-moz-progress-bar{background-color:var(--progress-bar-progress)}._ProgressBar_nzhk4_61[value="256"]::-moz-progress-bar{background-color:var(--progress-bar-completed)}@keyframes _opacity-animation_nzhk4_1{50%{opacity:.5}}._ChildrenCount_nzhk4_103{--size: calc(var(--font-small) * 2);position:absolute;width:var(--size);height:var(--size);top:calc(var(--size) / -2);right:calc(var(--size) / -2);display:flex;align-items:center;justify-content:center;border:1px solid var(--border-color);border-radius:50%;background-color:var(--background-color);color:var(--color);font-size:var(--font-small)}[data-tooltip]{position:relative}[data-tooltip]:before,[data-tooltip]:after{display:block;z-index:1;position:absolute;bottom:100%;left:50%;padding:calc(var(--spacing) * 1) calc(var(--spacing) * 2);transform:translate(-50%,calc(var(--spacing) * -1));border-radius:var(--border-radius);background:var(--tooltip-background-color);content:"";color:var(--tooltip-color);font-size:var(--font-small);white-space:pre;opacity:0;pointer-events:none}[data-tooltip]:after{padding:0;transform:translate(-50%);border-top:var(--spacing) solid;border-right:var(--spacing) solid transparent;border-left:var(--spacing) solid transparent;border-radius:0;background-color:transparent;content:"";color:var(--tooltip-background-color)}[data-tooltip]:hover:before,[data-tooltip]:hover:after{opacity:1;transition-property:opacity;transition-delay:var(--tooltip-delay)}[data-tooltip]:hover:before{content:attr(data-tooltip)}@media (hover: hover) and (pointer: fine){@keyframes tooltip-slide-top{0%{transform:translate(-50%,calc(var(--spacing) * 3));opacity:0}to{transform:translate(-50%,calc(var(--spacing) * -1));opacity:1}}@keyframes tooltip-caret-slide-top{0%{opacity:0}50%{transform:translate(-50%,calc(var(--spacing) * -1));opacity:0}to{transform:translate(-50%);opacity:1}}[data-tooltip]:hover:before,[data-tooltip]:hover:after{animation-duration:.2s;animation-name:tooltip-slide-top;animation-delay:var(--tooltip-delay)}[data-tooltip]:hover:after{animation-name:tooltip-caret-slide-top;animation-delay:var(--tooltip-delay)}}._FilesSection_177tf_1{position:relative}._FilesSection_177tf_1:before{--border-color: transparent;--background-color: transparent;position:absolute;z-index:-1;top:calc(-1 * var(--spacing));right:calc(-1 * var(--spacing));bottom:calc(-1 * var(--spacing));left:calc(-1 * var(--spacing));border:1px solid var(--border-color);border-radius:var(--border-radius);background-color:var(--background-color);content:"";transition:background-color var(--transition),border-color var(--transition)}._FilesSection_177tf_1._UploadFilesDropzoneActive_177tf_21 input{--background-color: var(--primary-hover)}._FilesSection_177tf_1._UploadFilesDropzoneActive_177tf_21:before{--border-color: var(--primary);--background-color: var(--dropzone-bacground-color)}._FilesSection_177tf_1 ._FilesSectionHeader_177tf_32{display:flex;justify-content:space-between;padding:calc(var(--spacing) * 2);margin-bottom:-1px;border:1px solid var(--border-color);border-top-right-radius:var(--border-radius);border-top-left-radius:var(--border-radius);background-color:var(--background-color)}._FilesSection_177tf_1 ._FilesSectionHeader_177tf_32 ._ClearButton_177tf_42{opacity:1}._FilesSection_177tf_1 ._FilesSectionHeader_177tf_32 ._ClearButton_177tf_42:is([data-hidden=true]){opacity:0}._FilesSection_177tf_1 ._FilesSectionHeader_177tf_32 ._ClearButton_177tf_42:is([data-remove-file=true]){--border-color: var(--danger);--color: var(--danger)}._FilesSection_177tf_1 ._FilesSectionFooter_177tf_56 ._importantButton_177tf_57{position:relative;width:100%;padding:calc(var(--spacing) * 3) calc(var(--spacing) * 4);border-top-right-radius:0;border-top-left-radius:0;font-size:var(--font-large);font-weight:600}._FilesSection_177tf_1 ._FilesSectionFooter_177tf_56 ._importantButton_177tf_57._loading_177tf_66:after{position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;border:1px solid var(--primary);border-radius:var(--border-radius);border-top-right-radius:0;border-top-left-radius:0;content:"";animation:_border-animation_177tf_1 4s infinite linear}@keyframes _border-animation_177tf_1{0%,to{-webkit-clip-path:inset(0 0 calc(100% - 1px) 0);clip-path:inset(0 0 calc(100% - 1px) 0)}25%{-webkit-clip-path:inset(0 0 0 calc(100% - 1px));clip-path:inset(0 0 0 calc(100% - 1px))}50%{-webkit-clip-path:inset(calc(100% - 1px) 0 0 0);clip-path:inset(calc(100% - 1px) 0 0 0)}75%{-webkit-clip-path:inset(0 calc(100% - 1px) 0 0);clip-path:inset(0 calc(100% - 1px) 0 0)}}._MapSettingSection_ojf16_1 label{display:block;font-size:var(--font-normal);margin-bottom:calc(var(--spacing) * 3)}._MapSettingSection_ojf16_1 label input{margin:calc(var(--spacing) * 1) 0 0;width:100%}._MapSettingSection_ojf16_1 label select{margin:calc(var(--spacing) * 1) 0 0;width:0;min-width:100%}._MapSettingSection_ojf16_1 ._fontSizeValue_ojf16_19{color:var(--muted-color)}.mapboxgl-map,.maplibregl-map{-webkit-tap-highlight-color:rgb(0 0 0/0);font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative}.mapboxgl-canvas,.maplibregl-canvas{left:0;position:absolute;top:0}.mapboxgl-map:-webkit-full-screen,.maplibregl-map:-webkit-full-screen{height:100%;width:100%}.mapboxgl-map:fullscreen,.maplibregl-map:fullscreen{height:100%;width:100%}.mapboxgl-canvas-container.mapboxgl-interactive,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass,.maplibregl-canvas-container.maplibregl-interactive,.maplibregl-ctrl-group button.maplibregl-ctrl-compass{cursor:grab;-moz-user-select:none;-webkit-user-select:none;user-select:none}.mapboxgl-canvas-container.mapboxgl-interactive.mapboxgl-track-pointer,.maplibregl-canvas-container.maplibregl-interactive.maplibregl-track-pointer{cursor:pointer}.mapboxgl-canvas-container.mapboxgl-interactive:active,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass:active,.maplibregl-canvas-container.maplibregl-interactive:active,.maplibregl-ctrl-group button.maplibregl-ctrl-compass:active{cursor:grabbing}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate .mapboxgl-canvas,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate .maplibregl-canvas{touch-action:pan-x pan-y}.mapboxgl-canvas-container.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-drag-pan .mapboxgl-canvas,.maplibregl-canvas-container.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:pinch-zoom}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan .mapboxgl-canvas,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:none}.mapboxgl-ctrl-bottom-left,.mapboxgl-ctrl-bottom-right,.mapboxgl-ctrl-top-left,.mapboxgl-ctrl-top-right,.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right,.maplibregl-ctrl-top-left,.maplibregl-ctrl-top-right{pointer-events:none;position:absolute;z-index:2}.mapboxgl-ctrl-top-left,.maplibregl-ctrl-top-left{left:0;top:0}.mapboxgl-ctrl-top-right,.maplibregl-ctrl-top-right{right:0;top:0}.mapboxgl-ctrl-bottom-left,.maplibregl-ctrl-bottom-left{bottom:0;left:0}.mapboxgl-ctrl-bottom-right,.maplibregl-ctrl-bottom-right{bottom:0;right:0}.mapboxgl-ctrl,.maplibregl-ctrl{clear:both;pointer-events:auto;transform:translate(0)}.mapboxgl-ctrl-top-left .mapboxgl-ctrl,.maplibregl-ctrl-top-left .maplibregl-ctrl{float:left;margin:10px 0 0 10px}.mapboxgl-ctrl-top-right .mapboxgl-ctrl,.maplibregl-ctrl-top-right .maplibregl-ctrl{float:right;margin:10px 10px 0 0}.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl,.maplibregl-ctrl-bottom-left .maplibregl-ctrl{float:left;margin:0 0 10px 10px}.mapboxgl-ctrl-bottom-right .mapboxgl-ctrl,.maplibregl-ctrl-bottom-right .maplibregl-ctrl{float:right;margin:0 10px 10px 0}.mapboxgl-ctrl-group,.maplibregl-ctrl-group{background:#fff;border-radius:4px}.mapboxgl-ctrl-group:not(:empty),.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px #0000001a}@media (-ms-high-contrast:active){.mapboxgl-ctrl-group:not(:empty),.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px ButtonText}}.mapboxgl-ctrl-group button,.maplibregl-ctrl-group button{background-color:transparent;border:0;box-sizing:border-box;cursor:pointer;display:block;height:29px;outline:none;padding:0;width:29px}.mapboxgl-ctrl-group button+button,.maplibregl-ctrl-group button+button{border-top:1px solid #ddd}.mapboxgl-ctrl button .mapboxgl-ctrl-icon,.maplibregl-ctrl button .maplibregl-ctrl-icon{background-position:50%;background-repeat:no-repeat;display:block;height:100%;width:100%}@media (-ms-high-contrast:active){.mapboxgl-ctrl-icon,.maplibregl-ctrl-icon{background-color:transparent}.mapboxgl-ctrl-group button+button,.maplibregl-ctrl-group button+button{border-top:1px solid ButtonText}}.mapboxgl-ctrl button::-moz-focus-inner,.maplibregl-ctrl button::-moz-focus-inner{border:0;padding:0}.mapboxgl-ctrl-attrib-button:focus,.mapboxgl-ctrl-group button:focus,.maplibregl-ctrl-attrib-button:focus,.maplibregl-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.mapboxgl-ctrl button:disabled,.maplibregl-ctrl button:disabled{cursor:not-allowed}.mapboxgl-ctrl button:disabled .mapboxgl-ctrl-icon,.maplibregl-ctrl button:disabled .maplibregl-ctrl-icon{opacity:.25}.mapboxgl-ctrl button:not(:disabled):hover,.maplibregl-ctrl button:not(:disabled):hover{background-color:#0000000d}.mapboxgl-ctrl-group button:focus:focus-visible,.maplibregl-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.mapboxgl-ctrl-group button:focus:not(:focus-visible),.maplibregl-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.mapboxgl-ctrl-group button:focus:first-child,.maplibregl-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}.mapboxgl-ctrl-group button:focus:last-child,.maplibregl-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}.mapboxgl-ctrl-group button:focus:only-child,.maplibregl-ctrl-group button:focus:only-child{border-radius:inherit}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E%3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='m10.5 14 4-8 4 8h-8z'/%3E%3Cpath d='m10.5 16 4 8 4-8h-8z' fill='%23ccc'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='m10.5 14 4-8 4 8h-8z'/%3E%3Cpath d='m10.5 16 4 8 4-8h-8z' fill='%23999'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m10.5 14 4-8 4 8h-8z'/%3E%3Cpath d='m10.5 16 4 8 4-8h-8z' fill='%23ccc'/%3E%3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-terrain .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-terrain .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22' fill='%23333'%3E%3Cpath d='m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-terrain-enabled .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-terrain-enabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22' fill='%2333b5e5'%3E%3Cpath d='m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23aaa'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath d='m14 5 1 1-9 9-1-1 9-9z' fill='red'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-waiting .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-waiting .maplibregl-ctrl-icon{animation:maplibregl-spin 2s linear infinite}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23999'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath d='m14 5 1 1-9 9-1-1 9-9z' fill='red'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon,.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23666'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath d='m14 5 1 1-9 9-1-1 9-9z' fill='red'/%3E%3C/svg%3E")}}@keyframes maplibregl-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}a.mapboxgl-ctrl-logo,a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.255 1.255 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.255 1.255 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5.11 5.11 0 0 1 .314-.787l.009-.016a4.623 4.623 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.548 4.548 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4.314.319.566.676.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.416 2.416 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.448 2.448 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675c.211.2.381.43.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.76 4.76 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.407 3.407 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.255 1.255 0 0 1 .689 1.004 4.73 4.73 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528 0 .343-.02.694-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.815 5.815 0 0 1-.548-2.512c0-.286.017-.567.053-.843a1.255 1.255 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.778 4.778 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.47 4.47 0 0 1-1.935-.424 1.252 1.252 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.402 2.402 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.703 4.703 0 0 1-1.782 1.884 4.767 4.767 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.47 4.47 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a4.983 4.983 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.255 1.255 0 0 1-1.115.676h-.098a1.255 1.255 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15c.329-.237.574-.499.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267c-.088-.22-.264-.438-.526-.658l-.032-.028a3.16 3.16 0 0 0-.668-.428l-.27-.12a3.293 3.293 0 0 0-1.235-.23c-.757 0-1.415.163-1.974.493a3.36 3.36 0 0 0-1.3 1.382c-.297.593-.444 1.284-.444 2.074 0 .8.17 1.503.51 2.107a3.795 3.795 0 0 0 1.382 1.381 3.883 3.883 0 0 0 1.893.477c.53 0 1.015-.11 1.455-.33zm-2.789-5.38c-.384.45-.575 1.038-.575 1.762 0 .735.186 1.332.559 1.794.384.45.933.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.17 2.17 0 0 0 .468-.29l.178-.161a2.163 2.163 0 0 0 .397-.561c.163-.333.244-.717.244-1.15v-.115c0-.472-.098-.894-.296-1.267l-.043-.077a2.211 2.211 0 0 0-.633-.709l-.13-.086-.047-.028a2.099 2.099 0 0 0-1.073-.285c-.702 0-1.244.231-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.958.958 0 0 0-.353-.389.851.851 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.626 2.626 0 0 0 .331.423c.213.22.464.402.755.548l.173.074c.433.17.93.255 1.49.255.68 0 1.295-.165 1.844-.493a3.447 3.447 0 0 0 1.316-1.4c.329-.603.493-1.299.493-2.089 0-1.273-.33-2.243-.988-2.913-.658-.68-1.52-1.02-2.584-1.02-.598 0-1.124.115-1.575.347a2.807 2.807 0 0 0-.415.262l-.199.166a3.35 3.35 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138c.137.193.297.36.48.5l.155.11.053.034c.34.197.713.297 1.119.297.714 0 1.262-.225 1.645-.675.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.29 0-.569.053-.835.16a2.366 2.366 0 0 0-.284.136 1.99 1.99 0 0 0-.363.254 2.237 2.237 0 0 0-.46.569l-.082.162a2.56 2.56 0 0 0-.213 1.072v.115c0 .471.098.894.296 1.267l.135.211zm.964-.818a1.11 1.11 0 0 0 .367.385.937.937 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a.995.995 0 0 0-.503.135l-.012.007a.859.859 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.43 1.43 0 0 0 .14.66zm15.7-6.222c.232-.23.346-.516.346-.856a1.053 1.053 0 0 0-.345-.79 1.175 1.175 0 0 0-.84-.329c-.34 0-.625.11-.855.33a1.053 1.053 0 0 0-.346.79c0 .34.115.625.346.855.23.23.516.346.856.346.34 0 .62-.115.839-.346zm4.337 9.314.033-1.332c.128.269.324.518.59.747l.098.081a3.727 3.727 0 0 0 .316.224l.223.122a3.21 3.21 0 0 0 1.44.322 3.785 3.785 0 0 0 1.875-.477 3.52 3.52 0 0 0 1.382-1.366c.352-.593.526-1.29.526-2.09 0-.79-.147-1.48-.444-2.073a3.235 3.235 0 0 0-1.283-1.399c-.549-.34-1.195-.51-1.942-.51a3.476 3.476 0 0 0-1.527.344l-.086.043-.165.09a3.412 3.412 0 0 0-.33.214c-.288.21-.507.446-.656.707a1.893 1.893 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.482 2.482 0 0 0 .566.7c.078.065.159.125.245.18l.144.08a2.105 2.105 0 0 0 .975.232c.713 0 1.262-.225 1.645-.675.384-.46.576-1.053.576-1.778 0-.734-.192-1.327-.576-1.777-.373-.46-.921-.692-1.645-.692a2.18 2.18 0 0 0-1.015.235c-.147.075-.285.17-.415.282l-.15.142a2.086 2.086 0 0 0-.42.594c-.149.32-.223.685-.223 1.1v.115c0 .47.097.89.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.868.868 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.13 1.13 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013c.23-.087.472-.134.724-.14l.069-.002c.329 0 .542.033.642.099l.247-1.794c-.13-.066-.37-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2.086 2.086 0 0 0-.411.148 2.18 2.18 0 0 0-.4.249 2.482 2.482 0 0 0-.485.499 2.659 2.659 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884c0-.364.053-.678.159-.943a1.49 1.49 0 0 1 .466-.636 2.52 2.52 0 0 1 .399-.253 2.19 2.19 0 0 1 .224-.099zm9.784 2.656.05-.922c0-1.162-.285-2.062-.856-2.698-.559-.647-1.42-.97-2.584-.97-.746 0-1.415.163-2.007.493a3.462 3.462 0 0 0-1.4 1.382c-.329.604-.493 1.306-.493 2.106 0 .714.143 1.371.428 1.975.285.593.73 1.07 1.332 1.432.604.351 1.355.526 2.255.526.649 0 1.204-.062 1.668-.185l.044-.012.135-.04c.409-.122.736-.263.984-.421l-.542-1.267c-.2.108-.415.199-.642.274l-.297.087c-.34.088-.773.131-1.3.131-.636 0-1.135-.147-1.497-.444a1.573 1.573 0 0 1-.192-.193c-.244-.294-.415-.705-.512-1.234l-.004-.021h5.43zm-5.427-1.256-.003.022h3.752v-.138c-.007-.485-.104-.857-.288-1.118a1.056 1.056 0 0 0-.156-.176c-.307-.285-.746-.428-1.316-.428-.657 0-1.155.202-1.494.604-.253.3-.417.712-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z' fill='%23000' fill-opacity='.4' fill-rule='evenodd'/%3E%3Cpath d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81c-.68 0-1.311-.16-1.893-.478a3.795 3.795 0 0 1-1.381-1.382c-.34-.604-.51-1.306-.51-2.106 0-.79.147-1.482.444-2.074a3.364 3.364 0 0 1 1.3-1.382c.559-.33 1.217-.494 1.974-.494a3.293 3.293 0 0 1 1.234.231 3.341 3.341 0 0 1 .97.575c.264.22.44.439.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332c-.186.395-.526.746-1.02 1.053a3.167 3.167 0 0 1-1.662.444zm.296-1.482c.626 0 1.152-.214 1.58-.642.428-.44.642-1.01.642-1.711v-.115c0-.472-.098-.894-.296-1.267a2.211 2.211 0 0 0-.807-.872 2.098 2.098 0 0 0-1.119-.313c-.702 0-1.245.231-1.629.692-.384.45-.575 1.037-.575 1.76 0 .736.186 1.333.559 1.795.384.45.933.675 1.645.675zm6.521-6.237h1.711v1.4c.604-1.065 1.547-1.597 2.83-1.597 1.064 0 1.926.34 2.584 1.02.659.67.988 1.641.988 2.914 0 .79-.164 1.487-.493 2.09a3.456 3.456 0 0 1-1.316 1.399 3.51 3.51 0 0 1-1.844.493c-.636 0-1.19-.11-1.662-.329a2.665 2.665 0 0 1-1.086-.97l.017 5.134h-1.728V9.242zm4.048 6.22c.714 0 1.262-.224 1.645-.674.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.395 0-.768.098-1.12.296-.34.187-.613.46-.822.823-.197.351-.296.763-.296 1.234v.115c0 .472.098.894.296 1.267.209.362.483.647.823.855.34.197.713.297 1.119.297z' fill='%23fff'/%3E%3Cpath d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.159 1.159 0 0 1-.856-.346 1.165 1.165 0 0 1-.346-.856 1.053 1.053 0 0 1 .346-.79c.23-.219.516-.329.856-.329.329 0 .609.11.839.33a1.053 1.053 0 0 1 .345.79 1.159 1.159 0 0 1-.345.855c-.22.23-.5.346-.84.346zm7.875 9.133a3.167 3.167 0 0 1-1.662-.444c-.482-.307-.817-.658-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283c.186-.438.548-.812 1.086-1.119a3.486 3.486 0 0 1 1.778-.477c.746 0 1.393.17 1.942.51a3.235 3.235 0 0 1 1.283 1.4c.297.592.444 1.282.444 2.072 0 .8-.175 1.498-.526 2.09a3.52 3.52 0 0 1-1.382 1.366 3.785 3.785 0 0 1-1.876.477zm-.296-1.481c.713 0 1.26-.225 1.645-.675.384-.46.577-1.053.577-1.778 0-.734-.193-1.327-.577-1.776-.373-.46-.921-.692-1.645-.692a2.115 2.115 0 0 0-1.58.659c-.428.428-.642.992-.642 1.694v.115c0 .473.098.895.296 1.267a2.385 2.385 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481c.176-.505.46-.91.856-1.217a2.14 2.14 0 0 1 1.349-.46c.351 0 .593.032.724.098l-.247 1.794c-.099-.066-.313-.099-.642-.099-.516 0-.988.164-1.416.494-.417.329-.626.855-.626 1.58v3.883h-1.777V9.242zm9.534 7.718c-.9 0-1.651-.175-2.255-.526-.603-.362-1.047-.84-1.332-1.432a4.567 4.567 0 0 1-.428-1.975c0-.8.164-1.502.493-2.106a3.462 3.462 0 0 1 1.4-1.382c.592-.33 1.262-.494 2.007-.494 1.163 0 2.024.324 2.584.97.57.637.856 1.537.856 2.7 0 .296-.017.603-.05.92h-5.43c.12.67.356 1.153.708 1.45.362.296.86.443 1.497.443.526 0 .96-.044 1.3-.131a4.123 4.123 0 0 0 .938-.362l.542 1.267c-.274.175-.647.329-1.119.46-.472.132-1.042.197-1.711.197zm1.596-4.558c.01-.68-.137-1.158-.444-1.432-.307-.285-.746-.428-1.316-.428-1.152 0-1.815.62-1.991 1.86h3.752z' fill='%23e1e3e9'/%3E%3Cg fill-rule='evenodd' stroke-width='1.036'%3E%3Cpath d='m8.166 16.146-.002.002a1.54 1.54 0 0 1-2.009 0l-.002-.002-.043-.034-.002-.002-.199-.162H4.377a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659H8.411l-.202.164zm-1.121-.905a.29.29 0 0 0 .113.023.286.286 0 0 0 .189-.07l.077-.063c.634-.508 4.672-3.743 4.672-7.575 0-2.55-2.215-4.625-4.938-4.625S2.221 5.006 2.221 7.556c0 3.225 2.86 6.027 4.144 7.137h.004l.04.038.484.4.077.063a.628.628 0 0 0 .074.047zm-2.52-.548a16.898 16.898 0 0 1-1.183-1.315C2.187 11.942.967 9.897.967 7.555c0-3.319 2.855-5.88 6.192-5.88 3.338 0 6.193 2.561 6.193 5.881 0 2.34-1.22 4.387-2.376 5.822a16.898 16.898 0 0 1-1.182 1.315h.15a1.912 1.912 0 0 1 1.914 1.914v1.84a1.912 1.912 0 0 1-1.914 1.914H4.377a1.912 1.912 0 0 1-1.914-1.914v-1.84a1.912 1.912 0 0 1 1.914-1.914zm3.82-6.935c0 .692-.55 1.222-1.187 1.222s-1.185-.529-1.185-1.222.548-1.222 1.185-1.222c.638 0 1.186.529 1.186 1.222zm-1.186 2.477c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477zm2.048 7.71H5.114v-.838h4.093z' fill='%23000' fill-opacity='.4'/%3E%3Cpath d='M2.222 7.555c0-2.55 2.214-4.625 4.937-4.625 2.723 0 4.938 2.075 4.938 4.625 0 3.832-4.038 7.068-4.672 7.575l-.077.063a.286.286 0 0 1-.189.07.286.286 0 0 1-.188-.07l-.077-.063c-.634-.507-4.672-3.743-4.672-7.575zm4.937 2.68c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477z' fill='%23e1e3e9'/%3E%3Cpath d='M4.377 15.948a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659zm4.83 1.16H5.114v.838h4.093z' fill='%23fff'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;cursor:pointer;display:block;height:23px;margin:0 0 -4px -4px;overflow:hidden;width:88px}a.mapboxgl-ctrl-logo.mapboxgl-compact,a.maplibregl-ctrl-logo.maplibregl-compact{width:14px}@media (-ms-high-contrast:active){a.mapboxgl-ctrl-logo,a.maplibregl-ctrl-logo{background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.255 1.255 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.255 1.255 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5.11 5.11 0 0 1 .314-.787l.009-.016a4.623 4.623 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.548 4.548 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4.314.319.566.676.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.416 2.416 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.448 2.448 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675c.211.2.381.43.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.76 4.76 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.407 3.407 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.255 1.255 0 0 1 .689 1.004 4.73 4.73 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528 0 .343-.02.694-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.815 5.815 0 0 1-.548-2.512c0-.286.017-.567.053-.843a1.255 1.255 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.778 4.778 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.47 4.47 0 0 1-1.935-.424 1.252 1.252 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.402 2.402 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.703 4.703 0 0 1-1.782 1.884 4.767 4.767 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.47 4.47 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a4.983 4.983 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.255 1.255 0 0 1-1.115.676h-.098a1.255 1.255 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15c.329-.237.574-.499.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267c-.088-.22-.264-.438-.526-.658l-.032-.028a3.16 3.16 0 0 0-.668-.428l-.27-.12a3.293 3.293 0 0 0-1.235-.23c-.757 0-1.415.163-1.974.493a3.36 3.36 0 0 0-1.3 1.382c-.297.593-.444 1.284-.444 2.074 0 .8.17 1.503.51 2.107a3.795 3.795 0 0 0 1.382 1.381 3.883 3.883 0 0 0 1.893.477c.53 0 1.015-.11 1.455-.33zm-2.789-5.38c-.384.45-.575 1.038-.575 1.762 0 .735.186 1.332.559 1.794.384.45.933.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.17 2.17 0 0 0 .468-.29l.178-.161a2.163 2.163 0 0 0 .397-.561c.163-.333.244-.717.244-1.15v-.115c0-.472-.098-.894-.296-1.267l-.043-.077a2.211 2.211 0 0 0-.633-.709l-.13-.086-.047-.028a2.099 2.099 0 0 0-1.073-.285c-.702 0-1.244.231-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.958.958 0 0 0-.353-.389.851.851 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.626 2.626 0 0 0 .331.423c.213.22.464.402.755.548l.173.074c.433.17.93.255 1.49.255.68 0 1.295-.165 1.844-.493a3.447 3.447 0 0 0 1.316-1.4c.329-.603.493-1.299.493-2.089 0-1.273-.33-2.243-.988-2.913-.658-.68-1.52-1.02-2.584-1.02-.598 0-1.124.115-1.575.347a2.807 2.807 0 0 0-.415.262l-.199.166a3.35 3.35 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138c.137.193.297.36.48.5l.155.11.053.034c.34.197.713.297 1.119.297.714 0 1.262-.225 1.645-.675.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.29 0-.569.053-.835.16a2.366 2.366 0 0 0-.284.136 1.99 1.99 0 0 0-.363.254 2.237 2.237 0 0 0-.46.569l-.082.162a2.56 2.56 0 0 0-.213 1.072v.115c0 .471.098.894.296 1.267l.135.211zm.964-.818a1.11 1.11 0 0 0 .367.385.937.937 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a.995.995 0 0 0-.503.135l-.012.007a.859.859 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.43 1.43 0 0 0 .14.66zm15.7-6.222c.232-.23.346-.516.346-.856a1.053 1.053 0 0 0-.345-.79 1.175 1.175 0 0 0-.84-.329c-.34 0-.625.11-.855.33a1.053 1.053 0 0 0-.346.79c0 .34.115.625.346.855.23.23.516.346.856.346.34 0 .62-.115.839-.346zm4.337 9.314.033-1.332c.128.269.324.518.59.747l.098.081a3.727 3.727 0 0 0 .316.224l.223.122a3.21 3.21 0 0 0 1.44.322 3.785 3.785 0 0 0 1.875-.477 3.52 3.52 0 0 0 1.382-1.366c.352-.593.526-1.29.526-2.09 0-.79-.147-1.48-.444-2.073a3.235 3.235 0 0 0-1.283-1.399c-.549-.34-1.195-.51-1.942-.51a3.476 3.476 0 0 0-1.527.344l-.086.043-.165.09a3.412 3.412 0 0 0-.33.214c-.288.21-.507.446-.656.707a1.893 1.893 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.482 2.482 0 0 0 .566.7c.078.065.159.125.245.18l.144.08a2.105 2.105 0 0 0 .975.232c.713 0 1.262-.225 1.645-.675.384-.46.576-1.053.576-1.778 0-.734-.192-1.327-.576-1.777-.373-.46-.921-.692-1.645-.692a2.18 2.18 0 0 0-1.015.235c-.147.075-.285.17-.415.282l-.15.142a2.086 2.086 0 0 0-.42.594c-.149.32-.223.685-.223 1.1v.115c0 .47.097.89.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.868.868 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.13 1.13 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013c.23-.087.472-.134.724-.14l.069-.002c.329 0 .542.033.642.099l.247-1.794c-.13-.066-.37-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2.086 2.086 0 0 0-.411.148 2.18 2.18 0 0 0-.4.249 2.482 2.482 0 0 0-.485.499 2.659 2.659 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884c0-.364.053-.678.159-.943a1.49 1.49 0 0 1 .466-.636 2.52 2.52 0 0 1 .399-.253 2.19 2.19 0 0 1 .224-.099zm9.784 2.656.05-.922c0-1.162-.285-2.062-.856-2.698-.559-.647-1.42-.97-2.584-.97-.746 0-1.415.163-2.007.493a3.462 3.462 0 0 0-1.4 1.382c-.329.604-.493 1.306-.493 2.106 0 .714.143 1.371.428 1.975.285.593.73 1.07 1.332 1.432.604.351 1.355.526 2.255.526.649 0 1.204-.062 1.668-.185l.044-.012.135-.04c.409-.122.736-.263.984-.421l-.542-1.267c-.2.108-.415.199-.642.274l-.297.087c-.34.088-.773.131-1.3.131-.636 0-1.135-.147-1.497-.444a1.573 1.573 0 0 1-.192-.193c-.244-.294-.415-.705-.512-1.234l-.004-.021h5.43zm-5.427-1.256-.003.022h3.752v-.138c-.007-.485-.104-.857-.288-1.118a1.056 1.056 0 0 0-.156-.176c-.307-.285-.746-.428-1.316-.428-.657 0-1.155.202-1.494.604-.253.3-.417.712-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z' fill='%23000' fill-opacity='.4' fill-rule='evenodd'/%3E%3Cpath d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81c-.68 0-1.311-.16-1.893-.478a3.795 3.795 0 0 1-1.381-1.382c-.34-.604-.51-1.306-.51-2.106 0-.79.147-1.482.444-2.074a3.364 3.364 0 0 1 1.3-1.382c.559-.33 1.217-.494 1.974-.494a3.293 3.293 0 0 1 1.234.231 3.341 3.341 0 0 1 .97.575c.264.22.44.439.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332c-.186.395-.526.746-1.02 1.053a3.167 3.167 0 0 1-1.662.444zm.296-1.482c.626 0 1.152-.214 1.58-.642.428-.44.642-1.01.642-1.711v-.115c0-.472-.098-.894-.296-1.267a2.211 2.211 0 0 0-.807-.872 2.098 2.098 0 0 0-1.119-.313c-.702 0-1.245.231-1.629.692-.384.45-.575 1.037-.575 1.76 0 .736.186 1.333.559 1.795.384.45.933.675 1.645.675zm6.521-6.237h1.711v1.4c.604-1.065 1.547-1.597 2.83-1.597 1.064 0 1.926.34 2.584 1.02.659.67.988 1.641.988 2.914 0 .79-.164 1.487-.493 2.09a3.456 3.456 0 0 1-1.316 1.399 3.51 3.51 0 0 1-1.844.493c-.636 0-1.19-.11-1.662-.329a2.665 2.665 0 0 1-1.086-.97l.017 5.134h-1.728V9.242zm4.048 6.22c.714 0 1.262-.224 1.645-.674.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.395 0-.768.098-1.12.296-.34.187-.613.46-.822.823-.197.351-.296.763-.296 1.234v.115c0 .472.098.894.296 1.267.209.362.483.647.823.855.34.197.713.297 1.119.297z' fill='%23fff'/%3E%3Cpath d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.159 1.159 0 0 1-.856-.346 1.165 1.165 0 0 1-.346-.856 1.053 1.053 0 0 1 .346-.79c.23-.219.516-.329.856-.329.329 0 .609.11.839.33a1.053 1.053 0 0 1 .345.79 1.159 1.159 0 0 1-.345.855c-.22.23-.5.346-.84.346zm7.875 9.133a3.167 3.167 0 0 1-1.662-.444c-.482-.307-.817-.658-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283c.186-.438.548-.812 1.086-1.119a3.486 3.486 0 0 1 1.778-.477c.746 0 1.393.17 1.942.51a3.235 3.235 0 0 1 1.283 1.4c.297.592.444 1.282.444 2.072 0 .8-.175 1.498-.526 2.09a3.52 3.52 0 0 1-1.382 1.366 3.785 3.785 0 0 1-1.876.477zm-.296-1.481c.713 0 1.26-.225 1.645-.675.384-.46.577-1.053.577-1.778 0-.734-.193-1.327-.577-1.776-.373-.46-.921-.692-1.645-.692a2.115 2.115 0 0 0-1.58.659c-.428.428-.642.992-.642 1.694v.115c0 .473.098.895.296 1.267a2.385 2.385 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481c.176-.505.46-.91.856-1.217a2.14 2.14 0 0 1 1.349-.46c.351 0 .593.032.724.098l-.247 1.794c-.099-.066-.313-.099-.642-.099-.516 0-.988.164-1.416.494-.417.329-.626.855-.626 1.58v3.883h-1.777V9.242zm9.534 7.718c-.9 0-1.651-.175-2.255-.526-.603-.362-1.047-.84-1.332-1.432a4.567 4.567 0 0 1-.428-1.975c0-.8.164-1.502.493-2.106a3.462 3.462 0 0 1 1.4-1.382c.592-.33 1.262-.494 2.007-.494 1.163 0 2.024.324 2.584.97.57.637.856 1.537.856 2.7 0 .296-.017.603-.05.92h-5.43c.12.67.356 1.153.708 1.45.362.296.86.443 1.497.443.526 0 .96-.044 1.3-.131a4.123 4.123 0 0 0 .938-.362l.542 1.267c-.274.175-.647.329-1.119.46-.472.132-1.042.197-1.711.197zm1.596-4.558c.01-.68-.137-1.158-.444-1.432-.307-.285-.746-.428-1.316-.428-1.152 0-1.815.62-1.991 1.86h3.752z' fill='%23e1e3e9'/%3E%3Cg fill-rule='evenodd' stroke-width='1.036'%3E%3Cpath d='m8.166 16.146-.002.002a1.54 1.54 0 0 1-2.009 0l-.002-.002-.043-.034-.002-.002-.199-.162H4.377a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659H8.411l-.202.164zm-1.121-.905a.29.29 0 0 0 .113.023.286.286 0 0 0 .189-.07l.077-.063c.634-.508 4.672-3.743 4.672-7.575 0-2.55-2.215-4.625-4.938-4.625S2.221 5.006 2.221 7.556c0 3.225 2.86 6.027 4.144 7.137h.004l.04.038.484.4.077.063a.628.628 0 0 0 .074.047zm-2.52-.548a16.898 16.898 0 0 1-1.183-1.315C2.187 11.942.967 9.897.967 7.555c0-3.319 2.855-5.88 6.192-5.88 3.338 0 6.193 2.561 6.193 5.881 0 2.34-1.22 4.387-2.376 5.822a16.898 16.898 0 0 1-1.182 1.315h.15a1.912 1.912 0 0 1 1.914 1.914v1.84a1.912 1.912 0 0 1-1.914 1.914H4.377a1.912 1.912 0 0 1-1.914-1.914v-1.84a1.912 1.912 0 0 1 1.914-1.914zm3.82-6.935c0 .692-.55 1.222-1.187 1.222s-1.185-.529-1.185-1.222.548-1.222 1.185-1.222c.638 0 1.186.529 1.186 1.222zm-1.186 2.477c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477zm2.048 7.71H5.114v-.838h4.093z' fill='%23000' fill-opacity='.4'/%3E%3Cpath d='M2.222 7.555c0-2.55 2.214-4.625 4.937-4.625 2.723 0 4.938 2.075 4.938 4.625 0 3.832-4.038 7.068-4.672 7.575l-.077.063a.286.286 0 0 1-.189.07.286.286 0 0 1-.188-.07l-.077-.063c-.634-.507-4.672-3.743-4.672-7.575zm4.937 2.68c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477z' fill='%23e1e3e9'/%3E%3Cpath d='M4.377 15.948a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659zm4.83 1.16H5.114v.838h4.093z' fill='%23fff'/%3E%3C/g%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){a.mapboxgl-ctrl-logo,a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.255 1.255 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.255 1.255 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5.11 5.11 0 0 1 .314-.787l.009-.016a4.623 4.623 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.548 4.548 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4.314.319.566.676.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.416 2.416 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.448 2.448 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675c.211.2.381.43.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.76 4.76 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.407 3.407 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.255 1.255 0 0 1 .689 1.004 4.73 4.73 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528 0 .343-.02.694-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.815 5.815 0 0 1-.548-2.512c0-.286.017-.567.053-.843a1.255 1.255 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.778 4.778 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.47 4.47 0 0 1-1.935-.424 1.252 1.252 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.402 2.402 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.703 4.703 0 0 1-1.782 1.884 4.767 4.767 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.47 4.47 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a4.983 4.983 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.255 1.255 0 0 1-1.115.676h-.098a1.255 1.255 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15c.329-.237.574-.499.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267c-.088-.22-.264-.438-.526-.658l-.032-.028a3.16 3.16 0 0 0-.668-.428l-.27-.12a3.293 3.293 0 0 0-1.235-.23c-.757 0-1.415.163-1.974.493a3.36 3.36 0 0 0-1.3 1.382c-.297.593-.444 1.284-.444 2.074 0 .8.17 1.503.51 2.107a3.795 3.795 0 0 0 1.382 1.381 3.883 3.883 0 0 0 1.893.477c.53 0 1.015-.11 1.455-.33zm-2.789-5.38c-.384.45-.575 1.038-.575 1.762 0 .735.186 1.332.559 1.794.384.45.933.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.17 2.17 0 0 0 .468-.29l.178-.161a2.163 2.163 0 0 0 .397-.561c.163-.333.244-.717.244-1.15v-.115c0-.472-.098-.894-.296-1.267l-.043-.077a2.211 2.211 0 0 0-.633-.709l-.13-.086-.047-.028a2.099 2.099 0 0 0-1.073-.285c-.702 0-1.244.231-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.958.958 0 0 0-.353-.389.851.851 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.626 2.626 0 0 0 .331.423c.213.22.464.402.755.548l.173.074c.433.17.93.255 1.49.255.68 0 1.295-.165 1.844-.493a3.447 3.447 0 0 0 1.316-1.4c.329-.603.493-1.299.493-2.089 0-1.273-.33-2.243-.988-2.913-.658-.68-1.52-1.02-2.584-1.02-.598 0-1.124.115-1.575.347a2.807 2.807 0 0 0-.415.262l-.199.166a3.35 3.35 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138c.137.193.297.36.48.5l.155.11.053.034c.34.197.713.297 1.119.297.714 0 1.262-.225 1.645-.675.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.29 0-.569.053-.835.16a2.366 2.366 0 0 0-.284.136 1.99 1.99 0 0 0-.363.254 2.237 2.237 0 0 0-.46.569l-.082.162a2.56 2.56 0 0 0-.213 1.072v.115c0 .471.098.894.296 1.267l.135.211zm.964-.818a1.11 1.11 0 0 0 .367.385.937.937 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a.995.995 0 0 0-.503.135l-.012.007a.859.859 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.43 1.43 0 0 0 .14.66zm15.7-6.222c.232-.23.346-.516.346-.856a1.053 1.053 0 0 0-.345-.79 1.175 1.175 0 0 0-.84-.329c-.34 0-.625.11-.855.33a1.053 1.053 0 0 0-.346.79c0 .34.115.625.346.855.23.23.516.346.856.346.34 0 .62-.115.839-.346zm4.337 9.314.033-1.332c.128.269.324.518.59.747l.098.081a3.727 3.727 0 0 0 .316.224l.223.122a3.21 3.21 0 0 0 1.44.322 3.785 3.785 0 0 0 1.875-.477 3.52 3.52 0 0 0 1.382-1.366c.352-.593.526-1.29.526-2.09 0-.79-.147-1.48-.444-2.073a3.235 3.235 0 0 0-1.283-1.399c-.549-.34-1.195-.51-1.942-.51a3.476 3.476 0 0 0-1.527.344l-.086.043-.165.09a3.412 3.412 0 0 0-.33.214c-.288.21-.507.446-.656.707a1.893 1.893 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.482 2.482 0 0 0 .566.7c.078.065.159.125.245.18l.144.08a2.105 2.105 0 0 0 .975.232c.713 0 1.262-.225 1.645-.675.384-.46.576-1.053.576-1.778 0-.734-.192-1.327-.576-1.777-.373-.46-.921-.692-1.645-.692a2.18 2.18 0 0 0-1.015.235c-.147.075-.285.17-.415.282l-.15.142a2.086 2.086 0 0 0-.42.594c-.149.32-.223.685-.223 1.1v.115c0 .47.097.89.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.868.868 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.13 1.13 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013c.23-.087.472-.134.724-.14l.069-.002c.329 0 .542.033.642.099l.247-1.794c-.13-.066-.37-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2.086 2.086 0 0 0-.411.148 2.18 2.18 0 0 0-.4.249 2.482 2.482 0 0 0-.485.499 2.659 2.659 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884c0-.364.053-.678.159-.943a1.49 1.49 0 0 1 .466-.636 2.52 2.52 0 0 1 .399-.253 2.19 2.19 0 0 1 .224-.099zm9.784 2.656.05-.922c0-1.162-.285-2.062-.856-2.698-.559-.647-1.42-.97-2.584-.97-.746 0-1.415.163-2.007.493a3.462 3.462 0 0 0-1.4 1.382c-.329.604-.493 1.306-.493 2.106 0 .714.143 1.371.428 1.975.285.593.73 1.07 1.332 1.432.604.351 1.355.526 2.255.526.649 0 1.204-.062 1.668-.185l.044-.012.135-.04c.409-.122.736-.263.984-.421l-.542-1.267c-.2.108-.415.199-.642.274l-.297.087c-.34.088-.773.131-1.3.131-.636 0-1.135-.147-1.497-.444a1.573 1.573 0 0 1-.192-.193c-.244-.294-.415-.705-.512-1.234l-.004-.021h5.43zm-5.427-1.256-.003.022h3.752v-.138c-.007-.485-.104-.857-.288-1.118a1.056 1.056 0 0 0-.156-.176c-.307-.285-.746-.428-1.316-.428-.657 0-1.155.202-1.494.604-.253.3-.417.712-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z' fill='%23000' fill-opacity='.4' fill-rule='evenodd'/%3E%3Cpath d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81c-.68 0-1.311-.16-1.893-.478a3.795 3.795 0 0 1-1.381-1.382c-.34-.604-.51-1.306-.51-2.106 0-.79.147-1.482.444-2.074a3.364 3.364 0 0 1 1.3-1.382c.559-.33 1.217-.494 1.974-.494a3.293 3.293 0 0 1 1.234.231 3.341 3.341 0 0 1 .97.575c.264.22.44.439.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332c-.186.395-.526.746-1.02 1.053a3.167 3.167 0 0 1-1.662.444zm.296-1.482c.626 0 1.152-.214 1.58-.642.428-.44.642-1.01.642-1.711v-.115c0-.472-.098-.894-.296-1.267a2.211 2.211 0 0 0-.807-.872 2.098 2.098 0 0 0-1.119-.313c-.702 0-1.245.231-1.629.692-.384.45-.575 1.037-.575 1.76 0 .736.186 1.333.559 1.795.384.45.933.675 1.645.675zm6.521-6.237h1.711v1.4c.604-1.065 1.547-1.597 2.83-1.597 1.064 0 1.926.34 2.584 1.02.659.67.988 1.641.988 2.914 0 .79-.164 1.487-.493 2.09a3.456 3.456 0 0 1-1.316 1.399 3.51 3.51 0 0 1-1.844.493c-.636 0-1.19-.11-1.662-.329a2.665 2.665 0 0 1-1.086-.97l.017 5.134h-1.728V9.242zm4.048 6.22c.714 0 1.262-.224 1.645-.674.385-.46.576-1.048.576-1.762 0-.746-.192-1.338-.576-1.777-.372-.45-.92-.675-1.645-.675-.395 0-.768.098-1.12.296-.34.187-.613.46-.822.823-.197.351-.296.763-.296 1.234v.115c0 .472.098.894.296 1.267.209.362.483.647.823.855.34.197.713.297 1.119.297z' fill='%23fff'/%3E%3Cpath d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.159 1.159 0 0 1-.856-.346 1.165 1.165 0 0 1-.346-.856 1.053 1.053 0 0 1 .346-.79c.23-.219.516-.329.856-.329.329 0 .609.11.839.33a1.053 1.053 0 0 1 .345.79 1.159 1.159 0 0 1-.345.855c-.22.23-.5.346-.84.346zm7.875 9.133a3.167 3.167 0 0 1-1.662-.444c-.482-.307-.817-.658-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283c.186-.438.548-.812 1.086-1.119a3.486 3.486 0 0 1 1.778-.477c.746 0 1.393.17 1.942.51a3.235 3.235 0 0 1 1.283 1.4c.297.592.444 1.282.444 2.072 0 .8-.175 1.498-.526 2.09a3.52 3.52 0 0 1-1.382 1.366 3.785 3.785 0 0 1-1.876.477zm-.296-1.481c.713 0 1.26-.225 1.645-.675.384-.46.577-1.053.577-1.778 0-.734-.193-1.327-.577-1.776-.373-.46-.921-.692-1.645-.692a2.115 2.115 0 0 0-1.58.659c-.428.428-.642.992-.642 1.694v.115c0 .473.098.895.296 1.267a2.385 2.385 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481c.176-.505.46-.91.856-1.217a2.14 2.14 0 0 1 1.349-.46c.351 0 .593.032.724.098l-.247 1.794c-.099-.066-.313-.099-.642-.099-.516 0-.988.164-1.416.494-.417.329-.626.855-.626 1.58v3.883h-1.777V9.242zm9.534 7.718c-.9 0-1.651-.175-2.255-.526-.603-.362-1.047-.84-1.332-1.432a4.567 4.567 0 0 1-.428-1.975c0-.8.164-1.502.493-2.106a3.462 3.462 0 0 1 1.4-1.382c.592-.33 1.262-.494 2.007-.494 1.163 0 2.024.324 2.584.97.57.637.856 1.537.856 2.7 0 .296-.017.603-.05.92h-5.43c.12.67.356 1.153.708 1.45.362.296.86.443 1.497.443.526 0 .96-.044 1.3-.131a4.123 4.123 0 0 0 .938-.362l.542 1.267c-.274.175-.647.329-1.119.46-.472.132-1.042.197-1.711.197zm1.596-4.558c.01-.68-.137-1.158-.444-1.432-.307-.285-.746-.428-1.316-.428-1.152 0-1.815.62-1.991 1.86h3.752z' fill='%23e1e3e9'/%3E%3Cg fill-rule='evenodd' stroke-width='1.036'%3E%3Cpath d='m8.166 16.146-.002.002a1.54 1.54 0 0 1-2.009 0l-.002-.002-.043-.034-.002-.002-.199-.162H4.377a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659H8.411l-.202.164zm-1.121-.905a.29.29 0 0 0 .113.023.286.286 0 0 0 .189-.07l.077-.063c.634-.508 4.672-3.743 4.672-7.575 0-2.55-2.215-4.625-4.938-4.625S2.221 5.006 2.221 7.556c0 3.225 2.86 6.027 4.144 7.137h.004l.04.038.484.4.077.063a.628.628 0 0 0 .074.047zm-2.52-.548a16.898 16.898 0 0 1-1.183-1.315C2.187 11.942.967 9.897.967 7.555c0-3.319 2.855-5.88 6.192-5.88 3.338 0 6.193 2.561 6.193 5.881 0 2.34-1.22 4.387-2.376 5.822a16.898 16.898 0 0 1-1.182 1.315h.15a1.912 1.912 0 0 1 1.914 1.914v1.84a1.912 1.912 0 0 1-1.914 1.914H4.377a1.912 1.912 0 0 1-1.914-1.914v-1.84a1.912 1.912 0 0 1 1.914-1.914zm3.82-6.935c0 .692-.55 1.222-1.187 1.222s-1.185-.529-1.185-1.222.548-1.222 1.185-1.222c.638 0 1.186.529 1.186 1.222zm-1.186 2.477c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477zm2.048 7.71H5.114v-.838h4.093z' fill='%23000' fill-opacity='.4'/%3E%3Cpath d='M2.222 7.555c0-2.55 2.214-4.625 4.937-4.625 2.723 0 4.938 2.075 4.938 4.625 0 3.832-4.038 7.068-4.672 7.575l-.077.063a.286.286 0 0 1-.189.07.286.286 0 0 1-.188-.07l-.077-.063c-.634-.507-4.672-3.743-4.672-7.575zm4.937 2.68c1.348 0 2.442-1.11 2.442-2.478S8.507 5.28 7.159 5.28 4.72 6.39 4.72 7.758s1.092 2.477 2.44 2.477z' fill='%23e1e3e9'/%3E%3Cpath d='M4.377 15.948a.657.657 0 0 0-.659.659v1.84a.657.657 0 0 0 .659.659h5.565a.657.657 0 0 0 .659-.659v-1.84a.657.657 0 0 0-.659-.659zm4.83 1.16H5.114v.838h4.093z' fill='%23fff'/%3E%3C/g%3E%3C/svg%3E")}}.mapboxgl-ctrl.mapboxgl-ctrl-attrib,.maplibregl-ctrl.maplibregl-ctrl-attrib{background-color:#ffffff80;margin:0;padding:0 5px}@media screen{.mapboxgl-ctrl-attrib.mapboxgl-compact,.maplibregl-ctrl-attrib.maplibregl-compact{background-color:#fff;border-radius:12px;box-sizing:content-box;margin:10px;min-height:20px;padding:2px 24px 2px 0;position:relative}.mapboxgl-ctrl-attrib.mapboxgl-compact-show,.maplibregl-ctrl-attrib.maplibregl-compact-show{padding:2px 28px 2px 8px;visibility:visible}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact-show,.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact-show,.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact-show,.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact-show{border-radius:12px;padding:2px 8px 2px 28px}.mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner,.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-inner{display:none}.mapboxgl-ctrl-attrib-button,.maplibregl-ctrl-attrib-button{background-color:#ffffff80;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E");border:0;border-radius:12px;box-sizing:border-box;cursor:pointer;display:none;height:24px;outline:none;position:absolute;right:0;top:0;width:24px}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;list-style:none}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button::-webkit-details-marker{display:none}.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl-attrib-button,.mapboxgl-ctrl-top-left .mapboxgl-ctrl-attrib-button,.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-top-left .maplibregl-ctrl-attrib-button{left:0}.mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-button,.mapboxgl-ctrl-attrib.mapboxgl-compact-show .mapboxgl-ctrl-attrib-inner,.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner{display:block}.mapboxgl-ctrl-attrib.mapboxgl-compact-show .mapboxgl-ctrl-attrib-button,.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-button{background-color:#0000000d}.mapboxgl-ctrl-bottom-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-bottom-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;right:0}.mapboxgl-ctrl-top-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-top-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{right:0;top:0}.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{left:0;top:0}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;left:0}}@media screen and (-ms-high-contrast:active){.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd' fill='%23fff'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}@media screen and (-ms-high-contrast:black-on-white){.mapboxgl-ctrl-attrib.mapboxgl-compact:after,.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}.mapboxgl-ctrl-attrib a,.maplibregl-ctrl-attrib a{color:#000000bf;text-decoration:none}.mapboxgl-ctrl-attrib a:hover,.maplibregl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.mapboxgl-attrib-empty,.maplibregl-attrib-empty{display:none}.mapboxgl-ctrl-scale,.maplibregl-ctrl-scale{background-color:#ffffffbf;border:2px solid #333;border-top:#333;box-sizing:border-box;color:#333;font-size:10px;padding:0 5px}.mapboxgl-popup,.maplibregl-popup{display:flex;left:0;pointer-events:none;position:absolute;top:0;will-change:transform}.mapboxgl-popup-anchor-top,.mapboxgl-popup-anchor-top-left,.mapboxgl-popup-anchor-top-right,.maplibregl-popup-anchor-top,.maplibregl-popup-anchor-top-left,.maplibregl-popup-anchor-top-right{flex-direction:column}.mapboxgl-popup-anchor-bottom,.mapboxgl-popup-anchor-bottom-left,.mapboxgl-popup-anchor-bottom-right,.maplibregl-popup-anchor-bottom,.maplibregl-popup-anchor-bottom-left,.maplibregl-popup-anchor-bottom-right{flex-direction:column-reverse}.mapboxgl-popup-anchor-left,.maplibregl-popup-anchor-left{flex-direction:row}.mapboxgl-popup-anchor-right,.maplibregl-popup-anchor-right{flex-direction:row-reverse}.mapboxgl-popup-tip,.maplibregl-popup-tip{border:10px solid transparent;height:0;width:0;z-index:1}.mapboxgl-popup-anchor-top .mapboxgl-popup-tip,.maplibregl-popup-anchor-top .maplibregl-popup-tip{align-self:center;border-bottom-color:#fff;border-top:none}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-tip,.maplibregl-popup-anchor-top-left .maplibregl-popup-tip{align-self:flex-start;border-bottom-color:#fff;border-left:none;border-top:none}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-tip,.maplibregl-popup-anchor-top-right .maplibregl-popup-tip{align-self:flex-end;border-bottom-color:#fff;border-right:none;border-top:none}.mapboxgl-popup-anchor-bottom .mapboxgl-popup-tip,.maplibregl-popup-anchor-bottom .maplibregl-popup-tip{align-self:center;border-bottom:none;border-top-color:#fff}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-tip,.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-tip,.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}.mapboxgl-popup-anchor-left .mapboxgl-popup-tip,.maplibregl-popup-anchor-left .maplibregl-popup-tip{align-self:center;border-left:none;border-right-color:#fff}.mapboxgl-popup-anchor-right .mapboxgl-popup-tip,.maplibregl-popup-anchor-right .maplibregl-popup-tip{align-self:center;border-left-color:#fff;border-right:none}.mapboxgl-popup-close-button,.maplibregl-popup-close-button{background-color:transparent;border:0;border-radius:0 3px 0 0;cursor:pointer;position:absolute;right:0;top:0}.mapboxgl-popup-close-button:hover,.maplibregl-popup-close-button:hover{background-color:#0000000d}.mapboxgl-popup-content,.maplibregl-popup-content{background:#fff;border-radius:3px;box-shadow:0 1px 2px #0000001a;padding:15px 10px;pointer-events:auto;position:relative}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-content,.maplibregl-popup-anchor-top-left .maplibregl-popup-content{border-top-left-radius:0}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-content,.maplibregl-popup-anchor-top-right .maplibregl-popup-content{border-top-right-radius:0}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-content,.maplibregl-popup-anchor-bottom-left .maplibregl-popup-content{border-bottom-left-radius:0}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-content,.maplibregl-popup-anchor-bottom-right .maplibregl-popup-content{border-bottom-right-radius:0}.mapboxgl-popup-track-pointer,.maplibregl-popup-track-pointer{display:none}.mapboxgl-popup-track-pointer *,.maplibregl-popup-track-pointer *{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.mapboxgl-map:hover .mapboxgl-popup-track-pointer,.maplibregl-map:hover .maplibregl-popup-track-pointer{display:flex}.mapboxgl-map:active .mapboxgl-popup-track-pointer,.maplibregl-map:active .maplibregl-popup-track-pointer{display:none}.mapboxgl-marker,.maplibregl-marker{left:0;position:absolute;top:0;will-change:transform}.mapboxgl-user-location-dot,.maplibregl-user-location-dot{background-color:#1da1f2;border-radius:50%;height:15px;width:15px}.mapboxgl-user-location-dot:before,.maplibregl-user-location-dot:before{animation:maplibregl-user-location-dot-pulse 2s infinite;background-color:#1da1f2;border-radius:50%;content:"";height:15px;position:absolute;width:15px}.mapboxgl-user-location-dot:after,.maplibregl-user-location-dot:after{border:2px solid #fff;border-radius:50%;box-shadow:0 0 3px #00000059;box-sizing:border-box;content:"";height:19px;left:-2px;position:absolute;top:-2px;width:19px}@keyframes maplibregl-user-location-dot-pulse{0%{opacity:1;transform:scale(1)}70%{opacity:0;transform:scale(3)}to{opacity:0;transform:scale(1)}}.mapboxgl-user-location-dot-stale,.maplibregl-user-location-dot-stale{background-color:#aaa}.mapboxgl-user-location-dot-stale:after,.maplibregl-user-location-dot-stale:after{display:none}.mapboxgl-user-location-accuracy-circle,.maplibregl-user-location-accuracy-circle{background-color:#1da1f233;border-radius:100%;height:1px;width:1px}.mapboxgl-crosshair,.mapboxgl-crosshair .mapboxgl-interactive,.mapboxgl-crosshair .mapboxgl-interactive:active,.maplibregl-crosshair,.maplibregl-crosshair .maplibregl-interactive,.maplibregl-crosshair .maplibregl-interactive:active{cursor:crosshair}.mapboxgl-boxzoom,.maplibregl-boxzoom{background:#fff;border:2px dotted #202020;height:0;left:0;opacity:.5;position:absolute;top:0;width:0}.maplibregl-cooperative-gesture-screen{align-items:center;background:rgba(0,0,0,.4);bottom:0;color:#fff;display:flex;font-size:1.4em;justify-content:center;left:0;line-height:1.2;opacity:0;padding:1rem;pointer-events:none;position:absolute;right:0;top:0;transition:opacity 1s ease 1s}.maplibregl-cooperative-gesture-screen.maplibregl-show{opacity:1;transition:opacity .05s}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:none}@media (hover:none),(max-width:480px){.maplibregl-cooperative-gesture-screen .maplibregl-desktop-message{display:none}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:block}}._FullPage_14qpf_1{height:100vh;display:flex}._FullPage_14qpf_1 ._SidePanel_14qpf_5{flex-grow:1;max-width:26rem}._FullPage_14qpf_1 ._MapPreview_14qpf_10{flex-grow:10}@media (max-width: 25rem){._FullPage_14qpf_1 ._MapPreview_14qpf_10{flex-grow:0}}._SidePanel_14qpf_5{overflow-y:auto;padding:calc(var(--spacing) * 4);border-right:1px solid var(--border-color)}._SidePanel_14qpf_5 header{display:flex;align-items:center;justify-content:space-between}._SidePanel_14qpf_5 header h1{font-size:2rem}._SidePanel_14qpf_5 header a{color:var(--color);text-decoration:none}._SidePanel_14qpf_5 header svg{height:1.5em;display:block}._SectionWrapper_14qpf_45:not(:last-child){margin-bottom:calc(var(--spacing) * 6)}._SectionWrapper_14qpf_45 h2{margin-top:0;margin-bottom:calc(var(--spacing) * 2);font-size:1rem}._SectionWrapper_14qpf_45 ul{list-style-type:none;margin:0;padding:0}:root{--background-color: #fff;--color: hsl(205, 20%, 32%);--muted-color: hsla(205, 20%, 32%, .6);--primary: hsl(193, 85%, 40%);--primary-hover: hsl(193, 90%, 33%);--primary-inverse: #fff;--danger: #df7575;--disabled-bacground-color: rgb(244, 244, 244);--disabled-border-color: rgb(206, 206, 206);--disabled-color: rgb(175, 175, 175);--dropzone-bacground-color: rgba(16, 149, 193, .08);--border-radius: .25rem;--border-color: #aaa;--font-family: -apple-system, BlinkMacSystemFont, "avenir next", avenir, "helvetica neue", helvetica, ubuntu, roboto, noto, "segoe ui", arial, sans-serif;--font-small: .75rem;--font-normal: .875rem;--font-large: 1rem;--spacing: .25rem;--transition: .15s ease-in-out;--tooltip-background-color: hsl(205, 30%, 16%);--tooltip-color: #fff;--tooltip-delay: .5s;--progress-bar-background-color: #ccc;--progress-bar-progress: #39a8f1;--progress-bar-completed: #8ac926}*,*:before,*:after{box-sizing:border-box}:where(:root){background-color:var(--background-color);color:var(--color);font-family:var(--font-family);text-rendering:optimizeLegibility}body{margin:0} diff --git a/assets/index-fc2e9253.js b/assets/index-fc2e9253.js new file mode 100644 index 0000000..0f9913a --- /dev/null +++ b/assets/index-fc2e9253.js @@ -0,0 +1 @@ +function s(r,i){for(var o=0;oe[t]})}}}return Object.freeze(Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}))}var a={},c=a.printMsg=function(){console.log("This is a message from the demo package")};const f=s({__proto__:null,default:a,printMsg:c},[a]);export{f as i}; diff --git a/capitals_filtered.geojson b/capitals_filtered.geojson new file mode 100644 index 0000000..4f50688 --- /dev/null +++ b/capitals_filtered.geojson @@ -0,0 +1,19496 @@ +{ + "type": "FeatureCollection", + "generator": "overpass-ide", + "copyright": "The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.", + "timestamp": "2022-12-03T17:06:08Z", + "features": [ + { + "type": "Feature", + "properties": { + "name": "London", + "name:ab": "Лондан", + "name:ace": "London", + "name:ady": "Лондон", + "name:af": "Londen", + "name:als": "London", + "name:am": "ለንደን", + "name:an": "Londres", + "name:ang": "Lunden", + "name:ar": "لندن", + "name:arc": "ܠܘܢܕܘܢ", + "name:ary": "لندن", + "name:arz": "لندن", + "name:ast": "Londres", + "name:av": "Лондон", + "name:avk": "London", + "name:awa": "लण्डन", + "name:ay": "London", + "name:az": "London", + "name:azb": "لندن", + "name:ba": "Лондон", + "name:ban": "London", + "name:bar": "London", + "name:bat-smg": "Londons", + "name:bcl": "Londres", + "name:be": "Лондан", + "name:be-tarask": "Лёндан", + "name:be-x-old": "Лёндан", + "name:bg": "Лондон", + "name:bh": "लंदन", + "name:bi": "London", + "name:bm": "London", + "name:bo": "ལོན་ཊོན།", + "name:br": "Londrez", + "name:bs": "London", + "name:bxr": "Лондон", + "name:ca": "Londres", + "name:cdo": "Lùng-dŭng", + "name:ce": "Лондон", + "name:ceb": "London", + "name:chr": "ᎫᎴ ᏗᏍᎪᏂᎯᏱ", + "name:ckb": "لەندەن", + "name:co": "Londra", + "name:crh": "London", + "name:cs": "Londýn", + "name:csb": "Londin", + "name:cu": "Лондонъ", + "name:cv": "Лондон", + "name:cy": "Llundain", + "name:da": "London", + "name:de": "London", + "name:diq": "Londra", + "name:dsb": "London", + "name:dty": "लण्डन", + "name:ee": "London", + "name:el": "Λονδίνο", + "name:eml": "Lòndra", + "name:en": "London", + "name:eo": "Londono", + "name:es": "Londres", + "name:et": "London", + "name:eu": "Londres", + "name:ext": "Londri", + "name:fa": "لندن", + "name:ff": "London", + "name:fi": "Lontoo", + "name:fj": "Lodoni", + "name:fo": "London", + "name:fr": "Londres", + "name:frp": "Londres", + "name:frr": "London", + "name:fur": "Londre", + "name:fy": "Londen", + "name:ga": "Londain", + "name:gag": "London", + "name:gan": "倫敦", + "name:gcr": "Lonn", + "name:gd": "Lunnainn", + "name:gl": "Londres", + "name:gn": "Londye", + "name:gom": "London", + "name:gv": "Lunnin", + "name:ha": "Landan", + "name:hak": "Lùn-tûn", + "name:haw": "Lākana", + "name:he": "לונדון", + "name:hif": "London", + "name:hr": "London", + "name:hsb": "London", + "name:ht": "Lonn", + "name:hu": "London", + "name:hy": "Լոնդոն", + "name:hyw": "Լոնտոն", + "name:id": "London", + "name:ig": "London", + "name:ilo": "Londres", + "name:inh": "Лондон", + "name:io": "London", + "name:is": "Lundúnir", + "name:it": "Londra", + "name:ja": "ロンドン", + "name:jam": "Landan", + "name:jbo": "london", + "name:jv": "London", + "name:ka": "ლონდონი", + "name:kaa": "London", + "name:kab": "London", + "name:kbd": "Лондон", + "name:kk": "Лондон", + "name:kl": "London", + "name:km": "ឡុងដ៍", + "name:ko": "런던", + "name:koi": "Лондон", + "name:krc": "Лондон", + "name:ksh": "London", + "name:ku": "London", + "name:kv": "Лондон", + "name:kw": "Loundres", + "name:ky": "Лондон", + "name:lad": "Londra", + "name:lb": "London", + "name:lbe": "Лондон", + "name:lez": "Лондон", + "name:li": "Londe", + "name:lij": "Londra", + "name:lld": "London", + "name:lmo": "Lundra", + "name:ln": "Londoni", + "name:lo": "ລອນດອນ", + "name:lt": "Londonas", + "name:lv": "Londona", + "name:lzh": "倫敦", + "name:mai": "लन्डन", + "name:mdf": "Лондон", + "name:mg": "Lôndôna", + "name:mhr": "Лондон", + "name:mi": "Rānana", + "name:min": "London", + "name:mk": "Лондон", + "name:mn": "Лондон", + "name:mrj": "Лондон", + "name:ms": "London", + "name:mt": "Londra", + "name:mwl": "Londres", + "name:myv": "Лондон ош", + "name:mzn": "لندن", + "name:na": "London", + "name:nah": "Londres", + "name:nan": "Lûn-tun", + "name:nap": "Londra", + "name:nds": "London", + "name:nds-nl": "Londen", + "name:ne": "लण्डन", + "name:new": "लण्डन", + "name:nl": "Londen", + "name:nn": "London", + "name:no": "London", + "name:nov": "London", + "name:nrm": "Londres", + "name:ny": "London", + "name:oc": "Londres", + "name:om": "Landan", + "name:os": "Лондон", + "name:pap": "London", + "name:pcd": "Londe", + "name:pdc": "London", + "name:pih": "London", + "name:pl": "Londyn", + "name:pms": "Londra", + "name:pnt": "Λονδίνο", + "name:ps": "لندن", + "name:pt": "Londres", + "name:qu": "London", + "name:rm": "Londra", + "name:rmy": "London", + "name:ro": "Londra", + "name:roa-rup": "Londra", + "name:roa-tara": "Londre", + "name:ru": "Лондон", + "name:rue": "Лондон", + "name:sa": "लन्डन्", + "name:sah": "Лондон", + "name:sat": "ᱞᱚᱱᱰᱚᱱ", + "name:sc": "Londra", + "name:scn": "Londra", + "name:sco": "Lunnon", + "name:sd": "لنڊن", + "name:se": "London", + "name:sh": "London", + "name:si": "ලන්ඩන්", + "name:sk": "Londýn", + "name:skr": "لندن", + "name:sl": "London", + "name:sm": "Lonetona", + "name:smn": "Lontoo", + "name:sn": "London", + "name:so": "London", + "name:sq": "Londra", + "name:sr": "Лондон", + "name:srn": "London", + "name:st": "London", + "name:stq": "London", + "name:su": "London", + "name:sv": "London", + "name:sw": "London", + "name:szl": "Lōndōn", + "name:tet": "Londres", + "name:tg": "Лондон", + "name:th": "ลอนดอน", + "name:tk": "London", + "name:tl": "Londres", + "name:to": "Lonitoni", + "name:tpi": "Landen", + "name:tr": "Londra", + "name:tt": "Лондон", + "name:tum": "London", + "name:tw": "London", + "name:tzl": "Londra", + "name:udm": "Лондон", + "name:ug": "لوندۇن", + "name:uk": "Лондон", + "name:ur": "لندن", + "name:uz": "London", + "name:vec": "Łondra", + "name:vep": "London", + "name:vi": "Luân Đôn", + "name:vls": "Londn", + "name:wa": "Londe", + "name:war": "London", + "name:wo": "Londar", + "name:wuu": "伦敦", + "name:xmf": "ლონდონი", + "name:yi": "לאנדאן", + "name:yo": "Lọndọnu", + "name:yue": "倫敦", + "name:zea": "Londen", + "name:zh": "倫敦", + "name:zh-Hans": "伦敦", + "name:zh_pinyin": "Lúndūn", + "name:zu": "ILondon" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.1276474, + 51.5073219 + ] + }, + "id": "node/107775" + }, + { + "type": "Feature", + "properties": { + "name": "Wellington", + "name:af": "Wellington", + "name:am": "ዌሊንግተን", + "name:ang": "Weolingtūn", + "name:ar": "ويلينغتون", + "name:arz": "ويلينجتون", + "name:az": "Vellinqton", + "name:be": "Велінгтан", + "name:be-tarask": "Вэлінгтан", + "name:bg": "Уелингтън", + "name:bo": "ཝེ་ལིང་ཐོན།", + "name:bpy": "ৱেলিংটন", + "name:bs": "Wellington", + "name:ckb": "وێڵینگتۆن", + "name:cs": "Wellington", + "name:cv": "Веллингтон", + "name:da": "Wellington", + "name:de": "Wellington", + "name:el": "Ουέλλινγκτον", + "name:en": "Wellington", + "name:eo": "Velingtono", + "name:es": "Wellington", + "name:et": "Wellington", + "name:etymology": "Arthur Wellesley, 1st Duke of Wellington", + "name:etymology:wikidata": "Q131691", + "name:fa": "ولینگتون", + "name:fi": "Wellington", + "name:fr": "Wellington", + "name:he": "ולינגטון", + "name:hr": "Wellington", + "name:ht": "Welintòn", + "name:hu": "Wellington", + "name:hy": "Վելինգտոն", + "name:is": "Wellington", + "name:it": "Wellington", + "name:ja": "ウェリントン", + "name:ka": "ველინგტონი", + "name:ko": "웰링턴", + "name:ku": "Wellington", + "name:la": "Vellingtonia", + "name:lt": "Velingtonas", + "name:lv": "Velingtona", + "name:mi": "Te Whanganui-a-Tara", + "name:mk": "Велингтон", + "name:mn": "Веллингтон", + "name:new": "वेलिंगटन", + "name:nl": "Wellington", + "name:no": "Wellington", + "name:oc": "Wellington", + "name:os": "Веллингтон", + "name:pl": "Wellington", + "name:pt": "Wellington", + "name:ro": "Wellington", + "name:ru": "Веллингтон", + "name:sk": "Wellington", + "name:sl": "Wellington", + "name:sm": "Ueligitone", + "name:sr": "Велингтон", + "name:sv": "Wellington", + "name:th": "เวลลิงตัน", + "name:tr": "Wellington", + "name:ty": "Whanga-nui-a-Tara", + "name:ug": "ۋېللىنگتون", + "name:uk": "Веллінгтон", + "name:ur": "ویلنگٹن", + "name:vi": "Wellington", + "name:xmf": "ველინგთონი", + "name:yi": "װעלינגטאן", + "name:yue": "威靈頓", + "name:zh": "惠灵顿 / 惠靈頓 / 威靈頓", + "name:zh-Hans": "惠灵顿", + "name:zh-Hant": "威靈頓" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 174.7772114, + -41.2887953 + ] + }, + "id": "node/204648" + }, + { + "type": "Feature", + "properties": { + "name": "Αθήνα", + "name:af": "Athene", + "name:am": "አቴና", + "name:an": "Atenas", + "name:ang": "Athēnas", + "name:ar": "أثينا", + "name:arc": "ܐܬܢܘܣ", + "name:arz": "اتينا", + "name:ast": "Atenes", + "name:az": "Afina", + "name:ba": "Афина", + "name:bat-smg": "Atienā", + "name:be": "Афіны", + "name:be-tarask": "Атэны", + "name:bg": "Атина", + "name:bo": "ཨ་ཐེན།", + "name:br": "Aten", + "name:bs": "Atina", + "name:ca": "Atenes", + "name:ceb": "Atenas", + "name:ckb": "ئەسینا", + "name:co": "Atene", + "name:crh": "Atina", + "name:cs": "Athény", + "name:cu": "Аѳинꙑ", + "name:cv": "Афин", + "name:cy": "Athen", + "name:de": "Athen", + "name:diq": "Atêna", + "name:el": "Αθήνα", + "name:en": "Athens", + "name:eo": "Ateno", + "name:es": "Atenas", + "name:et": "Ateena", + "name:eu": "Atenas", + "name:ext": "Atenas", + "name:fa": "آتن", + "name:fi": "Ateena", + "name:fiu-vro": "Ateena", + "name:fr": "Athènes", + "name:frp": "Atèna", + "name:fy": "Atene", + "name:ga": "An Aithin", + "name:gag": "Afina", + "name:gan": "雅典", + "name:gd": "An Àithne", + "name:gl": "Atenas", + "name:gn": "Atena", + "name:grc": "Ἀθῆναι", + "name:gv": "Yn Atheen", + "name:haw": "‘Akenai", + "name:he": "אתונה", + "name:hif": "Athens", + "name:hr": "Atena", + "name:ht": "Atèn", + "name:hu": "Athén", + "name:hy": "Աթենք", + "name:ia": "Athenas", + "name:id": "Athena", + "name:ie": "Athina", + "name:ilo": "Atenas", + "name:io": "Athina", + "name:is": "Aþena", + "name:it": "Atene", + "name:ja": "アテネ", + "name:jbo": "atenas", + "name:jv": "Aténa", + "name:ka": "ათენი", + "name:kab": "Atena", + "name:kk": "Афина", + "name:ko": "아테네", + "name:krc": "Афинле", + "name:ku": "Atîna", + "name:kv": "Афинъяс", + "name:kw": "Athína", + "name:la": "Athenae", + "name:lad": "Atina", + "name:lb": "Athen", + "name:lez": "Афинаяр", + "name:li": "Athene", + "name:lij": "Aten", + "name:lmo": "Atene", + "name:ln": "Atenis", + "name:lt": "Atėnai", + "name:lv": "Atēnas", + "name:mdf": "Афитт", + "name:mi": "Ātene", + "name:mk": "Атина", + "name:mn": "Афин", + "name:ms": "Athens", + "name:mt": "Ateni", + "name:mwl": "Atenas", + "name:nah": "Atēna", + "name:nan": "Athína", + "name:new": "एथेन्स", + "name:nl": "Athene", + "name:nn": "Aten", + "name:no": "Aten", + "name:nov": "Atena", + "name:oc": "Atenas", + "name:os": "Афинæтæ", + "name:pl": "Ateny", + "name:pms": "Atene", + "name:pnt": "Αθήνα", + "name:pt": "Atenas", + "name:qu": "Athina", + "name:ro": "Atena", + "name:roa-rup": "Athina", + "name:roa-tara": "Atene", + "name:ru": "Афины", + "name:rue": "Атены", + "name:sah": "Атина", + "name:sc": "Atene", + "name:scn": "Atini", + "name:sco": "Athens", + "name:se": "Athena", + "name:sh": "Atena", + "name:simple": "Athens", + "name:sk": "Atény", + "name:sl": "Atene", + "name:sq": "Athina", + "name:sr": "Атина", + "name:sr-Latn": "Atina", + "name:stq": "Athene", + "name:sv": "Aten", + "name:sw": "Athens", + "name:szl": "Atyny", + "name:th": "เอเธนส์", + "name:tk": "Afiny", + "name:tl": "Atenas", + "name:tr": "Atina", + "name:tt": "Афиннар", + "name:tw": "Athens", + "name:udm": "Афины", + "name:ug": "ئافېنا", + "name:uk": "Афіни", + "name:ur": "ایتھنز", + "name:uz": "Afina", + "name:vec": "Atene", + "name:vep": "Afinad", + "name:vi": "Athena", + "name:vo": "Atina", + "name:wa": "Atene", + "name:war": "Atenas", + "name:wo": "Aten", + "name:xmf": "ათენი", + "name:yi": "אטען", + "name:yo": "Áténì", + "name:yue": "雅典", + "name:zea": "Athene", + "name:zh": "雅典", + "name:zu": "I-Athene" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 23.7283052, + 37.9839412 + ] + }, + "id": "node/441183" + }, + { + "type": "Feature", + "properties": { + "name": "Ljubljana", + "name:am": "ልዩብልያና", + "name:ar": "ليوبليانا", + "name:arz": "ليوبليانا", + "name:ast": "Liubliana", + "name:az": "Lyublyana", + "name:bar": "Laiboch", + "name:bat-smg": "Liublijana", + "name:be": "Любляна", + "name:be-tarask": "Любляна", + "name:bg": "Любляна", + "name:bo": "ལི་པོ་ཡ་ན།", + "name:ckb": "لیوبلیانا", + "name:crh": "Lüblâna", + "name:cs": "Lublaň", + "name:cu": "Люблꙗна", + "name:cv": "Любляна", + "name:de": "Laibach", + "name:el": "Λιουμπλιάνα", + "name:en": "Ljubljana", + "name:eo": "Ljubljano", + "name:es": "Liubliana", + "name:fa": "لیوبلیانا", + "name:fr": "Ljubljana", + "name:fur": "Lubiane", + "name:ga": "Liúibleána", + "name:gag": "L'yublyana", + "name:gl": "Liubliana", + "name:he": "ליובליאנה", + "name:ht": "Lyoubyana", + "name:hu": "Ljubljana", + "name:hy": "Լյուբլյանա", + "name:is": "Ljubljana", + "name:it": "Lubiana", + "name:ja": "リュブリャナ", + "name:ka": "ლიუბლიანა", + "name:kk": "Любляна", + "name:ko": "류블랴나", + "name:ku": "Ljubljana", + "name:la": "Aemona", + "name:lij": "Lubiann-a", + "name:lmo": "Lübiana", + "name:ln": "Lyublyana", + "name:lt": "Liubliana", + "name:lv": "Ļubļana", + "name:mk": "Љубљана", + "name:nah": "Liubliana", + "name:no": "Ljubljana", + "name:nrm": "Liublianne", + "name:oc": "Ljubljana", + "name:os": "Люблянæ", + "name:pl": "Lublana", + "name:pms": "Lubian-a", + "name:pt": "Liubliana", + "name:ru": "Любляна", + "name:sah": "Любляна", + "name:sc": "Lubiana", + "name:sk": "Ľubľana", + "name:sl": "Ljubljana", + "name:sq": "Lubjana", + "name:sr": "Љубљана", + "name:sv": "Ljubljana", + "name:sw": "Lyublyana", + "name:tg": "Любляна", + "name:th": "ลูบลิยานา", + "name:udm": "Любляна", + "name:ug": "ليۇبليانا", + "name:uk": "Любляна", + "name:ur": "لیوبلیانا", + "name:vec": "Łubiana", + "name:vep": "Lüblän", + "name:wo": "Jubaljana", + "name:zh": "盧布爾雅那", + "name:zh-Hans": "卢布尔雅那" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 14.5069289, + 46.0500268 + ] + }, + "id": "node/6968827" + }, + { + "type": "Feature", + "properties": { + "name": "København", + "name:am": "ኮፐንሀገን", + "name:an": "Copenaguen", + "name:ang": "Cēapmannhæfen", + "name:ar": "كوبنهاغن", + "name:arc": "ܩܘܦܢܗܐܓܢ", + "name:arz": "كوبينهاجين", + "name:ast": "Conpenḥague", + "name:bat-smg": "Kuopenhaga", + "name:be": "Капенгаген", + "name:be-tarask": "Капэнгаген", + "name:bg": "Копенхаген", + "name:bo": "ཁོ་ཕེན་ཧ་ཀེན།", + "name:bs": "Kopenhagen", + "name:ca": "Copenhaguen", + "name:ckb": "کۆپنھاگن", + "name:co": "Copenaghen", + "name:cs": "Kodaň", + "name:csb": "Kòpenhaga", + "name:cu": "Кобєнхавнъ", + "name:cv": "Копенгаген", + "name:cy": "Copenhagen", + "name:da": "København", + "name:de": "Kopenhagen", + "name:diq": "Kopenhag", + "name:ee": "Copenhagen", + "name:el": "Κοπεγχάγη", + "name:en": "Copenhagen", + "name:eo": "Kopenhago", + "name:es": "Copenhague", + "name:et": "Kopenhaagen", + "name:eu": "Kopenhage", + "name:ext": "Copenagui", + "name:fa": "کپنهاگ", + "name:fi": "Kööpenhamina", + "name:fiu-vro": "Kopõnhaagõn", + "name:fo": "Keypmannahavn", + "name:fr": "Copenhague", + "name:frr": "Kopenhuuwen", + "name:fy": "Kopenhagen", + "name:ga": "Cóbanhávan", + "name:gd": "Copenhagen", + "name:gl": "Copenhaguen", + "name:gv": "København", + "name:he": "קופנהגן", + "name:hif": "Copenhagen", + "name:hr": "Kopenhagen", + "name:ht": "Kopènag", + "name:hu": "Koppenhága", + "name:hy": "Կոպենհագեն", + "name:ia": "Copenhagen", + "name:ilo": "Copenhagen", + "name:io": "København", + "name:is": "Kaupmannahöfn", + "name:it": "Copenaghen", + "name:ja": "コペンハーゲン", + "name:ka": "კოპენჰაგენი", + "name:kk": "Копенгаген", + "name:kl": "København", + "name:ko": "코펜하겐", + "name:ku": "Kopenhag", + "name:kv": "Копенгаген", + "name:kw": "Kopenhavn", + "name:ky": "Копенгаген", + "name:la": "Hafnia", + "name:lb": "Kopenhagen", + "name:lij": "Copenaghen", + "name:lmo": "Cupenaghen", + "name:lt": "Kopenhaga", + "name:ltg": "Kopenhaga", + "name:lv": "Kopenhāgena", + "name:mg": "Kaopenagy", + "name:mi": "Copenhagen", + "name:mk": "Копенхаген", + "name:mt": "Kopenħagen", + "name:nah": "Copenague", + "name:nan": "Copenhagen", + "name:nap": "Copenaghen", + "name:nds": "Kopenhagen", + "name:nl": "Kopenhagen", + "name:nn": "København", + "name:no": "København", + "name:nov": "København", + "name:oc": "Copenaga", + "name:os": "Копенгаген", + "name:pl": "Kopenhaga", + "name:pms": "Copenàghen", + "name:pt": "Copenhaga", + "name:qu": "København", + "name:ro": "Copenhaga", + "name:roa-rup": "Copenhagen", + "name:ru": "Копенгаген", + "name:sa": "कोपनहागन", + "name:sah": "Копенһаген", + "name:sc": "Copenaghen", + "name:scn": "Copenaghen", + "name:sco": "Copenhagen", + "name:se": "Københápman", + "name:simple": "Copenhagen", + "name:sk": "Kodaň", + "name:sl": "København", + "name:so": "Kobanhaygan", + "name:sr": "Копенхаген", + "name:st": "Copenhagen", + "name:sv": "Köpenhamn", + "name:szl": "Kopynhaga", + "name:tg": "Копенҳаген", + "name:th": "โคเปนเฮเกน", + "name:tl": "Copenhagen", + "name:tr": "Kopenhag", + "name:tt": "Копенгаген", + "name:tzl": "Cjövnahaun", + "name:udm": "Копенгаген", + "name:ug": "Kopénhagén", + "name:uk": "Копенгаген", + "name:ur": "کوپن ہیگن", + "name:vec": "Copenaghen", + "name:vep": "Kopengagen", + "name:vi": "Copenhagen", + "name:vo": "København", + "name:war": "Copenhagen", + "name:xmf": "კოპენჰაგენი", + "name:yi": "קאפנהאגן", + "name:yo": "Copenhagen", + "name:yue": "哥本哈根", + "name:zh": "哥本哈根" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 12.5700724, + 55.6867243 + ] + }, + "id": "node/13707878" + }, + { + "type": "Feature", + "properties": { + "name": "New Delhi", + "name:ace": "New Delhi", + "name:af": "Nieu-Delhi", + "name:am": "ኒው ዴሊ", + "name:an": "Nueva Delhi", + "name:ang": "Nīƿe Delhi", + "name:ar": "دلهي الجديدة", + "name:az-Arab": "یئنی دهلی", + "name:azb": "یئنی دهلی", + "name:bat-smg": "Naujasės Delės", + "name:be": "Нью-Дэлі", + "name:be-tarask": "Нью-Дэлі", + "name:bg": "Ню Делхи", + "name:bo": "ནེའུ་དིལ་ལི།", + "name:bpy": "নুৱা দিল্লী", + "name:br": "New Delhi", + "name:bs": "New Delhi", + "name:ca": "Nova Delhi", + "name:cbk-zam": "Nueva Delhi", + "name:ckb": "نیودلھی", + "name:co": "New Delhi", + "name:crh": "Nyu Deli", + "name:cs": "Nové Dillí", + "name:cy": "Delhi Newydd", + "name:da": "New Delhi", + "name:de": "Neu-Delhi", + "name:diq": "Delhiyo Newe", + "name:dv": "ނިއުދިއްލީ", + "name:el": "Νέο Δελχί", + "name:en": "New Delhi", + "name:eo": "Nov-Delhio", + "name:es": "Nueva Delhi", + "name:et": "New Delhi", + "name:eu": "New Delhi", + "name:ext": "Nueva Delhi", + "name:fa": "دهلی نو", + "name:fi": "New Delhi", + "name:fiu-vro": "New Delhi", + "name:fr": "New Delhi", + "name:fy": "Nij Delly", + "name:ga": "Nua-Deilí", + "name:gd": "New Delhi", + "name:gl": "नई दिल्ली", + "name:gr": "Νεοδελίς", + "name:grc": "Νεοδελίς", + "name:gv": "Delhi Noa", + "name:he": "ניו דלהי", + "name:hif": "New Delhi", + "name:hr": "New Delhi", + "name:ht": "Niou Deli", + "name:hu": "Újdelhi", + "name:hy": "Նյու Դելի", + "name:hyw": "Նիւ Տելհի", + "name:ia": "Nove Delhi", + "name:id": "New Delhi", + "name:io": "Nova-Delhi", + "name:is": "Nýja Delí", + "name:it": "Nuova Delhi", + "name:ja": "ニューデリー", + "name:jv": "New Delhi", + "name:ka": "ნიუ-დელი", + "name:kk": "Нью-Дели", + "name:kl": "New Delhi", + "name:ko": "뉴델리", + "name:ks": "نٔو دلھی", + "name:ku": "Delhiya Nû", + "name:la": "Dellium Novum", + "name:lb": "Nei-Delhi", + "name:lij": "Neuva Delhi", + "name:lmo": "New Delhi", + "name:lt": "Naujasis Delis", + "name:lv": "Ņūdeli", + "name:mg": "New Delhi", + "name:mi": "New Delhi", + "name:mk": "Њу Делхи", + "name:mn": "Шинэ Дели", + "name:ms": "New Delhi", + "name:mzn": "نو دهلی", + "name:nah": "Yancuīc Deli", + "name:nan": "Sin Delhi", + "name:ne": "नयाँ दिल्ली", + "name:nl": "New Delhi", + "name:nn": "New Delhi", + "name:no": "New Delhi", + "name:nov": "Novi Deli", + "name:oc": "Nòva Delhi", + "name:os": "Нью-Дели", + "name:pam": "New Delhi", + "name:pl": "Nowe Delhi", + "name:pms": "New Delhi", + "name:pt": "Nova Deli", + "name:qu": "Musuq Dilhi", + "name:ro": "New Delhi", + "name:ru": "Нью-Дели", + "name:sa": "नवदेहली", + "name:sah": "Саҥа Дели", + "name:sat": "ᱱᱟᱶᱟ ᱫᱤᱞᱞᱤ", + "name:scn": "Nova Delhi", + "name:sco": "New Delhi", + "name:si": "නව දිල්ලිය", + "name:simple": "New Delhi", + "name:sk": "Naí Dillí", + "name:sl": "New Delhi", + "name:so": "New Delhi", + "name:sq": "New Delhi", + "name:sr": "Њу Делхи", + "name:sv": "New Delhi", + "name:sw": "New Delhi", + "name:tg": "Ню-Дели", + "name:th": "นิวเดลี", + "name:tl": "Bagong Delhi", + "name:tr": "Yeni Delhi", + "name:ug": "يېڭى دېھلى", + "name:uk": "Нью-Делі", + "name:ur": "نئی دہلی", + "name:vi": "Tân Delhi", + "name:war": "New Delhi", + "name:yi": "ניי דעלי", + "name:yo": "New Delhi", + "name:yue": "新德里", + "name:zh": "新德里" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 77.2090057, + 28.6138954 + ] + }, + "id": "node/16173236" + }, + { + "type": "Feature", + "properties": { + "name": "Wien", + "name:ace": "Wina", + "name:af": "Wene", + "name:am": "ቪየና", + "name:an": "Viena", + "name:ar": "فيينا", + "name:arc": "ܒܝܝܢܐ", + "name:arz": "فيينا", + "name:ast": "Viena", + "name:az": "Vyana", + "name:ba": "Beč", + "name:bar": "Wean", + "name:bat-smg": "Viena", + "name:be": "Вена", + "name:be-tarask": "Вена", + "name:bg": "Виена", + "name:bi": "Vienna", + "name:bo": "ཝི་ཨེ་ན།", + "name:br": "Vienna", + "name:bs": "Beč", + "name:ca": "Viena", + "name:ce": "Вена", + "name:ceb": "Vienna", + "name:ckb": "ڤیێنا", + "name:co": "Vienna", + "name:crh": "Viyana", + "name:cs": "Vídeň", + "name:cv": "Вена", + "name:de": "Wien", + "name:diq": "Wiyana", + "name:ee": "Vienna", + "name:el": "Βιέννη", + "name:en": "Vienna", + "name:eo": "Vieno", + "name:es": "Viena", + "name:et": "Viin", + "name:eu": "Viena", + "name:ext": "Viena", + "name:fa": "وین", + "name:fi": "Wien", + "name:fiu-vro": "Viin", + "name:fr": "Vienne", + "name:frp": "Vièna", + "name:fur": "Viene", + "name:fy": "Wenen", + "name:ga": "Vín", + "name:gag": "Vena", + "name:gd": "Vienna", + "name:gl": "Viena", + "name:gv": "Veen", + "name:he": "וינה", + "name:hif": "Vienna", + "name:hr": "Beč", + "name:ht": "Vyèn", + "name:hu": "Bécs", + "name:hy": "Վիեննա", + "name:ia": "Vienna", + "name:id": "Wina", + "name:ie": "Vienna", + "name:ilo": "Vienna", + "name:is": "Vín", + "name:it": "Vienna", + "name:ja": "ウィーン", + "name:jv": "Wina", + "name:ka": "ვენა", + "name:kab": "Wien", + "name:kk": "Вена", + "name:ko": "빈", + "name:koi": "Вин", + "name:krc": "Вена", + "name:ku": "Viyana", + "name:kv": "Вена", + "name:ky": "Вена", + "name:la": "Vindobona", + "name:lez": "Вена", + "name:li": "Wene", + "name:lij": "Vienna", + "name:lmo": "Viena", + "name:ln": "Viɛnɛ", + "name:lt": "Viena", + "name:lv": "Vīne", + "name:mhr": "Вена", + "name:mi": "Whiena", + "name:mk": "Виена", + "name:mn": "Вена", + "name:mrj": "Вена", + "name:ms": "Vienna", + "name:mzn": "وین", + "name:nah": "Viena", + "name:nds": "Wien", + "name:nds-nl": "Wienen", + "name:nl": "Wenen", + "name:no": "Wien", + "name:oc": "Viena", + "name:os": "Венæ", + "name:pap": "Viena", + "name:pih": "Wienna", + "name:pl": "Wiedeń", + "name:pms": "Vien-a", + "name:ps": "وين", + "name:pt": "Viena", + "name:rm": "Vienna", + "name:rmy": "Bech", + "name:ro": "Viena", + "name:roa-tara": "Vienne", + "name:ru": "Вена", + "name:rue": "Відень", + "name:sah": "Вена", + "name:sc": "Vienna", + "name:scn": "Vienna", + "name:sco": "Vienna", + "name:sh": "Beč", + "name:sk": "Viedeň", + "name:sl": "Dunaj", + "name:so": "Fiyena", + "name:sq": "Vjena", + "name:sr": "Беч", + "name:st": "Vienna", + "name:sv": "Wien", + "name:sw": "Vienna", + "name:szl": "Wiedziyń", + "name:tg": "Вена", + "name:th": "เวียนนา", + "name:tk": "Wena", + "name:tl": "Vienna", + "name:tr": "Viyana", + "name:tt": "Вена шәһәре", + "name:tzl": "Viadna", + "name:udm": "Вена", + "name:ug": "Wyéna", + "name:uk": "Відень", + "name:ur": "ویانا", + "name:uz": "Vena", + "name:vec": "Viena", + "name:vep": "Ven", + "name:vi": "Viên", + "name:war": "Vienna", + "name:wo": "Wiyen", + "name:wuu": "维恩纳", + "name:yi": "וויען", + "name:yo": "Vienna", + "name:yue": "維也納", + "name:yue-Latn": "Wai4 Jaa5 Naap6", + "name:zh": "維也納", + "name:zh-Hans": "维也纳", + "name:zh-Hant": "維也納", + "name:zh-Latn": "Wéiyěnà" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 16.3725042, + 48.2083537 + ] + }, + "id": "node/17328659" + }, + { + "type": "Feature", + "properties": { + "name": "Bern", + "name:am": "ቤርን", + "name:an": "Berna", + "name:ar": "برن", + "name:arc": "ܒܪܢ", + "name:arz": "بيرن", + "name:ast": "Berna", + "name:azb": "برن", + "name:be": "Берн", + "name:be-tarask": "Бэрн", + "name:bg": "Берн", + "name:bo": "པེར་ནེ།", + "name:br": "Bern", + "name:ca": "Berna", + "name:ckb": "بێرن", + "name:cs": "Bern", + "name:cv": "Берн", + "name:de": "Bern", + "name:el": "Βέρνη", + "name:en": "Bern", + "name:eo": "Berno", + "name:es": "Berna", + "name:eu": "Berna", + "name:ext": "Berna", + "name:fa": "برن", + "name:fi": "Bern", + "name:fr": "Berne", + "name:frp": "Bèrna", + "name:fur": "Berna", + "name:ga": "Beirn", + "name:gd": "Berne", + "name:gl": "Berna - Bern", + "name:gsw": "Bärn", + "name:gv": "Berne", + "name:he": "ברן", + "name:ht": "Bèn", + "name:hu": "Bern", + "name:hy": "Բեռն", + "name:ilo": "Berna", + "name:is": "Bern", + "name:it": "Berna", + "name:ja": "ベルン", + "name:ka": "ბერნი", + "name:kab-Arab": "بيرن", + "name:kk": "Берн", + "name:kk-Arab": "بەرن", + "name:kmr": "بەرن", + "name:ko": "베른", + "name:ks": "برن", + "name:ku": "Bern", + "name:ku-Arab": "بەرن", + "name:la": "Berna", + "name:lij": "Berna", + "name:lmo": "Berna", + "name:lrc": "برن", + "name:lt": "Bernas", + "name:lv": "Berne", + "name:lzh": "伯恩", + "name:mk": "Берн", + "name:nah": "Berna", + "name:nds": "Bern", + "name:no": "Bern", + "name:oc": "Bèrna", + "name:os": "Берн", + "name:ota": "برن", + "name:pdc": "Bann, Schweiz", + "name:pl": "Berno", + "name:pms": "Berna", + "name:ps": "برن", + "name:pt": "Berna", + "name:rm": "Berna", + "name:ro": "Berna", + "name:ru": "Берн", + "name:sah": "Берн", + "name:scn": "Berna", + "name:sk": "Bern", + "name:sl": "Berna", + "name:sq": "Berna", + "name:sr": "Берн", + "name:sv": "Bern", + "name:tg": "Берн", + "name:th": "เบิร์น", + "name:tpi": "Berne", + "name:tt": "Берн", + "name:udm": "Берн", + "name:ug": "بېرن", + "name:uk": "Берн", + "name:ur": "برن", + "name:vec": "Berna", + "name:wuu": "办合纳", + "name:xmf": "ბერნი", + "name:yi": "בערן", + "name:yo": "Berne", + "name:yue": "伯恩", + "name:zh": "伯尔尼 / 伯恩 / 伯爾尼", + "name:zh-HK": "伯爾尼", + "name:zh-Hans": "伯尔尼", + "name:zh-Hant": "伯恩 / 伯爾尼", + "name:zh-TW": "伯恩" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 7.4514512, + 46.9482713 + ] + }, + "id": "node/18477455" + }, + { + "type": "Feature", + "properties": { + "name": "Ottawa", + "name:am": "ኦታዋ", + "name:ar": "أوتاوا", + "name:av": "Оттава", + "name:az": "Ottava", + "name:be": "Атава", + "name:be-tarask": "Атава", + "name:bg": "Отава", + "name:bo": "ཨོ་ཏ་ཝ།", + "name:chr": "ᎠᏔᏩ, ᎨᎾᏓ", + "name:ckb": "ئۆتاوا", + "name:cv": "Оттава", + "name:de": "Ottawa", + "name:el": "Οττάβα", + "name:en": "Ottawa", + "name:eo": "Otavo", + "name:es": "Ottawa", + "name:eu": "Ottawa", + "name:fa": "اتاوا", + "name:fr": "Ottawa", + "name:gl": "Otava - Ottawa", + "name:he": "אוטווה", + "name:ht": "Otawa", + "name:hu": "Ottawa", + "name:hy": "Օտտավա", + "name:is": "Ottawa", + "name:iu": "ᐊᑐᕚ", + "name:iu-Latn": "Atavaa", + "name:ja": "オタワ", + "name:ka": "ოტავა", + "name:kk": "Оттава", + "name:ko": "오타와", + "name:ku": "Ottawa", + "name:la": "Ottava", + "name:lt": "Otava", + "name:lv": "Otava", + "name:mk": "Отава", + "name:mn": "Оттава", + "name:moe": "Utaua", + "name:moh": "Kanà:tso", + "name:mzn": "اوتآوآ", + "name:nah": "Ottahua", + "name:oc": "Ottawa", + "name:os": "Оттавæ", + "name:pl": "Ottawa", + "name:ru": "Оттава", + "name:sah": "Оттава", + "name:sr": "Отава", + "name:sv": "Ottawa", + "name:th": "ออตตาวา", + "name:uk": "Оттава", + "name:ur": "اوٹاوا", + "name:uz": "Ottava", + "name:yi": "אטאווא", + "name:yue": "渥太華", + "name:zh": "渥太華", + "name:zh-Hans": "渥太华", + "name:zh-Hant": "渥太華" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -75.6901106, + 45.4208777 + ] + }, + "id": "node/18886011" + }, + { + "type": "Feature", + "properties": { + "name": "Oslo", + "name:am": "ኦስሎ", + "name:ar": "أوسلو", + "name:arc": "ܐܘܣܠܘ", + "name:ast": "Oslo", + "name:bat-smg": "Uoslos", + "name:be": "Осла", + "name:be-tarask": "Осьлё", + "name:bg": "Осло", + "name:bo": "ཨོ་སི་ལོ།", + "name:bpy": "ওসলো", + "name:ca": "Oslo", + "name:ckb": "ئۆسلۆ", + "name:co": "Oslu", + "name:cv": "Осло", + "name:de": "Oslo", + "name:el": "Όσλο", + "name:en": "Oslo", + "name:eo": "Oslo", + "name:es": "Oslo", + "name:fa": "اسلو", + "name:fr": "Oslo", + "name:ga": "Osló", + "name:he": "אוסלו", + "name:hu": "Oslo", + "name:hy": "Օսլո", + "name:is": "Ósló", + "name:it": "Oslo", + "name:ja": "オスロ", + "name:ka": "ოსლო", + "name:kk": "Осло", + "name:ko": "오슬로", + "name:ku": "Oslo", + "name:kv": "Осло", + "name:ky": "Осло", + "name:la": "Asloa", + "name:lez": "Осло", + "name:lt": "Oslas", + "name:lzh": "奧斯陸", + "name:mi": "Ōhoro", + "name:mk": "Осло", + "name:mrj": "Осло", + "name:myv": "Осло ош", + "name:mzn": "اسلو", + "name:nds": "Oslo", + "name:ne": "ओस्लो", + "name:nn": "Oslo", + "name:no": "Oslo", + "name:oc": "Òslo", + "name:os": "Осло", + "name:pl": "Oslo", + "name:pms": "Òslo", + "name:ps": "اوسلو", + "name:pt": "Oslo", + "name:ru": "Осло", + "name:sah": "Осло", + "name:scn": "Oslu", + "name:sr": "Осло", + "name:sv": "Oslo", + "name:tg": "Осло", + "name:th": "ออสโล", + "name:tt": "Осло", + "name:udm": "Осло", + "name:ug": "ئوسلو", + "name:uk": "Осло", + "name:ur": "اوسلو", + "name:yue": "奧斯陸", + "name:zh": "奧斯陸", + "name:zh-Hans": "奥斯陆" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 10.7389701, + 59.9133301 + ] + }, + "id": "node/20981158" + }, + { + "type": "Feature", + "properties": { + "name": "بغداد", + "name:ace": "Baghdad", + "name:af": "Bagdad", + "name:am": "ባግዳድ", + "name:ar": "بغداد", + "name:arc": "ܒܓܕܐܕ", + "name:arz": "بغداد", + "name:az": "Bağdad", + "name:ba": "Бағдад", + "name:bat-smg": "Bagdads", + "name:be": "Багдад", + "name:bg": "Багдад", + "name:bo": "པ་ག་ཏ", + "name:br": "Baghdad", + "name:ckb": "بەغدا", + "name:crh": "Bağdad", + "name:cs": "Bagdád", + "name:cv": "Пахтат", + "name:cy": "Baghdad", + "name:da": "Bagdad", + "name:de": "Bagdad", + "name:dv": "ބަޣުދާދު", + "name:el": "Βαγδάτη", + "name:en": "Baghdad", + "name:eo": "Bagdado", + "name:es": "Bagdad", + "name:et": "Bagdad", + "name:eu": "Bagdad", + "name:fa": "بغداد", + "name:fi": "Bagdad", + "name:fr": "Bagdad", + "name:gd": "Baghdad", + "name:he": "בגדד", + "name:hif": "Baghdad", + "name:hr": "Bagdad", + "name:hu": "Bagdad", + "name:hy": "Բաղդադ", + "name:ilo": "Baghdad", + "name:is": "Bagdad", + "name:it": "Bagdad", + "name:ja": "バグダード", + "name:jbo": "bagdad", + "name:ka": "ბაღდადი", + "name:kab": "Beɣdad", + "name:kk": "Бағдат", + "name:kl": "Baghdad", + "name:ko": "바그다드", + "name:ks": "بغداد", + "name:ku": "Bexda", + "name:kw": "Baldak", + "name:ky": "Багдад", + "name:la": "Bagdatum", + "name:lmo": "Baghdad", + "name:lrc": "بٱغداد", + "name:lt": "Bagdadas", + "name:lv": "Bagdāde", + "name:mhr": "Багдад", + "name:mi": "Baghdad", + "name:mk": "Багдад", + "name:mn": "Багдад", + "name:ms": "Baghdad", + "name:mwl": "Bagdade", + "name:mzn": "بقداتی", + "name:nah": "Bagdād", + "name:nan": "Baghdad", + "name:nl": "Bagdad", + "name:no": "Bagdad", + "name:oc": "Bagdad", + "name:os": "Багдад", + "name:pih": "Baagdad", + "name:pl": "Bagdad", + "name:pms": "Baghdad", + "name:ps": "بغداد", + "name:pt": "Bagdá", + "name:roa-tara": "Baghdad", + "name:ru": "Багдад", + "name:rue": "Баґдад", + "name:sah": "Багдад", + "name:scn": "Baghdad", + "name:sco": "Baghdad", + "name:simple": "Baghdad", + "name:sk": "Bagdad", + "name:so": "Baqdaad", + "name:sq": "Bagdadi", + "name:sr": "Багдад", + "name:sv": "Bagdad", + "name:sw": "Baghdad", + "name:tg": "Бағдод", + "name:th": "แบกแดด", + "name:tk": "Bagdat", + "name:tl": "Baghdad", + "name:tr": "Bağdat", + "name:tt": "Багдад", + "name:tzl": "Baghdad", + "name:ug": "باغداد", + "name:uk": "Багдад", + "name:ur": "بغداد", + "name:vi": "Bagdad", + "name:war": "Baghdad", + "name:yi": "באגדאד", + "name:yo": "Baghdad", + "name:yue": "巴格達", + "name:zh": "巴格達/巴格达", + "name:zh-Hans": "巴格达" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 44.3872213, + 33.3061701 + ] + }, + "id": "node/21034458" + }, + { + "type": "Feature", + "properties": { + "name": "Madrid", + "name:ab": "Мaдрид", + "name:am": "ማድሪድ", + "name:an": "Madrit", + "name:ar": "مدريد", + "name:arc": "ܡܕܪܝܕ", + "name:arz": "مدريد", + "name:ba": "Мадрид", + "name:bat-smg": "Madrids", + "name:be": "Мадрыд", + "name:be-tarask": "Мадрыд", + "name:bg": "Мадрид", + "name:bo": "མ་ད་རིད།", + "name:br": "Madrid", + "name:ca": "Madrid", + "name:ckb": "مادرید", + "name:co": "Madridi", + "name:cs": "Madrid", + "name:cv": "Мадрид", + "name:de": "Madrid", + "name:el": "Μαδρίτη", + "name:en": "Madrid", + "name:eo": "Madrido", + "name:es": "Madrid", + "name:eu": "Madril", + "name:ext": "Mairil", + "name:fa": "مادرید", + "name:fr": "Madrid", + "name:ga": "Maidrid", + "name:haw": "Makelika", + "name:he": "מדריד", + "name:hu": "Madrid", + "name:hy": "Մադրիդ", + "name:is": "Madrid", + "name:it": "Madrid", + "name:ja": "マドリード", + "name:ka": "მადრიდი", + "name:kab": "Madrid", + "name:kbd": "Мадрид", + "name:kk": "Мадрид", + "name:ko": "마드리드", + "name:koi": "Мадрид", + "name:ku": "Madrîd", + "name:kv": "Мадрид", + "name:ky": "Мадрид", + "name:la": "Matritum", + "name:lez": "Мадрид", + "name:lt": "Madridas", + "name:lv": "Madride", + "name:mhr": "Мадрид", + "name:mk": "Мадрид", + "name:mn": "Мадрид", + "name:mrj": "Мадрид", + "name:myv": "Мадрид ош", + "name:mzn": "مادرید", + "name:nds-nl": "Medrid", + "name:no": "Madrid", + "name:oc": "Madrid", + "name:os": "Мадрид", + "name:pl": "Madryt", + "name:ru": "Мадрид", + "name:rue": "Мадрід", + "name:sa": "मद्रिद्", + "name:sah": "Мадрид", + "name:sk": "Madrid", + "name:sl": "Madrid", + "name:sq": "Madridi", + "name:sr": "Мадрид", + "name:sv": "Madrid", + "name:szl": "Madryt", + "name:tet": "Madríd", + "name:tg": "Мадрид", + "name:th": "มาดริด", + "name:udm": "Мадрид", + "name:uk": "Мадрид", + "name:ur": "میڈرڈ", + "name:xmf": "მადრიდი", + "name:yi": "מאדריד", + "name:yue": "馬德里", + "name:zh": "馬德里/马德里", + "name:zh-Hans": "马德里", + "name:zh_pinyin": "Mǎdélǐ" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -3.7035825, + 40.4167047 + ] + }, + "id": "node/21068295" + }, + { + "type": "Feature", + "properties": { + "name": "Canberra", + "name:am": "ካንበራ", + "name:ar": "كانبرا", + "name:az": "Kanberra", + "name:bat-smg": "Kanbera", + "name:be": "Канбера", + "name:be-tarask": "Канбэра", + "name:bg": "Канбера", + "name:bo": "ཁན་པེ་ར།", + "name:ckb": "کانبێرا", + "name:cu": "Канбєра", + "name:cv": "Канберра", + "name:de": "Canberra", + "name:el": "Καμπέρα", + "name:en": "Canberra", + "name:eo": "Kanbero", + "name:es": "Canberra", + "name:fa": "کانبرا", + "name:fr": "Canberra", + "name:fy": "Kanberra", + "name:he": "קנברה", + "name:ht": "Kanbera", + "name:hu": "Canberra", + "name:hy": "Կանբեռա", + "name:is": "Canberra", + "name:ja": "キャンベラ", + "name:ka": "კანბერა", + "name:ko": "캔버라", + "name:ku": "Kanberra", + "name:ky": "Канберра", + "name:lt": "Kanbera", + "name:lv": "Kanbera", + "name:mhr": "Канберра", + "name:mi": "Kānapera", + "name:mk": "Канбера", + "name:mn": "Канберра", + "name:nah": "Camberra", + "name:oc": "Canberra", + "name:os": "Канберрæ", + "name:pl": "Canberra", + "name:pt": "Camberra", + "name:ru": "Канберра", + "name:sah": "Канберра", + "name:si": "කැන්බරා", + "name:so": "Kanbera", + "name:sr": "Канбера", + "name:sv": "Canberra", + "name:tet": "Kamberra", + "name:tg": "Канберра", + "name:th": "แคนเบอร์รา", + "name:tpi": "Kambra", + "name:tt": "Канберра", + "name:ug": "Kanbérra", + "name:uk": "Канберра", + "name:ur": "کینبرا", + "name:vep": "Kanberr", + "name:wuu": "坎培拉", + "name:xmf": "ქანბერა", + "name:yi": "קאנבערא", + "name:yue": "坎培拉", + "name:zh": "堪培拉" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 149.1012676, + -35.2975906 + ] + }, + "id": "node/21674637" + }, + { + "type": "Feature", + "properties": { + "name": "کابل", + "name:af": "Kaboel", + "name:am": "ካቡል", + "name:ar": "كابل", + "name:arc": "ܩܐܒܘܠ", + "name:ast": "Kabul", + "name:az": "Kabil", + "name:azb": "کابل", + "name:be": "Кабул", + "name:be-tarask": "Кабул", + "name:bg": "Кабул", + "name:bo": "ཁ་པུལ།", + "name:br": "Kaboul", + "name:ce": "Кабул", + "name:ckb": "کابول", + "name:cs": "Kábul", + "name:cv": "Кабул", + "name:da": "Kabul", + "name:de": "Kabul", + "name:diq": "Kabil", + "name:el": "Καμπούλ", + "name:en": "Kabul", + "name:eo": "Kabulo", + "name:es": "Kabul", + "name:et": "Kabul", + "name:eu": "Kabul", + "name:fa": "كابل", + "name:fi": "Kabul", + "name:fr": "Kaboul", + "name:frp": "Caboul", + "name:fy": "Kabûl", + "name:ga": "Cabúl", + "name:gl": "Kabul", + "name:gr": "Καβούλη", + "name:grc": "Καβούλη", + "name:he": "קאבול", + "name:hr": "Kabul", + "name:ht": "Kaboul", + "name:hu": "Kabul", + "name:hy": "Քաբուլ", + "name:id": "Kabul", + "name:is": "Kabúl", + "name:it": "Kabul", + "name:ja": "カーブル", + "name:ka": "ქაბული", + "name:kab": "Kabul", + "name:km": "ទីក្រុងកាបូល", + "name:ko": "카불", + "name:ks": "کابل", + "name:ku": "Kabûl", + "name:la": "Cabura", + "name:lb": "Kabul", + "name:lrc": "کابول", + "name:lt": "Kabulas", + "name:lv": "Kabula", + "name:mdf": "Кабул", + "name:mhr": "Кабул", + "name:mi": "Kapūru", + "name:mk": "Кабул", + "name:mn": "Кабул", + "name:nah": "Cabul", + "name:ne": "काबुल", + "name:nl": "Kaboel", + "name:no": "Kabul", + "name:oc": "Kabol", + "name:os": "Кабул", + "name:ota": "کابل", + "name:pl": "Kabul", + "name:ps": "کابل", + "name:pt": "Cabul", + "name:ru": "Кабул", + "name:sd": "ڪابل", + "name:sk": "Kábul", + "name:sl": "Kabul", + "name:sq": "Kabuli", + "name:sr": "Кабул", + "name:sv": "Kabul", + "name:syc": "ܩܐܒܘܠ", + "name:tg": "Кобул", + "name:th": "คาบูล", + "name:tr": "Kâbil", + "name:tt": "Кабул", + "name:ug": "كابۇل", + "name:uk": "Кабул", + "name:ur": "کابل", + "name:vi": "Kabul", + "name:yi": "קאבול", + "name:yue": "喀布爾", + "name:zh": "喀布尔/喀布爾", + "name:zh-Hans": "喀布尔", + "name:zh-Hant": "喀布爾" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 69.1776838, + 34.5260109 + ] + }, + "id": "node/21716195" + }, + { + "type": "Feature", + "properties": { + "name": "Pretoria", + "name:af": "Pretoria", + "name:am": "ፕሪቶሪያ", + "name:an": "Pretoria", + "name:ar": "بريتوريا", + "name:ast": "Pretoria", + "name:avk": "Pretoria", + "name:az": "Pretoriya", + "name:be": "Прэторыя", + "name:be-tarask": "Прэторыя", + "name:bg": "Претория", + "name:bo": "ཕི་རི་ཐོ་རི་ཡ།", + "name:br": "Pretoria", + "name:bs": "Pretoria", + "name:ca": "Pretòria", + "name:ce": "Претори", + "name:ceb": "Pretoria", + "name:ckb": "پرێتۆریا", + "name:cs": "Pretoria", + "name:cy": "Pretoria", + "name:da": "Pretoria", + "name:de": "Pretoria", + "name:el": "Πρετόρια", + "name:en": "Pretoria", + "name:eo": "Pretorio", + "name:es": "Pretoria", + "name:et": "Pretoria", + "name:eu": "Pretoria", + "name:fa": "پرتوریا", + "name:fi": "Pretoria", + "name:fr": "Pretoria", + "name:frp": "Pretoria", + "name:frr": "Pretoria", + "name:fy": "Pretoria", + "name:ga": "Pretoria", + "name:gd": "Pretoria", + "name:gl": "Pretoria", + "name:gn": "Pretoria", + "name:ha": "Pretoria", + "name:hak": "Pretoria", + "name:he": "פרטוריה", + "name:hif": "Pretoria", + "name:hr": "Pretoria", + "name:hsb": "Pretoria", + "name:ht": "Pretoria", + "name:hu": "Pretoria", + "name:hy": "Պրետորիա", + "name:ia": "Pretoria", + "name:id": "Pretoria", + "name:ie": "Pretoria", + "name:io": "Pretoria", + "name:is": "Pretoría", + "name:it": "Pretoria", + "name:ja": "プレトリア", + "name:jv": "Pretoria", + "name:ka": "პრეტორია", + "name:kab": "Pretoria", + "name:kg": "Pretoria", + "name:kk": "Претория", + "name:ko": "프리토리아", + "name:ku": "Pretoria", + "name:kw": "Pretoria", + "name:ky": "Претория", + "name:la": "Prætoria", + "name:lb": "Pretoria", + "name:lfn": "Pretoria", + "name:lij": "Pretoria", + "name:lmo": "Pretoria", + "name:ln": "Pretoria", + "name:lt": "Pretorija", + "name:lv": "Pretorija", + "name:mdf": "Претория", + "name:mg": "Pretoria", + "name:mi": "Piritōria", + "name:mk": "Преторија", + "name:ms": "Pretoria", + "name:nan": "Tshwane", + "name:ne": "प्रिटोरीया", + "name:nl": "Pretoria", + "name:no": "Pretoria", + "name:nov": "Pretoria", + "name:nso": "Pretoria", + "name:ny": "Pretoria", + "name:oc": "Pretòria", + "name:os": "Претори", + "name:pdc": "Pretoria", + "name:pl": "Pretoria", + "name:pms": "Pretoria", + "name:ps": "پرتوریا", + "name:pt": "Pretória", + "name:qu": "Priturya", + "name:rm": "Pretoria", + "name:ro": "Pretoria", + "name:ru": "Претория", + "name:sc": "Pretòria", + "name:scn": "Pretoria", + "name:sco": "Pretoria", + "name:se": "Pretoria", + "name:sh": "Pretoria", + "name:sk": "Pretória", + "name:sl": "Pretorija", + "name:sn": "Pretoria", + "name:so": "Pretoria", + "name:sq": "Pretoria", + "name:sr": "Преторија", + "name:ss": "IPitoli", + "name:sv": "Pretoria", + "name:sw": "Pretoria", + "name:szl": "Pretoria", + "name:tg": "Претория", + "name:th": "พริทอเรีย", + "name:tl": "Pretoria", + "name:tr": "Pretoria", + "name:ts": "Pitori", + "name:tt": "Pretoriä", + "name:udm": "Претория", + "name:ug": "Prétoriye", + "name:uk": "Преторія", + "name:ur": "پریٹوریا", + "name:uz": "Pretoriya", + "name:ve": "Pretoria", + "name:vec": "Pretoria", + "name:vep": "Pretorii", + "name:vi": "Pretoria", + "name:vo": "Pretoria", + "name:war": "Pretoria", + "name:wuu": "比勒陀利亚", + "name:xh": "E-Pitoli", + "name:xmf": "პრეტორია", + "name:yo": "Pretoria", + "name:zea": "Pretoria", + "name:zh": "比勒陀利亞", + "name:zu": "iPitoli" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 28.1879101, + -25.7459277 + ] + }, + "id": "node/25503669" + }, + { + "type": "Feature", + "properties": { + "name": "Ankara", + "name:ab": "Анкара", + "name:am": "አንካራ", + "name:ang": "Ancyra", + "name:ar": "أنقرة", + "name:arc": "ܐܢܩܪܐ", + "name:arz": "انقره", + "name:av": "Анкара", + "name:be": "Анкара", + "name:be-tarask": "Анкара", + "name:bg": "Анкара", + "name:bjn": "Angkara", + "name:bo": "ཨན་ཁ་ར།", + "name:br": "Ankara", + "name:cdo": "Ăng-kā-lá", + "name:ckb": "ئەنقەرە", + "name:de": "Ankara", + "name:el": "Άγκυρα", + "name:en": "Ankara", + "name:eo": "Ankaro", + "name:es": "Ankara", + "name:eu": "Ankara", + "name:fa": "آنکارا", + "name:fr": "Ankara", + "name:gl": "Ancara", + "name:he": "אנקרה", + "name:hu": "Ankara", + "name:hy": "Անկարա", + "name:ie": "Ancara", + "name:is": "Ankara", + "name:it": "Ankara", + "name:ja": "アンカラ", + "name:ka": "ანკარა", + "name:kk": "Анкара", + "name:ko": "앙카라", + "name:koi": "Анкара", + "name:ku": "Enqere", + "name:ky": "Анкара", + "name:la": "Ancyra", + "name:lbe": "Анкъара", + "name:mdf": "Анкара", + "name:mhr": "Анкара", + "name:mi": "Anakara", + "name:mk": "Анкара", + "name:mn": "Анкара", + "name:mrj": "Анкара", + "name:mzn": "آنکارا", + "name:nah": "Ancara", + "name:nl": "Ankara", + "name:no": "Ankara", + "name:oc": "Ankara", + "name:os": "Анкара", + "name:pl": "Ankara", + "name:ps": "انقره", + "name:pt": "Ancara", + "name:roa-rup": "Ancara", + "name:ru": "Анкара", + "name:sah": "Анкара", + "name:sr": "Анкара", + "name:sv": "Ankara", + "name:tg": "Анкара", + "name:th": "อังการา", + "name:tr": "Ankara", + "name:tt": "Әнкара", + "name:udm": "Анкара", + "name:ug": "Enqere", + "name:uk": "Анкара", + "name:ur": "انقرہ", + "name:vep": "Ankar", + "name:wuu": "安卡拉", + "name:xmf": "ანკარა", + "name:yi": "אנקארא", + "name:yue": "安卡拉", + "name:zh": "安卡拉", + "name:zza": "Anqara" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 32.8540482, + 39.9207886 + ] + }, + "id": "node/25869410" + }, + { + "type": "Feature", + "properties": { + "name": "Stockholm", + "name:am": "ስቶኮልም", + "name:an": "Estocolmo", + "name:ang": "Stoccholm", + "name:ar": "ستوكهولم", + "name:arc": "ܣܛܘܩܗܘܠܡ", + "name:arz": "ستوكهولم", + "name:ast": "Estocolmu", + "name:az": "Stokholm", + "name:bat-smg": "Stuokhuolms", + "name:be": "Стакгольм", + "name:be-tarask": "Стакгольм", + "name:bg": "Стокхолм", + "name:bo": "སི་ཏོག་ཧོ་ལིམ།", + "name:ca": "Estocolm", + "name:ckb": "ستۆکھۆڵم", + "name:co": "Stoccolma", + "name:cs": "Stockholm", + "name:csb": "Sztokhòlm", + "name:cv": "Стокгольм", + "name:da": "Stockholm", + "name:de": "Stockholm", + "name:diq": "Stokholm", + "name:el": "Στοκχόλμη", + "name:en": "Stockholm", + "name:eo": "Stokholmo", + "name:es": "Estocolmo", + "name:et": "Stockholm", + "name:eu": "Stockholm", + "name:ext": "Estocolmu", + "name:fa": "استکهلم", + "name:fi": "Tukholma", + "name:fit": "Stokholmi", + "name:fiu-vro": "Stokholm", + "name:fo": "Stokkhólmur", + "name:fr": "Stockholm", + "name:fy": "Stokholm", + "name:ga": "Stócólm", + "name:gl": "Estocolmo", + "name:he": "סטוקהולם", + "name:hr": "Stockholm", + "name:ht": "Stokolm", + "name:hu": "Stockholm", + "name:hy": "Ստոքհոլմ", + "name:is": "Stokkhólmur", + "name:it": "Stoccolma", + "name:iu": "ᔅᑑᒃᓱᓪᒻ", + "name:ja": "ストックホルム", + "name:ka": "სტოკჰოლმი", + "name:kab": "Stukulm", + "name:kk": "Стокгольм", + "name:ko": "스톡홀름", + "name:koi": "Стёколна", + "name:ku": "Stokholm", + "name:kv": "Стокгольм", + "name:la": "Holmia", + "name:lad": "Estokolma", + "name:lij": "Stoccolma", + "name:lmo": "Stuculma", + "name:lt": "Stokholmas", + "name:lv": "Stokholma", + "name:lzh": "斯德哥爾摩", + "name:mdf": "Стокольма", + "name:mhr": "Стокгольм", + "name:mk": "Стокхолм", + "name:mrj": "Стокгольм", + "name:mt": "Stokkolma", + "name:myv": "Стокгольм ош", + "name:mzn": "استکهلم", + "name:nah": "Estocolmo", + "name:nds": "Stockholm", + "name:nl": "Stockholm", + "name:no": "Stockholm", + "name:oc": "Estocòlme", + "name:os": "Стокгольм", + "name:pl": "Sztokholm", + "name:pms": "Stocòlma", + "name:pt": "Estocolmo", + "name:ru": "Стокгольм", + "name:sah": "Стокhольм", + "name:sc": "Stoccolma", + "name:se": "Stockholbma", + "name:sju": "Tjåsskasulla", + "name:sk": "Štokholm", + "name:sma": "Stuehkie", + "name:smj": "Stockhoalmma", + "name:smn": "Tukholma", + "name:sq": "Stokholmi", + "name:sr": "Стокхолм", + "name:sv": "Stockholm", + "name:szl": "Sztokholm", + "name:tg": "Стокҳолм", + "name:th": "สตอกโฮล์ม", + "name:tt": "Стокгольм", + "name:udm": "Стокгольм", + "name:ug": "Stokgolm", + "name:uk": "Стокгольм", + "name:ur": "سٹاکہوم", + "name:uz": "Stokgolm", + "name:vec": "Stocólma", + "name:wo": "Stokolm", + "name:yi": "שטאקהאלם", + "name:yue": "斯德哥爾摩", + "name:zh": "斯德哥爾摩", + "name:zh-Hans": "斯德哥尔摩" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 18.0710935, + 59.3251172 + ] + }, + "id": "node/25929985" + }, + { + "type": "Feature", + "properties": { + "name": "تهران", + "name:ace": "Tehran", + "name:af": "Teheran", + "name:am": "ቴህራን", + "name:an": "Teherán", + "name:ar": "طهران", + "name:arc": "ܛܗܪܐܢ", + "name:arz": "طهران", + "name:az": "Tehran", + "name:ba": "Тегеран", + "name:bat-smg": "Teherans", + "name:bcl": "Tehran", + "name:be": "Тэгеран", + "name:be-tarask": "Тэгеран", + "name:bg": "Техеран", + "name:bo": "ཏེ་ཧི་རན​།", + "name:br": "Tehran", + "name:bs": "Teheran", + "name:ca": "Teheran", + "name:ceb": "Dakbayan sa Tehrān", + "name:ckb": "تاران", + "name:crh": "Tehran", + "name:cs": "Teherán", + "name:cv": "Тегеран", + "name:cy": "Tehran", + "name:da": "Teheran", + "name:de": "Teheran", + "name:diq": "Tehran", + "name:el": "Τεχεράνη", + "name:en": "Tehran", + "name:eo": "Tehrano", + "name:es": "Teherán", + "name:et": "Teheran", + "name:eu": "Teheran", + "name:ext": "Teherán", + "name:fi": "Teheran", + "name:fo": "Teheran", + "name:fr": "Téhéran", + "name:fy": "Teheran", + "name:ga": "Teheran", + "name:gd": "Tehran", + "name:gl": "Teherán - تهران", + "name:he": "טהרן", + "name:hif": "Tehran", + "name:hr": "Teheran", + "name:ht": "Teheran", + "name:hu": "Teherán", + "name:hy": "Թեհրան", + "name:ia": "Tehran", + "name:id": "Teheran", + "name:ie": "Teheran", + "name:ilo": "Tehran", + "name:io": "Tehran", + "name:is": "Teheran", + "name:it": "Teheran", + "name:ja": "テヘラン", + "name:ka": "თეირანი", + "name:kab": "Ṭehran", + "name:kk": "Тегеран", + "name:kl": "Tehran", + "name:ko": "테헤란", + "name:ku": "Tehran", + "name:kw": "Tehran", + "name:la": "Teheranum", + "name:lb": "Teheran", + "name:lez": "Тегьран", + "name:lt": "Teheranas", + "name:lv": "Teherāna", + "name:mhr": "Тегеран", + "name:mi": "Tehran", + "name:mk": "Техеран", + "name:mn": "Тегеран", + "name:ms": "Teheran", + "name:mzn": "تهرون", + "name:nan": "Tehran", + "name:nl": "Teheran", + "name:nn": "Teheran", + "name:no": "Teheran", + "name:nov": "Teran", + "name:oc": "Teheran", + "name:os": "Тæхран", + "name:pl": "Teheran", + "name:ps": "تهران", + "name:pt": "Teerã", + "name:rm": "Teheran", + "name:ro": "Teheran", + "name:ru": "Тегеран", + "name:rue": "Тегеран", + "name:sah": "Тегеран", + "name:sc": "Teheran", + "name:sco": "Tehran", + "name:se": "Teheran", + "name:sk": "Teherán", + "name:sl": "Teheran", + "name:so": "Tahraan", + "name:sq": "Teherani", + "name:sr": "Техеран", + "name:sv": "Teheran", + "name:sw": "Tehran", + "name:szl": "Teheran", + "name:tg": "Теҳрон", + "name:th": "เตหะราน", + "name:tk": "Tähran", + "name:tl": "Tehrān", + "name:tr": "Tahran", + "name:tt": "Тәһран", + "name:ug": "تېھران", + "name:uk": "Тегеран", + "name:ur": "تہران", + "name:uz": "Tehron", + "name:vi": "Tehran", + "name:vo": "Tehran", + "name:war": "Tehran", + "name:wuu": "德黑兰", + "name:yi": "טעהראן", + "name:yo": "Tehran", + "name:yue": "德黑蘭", + "name:zh": "德黑蘭/德黑兰", + "name:zh-Hans": "德黑兰" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 51.3896004, + 35.6892523 + ] + }, + "id": "node/25960293" + }, + { + "type": "Feature", + "properties": { + "name": "Київ", + "name:aan": "Kyiv", + "name:ab": "Кыив", + "name:af": "Kyiv", + "name:als": "Kiew", + "name:am": "ኪየቭ", + "name:ang": "Cænugeard", + "name:ar": "كييف", + "name:arz": "كييف", + "name:ast": "Kiev", + "name:az": "Kiyev", + "name:ba": "Киев", + "name:bar": "Kiew", + "name:bat-smg": "Kijevs", + "name:be": "Кіеў", + "name:be-tarask": "Кіеў", + "name:bg": "Киев", + "name:bi": "Kyiv", + "name:bo": "ཀིབ།", + "name:bpy": "কিয়েভ", + "name:br": "Kyiv", + "name:bs": "Kijev", + "name:bxr": "Киев", + "name:ca": "Kíiv", + "name:cbk-zam": "Kyiv", + "name:ckb": "کیێڤ", + "name:crh": "Kiyev", + "name:cs": "Kyjev", + "name:csb": "Kyiv", + "name:cu": "Кꙑѥвъ", + "name:cv": "Кийӳ", + "name:cy": "Kyiv", + "name:da": "Kyiv", + "name:de": "Kiew", + "name:dsb": "Kijew", + "name:el": "Κίεβο", + "name:en": "Kyiv", + "name:eo": "Kijivo", + "name:es": "Kiev", + "name:et": "Kiiev", + "name:eu": "Kiev", + "name:ext": "Kyiv", + "name:fa": "کی‌یف", + "name:fi": "Kiova", + "name:fiu-vro": "Kiiova", + "name:fo": "Kyiv", + "name:fr": "Kiev", + "name:frr": "Kyiv", + "name:fy": "Kiev", + "name:ga": "Cív", + "name:gag": "Kıyiv", + "name:gd": "Kyiv", + "name:gl": "Kiev", + "name:gv": "Kyiv", + "name:haw": "Kyiv", + "name:he": "קייב", + "name:hif": "Kiev", + "name:hr": "Kijev", + "name:hsb": "Kijew", + "name:ht": "Kyèv", + "name:hu": "Kijev", + "name:hy": "Կիև", + "name:ia": "Kyiv", + "name:id": "Kyiv", + "name:ie": "Kyiv", + "name:ilo": "Kyiv", + "name:io": "Kyiv", + "name:is": "Kænugarður", + "name:it": "Kiev", + "name:ja": "キーウ", + "name:jbo": "kiev", + "name:jv": "Kyiv", + "name:ka": "კიევი", + "name:kaa": "Kiev", + "name:kk": "Киев", + "name:kl": "Kyiv", + "name:ko": "키이우", + "name:koi": "Киев", + "name:ku": "Kîev", + "name:kv": "Киев", + "name:ky": "Киев", + "name:la": "Kiovia", + "name:lad": "Kyiv", + "name:lb": "Kiew", + "name:lij": "Kiev", + "name:lmo": "Kiev", + "name:ln": "Kyjiw", + "name:lt": "Kijevas", + "name:lv": "Kijiva", + "name:mdf": "Киев", + "name:mhr": "Киев", + "name:mi": "Kieu", + "name:mk": "Кијив", + "name:mn": "Киев", + "name:mrj": "Киев", + "name:ms": "Kiev", + "name:mt": "Kjiv", + "name:myv": "Киев ош", + "name:nah": "Kiev", + "name:nan": "Kyyiv", + "name:nds": "Kiew", + "name:nl": "Kiev", + "name:nn": "Kiev", + "name:no": "Kyiv", + "name:nov": "Kiyev", + "name:oc": "Kyiiv", + "name:os": "Киев", + "name:pap": "Kiev", + "name:pl": "Kijów", + "name:pms": "Kijv", + "name:prefix": "місто", + "name:pt": "Kiev", + "name:qu": "Kiyiw", + "name:rmy": "Kiev", + "name:ro": "Kiev", + "name:roa-rup": "Kiev", + "name:roa-tara": "Kiev", + "name:ru": "Киев", + "name:rue": "Київ", + "name:sah": "Киев", + "name:sc": "Kiev", + "name:scn": "Kiev", + "name:sco": "Kiev", + "name:se": "Kiova", + "name:sh": "Kyiv", + "name:sk": "Kyjev", + "name:sl": "Kijev", + "name:sq": "Kievi", + "name:sr": "Кијев", + "name:sv": "Kyiv", + "name:sw": "Kiev", + "name:szl": "Kijōw", + "name:tg": "Киев", + "name:th": "เคียฟ", + "name:tl": "Kiev", + "name:tr": "Kıyiv", + "name:tt": "Киев", + "name:tw": "Kiev", + "name:tzl": "Kíiv", + "name:udm": "Киев", + "name:ug": "كىيېۋ", + "name:uk": "Київ", + "name:ur": "کیف", + "name:uz": "Kiyev", + "name:vec": "Kiev", + "name:vep": "Kijev", + "name:vi": "Kyiv", + "name:vo": "Küyiv", + "name:war": "Kiev", + "name:wo": "Kiyew", + "name:xmf": "კიევი", + "name:yi": "קיעוו", + "name:yo": "Kiev", + "name:yue": "基輔", + "name:zh": "基辅", + "name:zh-Hans": "基辅", + "name:zh-Hant": "基輔", + "name:zu": "IKiyevi" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 30.5241361, + 50.4500336 + ] + }, + "id": "node/26150422" + }, + { + "type": "Feature", + "properties": { + "name": "Мінск", + "name:ar": "مينسك", + "name:ast": "Minsk", + "name:bat-smg": "Minsks", + "name:be": "Мінск", + "name:be-tarask": "Менск", + "name:bg": "Минск", + "name:bo": "མིན་སིཀ།", + "name:ckb": "مینسک", + "name:cs": "Minsk", + "name:csb": "Mińsk", + "name:cu": "Мѣньскъ", + "name:cv": "Минск", + "name:de": "Minsk", + "name:el": "Μινσκ", + "name:en": "Minsk", + "name:eo": "Minsko", + "name:es": "Minsk", + "name:et": "Minsk", + "name:fa": "مینسک", + "name:fi": "Minsk", + "name:fr": "Minsk", + "name:ga": "Minsc", + "name:gl": "Minsk", + "name:he": "מינסק", + "name:hr": "Minsk", + "name:hu": "Minszk", + "name:hy": "Մինսկ", + "name:ia": "Minsk", + "name:io": "Minsk", + "name:is": "Minsk", + "name:it": "Minsk", + "name:ja": "ミンスク", + "name:jbo": "misk", + "name:ka": "მინსკი", + "name:kk": "Минск", + "name:ko": "민스크", + "name:ku": "Mînsk", + "name:kv": "Минск", + "name:ky": "Минск", + "name:la": "Minscum", + "name:lt": "Minskas", + "name:lv": "Minska", + "name:mhr": "Минск", + "name:mk": "Минск", + "name:myv": "Минск ош", + "name:nds": "Minsk", + "name:nl": "Minsk", + "name:no": "Minsk", + "name:oc": "Minsk", + "name:os": "Минск", + "name:pl": "Mińsk", + "name:prefix": "горад", + "name:prefix:be": "горад", + "name:prefix:ru": "город", + "name:pt": "Minsk", + "name:ru": "Минск", + "name:rue": "Мінск", + "name:sah": "Минскай", + "name:sk": "Minsk", + "name:sl": "Minsk", + "name:sr": "Минск", + "name:sr-Latn": "Minsk", + "name:sv": "Minsk", + "name:szl": "Mińsk", + "name:tg": "Минск", + "name:th": "มินสก์", + "name:tt": "Минск", + "name:udm": "Минск", + "name:ug": "مىنىسكى", + "name:uk": "Мінськ", + "name:ur": "منسک", + "name:vi": "Minxcơ", + "name:vo": "Minsk", + "name:wuu": "明斯克", + "name:yi": "מינסק", + "name:zh": "明斯克" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 27.5618225, + 53.9024716 + ] + }, + "id": "node/26162465" + }, + { + "type": "Feature", + "properties": { + "name": "La Habana", + "name:ace": "Havana", + "name:af": "Havana", + "name:am": "ሀቫና", + "name:an": "L'Habana", + "name:ang": "Hafana", + "name:ar": "هافانا", + "name:ast": "L'Habana", + "name:az": "Havana", + "name:bcl": "Habana", + "name:be": "Гавана", + "name:be-tarask": "Гавана", + "name:bg": "Хавана", + "name:bo": "ཧ་ཝན", + "name:br": "La Habana", + "name:bs": "Havana", + "name:ca": "l'Havana", + "name:ceb": "La Habana", + "name:cs": "Havana", + "name:cv": "Гавана", + "name:cy": "La Habana", + "name:da": "Havana", + "name:de": "Havanna", + "name:diq": "Havana", + "name:el": "Αβάνα", + "name:en": "Havana", + "name:eo": "Havano", + "name:es": "La Habana", + "name:et": "Havanna", + "name:eu": "Habana", + "name:ext": "L'Avana", + "name:fa": "هاوانا", + "name:fi": "Havanna", + "name:fr": "La Havane", + "name:fy": "Havana", + "name:gd": "Havana", + "name:gl": "A Habana", + "name:he": "הוואנה", + "name:hif": "Havana", + "name:hr": "Havana", + "name:ht": "La Avàn", + "name:hu": "Havanna", + "name:hy": "Հավանա", + "name:id": "Havana", + "name:io": "Havana", + "name:is": "Havana", + "name:it": "L'Avana", + "name:ja": "ハバナ", + "name:ka": "ჰავანა", + "name:ko": "아바나", + "name:ku": "Havana", + "name:kw": "La Habana", + "name:la": "Havana", + "name:lij": "L'Avann-a", + "name:lmo": "L'Avana", + "name:lt": "Havana", + "name:lv": "Havana", + "name:mk": "Хавана", + "name:ms": "Havana", + "name:mt": "Ħavana", + "name:nah": "La Ahuana", + "name:nan": "La Habana", + "name:nl": "Havana", + "name:nov": "Havana", + "name:oc": "L'Avana", + "name:os": "Гаванæ", + "name:pap": "Havana", + "name:pl": "Hawana", + "name:pms": "L'Avan-a", + "name:pt": "Havana", + "name:qu": "La Habana", + "name:rmy": "La Habana", + "name:ro": "Havana", + "name:roa-rup": "La Habana", + "name:ru": "Гавана", + "name:rw": "Havana", + "name:sah": "Хавана", + "name:sc": "S'Avana", + "name:scn": "L'Avana", + "name:sco": "Havana", + "name:sh": "Havana", + "name:sk": "Havana", + "name:sl": "Havana", + "name:sq": "Havana", + "name:sr": "Хавана", + "name:srn": "Havana", + "name:sv": "Havanna", + "name:sw": "Havana", + "name:tg": "Ҳавана", + "name:th": "ฮาวานา", + "name:tl": "Havana", + "name:tr": "Havana", + "name:uk": "Гавана", + "name:ur": "ہوانا", + "name:vec": "Ł'Avana", + "name:vi": "La Habana", + "name:vo": "La Habana", + "name:war": "La Habana", + "name:yo": "Havana", + "name:yue": "夏灣拿", + "name:zh": "哈瓦那", + "name:zh-Hans": "哈瓦那", + "name:zh-Hant": "哈瓦那" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -82.3589631, + 23.135305 + ] + }, + "id": "node/26396457" + }, + { + "type": "Feature", + "properties": { + "name": "Rīga", + "name:af": "Riga", + "name:am": "ሪጋ", + "name:an": "Riga", + "name:ar": "ريغا", + "name:arz": "ريجا", + "name:ast": "Riga", + "name:az": "Riqa", + "name:bat-smg": "Rīga", + "name:be": "Рыга", + "name:be-tarask": "Рыга", + "name:bg": "Рига", + "name:bo": "རི་ག", + "name:br": "Riga", + "name:bs": "Riga", + "name:ca": "Riga", + "name:ckb": "ڕیگا", + "name:cs": "Riga", + "name:cu": "Рига", + "name:cv": "Рига", + "name:cy": "Riga", + "name:da": "Riga", + "name:de": "Riga", + "name:ee": "Riga", + "name:el": "Ρίγα", + "name:en": "Riga", + "name:eo": "Rigo", + "name:es": "Riga", + "name:et": "Riia", + "name:eu": "Riga", + "name:fa": "ریگا", + "name:fi": "Riika", + "name:fiu-vro": "Riia", + "name:fo": "Riga", + "name:fr": "Riga", + "name:fy": "Riga", + "name:ga": "Ríge", + "name:gd": "Riga", + "name:gl": "Riga", + "name:gv": "Rīga", + "name:he": "ריגה", + "name:hr": "Riga", + "name:ht": "Riga", + "name:hu": "Riga", + "name:hy": "Ռիգա", + "name:id": "Riga", + "name:ie": "Riga", + "name:io": "Riga", + "name:is": "Ríga", + "name:it": "Riga", + "name:ja": "リガ", + "name:jv": "Riga", + "name:ka": "რიგა", + "name:kk": "Рига", + "name:kl": "Riga", + "name:ko": "리가", + "name:koi": "Рига", + "name:ku": "Rîga", + "name:kv": "Рига", + "name:kw": "Rīga", + "name:ky": "Рига", + "name:la": "Riga", + "name:lb": "Rīga", + "name:lez": "Рига", + "name:liv": "Rīgõ", + "name:ln": "Riga", + "name:lt": "Ryga", + "name:ltg": "Reiga", + "name:lv": "Rīga", + "name:mdf": "Рига", + "name:mg": "Riga", + "name:mhr": "Рига", + "name:mi": "Riga", + "name:mk": "Рига", + "name:mrj": "Рига", + "name:ms": "Riga", + "name:mt": "Riga", + "name:na": "Riga", + "name:nah": "Rīga", + "name:nds": "Riga", + "name:nl": "Riga", + "name:nn": "Riga", + "name:no": "Riga", + "name:nv": "Wiiga", + "name:oc": "Riga", + "name:os": "Ригæ", + "name:pih": "Riigaa", + "name:pl": "Ryga", + "name:pt": "Riga", + "name:qu": "Riga", + "name:ro": "Riga", + "name:ru": "Рига", + "name:rue": "Ріґа", + "name:sah": "Рига", + "name:se": "Riga", + "name:sk": "Riga", + "name:sl": "Riga", + "name:sq": "Riga", + "name:sr": "Рига", + "name:st": "Riga", + "name:sv": "Riga", + "name:sw": "Riga", + "name:szl": "Ryga", + "name:tg": "Рига", + "name:th": "รีกา", + "name:tl": "Riga", + "name:tr": "Riga", + "name:tt": "Рига", + "name:udm": "Рига", + "name:ug": "رىگا", + "name:uk": "Рига", + "name:ur": "ریگا", + "name:uz": "Riga", + "name:vep": "Rig", + "name:vi": "Riga", + "name:vo": "Rīga", + "name:wo": "Riga", + "name:yi": "ריגע", + "name:yo": "Riga", + "name:zh": "里加", + "name:zh-Hans": "里加", + "name:zh-Hant": "裏加", + "name:zu": "IRiga" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 24.1051846, + 56.9493977 + ] + }, + "id": "node/26707967" + }, + { + "type": "Feature", + "properties": { + "name": "Bloemfontein", + "name:ar": "بلومفونتين", + "name:de": "Bloemfontein", + "name:en": "Bloemfontein", + "name:es": "Bloemfontein", + "name:fr": "Bloemfontein", + "name:hu": "Bloemfontein", + "name:is": "Bloemfontein", + "name:it": "Bloemfontein", + "name:ko": "블룸폰테인", + "name:nl": "Bloemfontein", + "name:no": "Bloemfontein", + "name:pl": "Bloemfontein", + "name:pt": "Bloemfontein", + "name:ru": "Блумфонтейн", + "name:sv": "Bloemfontein", + "name:tr": "Bloemfontein", + "name:zh": "布隆方丹" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 26.215496, + -29.116395 + ] + }, + "id": "node/26938845" + }, + { + "type": "Feature", + "properties": { + "name": "Kinshasa", + "name:am": "ኪንሻሳ", + "name:ar": "كينشاسا", + "name:arz": "كينشاسا", + "name:az": "Kinşasa", + "name:bat-smg": "Kinšasa", + "name:be": "Кіншаса", + "name:bg": "Киншаса", + "name:bo": "ཀིན་ཤ་ས།", + "name:ckb": "کینشاسا", + "name:cs": "Kinshasa", + "name:de": "Kinshasa", + "name:el": "Κινσάσα", + "name:en": "Kinshasa", + "name:eo": "Kinŝaso", + "name:es": "Kinsasa", + "name:fa": "کینشاسا", + "name:fr": "Kinshasa", + "name:fy": "Kinsjasa", + "name:he": "קינשאסה", + "name:ht": "Kinchasa", + "name:hu": "Kinshasa", + "name:hy": "Կինշասա", + "name:is": "Kinsasa", + "name:ja": "キンシャサ", + "name:ka": "კინშასა", + "name:kg": "Kinsasa", + "name:kk": "Киншаса", + "name:ko": "킨샤사", + "name:ku": "Kînşasa", + "name:ky": "Киншаса", + "name:ln": "Kinsásá", + "name:lt": "Kinšasa", + "name:lv": "Kinšasa", + "name:mhr": "Киншаса", + "name:mk": "Киншаса", + "name:mrj": "Киншаса", + "name:nl": "Kinshasa", + "name:oc": "Kinshasa", + "name:os": "Киншаса", + "name:pl": "Kinszasa", + "name:pt": "Kinshasa", + "name:ru": "Киншаса", + "name:rue": "Кіншаса", + "name:sah": "Киншаса", + "name:sr": "Киншаса", + "name:sv": "Kinshasa", + "name:sw": "Kinshasa", + "name:tg": "Киншаса", + "name:th": "กินชาซา", + "name:tk": "Kinşasa", + "name:tr": "Kinşasa", + "name:udm": "Киншаса", + "name:uk": "Кіншаса", + "name:ur": "کنشاسا", + "name:yi": "קינשאזע", + "name:yue": "金沙薩", + "name:zh": "金沙萨/金沙薩", + "name:zh-Hans": "金沙萨", + "name:zh-Hant": "金沙薩" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 15.3125974, + -4.3217055 + ] + }, + "id": "node/27043346" + }, + { + "type": "Feature", + "properties": { + "name": "Vilnius", + "name:ab": "Вилниус", + "name:am": "ቪልኒውስ", + "name:an": "Vilna", + "name:ar": "فيلنيوس", + "name:arz": "فيلنيوس", + "name:ast": "Vilnius", + "name:ay": "Wilñus", + "name:az": "Vilnüs", + "name:bat-smg": "Vėlnios", + "name:be": "Вільня", + "name:be-tarask": "Вільня", + "name:bg": "Вилнюс", + "name:bo": "ལྦེ་ནི་སུ་ནི།", + "name:ca": "Vílnius", + "name:ce": "Вильнюс", + "name:ckb": "ڤیلنیوس", + "name:crh": "Vilnüs", + "name:cs": "Vilnius", + "name:csb": "Wilna", + "name:cu": "Вилн҄ь", + "name:cv": "Вилнӳс", + "name:de": "Wilna", + "name:diq": "Vilniyus", + "name:el": "Βίλνιους", + "name:en": "Vilnius", + "name:eo": "Vilno", + "name:es": "Vilna", + "name:fa": "ویلنیوس", + "name:fi": "Vilna", + "name:fr": "Vilnius", + "name:fy": "Vilnjûs", + "name:ga": "Vilnias", + "name:gag": "Vilnüs", + "name:he": "וילנה", + "name:hr": "Vilnius", + "name:ht": "Vilnis", + "name:hu": "Vilnius", + "name:hy": "Վիլնյուս", + "name:is": "Vilníus", + "name:it": "Vilna", + "name:iu": "ᕕᓪᓂᐅᔅ", + "name:iu-Latn": "vilnius", + "name:ja": "ヴィリニュス", + "name:ka": "ვილნიუსი", + "name:kk": "Вильнюс", + "name:ko": "빌뉴스", + "name:ku": "Vîlnûs", + "name:kv": "Вильнюс", + "name:ky": "Вильнюс", + "name:la": "Vilna", + "name:lad": "Vilna", + "name:ln": "Wilna", + "name:lrc": "ویلینوس", + "name:lt": "Vilnius", + "name:ltg": "Viļne", + "name:lv": "Viļņa", + "name:mdf": "Вильнюс", + "name:mhr": "Вильнюс", + "name:mk": "Вилнус", + "name:mo": "Вильнюс", + "name:mrj": "Вильнюс", + "name:myv": "Вильнюс", + "name:nds": "Wilne", + "name:nl": "Vilnius", + "name:no": "Vilnius", + "name:oc": "Vílnius", + "name:os": "Вильнюс", + "name:pl": "Wilno", + "name:ru": "Вильнюс", + "name:sa": "विल्नियस्", + "name:sah": "Вильнюс", + "name:sc": "Vìlnius", + "name:sk": "Vilnius", + "name:sl": "Vilna", + "name:sr": "Вилњус", + "name:sv": "Vilnius", + "name:szl": "Wilno", + "name:tg": "Вилнюс", + "name:th": "วิลนีอุส", + "name:tl": "Vilna", + "name:udm": "Вильнюс", + "name:uk": "Вільнюс", + "name:ur": "ولنیس", + "name:uz": "Vilnyus", + "name:vec": "Vilna", + "name:vep": "Vil'nüs", + "name:wo": "Wilniyus", + "name:yi": "ווילנע", + "name:yo": "Filnius", + "name:yue": "維爾紐斯", + "name:zh": "维尔纽斯", + "name:zh-Hans": "维尔纽斯", + "name:zh-Hant": "維爾紐斯", + "name:zu": "IVilnyusi" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 25.2829111, + 54.6870458 + ] + }, + "id": "node/27193093" + }, + { + "type": "Feature", + "properties": { + "name": "Бишкек", + "name:ace": "Bishkek", + "name:af": "Bisjkek", + "name:am": "ቢሽኬክ", + "name:ar": "بيشكك", + "name:arz": "بيشكيك", + "name:az": "Bişkek", + "name:azb": "بیشکک", + "name:be": "Бішкек", + "name:bg": "Бишкек", + "name:bo": "པི་སི་ཁེག", + "name:br": "Bichkek", + "name:bs": "Bishkek", + "name:ca": "Bixkek", + "name:ckb": "بیشکێک", + "name:crh": "Bişkek", + "name:cs": "Biškek", + "name:cv": "Бишкек", + "name:cy": "Bishkek", + "name:da": "Bisjkek", + "name:de": "Bischkek", + "name:diq": "Bişqeq", + "name:dsb": "Biškek", + "name:el": "Μπισκέκ", + "name:en": "Bishkek", + "name:eo": "Biŝkeko", + "name:es": "Biskek", + "name:et": "Biškek", + "name:eu": "Bishkek", + "name:fa": "بیشکک", + "name:fi": "Biškek", + "name:fr": "Bichkek", + "name:fy": "Bisjkek", + "name:gd": "Bishkek", + "name:gl": "Bixkek", + "name:he": "בישקק", + "name:hif": "Bishkek", + "name:hr": "Biškek", + "name:hsb": "Biškek", + "name:ht": "Bichkek", + "name:hu": "Biskek", + "name:hy": "Բիշկեք", + "name:id": "Bishkek", + "name:ie": "Bishkek", + "name:ilo": "Bishkek", + "name:io": "Bishkek", + "name:is": "Bishkek", + "name:it": "Biškek", + "name:ja": "ビシュケク", + "name:ka": "ბიშკეკი", + "name:kab-Arab": "بيشكك", + "name:kk": "Бішкек", + "name:kk-Arab": "بىشكەك", + "name:kmr": "بیشکەک", + "name:ko": "비슈케크", + "name:ks": "بشکیک", + "name:ku": "Bîşkek", + "name:kv": "Бишкек", + "name:ky": "Бишкек", + "name:la": "Biscecum", + "name:lmo": "Biškek", + "name:lrc": "بیشکک", + "name:lt": "Biškekas", + "name:lv": "Biškeka", + "name:mhr": "Бишкек", + "name:mk": "Бишкек", + "name:mn": "Бишкек", + "name:mrj": "Бишкек", + "name:myv": "Бишкек ош", + "name:mzn": "بيشکک", + "name:nan": "Bishkek", + "name:nl": "Bisjkek", + "name:nn": "Bisjkek", + "name:no": "Bisjkek", + "name:nov": "Bishkek", + "name:oc": "Bishkek", + "name:os": "Бишкек", + "name:ota": "بیشکک", + "name:pl": "Biszkek", + "name:pms": "Bishkek", + "name:ps": "بشکک", + "name:pt": "Bisqueque", + "name:ro": "Bișkek", + "name:roa-rup": "Bishkek", + "name:ru": "Бишкек", + "name:sah": "Бишкек", + "name:sco": "Bishkek", + "name:sh": "Biškek", + "name:simple": "Bishkek", + "name:sk": "Biškek", + "name:sl": "Biškek", + "name:sq": "Bishkek", + "name:sr": "Бишкек", + "name:sv": "Bisjkek", + "name:sw": "Bishkek", + "name:tg": "Бишкек", + "name:th": "บิชเคก", + "name:tl": "Bishkek", + "name:tr": "Bişkek", + "name:udm": "Бишкек", + "name:ug": "بىشكەك", + "name:uk": "Бішкек", + "name:ur": "بشکیک", + "name:uz": "Bishkek", + "name:vep": "Biškek", + "name:vi": "Bishkek", + "name:war": "Bishkek", + "name:yi": "בישקעק", + "name:yo": "Bishkek", + "name:zh": "比什凱克" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 74.6066926, + 42.8777895 + ] + }, + "id": "node/27524177" + }, + { + "type": "Feature", + "properties": { + "name": "Toshkent", + "name:ace": "Tashkent", + "name:af": "Tasjkent", + "name:am": "ታሽኬንት", + "name:ar": "طشقند", + "name:az": "Daşkənd", + "name:be": "Ташкент", + "name:be-tarask": "Ташкент", + "name:bg": "Ташкент", + "name:bo": "ཐ་ཧྲི་ཀན།", + "name:br": "Tochkent", + "name:bs": "Taškent", + "name:ca": "Taixkent", + "name:ckb": "تاشکەند", + "name:crh": "Taşkent", + "name:cs": "Taškent", + "name:cv": "Ташкент", + "name:cy": "Tashkent", + "name:da": "Tasjkent", + "name:de": "Taschkent", + "name:el": "Τασκένδη", + "name:en": "Tashkent", + "name:eo": "Taŝkento", + "name:es": "Taskent", + "name:et": "Taškent", + "name:eu": "Tashkent", + "name:fa": "تاشکند", + "name:fi": "Taškent", + "name:fr": "Tachkent", + "name:fy": "Tasjkent", + "name:ga": "Tashkent", + "name:gd": "Tashkent", + "name:gl": "Tashkent", + "name:he": "טשקנט", + "name:hif": "Tashkent", + "name:hr": "Taškent", + "name:hsb": "Taškent", + "name:ht": "Tachkènt", + "name:hu": "Taskent", + "name:hy": "Տաշքենդ", + "name:id": "Tashkent", + "name:ie": "Tashkent", + "name:io": "Tashkent", + "name:is": "Taskent", + "name:it": "Tashkent", + "name:ja": "タシュケント", + "name:ka": "ტაშკენტი", + "name:kaa": "Tashkent", + "name:kk": "Ташкент", + "name:ko": "타슈켄트", + "name:ku": "Taşkent, Ûzbêkistan", + "name:kv": "Ташкент", + "name:ky": "Ташкен", + "name:la": "Lithopolis", + "name:lmo": "Taškent", + "name:lt": "Taškentas", + "name:lv": "Taškenta", + "name:mhr": "Ташкент", + "name:mk": "Ташкент", + "name:mn": "Ташкент", + "name:ms": "Tashkent", + "name:myv": "Ташкент ош", + "name:mzn": "تاشکند", + "name:nan": "Tashkent", + "name:nl": "Tasjkent", + "name:nn": "Tasjkent", + "name:no": "Tasjkent", + "name:nov": "Tashkent", + "name:oc": "Tashkent", + "name:os": "Ташкент", + "name:pl": "Taszkent", + "name:pms": "Tashkent", + "name:ps": "تاشكند", + "name:pt": "Tashkent", + "name:ro": "Tașkent", + "name:ru": "Ташкент", + "name:sah": "Ташкент", + "name:sco": "Tashkent", + "name:sh": "Taškent", + "name:simple": "Tashkent", + "name:sk": "Taškent", + "name:sq": "Tashkenti", + "name:sr": "Ташкент", + "name:sv": "Tasjkent", + "name:sw": "Tashkent", + "name:tg": "Тошканд", + "name:th": "ทาชเคนต์", + "name:tk": "Daşkent", + "name:tl": "Tashkent", + "name:tlh": "mIw'a'", + "name:tr": "Taşkent", + "name:tt": "Ташкент", + "name:udm": "Ташкент", + "name:ug": "Tashkent", + "name:uk": "Ташкент", + "name:ur": "تاشقند", + "name:uz": "Toshkent", + "name:vec": "Taškent", + "name:vep": "Taškent", + "name:vi": "Tashkent", + "name:vo": "Toshkent", + "name:war": "Tashkent", + "name:yi": "טאשקענט", + "name:yo": "Tashkent", + "name:zh": "塔什干" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 69.2787079, + 41.3123363 + ] + }, + "id": "node/27524773" + }, + { + "type": "Feature", + "properties": { + "name": "Душанбе", + "name:ace": "Dushanbe", + "name:af": "Doesjanbe", + "name:am": "ዱሻንቤ", + "name:ar": "دوشنبه", + "name:az": "Düşənbə", + "name:be": "Душанбэ", + "name:bg": "Душанбе", + "name:bo": "དུ་ཤང་པེ།", + "name:br": "Douchanbe", + "name:bs": "Dušanbe", + "name:ca": "Duixanbe", + "name:ckb": "دوشەنبە", + "name:cs": "Dušanbe", + "name:cy": "Dushanbe", + "name:da": "Dusjanbe", + "name:de": "Duschanbe", + "name:el": "Ντουσαμπέ", + "name:en": "Dushanbe", + "name:eo": "Duŝanbeo", + "name:es": "Dusambé", + "name:et": "Dušanbe", + "name:eu": "Dushanbe", + "name:fa": "دوشنبه", + "name:fi": "Dušanbe", + "name:fr": "Douchanbé", + "name:fy": "Doesjanbe", + "name:ga": "Dushanbe", + "name:gag": "Duşanbe", + "name:gd": "Dushanbe", + "name:gl": "Dushanbe", + "name:he": "דושנבה", + "name:hif": "Dushanbe", + "name:hr": "Dušanbe", + "name:hsb": "Dušanbe", + "name:ht": "Douchanbe", + "name:hu": "Dusanbe", + "name:hy": "Դուշանբե", + "name:id": "Dushanbe", + "name:ie": "Dushanbe", + "name:io": "Dushanbe", + "name:is": "Dúshanbe", + "name:it": "Dušanbe", + "name:ja": "ドゥシャンベ", + "name:ka": "დუშანბე", + "name:kk": "Душанбе", + "name:ko": "두샨베", + "name:ku": "Duşenbe", + "name:kv": "Душанбе", + "name:ky": "Душанбе", + "name:lad": "Dushanbe", + "name:lmo": "Dušanbe", + "name:lt": "Dušanbė", + "name:lv": "Dušanbe", + "name:mhr": "Душанбе", + "name:mk": "Душанбе", + "name:mn": "Душанбе", + "name:nan": "Dushanbe", + "name:nl": "Doesjanbe", + "name:nn": "Dusjanbe", + "name:no": "Dusjanbe", + "name:nov": "Dushanbe", + "name:oc": "Doshambe", + "name:os": "Душанбе", + "name:pap": "Dusjanbe", + "name:pl": "Duszanbe", + "name:pms": "Dušanbe", + "name:ps": "دوشنبه", + "name:pt": "Duchambe", + "name:ro": "Dușanbe", + "name:ru": "Душанбе", + "name:sah": "Душанбе", + "name:sco": "Dushanbe", + "name:sh": "Dušanbe", + "name:simple": "Dushanbe", + "name:sk": "Dušanbe", + "name:sl": "Dušanbej", + "name:sq": "Dushanbe", + "name:sr": "Душанбе", + "name:sv": "Dusjanbe", + "name:sw": "Dushanbe", + "name:tg": "Душанбе", + "name:th": "ดูชานเบ", + "name:tl": "Dushanbe", + "name:tr": "Duşanbe", + "name:tt": "Дүшәнбе", + "name:udm": "Душанбе", + "name:ug": "Düshenbe", + "name:uk": "Душанбе", + "name:ur": "دوشنبہ", + "name:uz": "Dushanbe", + "name:vi": "Dushanbe", + "name:war": "Dushanbe", + "name:yi": "דושאנבע", + "name:yo": "Dushanbe", + "name:zh": "杜尚别" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 68.7863573, + 38.5762709 + ] + }, + "id": "node/27547977" + }, + { + "type": "Feature", + "properties": { + "name": "Улаанбаатар", + "name:az": "Ulan-Bator", + "name:ba": "Улан-Батор", + "name:bxr": "Улаан-Баатар", + "name:ca": "Ulan Bator", + "name:ce": "Улан-Батор", + "name:ckb": "ئولانباتۆر", + "name:cs": "Ulánbátar", + "name:cv": "Улан Батор", + "name:cy": "Ulan Bator", + "name:da": "Ulan Bator", + "name:de": "Ulan Bator", + "name:diq": "Ulan Bator", + "name:el": "Ουλάν Μπατόρ", + "name:en": "Ulaanbaatar", + "name:eo": "Ulaanbaataro", + "name:es": "Ulán Bator", + "name:et": "Ulaanbaatar", + "name:eu": "Ulan Bator", + "name:fa": "اولان‌باتور", + "name:fi": "Ulaanbaatar", + "name:fr": "Oulan-Bator", + "name:fy": "Ulaanbaatar", + "name:ga": "Ulánbátar", + "name:gd": "Ulan Bator", + "name:gl": "Ulán Bátor - Улаанбаатар", + "name:he": "אולן בטור", + "name:hif": "Ulan Bator", + "name:hr": "Ulan Bator", + "name:hu": "Ulánbátor", + "name:hy": "Ուլան Բատոր", + "name:ia": "Ulan Bator", + "name:id": "Ulan Bator", + "name:ie": "Ulan-Bator", + "name:io": "Ulan Bator", + "name:is": "Úlan Bator", + "name:it": "Ulan Bator", + "name:ja": "ウランバートル", + "name:ka": "ულან-ბატორი", + "name:kk": "Ұланбатыр", + "name:kl": "Ulan Bator", + "name:km": "អ៊ូលេនបាធរ", + "name:ko": "울란바토르", + "name:kv": "Улан-Батор", + "name:la": "Urga", + "name:lb": "Ulan Bator", + "name:lmo": "Ulan Bator", + "name:lt": "Ulan Batoras", + "name:lv": "Ulanbatora", + "name:mhr": "Улан-Батор", + "name:mk": "Улан Батор", + "name:mn": "Ulan Bator", + "name:mn-mong": "ᠤᠯᠠᠭᠠᠨᠪᠠᠭᠠᠲᠤᠷ", + "name:mn_mong": "ᠤᠯᠠᠭᠠᠨ ᠪᠠᠭᠠᠲᠤᠷ", + "name:ms": "Ulan Bator", + "name:myv": "Улан-Батор ош", + "name:mzn": "اولانباتار", + "name:nl": "Ulaanbaatar", + "name:nn": "Ulan Bator", + "name:no": "Ulan Bator", + "name:oc": "Ulaan Baatar", + "name:os": "Улан-Батор", + "name:pap": "Ulan Bator", + "name:pl": "Ułan Bator", + "name:pt": "Ulan Bator", + "name:ro": "Ulaanbaatar", + "name:ru": "Улан-Батор", + "name:sah": "Улаанбаатар", + "name:scn": "Ulan Bator", + "name:sco": "Ulan Bator", + "name:sk": "Ulanbátar", + "name:sl": "Ulan Bator", + "name:so": "Ulan Bator", + "name:sq": "Ulan Bator", + "name:sr": "Улан Батор", + "name:sv": "Ulaanbaatar", + "name:sw": "Ulaanbaatar", + "name:tg": "Улан-Батор", + "name:th": "อูลานบาตอร์", + "name:tl": "Ulan Bator", + "name:tr": "Ulan Batur", + "name:tt": "Ulan Bator", + "name:ug": "Ulanbatur", + "name:uk": "Улан-Батор", + "name:ur": "اولان‌ باتور", + "name:uz": "Ulan-Bator", + "name:vi": "Ulaanbaatar", + "name:xal": "Улан Баатр", + "name:yi": "אולאן באטאר", + "name:yo": "Ulan Bator", + "name:yue": "烏蘭巴托", + "name:za": "Ulan Bator", + "name:zh": "乌兰巴托", + "name:zh-Hans": "乌兰巴托", + "name:zh-Hant": "烏蘭巴托" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 106.9177016, + 47.9184676 + ] + }, + "id": "node/27547986" + }, + { + "type": "Feature", + "properties": { + "name": "Астана", + "name:am": "አስታና", + "name:an": "Astaná", + "name:ar": "أستانا", + "name:arc": "ܐܣܛܐܢܐ", + "name:az": "Astana", + "name:az-Arab": "آستانا", + "name:azb": "آستانا", + "name:be": "Астана", + "name:be-tarask": "Астана", + "name:bg": "Астана", + "name:bo": "ཨ་སི་ཐ་ན།", + "name:ca": "Astana", + "name:ce": "Астана", + "name:ckb": "ئاستانا", + "name:cs": "Astana", + "name:da": "Astana", + "name:de": "Astana", + "name:el": "Αστάνα", + "name:en": "Astana", + "name:eo": "Astano", + "name:es": "Astaná", + "name:et": "Astana", + "name:fa": "آستانه", + "name:fi": "Astana", + "name:fr": "Astana", + "name:gl": "Astana", + "name:gr": "Ἀστάνη", + "name:grc": "Ἀστάνη", + "name:he": "אסטנה", + "name:hr": "Astana", + "name:hu": "Asztana", + "name:hy": "Աստանա", + "name:id": "Astana", + "name:is": "Astana", + "name:it": "Astana", + "name:ja": "アスタナ", + "name:jv": "Astana", + "name:ka": "ასტანა", + "name:kbd": "Астана", + "name:kk": "Астана", + "name:kk-Arab": "استانا", + "name:ko": "아스타나", + "name:koi": "Астана", + "name:ks": "آستانہ", + "name:ku": "Astana", + "name:ku-Arab": "ئاستانا", + "name:kv": "Астана", + "name:ky": "Астана", + "name:lez": "Астана", + "name:lrc": "آستانه", + "name:lt": "Astana", + "name:lv": "Astana", + "name:mk": "Астана", + "name:mn": "Астана", + "name:mrj": "Астана", + "name:myv": "Астана ош", + "name:mzn": "آستانه", + "name:nl": "Astana", + "name:no": "Astana", + "name:os": "Астана", + "name:ota": "آستانا", + "name:pl": "Astana", + "name:prefix": "город", + "name:prefix:kk": "қала", + "name:prefix:ru": "город", + "name:ps": "استانه", + "name:pt": "Astana", + "name:ru": "Астана", + "name:sah": "Астана", + "name:sk": "Astana", + "name:sl": "Astana", + "name:sr": "Астана", + "name:sr-Latn": "Astana", + "name:sv": "Astana", + "name:syc": "ܐܣܛܐܢܐ", + "name:tg": "Остона", + "name:th": "อัสตานา", + "name:tk": "Astan", + "name:tr": "Astana", + "name:tt": "Астана", + "name:udm": "Астана", + "name:ug": "ئاستانا", + "name:ur": "آستانہ", + "name:uz": "Ostona", + "name:vep": "Astan", + "name:xmf": "ასტანა", + "name:yi": "אסטאנא", + "name:yue": "阿斯塔納", + "name:zh": "阿斯塔纳", + "name:zh-Hans": "阿斯塔纳", + "name:zh-Hant": "阿斯塔納" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 71.4306682, + 51.1282205 + ] + }, + "id": "node/27548009" + }, + { + "type": "Feature", + "properties": { + "name": "Niamey", + "name:am": "ኒያሜ", + "name:ar": "نيامي", + "name:arc": "ܢܝܐܡܝ", + "name:be": "Ніямей", + "name:be-tarask": "Ніамэі", + "name:bg": "Ниамей", + "name:bm": "Ɲamɛ", + "name:bo": "ནི་ཡ་མེ།", + "name:ckb": "نیامەی", + "name:de": "Niamey", + "name:el": "Νιαμέυ", + "name:en": "Niamey", + "name:eo": "Niameo", + "name:es": "Niamey", + "name:eu": "Niamei", + "name:fa": "نیامی", + "name:fr": "Niamey", + "name:he": "ניאמיי", + "name:ht": "Niamè", + "name:hu": "Niamey", + "name:hy": "Նիամեյ", + "name:is": "Níamey", + "name:it": "Niamey", + "name:ja": "ニアメ", + "name:ka": "ნიამეი", + "name:kab": "Niamey", + "name:kk": "Ниамей", + "name:ko": "니아메", + "name:ky": "Ниамей", + "name:lt": "Niamėjus", + "name:lv": "Niameja", + "name:mk": "Нијамеј", + "name:mrj": "Ниамей", + "name:nl": "Niamey", + "name:oc": "Niamey", + "name:os": "Ниамей", + "name:pt": "Niamey", + "name:ru": "Ниамей", + "name:sr": "Нијамеј", + "name:sv": "Niamey", + "name:tg": "Ниамей", + "name:th": "นีอาเม", + "name:udm": "Ниамей", + "name:uk": "Ніамей", + "name:ur": "نیامی", + "name:zh": "尼亞美" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 2.109823, + 13.524834 + ] + }, + "id": "node/27564937" + }, + { + "type": "Feature", + "properties": { + "name": "Luanda", + "name:am": "ሏንዳ", + "name:ar": "لواندا", + "name:be": "Луанда", + "name:be-tarask": "Луанда", + "name:bg": "Луанда", + "name:bo": "ལའུན་ཌ།", + "name:ce": "Луанда", + "name:ckb": "لواندا", + "name:cs": "Luanda", + "name:de": "Luanda", + "name:el": "Λουάντα", + "name:en": "Luanda", + "name:eo": "Luando", + "name:es": "Luanda", + "name:fa": "لوآندا", + "name:fr": "Luanda", + "name:he": "לואנדה", + "name:ht": "Louanda", + "name:hu": "Luanda", + "name:hy": "Լուանդա", + "name:is": "Lúanda", + "name:it": "Luanda", + "name:ja": "ルアンダ", + "name:ka": "ლუანდა", + "name:kg": "Lwanda", + "name:ko": "루안다", + "name:ku": "Luanda", + "name:ky": "Луанда", + "name:ln": "Lwanda", + "name:lt": "Luanda", + "name:mk": "Луанда", + "name:mrj": "Луанда", + "name:nl": "Luanda", + "name:no": "Luanda", + "name:oc": "Luanda", + "name:os": "Луандæ", + "name:pl": "Luanda", + "name:pt": "Luanda", + "name:ru": "Луанда", + "name:sr": "Луанда", + "name:sv": "Luanda", + "name:tg": "Луанда", + "name:th": "ลูอันดา", + "name:tr": "Luanda", + "name:udm": "Луанда", + "name:uk": "Луанда", + "name:ur": "لواندا", + "name:vep": "Luand", + "name:zh": "罗安达", + "name:zh-Hans": "罗安达" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 13.2439512, + -8.8272699 + ] + }, + "id": "node/27564941" + }, + { + "type": "Feature", + "properties": { + "name": "Bamako", + "name:am": "ባማኮ", + "name:ar": "باماكو", + "name:arc": "ܒܡܩܘ", + "name:azb": "باماکو", + "name:be": "Бамако", + "name:be-tarask": "Бамако", + "name:bg": "Бамако", + "name:bm": "Bamakɔ", + "name:bo": "བ་མ་ཀོ།", + "name:ckb": "باماکۆ", + "name:cv": "Бамако", + "name:de": "Bamako", + "name:el": "Μπαμακό", + "name:en": "Bamako", + "name:eo": "Bamako", + "name:es": "Bamako", + "name:fa": "باماکو", + "name:fr": "Bamako", + "name:gl": "Bamaco", + "name:gr": "Βαμάκον", + "name:grc": "Βαμάκον", + "name:he": "במקו", + "name:hu": "Bamako", + "name:hy": "Բամակո", + "name:is": "Bamakó", + "name:it": "Bamako", + "name:ja": "バマコ", + "name:ka": "ბამაკო", + "name:kab": "Bamaku", + "name:ko": "바마코", + "name:ky": "Бамако", + "name:lt": "Bamakas", + "name:mk": "Бамако", + "name:mrj": "Бамако", + "name:nl": "Bamako", + "name:no": "Bamako", + "name:nqo": "ߓߡߊ߬ߞߐ߫", + "name:oc": "Bamako", + "name:os": "Бамако", + "name:pl": "Bamako", + "name:ru": "Бамако", + "name:sr": "Бамако", + "name:sv": "Bamako", + "name:syc": "ܒܡܩܘ", + "name:tg": "Бамако", + "name:th": "บามาโก", + "name:tr": "Bamako", + "name:udm": "Бамако", + "name:uk": "Бамако", + "name:ur": "بماکو", + "name:zh": "巴馬科" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -8.000337, + 12.649319 + ] + }, + "id": "node/27564954" + }, + { + "type": "Feature", + "properties": { + "name": "تونس", + "name:ace": "Tunisia", + "name:af": "Tunisië", + "name:als": "Tunesien", + "name:am": "ቱኒስ", + "name:an": "Túniz", + "name:ang": "Tunisia", + "name:ar": "تونس", + "name:arc": "ܬܘܢܣ", + "name:arz": "تونس", + "name:ast": "Túnez", + "name:az": "Tunis", + "name:ba": "Тунис", + "name:bat-smg": "Tonėsos", + "name:bcl": "Tunisya", + "name:be": "Туніс", + "name:be-tarask": "Туніс", + "name:ber": "ⵜⵓⵏⴻⵙ", + "name:bg": "Тунис", + "name:bjn": "Tunisia", + "name:bm": "Tunizi", + "name:bo": "ཊུ་ནིསི།", + "name:bpy": "তিউনিসিয়া", + "name:br": "Tuniz", + "name:bs": "Tunis", + "name:bxr": "Тунис", + "name:ca": "Tunísia", + "name:ce": "Тунис", + "name:ceb": "Tunisia", + "name:ckb": "شاری تونس", + "name:crh": "Tunis", + "name:cs": "Tunis", + "name:cv": "Тунис", + "name:cy": "Tunisia", + "name:da": "Tunis", + "name:de": "Tunis", + "name:diq": "Tunıs", + "name:dv": "ތޫނިސް", + "name:ee": "Tunisia", + "name:el": "Τύνιδα", + "name:en": "Tunis", + "name:eo": "Tunizo", + "name:es": "Túnez", + "name:et": "Tunis", + "name:eu": "Tunisia", + "name:ext": "Túnis", + "name:fa": "تونس", + "name:fi": "Tunis", + "name:fiu-vro": "Tuneesiä", + "name:fo": "Tunesia", + "name:fr": "Tunis", + "name:frp": "Tunisie", + "name:fy": "Tuneezje", + "name:ga": "Túinis", + "name:gag": "Tunis", + "name:gd": "Tuinisia", + "name:gl": "Tunes", + "name:gr": "Τύνις", + "name:grc": "Τύνις", + "name:gv": "Yn Tooneesh", + "name:haw": "Tunisia", + "name:he": "תוניס", + "name:hif": "Tunisia", + "name:hr": "Tunis", + "name:hsb": "Tuneziska", + "name:ht": "Tinis", + "name:hu": "Tunisz", + "name:hy": "Թունիս", + "name:id": "Tunisia", + "name:ie": "Tunisia", + "name:ilo": "Tunisia", + "name:io": "Tunizia", + "name:is": "Túnis", + "name:it": "Tunisi", + "name:ja": "チュニス", + "name:jv": "Tunisia", + "name:ka": "ტუნისი", + "name:kab": "Tunes tamaneɣt", + "name:kg": "Tunisia", + "name:kk": "Тунис", + "name:ko": "튀니스", + "name:ku": "Tûnis", + "name:kw": "Tunisi", + "name:ky": "Тунис шаары", + "name:la": "Tunes", + "name:lad": "Tunesia", + "name:lb": "Tunesien", + "name:li": "Tunesië", + "name:lij": "Tunixia", + "name:lmo": "Tünis", + "name:ln": "Tunisia", + "name:lt": "Tunisas", + "name:lv": "Tunisa", + "name:mdf": "Тунис", + "name:mg": "Tonizia", + "name:mk": "Тунис", + "name:mn": "Тунис", + "name:mrj": "Тунис", + "name:ms": "Tunisia", + "name:mt": "Tuneżija", + "name:mzn": "تونس", + "name:nah": "Tunez", + "name:nan": "Tunisia", + "name:nds": "Tunesien", + "name:new": "ट्युनिसिया", + "name:nl": "Tunis", + "name:nn": "Tunisia", + "name:no": "Tunisia", + "name:nov": "Tunisia", + "name:nso": "Tunisia", + "name:oc": "Tunisia", + "name:os": "Тунис", + "name:pam": "Tunisia", + "name:pap": "Tunesia", + "name:pl": "Tunis", + "name:pms": "Tùnis", + "name:pnt": "Τυνησίαν", + "name:ps": "تونس", + "name:pt": "Tunes", + "name:qu": "Tunisya", + "name:rm": "Tunesia", + "name:ro": "Tunisia", + "name:ru": "Тунис", + "name:rw": "Tunisiya", + "name:sa": "टुनिशिया", + "name:sah": "Тунис", + "name:sc": "Tunisia", + "name:scn": "Tùnisi", + "name:sco": "Tunisie", + "name:se": "Tunisia", + "name:sg": "Tunizïi", + "name:sh": "Tunis", + "name:sk": "Tunis", + "name:sl": "Tunizija", + "name:sn": "Tunisia", + "name:so": "Tunisiya", + "name:sq": "Tunizia", + "name:sr": "Тунис", + "name:ss": "IThunisiya", + "name:stq": "Tunesien", + "name:su": "Tunisia", + "name:sv": "Tunis", + "name:sw": "Tunisia", + "name:syc": "ܬܘܢܣ", + "name:szl": "Tůnezyjo", + "name:tg": "Тунис", + "name:th": "ตูนิส", + "name:ti": "ቱኒዢያ", + "name:tk": "Tunis", + "name:tl": "Tunisya", + "name:tr": "Tunus", + "name:ts": "Tunisia", + "name:tt": "Тунис", + "name:udm": "Тунис", + "name:ug": "تۇنىس شەھىرى", + "name:uk": "Туніс", + "name:ur": "تونس", + "name:uz": "Tunis", + "name:vec": "Túnixi", + "name:vi": "Tunis", + "name:vo": "Tunis", + "name:wa": "Tunizeye", + "name:war": "Tunisia", + "name:wo": "Tiniisi", + "name:wuu": "突尼斯市", + "name:xal": "Тунисин Орн", + "name:yi": "טוניסיע", + "name:yo": "Tùnísíà", + "name:yue": "突尼西亞", + "name:zh": "突尼斯", + "name:zu": "ITunisia" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 10.1857757, + 36.8002068 + ] + }, + "id": "node/27564968" + }, + { + "type": "Feature", + "properties": { + "name": "Monrovia", + "name:am": "ሞንሮቪያ", + "name:ar": "مونروفيا", + "name:az": "Monroviya", + "name:be": "Манровія", + "name:bg": "Монровия", + "name:bo": "མོང་རོ་ཝི་ཡ།", + "name:ca": "Monròvia", + "name:ckb": "مۆنرۆڤیا", + "name:de": "Monrovia", + "name:el": "Μονρόβια", + "name:en": "Monrovia", + "name:eo": "Monrovio", + "name:es": "Monrovia", + "name:fa": "مونروویا", + "name:fr": "Monrovia", + "name:he": "מונרוביה", + "name:hu": "Monrovia", + "name:hy": "Մոնրովիա", + "name:is": "Mondróvía", + "name:it": "Monrovia", + "name:ja": "モンロビア", + "name:ka": "მონროვია", + "name:ko": "몬로비아", + "name:ky": "Монровия", + "name:lt": "Monrovija", + "name:lv": "Monrovija", + "name:mk": "Монровија", + "name:mrj": "Монрови", + "name:nl": "Monrovia", + "name:no": "Monrovia", + "name:oc": "Monròvia", + "name:pl": "Monrovia", + "name:pt": "Monróvia", + "name:ru": "Монровия", + "name:so": "Monrofia", + "name:sr": "Монровија", + "name:sv": "Monrovia", + "name:tg": "Монровия", + "name:th": "มันโรเวีย", + "name:tr": "Monrovia", + "name:udm": "Монровия", + "name:uk": "Монровія", + "name:ur": "مونروویا", + "name:zh": "蒙羅維亞" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -10.797788, + 6.328034 + ] + }, + "id": "node/27564980" + }, + { + "type": "Feature", + "properties": { + "name": "Bangî - Bangui", + "name:ar": "بانغي", + "name:azb": "بانقی", + "name:be": "Бангі", + "name:be-tarask": "Бангі", + "name:bg": "Банги", + "name:bo": "བང་གུའི།", + "name:ca": "Bangui", + "name:ckb": "بانگی", + "name:da": "Bangui", + "name:de": "Bangui", + "name:el": "Μπανγκί", + "name:en": "Bangui", + "name:eo": "Bangio", + "name:es": "Bangui", + "name:eu": "Bangi", + "name:fa": "بانگوئی", + "name:fr": "Bangui", + "name:gl": "Bangui", + "name:he": "בנגי", + "name:ht": "Bangiy", + "name:hu": "Bangui", + "name:hy": "Բանգի", + "name:is": "Bangví", + "name:it": "Bangui", + "name:ja": "バンギ", + "name:ka": "ბანგი", + "name:ko": "방기", + "name:ky": "Банги", + "name:lij": "Bangui", + "name:ln": "Bangi", + "name:lt": "Bangis", + "name:lv": "Bangi", + "name:mk": "Банги", + "name:nl": "Bangui", + "name:no": "Bangui", + "name:oc": "Bangui", + "name:pl": "Bangi", + "name:ps": "بانګویی", + "name:pt": "Bangui", + "name:ru": "Банги", + "name:sg": "Kötä gbätä tî Bangî", + "name:sr": "Банги", + "name:sv": "Bangui", + "name:tg": "Банги", + "name:th": "บังกี", + "name:tr": "Bangui", + "name:udm": "Банги", + "name:uk": "Бангі", + "name:ur": "بانگوئی", + "name:wo": "Bangi", + "name:zh": "班基" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 18.5509126, + 4.3907153 + ] + }, + "id": "node/27564988" + }, + { + "type": "Feature", + "properties": { + "name": "Lusaka", + "name:am": "ሉሳካ", + "name:ar": "لوساكا", + "name:be": "Лусака", + "name:bg": "Лусака", + "name:bo": "ལུ་ས་ཀ།", + "name:ckb": "لووساکا", + "name:de": "Lusaka", + "name:el": "Λουσάκα", + "name:en": "Lusaka", + "name:eo": "Lusako", + "name:es": "Lusaka", + "name:fa": "لوساکا", + "name:fr": "Lusaka", + "name:fy": "Lûsaka", + "name:gl": "Lusaca", + "name:he": "לוסקה", + "name:ht": "Louzaka", + "name:hu": "Lusaka", + "name:hy": "Լուսակա", + "name:is": "Lúsaka", + "name:ja": "ルサカ", + "name:ka": "ლუსაკა", + "name:ko": "루사카", + "name:ky": "Лусака", + "name:la": "Lusaca", + "name:mk": "Лусака", + "name:mn": "Лусака", + "name:mrj": "Лусака", + "name:nl": "Lusaka", + "name:no": "Lusaka", + "name:oc": "Lusaka", + "name:pl": "Lusaka", + "name:pt": "Lusaca", + "name:ru": "Лусака", + "name:sr": "Лусака", + "name:sv": "Lusaka", + "name:tg": "Лусака", + "name:th": "ลูซากา", + "name:udm": "Лусака", + "name:ug": "لۇساكا", + "name:uk": "Лусака", + "name:ur": "لوساکا", + "name:zh": "盧薩卡" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 28.2824793, + -15.4164124 + ] + }, + "id": "node/27564994" + }, + { + "type": "Feature", + "properties": { + "name": "Ouagadougou", + "name:af": "Ouagadougou", + "name:am": "ዋጋዱጉ", + "name:an": "Ouagadougou", + "name:ar": "واغادوغو", + "name:az": "Uaqaduqu", + "name:be": "Уагадугу", + "name:be-tarask": "Уагадугу", + "name:bg": "Уагадугу", + "name:bm": "Wagadugu", + "name:bo": "ཨོ་འ་ག་དོའུ་གོའུ།", + "name:br": "Ouagadougou", + "name:bs": "Ouagadougou", + "name:ca": "Ouagadougou", + "name:ceb": "Ouagadougou", + "name:ckb": "ئۆئاگادۆگۆ", + "name:cs": "Ouagadougou", + "name:cv": "Уагадугу", + "name:cy": "Ouagadougou", + "name:da": "Ouagadougou", + "name:de": "Ouagadougou", + "name:el": "Ουαγκαντουγκού", + "name:en": "Ouagadougou", + "name:eo": "Uagaduguo", + "name:es": "Uagadugú", + "name:et": "Ouagadougou", + "name:eu": "Uagadugu", + "name:fa": "اوآگادوگو", + "name:fi": "Ouagadougou", + "name:fr": "Ouagadougou", + "name:frp": "Ouagadougou", + "name:fy": "Ouagadougou", + "name:ga": "Ouagadougou", + "name:gd": "Ouagadougou", + "name:gl": "Uagadugú", + "name:he": "ואגאדוגו", + "name:hif": "Ouagadougou", + "name:hr": "Ouagadougou", + "name:hsb": "Ouagadougou", + "name:ht": "Ouagadougou", + "name:hu": "Ouagadougou", + "name:hy": "Ուագադուգու", + "name:is": "Ouagadougou", + "name:it": "Ouagadougou", + "name:ja": "ワガドゥグー", + "name:jv": "Ouagadougou", + "name:ka": "უაგადუგუ", + "name:kab": "Wagadugu", + "name:ko": "와가두구", + "name:kw": "Ouagadougou", + "name:ky": "Уагадугу", + "name:la": "Uagadugum", + "name:lb": "Ouagadougou", + "name:lij": "Ouagadougou", + "name:lmo": "Ouagadougou", + "name:lt": "Uagadugu", + "name:lv": "Vagadugu", + "name:mg": "Ouagadougou", + "name:mk": "Уагадугу", + "name:mrj": "Уагадугу", + "name:ms": "Ouagadougou", + "name:na": "Ouagadougou", + "name:nah": "Huagadugu", + "name:nan": "Ouagadougou", + "name:nb": "Ouagadougou", + "name:nl": "Ouagadougou", + "name:nn": "Ouagadougou", + "name:nov": "Uagadugu", + "name:oc": "Ouagadougou", + "name:pl": "Wagadugu", + "name:pms": "Ouagadougou", + "name:pt": "Ouagadougou", + "name:ro": "Ouagadougou", + "name:ru": "Уагадугу", + "name:rw": "Wagadugu", + "name:scn": "Ouagadougou", + "name:sco": "Ouagadougou", + "name:sh": "Ouagadougou", + "name:sk": "Ouagadougou", + "name:sl": "Ouagadougou", + "name:sn": "Ouagadougou", + "name:so": "Ougadougou", + "name:sq": "Ouagadougou", + "name:sr": "Уагадугу", + "name:sv": "Ouagadougou", + "name:sw": "Wagadugu", + "name:tg": "Уагадугу", + "name:th": "วากาดูกู", + "name:tl": "Ouagadougou", + "name:tr": "Ouagadougou", + "name:udm": "Уагадугу", + "name:uk": "Уагадугу", + "name:ur": "اواگادوگو", + "name:uz": "Uagadugu", + "name:vec": "Ouagadougou", + "name:vep": "Uagadugu", + "name:vi": "Ouagadougou", + "name:vo": "Ouagadougou", + "name:war": "Ouagadougou", + "name:yi": "וואגאדוגו", + "name:yo": "Ouagadougou", + "name:zh": "瓦加杜古", + "name:zh-Hant": "烏格都古" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -1.5270944, + 12.3681873 + ] + }, + "id": "node/27565002" + }, + { + "type": "Feature", + "properties": { + "name": "N'Djaména انجمينا", + "name:af": "N'Djamena", + "name:am": "ንጃመና", + "name:ar": "انجمينا", + "name:arc": "ܢܓܡܝܢܐ", + "name:az": "Ncamena", + "name:be": "Нджамена", + "name:be-tarask": "Нджамэна", + "name:bg": "Нджамена", + "name:bo": "ཇ་མི་ན།", + "name:br": "Ndjamena", + "name:bs": "N'Djamena", + "name:ca": "N'Djamena", + "name:ckb": "نجامێنا", + "name:cs": "N'Djamena", + "name:cy": "N'Djamena", + "name:da": "N'Djamena", + "name:de": "N’Djamena", + "name:el": "Ντζαμένα", + "name:en": "N'Djamena", + "name:eo": "Niĝameno", + "name:es": "Yamena", + "name:et": "N'Djamena", + "name:eu": "N'Djamena", + "name:fa": "انجامنا", + "name:fr": "N'Djaména", + "name:frp": "N’Dj·amèna", + "name:fy": "N'Djamena", + "name:gd": "N'Djamena", + "name:gl": "Xamena", + "name:he": "נג'מנה", + "name:hif": "N'Djamena", + "name:hr": "N’Djamena", + "name:ht": "N'Djamèna", + "name:hu": "N’Djamena", + "name:hy": "Նջամենա", + "name:id": "N'Djamena", + "name:ie": "N'Djamena", + "name:io": "N'Djamena", + "name:is": "N’Djamena", + "name:it": "N'Djamena", + "name:ja": "ンジャメナ", + "name:jv": "N'Djamena", + "name:ka": "ნჯამენა", + "name:kab": "Nǧamena", + "name:kg": "Ndjamena", + "name:kk": "Нджамена", + "name:ko": "은자메나", + "name:ku": "N'Djamena", + "name:kw": "N'Djamena", + "name:ky": "Нжамена", + "name:la": "Ndjamena", + "name:lb": "N'Djamena", + "name:lij": "N'Djamena", + "name:lmo": "N'Djamena", + "name:lt": "Ndžamena", + "name:lv": "Ndžamena", + "name:mk": "Нџамена", + "name:mrj": "Нджамена", + "name:ms": "N'Djamena", + "name:nah": "Yamena", + "name:nl": "Ndjamena", + "name:nn": "N'Djamena", + "name:no": "N'Djamena", + "name:nov": "N'Djamena", + "name:oc": "N'Djamena", + "name:pl": "Ndżamena", + "name:pms": "N'Djamena", + "name:pt": "Jamena", + "name:ro": "N'Djamena", + "name:roa-rup": "N'Djamena", + "name:ru": "Нджамена", + "name:scn": "N'Djamena", + "name:sco": "N'Djamena", + "name:sh": "N'Djamena", + "name:sk": "N’Djamena", + "name:so": "Nijamiina", + "name:sr": "Нџамена", + "name:sv": "N’Djamena", + "name:sw": "N'Djamena", + "name:syc": "ܢܓܡܝܢܐ", + "name:tg": "Нҷамена", + "name:th": "เอ็นจาเมนา", + "name:tl": "NDjamena", + "name:tr": "N'Djamena", + "name:udm": "Нджамена", + "name:uk": "Нджамена", + "name:ur": "اینجامینا", + "name:vec": "N'Djamena", + "name:vi": "N’Djamena", + "name:war": "N'Djamena", + "name:wo": "Njamena", + "name:yo": "N'Djamena", + "name:zh": "恩賈梅納" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 15.0502758, + 12.1191543 + ] + }, + "id": "node/27565022" + }, + { + "type": "Feature", + "properties": { + "name": "Dakar", + "name:am": "ዳካር", + "name:ar": "داكار", + "name:arz": "داكار", + "name:be": "Дакар", + "name:bg": "Дакар", + "name:bm": "Dakaro", + "name:bo": "ཌ་ཀར།", + "name:ckb": "داکار", + "name:cs": "Dakar", + "name:cv": "Дакар", + "name:de": "Dakar", + "name:el": "Ντακάρ", + "name:en": "Dakar", + "name:eo": "Dakaro", + "name:es": "Dakar", + "name:fa": "داکار", + "name:fr": "Dakar", + "name:ga": "Dacár", + "name:gcf": "Dakar", + "name:gl": "Dacar - Dakar", + "name:he": "דקאר", + "name:hu": "Dakar", + "name:hy": "Դակար", + "name:is": "Dakar", + "name:it": "Dakar", + "name:ja": "ダカール", + "name:ka": "დაკარი", + "name:kk": "Дакар", + "name:ko": "다카르", + "name:ku": "Dakar", + "name:ky": "Дакар", + "name:lt": "Dakaras", + "name:lv": "Dakara", + "name:mk": "Дакар", + "name:mrj": "Дакар", + "name:nl": "Dakar", + "name:no": "Dakar", + "name:oc": "Dakar", + "name:os": "Дакар", + "name:pl": "Dakar", + "name:pt": "Dacar", + "name:ru": "Дакар", + "name:sr": "Дакар", + "name:sv": "Dakar", + "name:tg": "Дакар", + "name:th": "ดาการ์", + "name:tr": "Dakar", + "name:udm": "Дакар", + "name:uk": "Дакар", + "name:ur": "ڈاکار", + "name:wo": "Ndakaaru", + "name:yi": "דאקאר", + "name:zh": "達喀爾/达喀尔" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -17.447938, + 14.693425 + ] + }, + "id": "node/27565045" + }, + { + "type": "Feature", + "properties": { + "name": "Freetown", + "name:af": "Freetown, Sierra Leone", + "name:am": "ፍሪታውን", + "name:ar": "فريتاون", + "name:az": "Fritaun", + "name:be": "Фрытаўн", + "name:bg": "Фрийтаун", + "name:bo": "ཕིརི་ཊའུན།", + "name:de": "Freetown", + "name:el": "Φρίταουν", + "name:en": "Freetown", + "name:eo": "Fritaŭno", + "name:es": "Freetown", + "name:fa": "فری‌تاون", + "name:fr": "Freetown", + "name:he": "פריטאון", + "name:ht": "Fritonn", + "name:hu": "Freetown", + "name:hy": "Ֆրիթաուն", + "name:is": "Freetown", + "name:it": "Freetown", + "name:ja": "フリータウン", + "name:ka": "ფრიტაუნი", + "name:ko": "프리타운", + "name:ky": "Фритаун", + "name:la": "Libera Urbs", + "name:lt": "Fritaunas", + "name:lv": "Frītauna", + "name:mk": "Фритаун", + "name:mrj": "Фритаун", + "name:nl": "Freetown", + "name:no": "Freetown", + "name:oc": "Freetown", + "name:pl": "Freetown", + "name:pt": "Freetown", + "name:ru": "Фритаун", + "name:sr": "Фритаун", + "name:sv": "Freetown", + "name:tg": "Фритаун", + "name:th": "ฟรีทาวน์", + "name:tr": "Freetown", + "name:udm": "Фритаун", + "name:uk": "Фрітаун", + "name:ur": "فری ٹاؤن", + "name:zh": "弗里敦" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -13.26795, + 8.479004 + ] + }, + "id": "node/27565056" + }, + { + "type": "Feature", + "properties": { + "name": "Conakry", + "name:ar": "كوناكري", + "name:bo": "ཀོ་ནཀ་རི།", + "name:ckb": "کۆناکری", + "name:de": "Conakry", + "name:el": "Κονακρί", + "name:en": "Conakry", + "name:es": "Conakri", + "name:fa": "کوناکری", + "name:fr": "Conakry", + "name:he": "קונאקרי", + "name:hu": "Conakry", + "name:hy": "Կոնակրի", + "name:is": "Kónakrí", + "name:it": "Conakry", + "name:ja": "コナクリ", + "name:ka": "კონაკრი", + "name:ko": "코나크리", + "name:ky": "Конакри", + "name:lt": "Konakris", + "name:mk": "Конакри", + "name:mrj": "Конакри", + "name:nah": "Conacri", + "name:nl": "Conakry", + "name:no": "Conakry", + "name:nqo": "ߞߐߣߊߞߙߌ߫", + "name:oc": "Conakry", + "name:pl": "Konakry", + "name:pt": "Conacri", + "name:ru": "Конакри", + "name:so": "Konakri", + "name:sq": "Konakri", + "name:sr": "Конакри", + "name:sv": "Conakry", + "name:tg": "Конакри", + "name:th": "โกนากรี", + "name:tr": "Konakri", + "name:udm": "Конакри", + "name:uk": "Конакрі", + "name:ur": "کوناکری", + "name:zh": "科納克里" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -13.6998434, + 9.5170602 + ] + }, + "id": "node/27565062" + }, + { + "type": "Feature", + "properties": { + "name": "Libreville", + "name:am": "ሊብረቪል", + "name:ar": "ليبرفيل", + "name:az": "Librevil", + "name:be": "Лібрэвіль", + "name:bg": "Либревил", + "name:bo": "ལིབ་རེ་ཝིལ།", + "name:ckb": "لیبرێڤیل", + "name:cs": "Libreville", + "name:cv": "Либревиль", + "name:de": "Libreville", + "name:el": "Λιμπρβίλ", + "name:en": "Libreville", + "name:eo": "Librevilo", + "name:es": "Libreville", + "name:fa": "لیبرویل", + "name:fr": "Libreville", + "name:he": "ליברוויל", + "name:ht": "Libvil", + "name:hu": "Libreville", + "name:hy": "Լիբրևիլ", + "name:is": "Libreville", + "name:it": "Libreville", + "name:ja": "リーブルヴィル", + "name:ka": "ლიბრევილი", + "name:ko": "리브르빌", + "name:ky": "Либревил", + "name:la": "Liberopolis", + "name:lt": "Librevilis", + "name:lv": "Librevila", + "name:mk": "Либрвил", + "name:mrj": "Либревиль", + "name:nl": "Libreville", + "name:no": "Libreville", + "name:nov": "Librevil", + "name:oc": "Liuravila", + "name:pl": "Libreville", + "name:pt": "Libreville", + "name:ru": "Либревиль", + "name:so": "Librefille", + "name:sr": "Либрвил", + "name:sv": "Libreville", + "name:tg": "Либревил", + "name:th": "ลีเบรอวิล", + "name:tr": "Libreville", + "name:udm": "Либревиль", + "name:uk": "Лібревіль", + "name:ur": "لبریویل", + "name:wo": "Libarwil", + "name:zh": "利伯维尔", + "name:zh-Hans": "利伯维尔", + "name:zh-Hant": "利伯維爾" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 9.454001, + 0.390002 + ] + }, + "id": "node/27565068" + }, + { + "type": "Feature", + "properties": { + "name": "አዲስ አበባ / Addis Ababa", + "name:af": "Addis Abeba", + "name:am": "አዲስ አበባ", + "name:an": "Addis Abeba", + "name:ar": "أديس أبابا", + "name:arz": "اديس ابابا", + "name:az": "Əddis-Əbəbə", + "name:bat-smg": "Adis Abeba", + "name:be": "Адыс-Абеба", + "name:be-tarask": "Адыс-Абэба", + "name:bg": "Адис Абеба", + "name:bo": "ཨ་ཌི་སི་ཨ་བ་བ།", + "name:br": "Addis Abeba", + "name:bs": "Adis Abeba", + "name:ca": "Addis Abeba", + "name:ckb": "ئادیس ئابابا", + "name:cs": "Addis Abeba", + "name:de": "Addis Abeba", + "name:el": "Αντίς Αμπέμπα", + "name:en": "Addis Ababa", + "name:eo": "Adis-Abebo", + "name:es": "Adís Abeba", + "name:et": "Addis Abeba", + "name:eu": "Addis Abeba", + "name:fa": "آدیس آبابا", + "name:fi": "Addis Abeba", + "name:fr": "Addis-Abeba", + "name:fy": "Addis Abeba", + "name:ga": "Adas Ababa", + "name:gl": "Adís Abeba - አዲስ አበባ", + "name:he": "אדיס אבבה", + "name:hr": "Adis Abeba", + "name:ht": "Adis-Abeba", + "name:hu": "Addisz-Abeba", + "name:hy": "Ադիս Աբեբա", + "name:ie": "Addis Abeba", + "name:it": "Addis Abeba", + "name:ja": "アディスアベバ", + "name:ka": "ადის-აბება", + "name:kab": "Addis Abeba", + "name:ko": "아디스아바바", + "name:ku": "Addîs Ababa", + "name:ky": "Аддис-Абеба", + "name:la": "Neanthopolis", + "name:lb": "Addis Abeba", + "name:lt": "Adis Abeba", + "name:lv": "Adisabeba", + "name:mg": "Addis Abeba", + "name:mk": "Адис Абеба", + "name:mn": "Аддис-Абеба", + "name:mrj": "Аддис-Абеба", + "name:nah": "Adis Abeba", + "name:new": "अदिस अबाबा", + "name:nl": "Addis Abeba", + "name:nn": "Addis Abeba", + "name:no": "Addis Abeba", + "name:nov": "Adis Ababa", + "name:oc": "Addis Abeba", + "name:om": "Finfinne", + "name:os": "Аддис-Абебæ", + "name:pl": "Addis Abeba", + "name:pt": "Adis Abeba", + "name:qu": "Adis Ababa", + "name:rm": "Addis Abeba", + "name:ro": "Addis Abeba", + "name:ru": "Аддис-Абеба", + "name:sh": "Adis Abeba", + "name:sk": "Addis Abeba", + "name:sl": "Adis Abeba", + "name:so": "Addis Abeba", + "name:sq": "Addis Abeba", + "name:sr": "Адис Абеба", + "name:sv": "Addis Abeba", + "name:tg": "Аддис-Абеба", + "name:th": "แอดดิสอาบาบา", + "name:tl": "Adis Abeba", + "name:tr": "Addis Ababa", + "name:udm": "Аддис-Абеба", + "name:uk": "Аддис-Абеба", + "name:ur": "ادیس ابابا", + "name:wo": "Addis-Abeba", + "name:zh": "亞的斯亞貝巴/亚的斯亚贝巴" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 38.7612525, + 9.0107934 + ] + }, + "id": "node/27565076" + }, + { + "type": "Feature", + "properties": { + "name": "Accra", + "name:ak": "Nkran", + "name:am": "አክራ", + "name:ar": "أكرا", + "name:arz": "اكرا", + "name:az": "Akkra", + "name:bat-smg": "Akra", + "name:be": "Акра", + "name:bg": "Акра", + "name:bo": "ཨ་ཁ་ར།", + "name:ckb": "ئاکرا", + "name:cv": "Аккра", + "name:de": "Accra", + "name:el": "Άκκρα", + "name:en": "Accra", + "name:eo": "Akrao", + "name:es": "Acra", + "name:eu": "Akkra", + "name:fa": "آکرا", + "name:fr": "Accra", + "name:fy": "Akkra", + "name:he": "אקרה", + "name:ht": "Akra", + "name:hu": "Accra", + "name:hy": "Ակրա", + "name:is": "Akkra", + "name:it": "Accra", + "name:ja": "アクラ", + "name:ka": "აკრა", + "name:kab": "Akra", + "name:ko": "아크라", + "name:ky": "Аккра", + "name:lt": "Akra", + "name:lv": "Akra", + "name:mk": "Акра", + "name:mrj": "Аккра", + "name:nl": "Accra", + "name:no": "Accra", + "name:nov": "Akra", + "name:oc": "Accra", + "name:os": "Аккрæ", + "name:pl": "Akra", + "name:pt": "Acra", + "name:ru": "Аккра", + "name:sk": "Akkra", + "name:sl": "Akra", + "name:sq": "Akra", + "name:sr": "Акра", + "name:sv": "Accra", + "name:tg": "Аккра", + "name:th": "อักกรา", + "name:tr": "Akra", + "name:tw": "Nkran", + "name:udm": "Аккра", + "name:uk": "Аккра", + "name:ur": "اکرا", + "name:xmf": "აკრა", + "name:yi": "אקרא", + "name:yo": "Aakrá", + "name:zh": "阿克拉" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -0.2012376, + 5.5571096 + ] + }, + "id": "node/27565080" + }, + { + "type": "Feature", + "properties": { + "name": "Maputo", + "name:am": "ማፑቶ", + "name:an": "Maputo", + "name:ar": "مابوتو", + "name:az": "Maputu", + "name:be": "Мапуту", + "name:bg": "Мапуто", + "name:bo": "མ་པུ་ཊོ།", + "name:br": "Maputo", + "name:bs": "Maputo", + "name:ca": "Maputo", + "name:ce": "Мапуту", + "name:ceb": "Maputo", + "name:ckb": "ماپوتۆ", + "name:cs": "Maputo", + "name:cy": "Maputo", + "name:da": "Maputo", + "name:de": "Maputo", + "name:el": "Μαπούτο", + "name:en": "Maputo", + "name:eo": "Maputo", + "name:es": "Maputo", + "name:et": "Maputo", + "name:eu": "Maputo", + "name:fa": "ماپوتو", + "name:fi": "Maputo", + "name:fr": "Maputo", + "name:frp": "Maputo", + "name:frr": "Maputo", + "name:fy": "Maputo", + "name:ga": "Maputo", + "name:gd": "Maputo", + "name:gl": "Maputo", + "name:ha": "Maputo", + "name:hak": "Maputo", + "name:he": "מפוטו", + "name:hif": "Maputo", + "name:hr": "Maputo", + "name:ht": "Mapouto", + "name:hu": "Maputo", + "name:hy": "Մապուտու", + "name:ia": "Maputo", + "name:id": "Maputo", + "name:ie": "Maputo", + "name:io": "Maputo", + "name:is": "Mapútó", + "name:it": "Maputo", + "name:ja": "マプト", + "name:jv": "Maputo", + "name:ka": "მაპუტუ", + "name:kab": "Maputo", + "name:kg": "Maputo", + "name:kk": "Мапуту", + "name:ko": "마푸투", + "name:ky": "Мапуту", + "name:la": "Maputo", + "name:lb": "Maputo", + "name:lfn": "Maputo", + "name:lij": "Maputo", + "name:lmo": "Maputo", + "name:lt": "Maputu", + "name:lv": "Maputu", + "name:mg": "Maputo", + "name:mi": "Maputo", + "name:mk": "Мапуто", + "name:mrj": "Мапуту", + "name:ms": "Maputo", + "name:mwl": "Maputo", + "name:nah": "Maputo", + "name:nl": "Maputo", + "name:no": "Maputo", + "name:ny": "Maputo", + "name:oc": "Maputo", + "name:os": "Мапуту", + "name:pap": "Maputo", + "name:pl": "Maputo", + "name:pms": "Maputo", + "name:pt": "Maputo", + "name:qu": "Maputu", + "name:ro": "Maputo", + "name:ru": "Мапуту", + "name:rw": "Maputo", + "name:sc": "Maputo", + "name:sco": "Maputu", + "name:sh": "Maputo", + "name:sk": "Maputo", + "name:sl": "Maputo", + "name:smn": "Maputo", + "name:sn": "Maputo", + "name:so": "Mabuto", + "name:sq": "Maputo", + "name:sr": "Мапуто", + "name:sv": "Maputo", + "name:sw": "Maputo", + "name:szl": "Maputo", + "name:tet": "Maputu", + "name:tg": "Мапуту", + "name:th": "มาปูโต", + "name:tl": "Maputo", + "name:tr": "Maputo", + "name:udm": "Мапуту", + "name:uk": "Мапуту", + "name:ur": "ماپوتو", + "name:uz": "Maputu", + "name:vec": "Maputo", + "name:vep": "Maputu", + "name:vi": "Maputo", + "name:vo": "Maputo", + "name:war": "Maputo", + "name:wo": "Maputo", + "name:wuu": "马普托", + "name:xh": "EMaputo", + "name:xmf": "მაპუტუ", + "name:yi": "מאפוטא", + "name:yo": "Maputo", + "name:zh": "馬普托", + "name:zu": "Maputo" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 32.56745, + -25.966213 + ] + }, + "id": "node/27565081" + }, + { + "type": "Feature", + "properties": { + "name": "Djibouti جيبوتي", + "name:ace": "Djibouti", + "name:af": "Djiboeti", + "name:am": "ጅቡቲ", + "name:an": "Chibuti", + "name:ar": "جيبوتي", + "name:arz": "جيبوتي", + "name:ast": "Xibuti", + "name:az": "Cibuti", + "name:azb": "جیبوتی", + "name:ba": "Джибути", + "name:bat-smg": "Džėbotis", + "name:bcl": "Dibouti", + "name:be": "Джыбуці", + "name:bg": "Джибути", + "name:bjn": "Djibouti", + "name:bo": "ཇི་བའོ་ཊི།", + "name:bpy": "ডিজিবোটি", + "name:br": "Djibouti", + "name:bs": "Djibouti", + "name:bxr": "Джибути", + "name:ca": "Djibouti", + "name:ce": "Джибути", + "name:ceb": "Yibuti", + "name:ckb": "جیبووتی", + "name:crh": "Cibuti", + "name:cs": "Džíbutí", + "name:cv": "Джибути", + "name:cy": "Djibouti", + "name:da": "Djibouti", + "name:de": "Dschibuti", + "name:diq": "Cibuti", + "name:dv": "ޖިބުތީ", + "name:ee": "Djibouti", + "name:el": "Τζιμπουτί", + "name:en": "Djibouti", + "name:eo": "Ĝibutio", + "name:es": "Yibuti", + "name:et": "Djibouti", + "name:eu": "Djibuti", + "name:ext": "Yibuti", + "name:fa": "جیبوتی", + "name:fi": "Djibouti", + "name:fiu-vro": "Djibouti", + "name:fr": "Djibouti", + "name:frp": "Dj·iboti", + "name:fy": "Dzjibûty", + "name:ga": "Diobúití", + "name:gag": "Cibuti", + "name:gd": "Djibouti", + "name:gl": "Xibutí", + "name:gv": "Djibouti", + "name:he": "ג'יבוטי", + "name:hif": "Djibouti", + "name:hr": "Djibouti", + "name:hsb": "Dźibuti", + "name:ht": "Djibouti", + "name:hu": "Dzsibuti", + "name:hy": "Ջիբութի", + "name:ia": "Djibouti", + "name:id": "Djibouti", + "name:ie": "Djibouti", + "name:ilo": "Djibouti", + "name:io": "Djibuti", + "name:is": "Djíbútí", + "name:it": "Gibuti", + "name:ja": "ジブチ市", + "name:jv": "Djibouti", + "name:ka": "ჯიბუტი", + "name:kab": "Jibuti", + "name:kab-Arab": "جيبوتي", + "name:kg": "Djibuti", + "name:ki": "Djibouti", + "name:kk": "Джибути", + "name:kk-Arab": "دجىيبۋتىي", + "name:kmr": "جیبووتی", + "name:ko": "지부티", + "name:ks": "جیبوتی", + "name:ku": "Cîbûtî", + "name:ku-Arab": "جیبووتی", + "name:kw": "Sita Jibouti", + "name:ky": "Жибути шаары", + "name:la": "Urbs Dzibutum", + "name:lb": "Dschibuti", + "name:li": "Djibouti", + "name:lij": "Gibuti", + "name:lmo": "Djibouti", + "name:ln": "Djibuti", + "name:lrc": "جیبۊتی", + "name:lt": "Džibutis", + "name:lv": "Džibuti", + "name:lzh": "吉布地", + "name:mg": "Jibotia", + "name:min": "Djibouti", + "name:mk": "Џибути", + "name:mrj": "Джибути", + "name:ms": "Djibouti", + "name:mt": "Ġibuti", + "name:mzn": "جیبوتی", + "name:na": "Djibuti", + "name:nah": "Yibuti", + "name:nan": "Djibouti", + "name:nds": "Dschibuti", + "name:ne": "जिबुटी", + "name:nl": "Djibouti", + "name:nn": "Djibouti", + "name:no": "Djibouti", + "name:nov": "Djibuti", + "name:nso": "Djibouti", + "name:nv": "Jibótii", + "name:oc": "Jiboti", + "name:om": "Jibuutii", + "name:os": "Джибути", + "name:pam": "Djibouti", + "name:pdc": "Tschibuti", + "name:pih": "Jibuuti", + "name:pl": "Dżibuti", + "name:pms": "Djibouti", + "name:ps": "جېبوتي", + "name:pt": "Djibouti", + "name:qu": "Yiwuti", + "name:ro": "Djibouti", + "name:ru": "Джибути", + "name:rue": "Джібутьско", + "name:rw": "Jibuti", + "name:sa": "जिबूटी", + "name:sah": "Дьибути", + "name:sc": "Gibuti", + "name:scn": "Gibbuti", + "name:sco": "Djibouti", + "name:sd": "جبوتي", + "name:se": "Djibouti", + "name:sg": "Dibutùii", + "name:sh": "Djibouti", + "name:simple": "Djibouti", + "name:sk": "Džibuti", + "name:sl": "Džibuti", + "name:sn": "Djibouti", + "name:so": "Jabuuti", + "name:sq": "Xhibuti", + "name:sr": "Џибути", + "name:ss": "IJibhuthi", + "name:stq": "Dschibuti", + "name:su": "Djibouti", + "name:sv": "Djibouti", + "name:sw": "Jibuti", + "name:tg": "Ҷибути", + "name:th": "จิบูตี", + "name:ti": "ጂቡቲ", + "name:tk": "Jibuti", + "name:tl": "Djibouti", + "name:tr": "Cibuti", + "name:ts": "Djibouti", + "name:tt": "Җибути", + "name:udm": "Джибути", + "name:ug": "جىبۇتى", + "name:uk": "Джибуті", + "name:ur": "جبوتی", + "name:uz": "Jibuti", + "name:vec": "Gibuti", + "name:vi": "Djibouti", + "name:vo": "Cibutän", + "name:war": "Djibouti", + "name:wo": "Jibuti", + "name:xal": "Җибудин", + "name:yi": "דזשיבוטי", + "name:yo": "Djibouti", + "name:yue": "吉布提", + "name:zh": "吉布地市", + "name:zu": "IJibuthi" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 43.1472724, + 11.5936903 + ] + }, + "id": "node/27565085" + }, + { + "type": "Feature", + "properties": { + "name": "Nairobi", + "name:am": "ናይሮቢ", + "name:ar": "نيروبي", + "name:arz": "نايروبى", + "name:az": "Nayrobi", + "name:bat-smg": "Nairobis", + "name:be": "Найробі", + "name:bg": "Найроби", + "name:bo": "ནའི་རོ་བི།", + "name:ckb": "نایرۆبی", + "name:cs": "Nairobi", + "name:de": "Nairobi", + "name:el": "Ναϊρόμπι", + "name:en": "Nairobi", + "name:eo": "Najrobo", + "name:es": "Nairobi", + "name:fa": "نایروبی", + "name:fr": "Nairobi", + "name:fy": "Nairoby", + "name:he": "ניירובי", + "name:ht": "Nayrobi", + "name:hu": "Nairobi", + "name:hy": "Նայրոբի", + "name:is": "Naíróbí", + "name:it": "Nairobi", + "name:ja": "ナイロビ", + "name:ka": "ნაირობი", + "name:kk": "Найроби", + "name:ko": "나이로비", + "name:ku": "Nairobî", + "name:ky": "Найроби", + "name:la": "Nairobia", + "name:lez": "Найроби", + "name:lt": "Nairobis", + "name:mk": "Најроби", + "name:mn": "Найроби", + "name:mrj": "Найроби", + "name:nl": "Nairobi", + "name:no": "Nairobi", + "name:nov": "Nayrobi", + "name:oc": "Nairòbi", + "name:os": "Найроби", + "name:pl": "Nairobi", + "name:pms": "Nairòbi", + "name:pt": "Nairóbi", + "name:ru": "Найроби", + "name:rue": "Найробі", + "name:sah": "Найроби", + "name:sk": "Nairobi", + "name:so": "Nayroobi", + "name:sr": "Најроби", + "name:sv": "Nairobi", + "name:tg": "Найроби", + "name:th": "ไนโรบี", + "name:tk": "Naýrobi", + "name:tr": "Nairobi", + "name:tt": "Найроби", + "name:udm": "Найроби", + "name:ug": "نايروبى", + "name:uk": "Найробі", + "name:ur": "نیروبی", + "name:wuu": "内罗毕", + "name:yi": "נייראבי", + "name:yue": "奈洛比", + "name:zh": "内罗毕/內羅畢", + "name:zh-Hans": "内罗毕", + "name:zh-Hant": "內羅畢" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 36.8172449, + -1.2832533 + ] + }, + "id": "node/27565105" + }, + { + "type": "Feature", + "properties": { + "name": "Antananarivo", + "name:af": "Antananarivo", + "name:am": "አንታናናሪቮ", + "name:an": "Antananarivo", + "name:ar": "أنتاناناريفو", + "name:ast": "Antananarivu", + "name:avk": "Antananarivo", + "name:az": "Antananarivu", + "name:azb": "آنتاناناریوو", + "name:ba": "Антананариву", + "name:be": "Антананарыву", + "name:be-tarask": "Антананарыва", + "name:be-x-old": "Антананарыву", + "name:bg": "Антананариво", + "name:bo": "ཨེན་ཊ་ན་ན་རི་བོ།", + "name:br": "Antananarivo", + "name:bs": "Antananarivo", + "name:ca": "Antananarivo", + "name:cdo": "Antananarivo", + "name:ce": "Антананариву", + "name:ceb": "Antananarivo", + "name:ckb": "ئانتاناناریڤۆ", + "name:cs": "Antananarivo", + "name:cy": "Antananarivo", + "name:da": "Antananarivo", + "name:de": "Antananarivo", + "name:diq": "Antananarivo", + "name:el": "Ανταναναρίβο", + "name:en": "Antananarivo", + "name:eo": "Antananarivo", + "name:es": "Antananarivo", + "name:et": "Antananarivo", + "name:eu": "Antananarivo", + "name:fa": "آنتاناناریوو", + "name:fi": "Antananarivo", + "name:fiu-vro": "Antananarivo", + "name:fj": "Antananarivo", + "name:fr": "Antananarivo", + "name:frr": "Antananarivo", + "name:fy": "Antananarivo", + "name:ga": "Antananairíveo", + "name:gd": "Antananarivo", + "name:gl": "Antananarivo", + "name:gv": "Antananarivo", + "name:ha": "Antananarivo", + "name:hak": "Antananarivo", + "name:he": "אנטננריבו", + "name:hr": "Antananarivo", + "name:hsb": "Antananarivo", + "name:ht": "Antananarivo", + "name:hu": "Antananarivo", + "name:hy": "Անտանանարիվու", + "name:ia": "Antananarivo", + "name:id": "Antananarivo", + "name:ie": "Antananarivo", + "name:io": "Antananarivo", + "name:is": "Antananarívó", + "name:it": "Antananarivo", + "name:ja": "アンタナナリボ", + "name:jv": "Antananarivo", + "name:ka": "ანტანანარივუ", + "name:kaa": "Antananarivo", + "name:kbp": "Antananarivo", + "name:kg": "Antananarivo", + "name:kk": "Антананариву", + "name:ko": "안타나나리보", + "name:ku": "Antananarivo", + "name:kw": "Antananarivo", + "name:ky": "Антананариву", + "name:la": "Antananarivo", + "name:lb": "Antananarivo", + "name:lfn": "Antananarivo", + "name:lij": "Antananarïvo", + "name:lmo": "Antananarivo", + "name:lt": "Antananaryvas", + "name:lv": "Antananarivu", + "name:mg": "Antananarivo", + "name:mi": "Antananarivo", + "name:mk": "Антананариво", + "name:mn": "Антананариву", + "name:mrj": "Антананариву", + "name:ms": "Antananarivo", + "name:nah": "Antananarivo", + "name:nap": "Antananarivo", + "name:nds": "Antananarivo", + "name:nl": "Antananarivo", + "name:nn": "Antananarivo", + "name:no": "Antananarivo", + "name:oc": "Antananarivo", + "name:olo": "Antananarivu", + "name:os": "Антананариву", + "name:pap": "Antananarivo", + "name:pl": "Antananarywa", + "name:pms": "Antananarivo", + "name:ps": "آنتاناناریوو", + "name:pt": "Antananarivo", + "name:ro": "Antananarivo", + "name:ru": "Антананариву", + "name:rw": "Antananarivo", + "name:sc": "Antananarivo", + "name:sco": "Antananarivo", + "name:sh": "Antananarivo", + "name:simple": "Antananarivo", + "name:sk": "Antananarivo", + "name:sl": "Antananarivo", + "name:smn": "Antananarivo", + "name:sn": "Antananarivo", + "name:so": "Antananarifo", + "name:sq": "Antananarivo", + "name:sr": "Антананариво", + "name:sv": "Antananarivo", + "name:sw": "Antananarivo", + "name:szl": "Antananarivo", + "name:tg": "Антананариву", + "name:th": "อันตานานาริโว", + "name:tl": "Antananarivo", + "name:tr": "Antananarivo", + "name:udm": "Антананариву", + "name:uk": "Антананаріву", + "name:ur": "اینٹانانیریو", + "name:uz": "Antananarivu", + "name:vec": "Antananarivo", + "name:vep": "Antananarivu", + "name:vi": "Antananarivo", + "name:war": "Antananarivo", + "name:wo": "Antananariwo", + "name:wuu": "塔那那利佛", + "name:xmf": "ანტანანარივუ", + "name:yi": "אנטאנאנאריווא", + "name:yo": "Antananarivo", + "name:yue": "安塔那那利佛", + "name:zh": "塔那那利佛", + "name:zh_min_nan": "Antananarivo", + "name:zu": "Antananarivo" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 47.5255809, + -18.9100122 + ] + }, + "id": "node/27565116" + }, + { + "type": "Feature", + "properties": { + "name": "الخرطوم", + "name:ace": "Khartoum", + "name:af": "Khartoem", + "name:ak": "Khartoum", + "name:am": "ካርቱም", + "name:ar": "الخرطوم", + "name:arz": "الخرطوم", + "name:ast": "Ḥartum", + "name:avk": "Khartoum", + "name:az": "Xartum", + "name:bcl": "Khartoum", + "name:be": "Хартум", + "name:bg": "Хартум", + "name:bo": "ཁར་ཏུམ།", + "name:br": "C'hartoum", + "name:bs": "Kartum", + "name:ca": "Khartum", + "name:ce": "Хартум", + "name:ceb": "Khartoum", + "name:ckb": "خەرتووم", + "name:co": "Khartoum", + "name:cs": "Chartúm", + "name:cv": "Хартум", + "name:cy": "Khartoum", + "name:da": "Khartoum", + "name:de": "Khartum", + "name:din": "Kaartuɔ̈m", + "name:el": "Χαρτούμ", + "name:en": "Khartoum", + "name:eo": "Ĥartumo", + "name:es": "Jartum", + "name:et": "Hartum", + "name:eu": "Khartum", + "name:fa": "خارطوم", + "name:fi": "Khartum", + "name:fo": "Khartoum", + "name:fr": "Khartoum", + "name:frr": "Chartuum", + "name:fy": "Kartûm", + "name:ga": "Cartúm", + "name:gd": "Khartoum", + "name:gl": "Khartún - الخرطوم", + "name:ha": "Khartoum", + "name:hak": "Khartoum", + "name:he": "חרטום", + "name:hif": "Khartoum", + "name:hr": "Kartum", + "name:ht": "Kartoum", + "name:hu": "Kartúm", + "name:hy": "Խարթում", + "name:ia": "Khartum", + "name:id": "Khartoum", + "name:ie": "Cartum", + "name:io": "Khartoum", + "name:is": "Kartúm", + "name:it": "Khartum", + "name:ja": "ハルツーム", + "name:jv": "Khartoum", + "name:ka": "ხარტუმი", + "name:kab": "Xerṭum", + "name:kg": "Khartoum", + "name:ko": "하르툼", + "name:ku": "Xertûm", + "name:ky": "Хартум", + "name:la": "Khartumensis Urbs", + "name:lb": "Khartum", + "name:lfn": "Khartoum", + "name:lij": "Khartum", + "name:lmo": "Khartum", + "name:lt": "Chartumas", + "name:lv": "Hartūma", + "name:mg": "Khartoum", + "name:mk": "Картум", + "name:mrj": "Хартум", + "name:ms": "Khartoum", + "name:nah": "Cartun", + "name:nan": "Khartoum", + "name:nds": "Khartum", + "name:nl": "Khartoem", + "name:nn": "Khartoum", + "name:no": "Khartoum", + "name:nov": "Kartum", + "name:nv": "Ahidiilíinii", + "name:oc": "Khartom", + "name:om": "Kaartum", + "name:os": "Хартум", + "name:pap": "Kartum", + "name:pl": "Chartum", + "name:pms": "Khartoum", + "name:ps": "خرطوم", + "name:pt": "Cartum", + "name:qu": "Khartum", + "name:ro": "Khartoum", + "name:ru": "Хартум", + "name:sc": "Khartum", + "name:sco": "Khartoum", + "name:sh": "Kartum", + "name:simple": "Khartoum", + "name:sk": "Chartúm", + "name:sl": "Kartum", + "name:smn": "Khartum", + "name:sn": "Khartoum", + "name:so": "Khartuum", + "name:sq": "Hartum", + "name:sr": "Картум", + "name:sv": "Khartoum", + "name:sw": "Khartoum", + "name:szl": "Chartům", + "name:tg": "Хартум", + "name:th": "คาร์ทูม", + "name:tl": "Khartoum", + "name:tr": "Hartum", + "name:tt": "Хартум", + "name:udm": "Хартум", + "name:ug": "خارتۇم", + "name:uk": "Хартум", + "name:ur": "خرطوم", + "name:uz": "Xartum", + "name:vec": "Khartoum", + "name:vep": "Hartum", + "name:vi": "Khartoum", + "name:war": "Khartoum", + "name:wo": "Xartum", + "name:wuu": "Al-Khartoum", + "name:xmf": "ხარტუმი", + "name:yo": "Khartoum", + "name:zh": "喀土穆", + "name:zu": "Khartoum" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 32.5349123, + 15.5635972 + ] + }, + "id": "node/27565117" + }, + { + "type": "Feature", + "properties": { + "name": "Praia", + "name:af": "Praia", + "name:am": "ፕራያ", + "name:ar": "برايا", + "name:az": "Praya", + "name:bat-smg": "Prajė", + "name:be": "Прая", + "name:bo": "ཕུ་ར་ཡ།", + "name:ckb": "پڕایا", + "name:de": "Praia", + "name:el": "Πράια", + "name:en": "Praia", + "name:eo": "Prajo", + "name:es": "Praia", + "name:fa": "پرایا", + "name:fr": "Praia", + "name:gl": "Praia", + "name:he": "פראיה", + "name:hu": "Praia", + "name:hy": "Պրայա", + "name:is": "Praia", + "name:it": "Praia", + "name:ja": "プライア", + "name:ka": "პრაია", + "name:ko": "프라이아", + "name:ky": "Прая", + "name:lt": "Praja", + "name:lv": "Praja", + "name:mk": "Праја", + "name:mrj": "Прая", + "name:nl": "Praia", + "name:no": "Praia", + "name:nov": "Praya", + "name:oc": "Praia", + "name:os": "Прая", + "name:pl": "Praia", + "name:pt": "Praia", + "name:ru": "Прая", + "name:so": "Braia", + "name:sr": "Праја", + "name:sv": "Praia", + "name:tg": "Прая", + "name:th": "ไปรอา", + "name:tr": "Praia", + "name:udm": "Прая", + "name:ug": "پرايا", + "name:uk": "Прая", + "name:ur": "پرائیا", + "name:zh": "普拉亞" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -23.5095095, + 14.9162811 + ] + }, + "id": "node/28095099" + }, + { + "type": "Feature", + "properties": { + "name": "Tórshavn", + "name:ang": "Þunreshæfen", + "name:ar": "تورسهافن", + "name:az": "Torshavn", + "name:be": "Торсхаўн", + "name:be-tarask": "Торсгаўн", + "name:bg": "Торсхавн", + "name:ckb": "تۆسھاون", + "name:da": "Thorshavn", + "name:de": "Thorshaven", + "name:el": "Τόρσχαβν", + "name:en": "Tórshavn", + "name:es": "Tórshavn", + "name:fa": "توشهاون", + "name:fo": "Tórshavn", + "name:fr": "Tórshavn", + "name:he": "טורסהאבן", + "name:hu": "Tórshavn", + "name:hy": "Տորսհավն", + "name:is": "Þórshöfn", + "name:it": "Tórshavn", + "name:ja": "トースハウン", + "name:ka": "ტორსჰავნი", + "name:kk": "Торшгавн", + "name:ko": "토르스하운", + "name:kv": "Торшхавн", + "name:la": "Thori Portus", + "name:lt": "Torshaunas", + "name:lv": "Touršhavna", + "name:os": "Торсхавн", + "name:pl": "Thorshavn", + "name:ru": "Торсхавн", + "name:sr": "Торсхавн", + "name:sv": "Torshamn", + "name:th": "ทอร์สเฮาน์", + "name:udm": "Торсхавн", + "name:uk": "Торсгавн", + "name:ur": "تورشھاون", + "name:zh": "托爾斯港" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -6.768, + 62.012 + ] + }, + "id": "node/29023813" + }, + { + "type": "Feature", + "properties": { + "name": "ירושלים", + "name:ace": "Yerusalem", + "name:af": "Jerusalem", + "name:als": "Jerusalem", + "name:am": "እየሩሳሌም", + "name:an": "Cherusalem", + "name:ang": "Ierusalem", + "name:ar": "القدس", + "name:arc": "ܐܘܪܫܠܡ", + "name:arz": "القدس", + "name:ast": "Xerusalén", + "name:av": "Байтул Макъдис", + "name:az": "Jerusalem", + "name:azb": "بیت‌المقدس", + "name:ba": "Ҡотдос", + "name:bar": "Jerusalem", + "name:bat-smg": "Jerozalė", + "name:bcl": "Herusalem", + "name:be": "Іерусалім", + "name:be-tarask": "Ерусалім", + "name:bg": "Йерусалим", + "name:bh": "येरुशलम", + "name:bjn": "Baitul Maqdis", + "name:bm": "Jerusalem", + "name:bo": "ཇེ་རུ་ས་ལེམ།", + "name:br": "Jeruzalem", + "name:bs": "Jerusalem", + "name:bxr": "Иерусалим", + "name:ca": "Jerusalem", + "name:cdo": "Ià-lô-sák-lēng", + "name:ce": "Къудс-ГӀала", + "name:ceb": "Jerusalen", + "name:ch": "Jerusalem", + "name:ckb": "ئۆرشەلیم", + "name:cr": "ᒉᕒᐅᓴᓬᐊᒼ", + "name:crh": "Jerusalem", + "name:cs": "Jeruzalém", + "name:csb": "Jerozolëma", + "name:cu": "Їєроусалимъ", + "name:cv": "Иерусалим", + "name:cy": "Jeriwsalem", + "name:da": "Jerusalem", + "name:de": "Jerusalem", + "name:diq": "Urşelim", + "name:dsb": "Jeruzalem", + "name:dty": "जेरुशलम", + "name:dv": "ޤުދުސް", + "name:el": "Ιερουσαλήμ", + "name:en": "Jerusalem", + "name:eo": "Jerusalemo", + "name:es": "Jerusalén", + "name:et": "Jeruusalemm", + "name:eu": "Jerusalem", + "name:ext": "Jerusalén", + "name:fa": "اورشلیم", + "name:fi": "Jerusalem", + "name:fiu-vro": "Jeruusalemm", + "name:fj": "Jerusalemi", + "name:fo": "Jerúsalem", + "name:fr": "Jérusalem", + "name:frr": "Jerusalem", + "name:fur": "Jerusalem", + "name:fy": "Jeruzalim", + "name:ga": "Iarúsailéim", + "name:gan": "耶路撒冷", + "name:gcr": "Jérusalem", + "name:gd": "Ierusalem", + "name:gl": "Xerusalén", + "name:gn": "Herusalẽ", + "name:got": "𐌹𐌰𐌹𐍂𐌿𐍃𐌰𐌿𐌻𐍅𐌼𐌰", + "name:gv": "Jerusalem", + "name:hak": "Yâ-lu-sat-lâng", + "name:he": "ירושלים", + "name:he1": "יְרוּשָׁלַיִם", + "name:hif": "Jerusalem", + "name:hr": "Jeruzalem", + "name:hsb": "Jeruzalem", + "name:hu": "Jeruzsálem", + "name:hy": "Երուսաղեմ", + "name:ia": "Jerusalem", + "name:id": "Yerusalem", + "name:ie": "Jerusalem", + "name:ig": "Jerusalem", + "name:ilo": "Herusalem", + "name:inh": "Байтулмакъдис", + "name:io": "Ierusalem", + "name:is": "Jerúsalem", + "name:it": "Gerusalemme", + "name:ja": "エルサレム", + "name:jam": "Jiruusalem", + "name:jv": "Yérusalem", + "name:ka": "იერუსალიმი", + "name:kaa": "Jerusalem", + "name:kab": "Orcalim", + "name:kbp": "Jeruzalɛm", + "name:ki": "Jerusalem", + "name:kk": "Әл-Құдыс", + "name:ko": "예루살렘", + "name:ku": "Orşelîm", + "name:kv": "Иерусалим", + "name:kw": "Jerusalem", + "name:ky": "Кудус", + "name:la": "Hierosolyma", + "name:lad": "Yerushalayim", + "name:lb": "Jerusalem", + "name:lez": "Иерусалим", + "name:lfn": "Ieruxalim", + "name:li": "Jeruzalem", + "name:lij": "Gerusalemme", + "name:lld": "Ierusalem", + "name:lmo": "Gerüsalem", + "name:ln": "Yerusalémi", + "name:lo": "ເຢ​ຣູ​ຊາ​ເລັມ", + "name:lt": "Jeruzalė", + "name:lv": "Jeruzāleme", + "name:mai": "जेरुसेलम", + "name:mdf": "Ерусалим", + "name:mg": "Jerosalema", + "name:mhr": "Иерусалим", + "name:mi": "Hiruharama", + "name:mk": "Ерусалим", + "name:mn": "Иерусалим", + "name:ms": "Baitulmuqaddis", + "name:mwl": "Jarusalen", + "name:myv": "Иерусалим", + "name:mzn": "قدس", + "name:nah": "Ierusalem", + "name:nan": "Iâ-lō͘-sat-léng", + "name:nap": "Gierusalemme", + "name:nds": "Jerusalem", + "name:ne": "जेरुसेलम", + "name:nl": "Jeruzalem", + "name:no": "Jerusalem", + "name:nov": "Jerusalem", + "name:nrm": "Jérusalem", + "name:ny": "Jerusalem", + "name:oc": "Jerusalèm", + "name:olo": "Jerusalimu", + "name:os": "Иерусалим", + "name:pap": "Herusalem", + "name:pih": "Jeruusalem", + "name:pl": "Jerozolima", + "name:pms": "Gerusalem", + "name:pnt": "Ιερουσαλήμ", + "name:ps": "بيت المقدس", + "name:pt": "Jerusalém", + "name:qu": "Yerushalayim", + "name:rm": "Jerusalem", + "name:rmy": "Jerusalem", + "name:rn": "Jerusalem", + "name:ro": "Ierusalim", + "name:roa-tara": "Gerusalemme", + "name:ru": "Иерусалим", + "name:rue": "Єрусалим", + "name:rw": "Yerusalemu", + "name:sah": "Иерусалим", + "name:sat": "ᱡᱮᱨᱩᱥᱟᱞᱤᱢ", + "name:sc": "Gerusalemme", + "name:scn": "Girusalemmi", + "name:sco": "Jerusalem", + "name:sd": "بيت المقدس", + "name:sh": "Jeruzalem", + "name:sk": "Jeruzalem", + "name:sl": "Jeruzalem", + "name:sm": "Ierusalema", + "name:smn": "Jerusalem", + "name:sn": "Jerusalem", + "name:so": "Qudus", + "name:sq": "Jeruzalemi", + "name:sr": "Јерусалим", + "name:srn": "Jerusalem", + "name:stq": "Jerusalem", + "name:su": "Yerusalem", + "name:sv": "Jerusalem", + "name:sw": "Yerusalemu", + "name:szl": "Jerozolima", + "name:tg": "Уршалим", + "name:th": "เยรูซาเลม", + "name:tk": "Iýerusalim", + "name:tl": "Herusalem", + "name:tpi": "Yerusalem", + "name:tr": "Kudüs", + "name:tt": "Иерусалим", + "name:tum": "Jerusalem", + "name:udm": "Иерусалим", + "name:ug": "يېرۇسالېم", + "name:uk": "Єрусалим", + "name:ur": "یروشلم", + "name:uz": "Quddus", + "name:vec": "Hierusalem", + "name:vep": "Jerusalim", + "name:vi": "Jerusalem", + "name:vo": "Hierusalem", + "name:wa": "Djeruzalem", + "name:war": "Jerusalem", + "name:wuu": "耶路撒冷", + "name:xh": "IJerusalem", + "name:xmf": "იერუსალიმი", + "name:yi": "ירושלים", + "name:yo": "Jerúsálẹ́mù", + "name:yue": "耶路撒冷", + "name:zea": "Jeruzalem", + "name:zh": "耶路撒冷", + "name:zh-Hant": "耶路撒冷", + "name:zu": "IYerusalem" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 35.2257626, + 31.7788242 + ] + }, + "id": "node/29090735" + }, + { + "type": "Feature", + "properties": { + "name": "Tallinn", + "name:am": "ታሊን", + "name:ar": "تالين", + "name:arz": "تالين", + "name:ast": "Tallín", + "name:az": "Tallin", + "name:bat-smg": "Talins", + "name:be": "Талін", + "name:be-tarask": "Талін", + "name:bg": "Талин", + "name:bo": "ཏཱལ་་ལིན།", + "name:ce": "Таллин", + "name:ckb": "تاڵین", + "name:cv": "Таллин", + "name:de": "Tallinn", + "name:diq": "Talin", + "name:el": "Ταλίν", + "name:en": "Tallinn", + "name:eo": "Talino", + "name:es": "Tallin", + "name:et": "Tallinn", + "name:fa": "تالین", + "name:fi": "Tallinna", + "name:fiu-vro": "Talliin", + "name:fr": "Tallinn", + "name:fy": "Tallin", + "name:ga": "Taillinn", + "name:gl": "Talín - Tallinn", + "name:gn": "Talin", + "name:he": "טאלין", + "name:ht": "Talin", + "name:hu": "Tallin", + "name:hy": "Տալլին", + "name:is": "Tallinn", + "name:it": "Tallinn", + "name:ja": "タリン", + "name:ka": "ტალინი", + "name:kk": "Таллин", + "name:ko": "탈린", + "name:koi": "Таллинн", + "name:kv": "Таллинн", + "name:ky": "Таллин", + "name:la": "Castrum Danorum", + "name:lad": "Tallin", + "name:lt": "Talinas", + "name:ltg": "Talins", + "name:lv": "Tallina", + "name:mdf": "Таллинн", + "name:mhr": "Таллинн", + "name:mk": "Талин", + "name:mrj": "Таллинн", + "name:myv": "Таллин ош", + "name:mzn": "تالین", + "name:nah": "Tallin", + "name:nds": "Revel", + "name:no": "Tallinn", + "name:oc": "Tallinn", + "name:os": "Таллин", + "name:pl": "Tallinn", + "name:pms": "Tallin", + "name:ru": "Таллин", + "name:sah": "Таллинн", + "name:scn": "Tallin", + "name:sh": "Talin", + "name:sk": "Tallinn", + "name:sl": "Talin", + "name:sq": "Talini", + "name:sr": "Талин", + "name:sv": "Tallinn", + "name:tg": "Таллин", + "name:th": "ทาลลินน์", + "name:tpi": "Talin", + "name:udm": "Таллин", + "name:ug": "تاللىن", + "name:uk": "Таллінн", + "name:ur": "ٹالن", + "name:wo": "Talin", + "name:yi": "טאלין", + "name:yue": "塔林", + "name:zh": "塔林", + "name:zh-Hans": "塔林" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 24.7453688, + 59.4372155 + ] + }, + "id": "node/29787492" + }, + { + "type": "Feature", + "properties": { + "name": "Jakarta", + "name:af": "Djakarta", + "name:am": "ጃካርታ", + "name:ar": "جاكرتا", + "name:arz": "جاكارتا", + "name:az": "Cakarta", + "name:ba": "Джакарта", + "name:bat-smg": "Džakarta", + "name:be": "Джакарта", + "name:bg": "Джакарта", + "name:bo": "ཊ་ཁར་ཏ།", + "name:bs": "Džakarta", + "name:ckb": "جاکارتا", + "name:de": "Jakarta", + "name:el": "Τζακάρτα", + "name:en": "Jakarta", + "name:eo": "Ĝakarto", + "name:es": "Yakarta", + "name:fa": "جاکارتا", + "name:fr": "Jakarta", + "name:ga": "Iacárta", + "name:gl": "Iacarta - Jakarta", + "name:hak": "Ngâ-kâ-tha̍t Sú-tû Thi̍t-khî", + "name:he": "ג'קרטה", + "name:hu": "Jakarta", + "name:hy": "Ջակարտա", + "name:id": "Jakarta", + "name:is": "Djakarta", + "name:it": "Giacarta", + "name:ja": "ジャカルタ", + "name:jbo": ".djakartas.", + "name:ka": "ჯაკარტა", + "name:kk": "Джакарта", + "name:km": "ចាការតា", + "name:ko": "자카르타", + "name:ku": "Cakarta", + "name:lmo": "Giacarta", + "name:lt": "Džakarta", + "name:lv": "Džakarta", + "name:mhr": "Джакарта", + "name:mk": "Џакарта", + "name:mn": "Жакарта", + "name:mwl": "Jacarta", + "name:mzn": "جاکارتا", + "name:nah": "Yakarta", + "name:oc": "Jakarta", + "name:os": "Джакартæ", + "name:pl": "Dżakarta", + "name:pms": "Giacarta", + "name:ps": "جکارتا", + "name:pt": "Jacarta", + "name:roa-tara": "Giacarta", + "name:ru": "Джакарта", + "name:rue": "Джакарта", + "name:sa": "जकार्ता", + "name:sah": "Дьакарта", + "name:sh": "Džakarta", + "name:sk": "Džakarta", + "name:sl": "Džakarta", + "name:sq": "Xhakarta", + "name:sr": "Џакарта", + "name:sv": "Jakarta", + "name:szl": "Dżakarta", + "name:th": "จาการ์ตา", + "name:tr": "Cakarta", + "name:ug": "جاكارتا", + "name:uk": "Джакарта", + "name:ur": "جکارتہ", + "name:vec": "Xacarta", + "name:yi": "דזשאקארטא", + "name:yue": "耶加達", + "name:za": "Yajgyadaz", + "name:zh": "雅加达 / 雅加達", + "name:zh-Hans": "雅加达", + "name:zh-Hant": "雅加達" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 106.827183, + -6.1753942 + ] + }, + "id": "node/29939632" + }, + { + "type": "Feature", + "properties": { + "name": "Maseru", + "name:am": "መሴሩ", + "name:ar": "ماسيرو", + "name:be": "Масеру", + "name:be-tarask": "Масэру", + "name:bg": "Масеру", + "name:bo": "མ་སི་རུ།", + "name:ckb": "ماسێرو", + "name:de": "Maseru", + "name:el": "Μαζέρου", + "name:en": "Maseru", + "name:eo": "Maseruo", + "name:es": "Maseru", + "name:fa": "ماسرو", + "name:fr": "Maseru", + "name:he": "מסרו", + "name:ht": "Maserou", + "name:hu": "Maseru", + "name:hy": "Մասերու", + "name:is": "Maserú", + "name:it": "Maseru", + "name:ja": "マセル", + "name:ka": "მასერუ", + "name:ko": "마세루", + "name:ku": "Maserû", + "name:ky": "Масеру", + "name:lt": "Maseru", + "name:mk": "Масеру", + "name:nl": "Maseru", + "name:no": "Maseru", + "name:os": "Масеру", + "name:pl": "Maseru", + "name:pt": "Maseru", + "name:ru": "Масеру", + "name:sr": "Масеру", + "name:sv": "Maseru", + "name:tg": "Масеру", + "name:th": "มาเซรู", + "name:tr": "Maseru", + "name:udm": "Масеру", + "name:uk": "Масеру", + "name:ur": "ماسیرو", + "name:zh": "馬塞盧" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 27.478222, + -29.310054 + ] + }, + "id": "node/30656833" + }, + { + "type": "Feature", + "properties": { + "name": "Gaborone", + "name:am": "ጋበሮኔ", + "name:ar": "جابورون", + "name:arz": "جابورون", + "name:az": "Qaborone", + "name:be": "Габаронэ", + "name:bg": "Габороне", + "name:bo": "ག་བོ་རོ་ནི།", + "name:ckb": "گابۆرۆن", + "name:de": "Gaborone", + "name:el": "Γκαμπορόνε", + "name:en": "Gaborone", + "name:eo": "Gaberono", + "name:es": "Gaborone", + "name:fa": "گابورون", + "name:fr": "Gaborone", + "name:he": "גאבורון", + "name:ht": "Gaboròn", + "name:hu": "Gaborone", + "name:hy": "Գաբորոնե", + "name:is": "Gaboróne", + "name:it": "Gaborone", + "name:ja": "ハボローネ", + "name:ka": "გაბორონე", + "name:ko": "가보로네", + "name:ku": "Gaboron", + "name:ky": "Габороне", + "name:lt": "Gaboronas", + "name:mk": "Габороне", + "name:nl": "Gaborone", + "name:no": "Gaborone", + "name:oc": "Gaborone", + "name:pl": "Gaborone", + "name:pt": "Gaborone", + "name:ru": "Габороне", + "name:sr": "Габороне", + "name:sv": "Gaborone", + "name:tg": "Габороне", + "name:th": "กาโบโรเน", + "name:tr": "Gaborone", + "name:udm": "Габороне", + "name:uk": "Габороне", + "name:ur": "گبرون", + "name:zh": "哈博羅內", + "name:zu": "IGaborone" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 25.9088474, + -24.6581357 + ] + }, + "id": "node/30670040" + }, + { + "type": "Feature", + "properties": { + "name": "Abuja", + "name:am": "አቡጃ", + "name:ar": "أبوجا", + "name:az": "Abuca", + "name:bat-smg": "Abodža", + "name:be": "Абуджа", + "name:bg": "Абуджа", + "name:bm": "Abuza", + "name:bo": "ཨ་པུ་ཅ།", + "name:ckb": "ئەبوجا", + "name:cv": "Абуджа", + "name:de": "Abuja", + "name:el": "Αμπούζα", + "name:en": "Abuja", + "name:eo": "Abuĝo", + "name:es": "Abuya", + "name:eu": "Abuja", + "name:fa": "آبوجا", + "name:fi": "Abuja", + "name:fr": "Abuja", + "name:he": "אבוג'ה", + "name:ht": "Abouja", + "name:hu": "Abuja", + "name:hy": "Աբուջա", + "name:is": "Abútja", + "name:ja": "アブジャ", + "name:ka": "აბუჯა", + "name:kab": "Abuja", + "name:kk": "Абуджа", + "name:ko": "아부자", + "name:ku": "Ebuca", + "name:ky": "Абужа", + "name:la": "Abugia", + "name:lt": "Abudža", + "name:lv": "Abudža", + "name:mk": "Абуџа", + "name:mrj": "Абуджа", + "name:oc": "Abuja", + "name:os": "Абуджа", + "name:pl": "Abudża", + "name:ru": "Абуджа", + "name:sr": "Абуџа", + "name:sv": "Abuja", + "name:tg": "Абуҷа", + "name:th": "อาบูจา", + "name:udm": "Абуджа", + "name:uk": "Абуджа", + "name:ur": "ابوجا", + "name:yi": "אבודזשא", + "name:yo": "Abùjá", + "name:zh": "阿布贾" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 7.4892974, + 9.0643305 + ] + }, + "id": "node/31203257" + }, + { + "type": "Feature", + "properties": { + "name": "평양시", + "name:ace": "Pyeongyang", + "name:af": "Pjongjang", + "name:am": "ፕዮንግያንግ", + "name:an": "Pyongyang", + "name:ar": "بيونغيانغ", + "name:ast": "Pyongyang", + "name:az": "Pxenyan", + "name:bat-smg": "Pchenjans", + "name:be": "Пхеньян", + "name:be-tarask": "Пхеньян", + "name:bg": "Пхенян", + "name:bo": "ཕོང་ཡང་།", + "name:br": "Pyongyang", + "name:bs": "Pjongjang", + "name:ca": "Pyongyang", + "name:ckb": "پیۆنگیانگ", + "name:cs": "Pchjongjang", + "name:csb": "P'yŏngyang", + "name:cy": "P'yŏngyang", + "name:da": "Pyongyang", + "name:de": "Pjöngjang", + "name:diq": "Pyongyang", + "name:dsb": "Pchjongjang", + "name:el": "Πιονγιάνγκ", + "name:en": "Pyongyang", + "name:eo": "Pjongjango", + "name:es": "Pionyang", + "name:et": "Pyongyang", + "name:eu": "Piongiang", + "name:fa": "پیونگ‌یانگ", + "name:fi": "Pjongjang", + "name:fo": "Pyongyang", + "name:fr": "Pyongyang", + "name:fy": "Pyongyang", + "name:ga": "Pyongyang", + "name:gd": "Pyongyang", + "name:gl": "Pyongyang", + "name:he": "פיונגיאנג", + "name:hif": "Pyongyang", + "name:hr": "Pjongjang", + "name:ht": "Pyongyang", + "name:hu": "Phenjan", + "name:hy": "Պխենյան", + "name:id": "Pyongyang", + "name:ilo": "Pyongyang", + "name:io": "Pyongyang", + "name:is": "Pjongjang", + "name:it": "Pyongyang", + "name:ja": "平壌市", + "name:jv": "Pyongyang", + "name:ka": "ფხენიანი", + "name:kab": "Pyongyang", + "name:kk": "Пхеньян", + "name:kl": "Pyongyang", + "name:ko": "평양시", + "name:ko-Hani": "平壤市", + "name:ko-Latn": "P'yŏngyang", + "name:ku": "Pyongyang", + "name:la": "Pyeongyangum", + "name:lez": "Пхеньян", + "name:lmo": "Pyongyang", + "name:lt": "Pchenjanas", + "name:lv": "Phenjana", + "name:lzh": "平壤市", + "name:mi": "Pyongyang", + "name:mk": "Пјонгјанг", + "name:mn": "Пхеньян", + "name:ms": "Pyongyang", + "name:mzn": "پيونگ يانگ", + "name:nah": "Pionyang", + "name:nan": "Pyongyang", + "name:nap": "Pyongyang", + "name:nl": "Pyongyang", + "name:nn": "Pyongyang", + "name:no": "Pyongyang", + "name:nov": "Pyongyang", + "name:oc": "Pyeongyang", + "name:os": "Пхеньян", + "name:pl": "Pjongjang", + "name:pms": "Pyongyang", + "name:ps": "پيونګيانګ", + "name:pt": "Pyongyang", + "name:ro": "Phenian", + "name:ru": "Пхеньян", + "name:scn": "Pyongyang", + "name:sco": "Pyongyang", + "name:sh": "Pjongjang", + "name:sk": "Pchjongjang", + "name:sl": "Pjongjang", + "name:sq": "Pjongian", + "name:sr": "Пјонгјанг", + "name:sv": "Pyongyang", + "name:sw": "Pyongyang", + "name:th": "เปียงยาง", + "name:tl": "Pyongyang", + "name:tpi": "Pyongyang", + "name:tr": "Pyongyang", + "name:tt": "Пхеньян", + "name:ug": "Pyongyang", + "name:uk": "Пхеньян", + "name:ur": "پیانگ یانگ", + "name:vi": "Bình Nhưỡng", + "name:vo": "Pyöngyang", + "name:war": "Pyongyang", + "name:wuu": "平壤市", + "name:yi": "פיאנגיאנג", + "name:yo": "Pyongyang", + "name:yue": "平壤市", + "name:zh": "平壤市" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 125.7473609, + 39.0167979 + ] + }, + "id": "node/32013127" + }, + { + "type": "Feature", + "properties": { + "name": "Cape Town", + "name:af": "Kaapstad", + "name:am": "ኬፕ ታውን", + "name:an": "Ciudat d'o Cabo", + "name:ang": "Næssburg", + "name:ar": "كيب تون", + "name:ast": "Ciudá del Cabu", + "name:avk": "Kaapstad", + "name:az": "Keyptaun", + "name:ba": "Кейптаун", + "name:be": "Кейптаўн", + "name:bg": "Кейптаўн", + "name:br": "Ar C'hab", + "name:bs": "Cape Town", + "name:ca": "Ciutat del Cap", + "name:ce": "Кейптаун", + "name:ceb": "Cape Town", + "name:ckb": "کەیپ تاون", + "name:co": "Cità di u Capu", + "name:cs": "Kapské město", + "name:cy": "Tref y Penrhyn", + "name:da": "Kapstaden", + "name:de": "Kapstadt", + "name:el": "Κέιπ Τάουν", + "name:en": "Cape Town", + "name:eo": "Kaburbo", + "name:es": "Ciudad del Cabo", + "name:et": "Kaplinn", + "name:eu": "Lurmutur Hiria", + "name:ext": "Ciá del Cabu", + "name:fa": "کیپ تاون", + "name:fi": "Kapkaupunki", + "name:fo": "Cape Town", + "name:fr": "Le Cap", + "name:frp": "Lo Cap", + "name:frr": "Kapsteed", + "name:fy": "Kaapstêd", + "name:ga": "Cape Town", + "name:gd": "Baile a' Chip", + "name:gl": "Cidade do Cabo", + "name:gn": "Yvy akua Táva", + "name:ha": "Cape Town", + "name:hak": "Cape Town", + "name:he": "קייפטאון", + "name:hif": "Cape Town", + "name:hr": "Kaapstad", + "name:hsb": "Kapstadt", + "name:ht": "Li Kap", + "name:hu": "Fokváros", + "name:hy": "Քեյփթաուն", + "name:ia": "Citate del Capo", + "name:id": "Cape Town", + "name:ilo": "Cape Town", + "name:inh": "Кейптаун", + "name:io": "Kab-urbo", + "name:is": "Höfðaborg", + "name:it": "Città del Capo", + "name:ja": "ケープ タウン", + "name:jv": "Cape Town", + "name:ka": "კეიპტაუნი", + "name:kaa": "Keyptaun", + "name:kab": "Cape Town", + "name:kk": "Кейптаун", + "name:ko": "케이프타운", + "name:kw": "Cape Town", + "name:ky": "Кейптаун", + "name:la": "Civitas Capitis", + "name:lad": "Sivdad del Kabo", + "name:lb": "Kapstad", + "name:lij": "Çittæ do Cavo", + "name:lmo": "Cità del Cap", + "name:lt": "Keiptaunas", + "name:lv": "Keiptauna", + "name:mg": "Cape Town", + "name:mi": "Kēpa Tāone", + "name:mk": "Кејптаун", + "name:mn": "Кейптаун", + "name:ms": "Cape Town", + "name:myv": "Кейптаун ош", + "name:ne": "केप टाउन", + "name:nl": "Kaapstad", + "name:no": "Cape Town", + "name:nso": "Cape Town", + "name:nv": "Taahííʼą́ągi Kin Haalʼá", + "name:ny": "Cape Town", + "name:oc": "Lo Cap", + "name:os": "Кейптаун", + "name:pl": "Kapsztad", + "name:pms": "Sità dël Cap", + "name:ps": "کیپ ټاون", + "name:pt": "Cidade do Cabo", + "name:ro": "Cape Town", + "name:ru": "Кейптаун", + "name:rue": "Капске Місто", + "name:sah": "Кейптаун", + "name:sat": "ᱠᱮᱯ ᱴᱟᱣᱩᱱ", + "name:sc": "Tzitade de su Cabu", + "name:scn": "Citati dû Capu", + "name:sco": "Cape Toun", + "name:se": "Cape Town", + "name:sh": "Cape Town", + "name:sk": "Kapské mesto", + "name:sl": "Cape Town", + "name:smn": "Kapkaavpug", + "name:sn": "Cape Town", + "name:so": "Kab town", + "name:sq": "Kapshtad", + "name:sr": "Кејптаун", + "name:sv": "Kapstaden", + "name:sw": "Cape Town", + "name:szl": "Kapsztad", + "name:tg": "Кейптаун", + "name:th": "เคปทาวน์", + "name:tk": "Keýptaun", + "name:tl": "Cape Town", + "name:tn": "Cape Town", + "name:tr": "Cape Town", + "name:tt": "Keyptawn", + "name:ug": "Kapétown", + "name:uk": "Кейптаун", + "name:ur": "کیپ ٹاؤن", + "name:uz": "Keyptaun", + "name:ve": "Cape Town", + "name:vec": "Sità del Cao", + "name:vep": "Keiptaun", + "name:vi": "Cape Town", + "name:vo": "Cape Town", + "name:war": "Cape Town", + "name:wuu": "开普敦", + "name:xh": "iKapa", + "name:xmf": "კეიპტაუნი", + "name:yi": "קאפשטאט", + "name:yo": "Cape Town", + "name:zea": "Kaepstad", + "name:zh": "開普敦/开普敦", + "name:zh-Hans": "开普敦", + "name:zh-Hant": "開普敦", + "name:zu": "IKapa" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 18.417396, + -33.928992 + ] + }, + "id": "node/32675806" + }, + { + "type": "Feature", + "properties": { + "name": "Windhoek", + "name:ady": "Виндхук", + "name:af": "Windhoek", + "name:am": "ዊንድሁክ", + "name:an": "Windhoek", + "name:ar": "ويندهوك", + "name:arz": "ويندهوك", + "name:ast": "Windḥoek", + "name:avk": "Windhoek", + "name:az": "Vindhuk", + "name:azb": "ویندهوک", + "name:be": "Віндхук", + "name:be-tarask": "Ўіндгук", + "name:be-x-old": "Ўіндгук", + "name:bg": "Виндхук", + "name:bo": "ཝིན་ཌི་ཧོཡིཀ།", + "name:br": "Windhoek", + "name:bs": "Windhoek", + "name:bxr": "Виндхук", + "name:ca": "Windhoek", + "name:cdo": "Windhoek", + "name:ce": "Виндхук", + "name:ceb": "Windhoek", + "name:ckb": "ویندھۆک", + "name:cs": "Windhoek", + "name:cy": "Windhoek", + "name:da": "Windhoek", + "name:de": "Windhuk", + "name:dsb": "Windhoek", + "name:el": "Βίντχουκ", + "name:en": "Windhoek", + "name:eo": "Vindhuko", + "name:es": "Windhoek", + "name:et": "Windhoek", + "name:eu": "Windhoek", + "name:fa": "ویندهوک", + "name:fi": "Windhoek", + "name:fiu-vro": "Windhoek", + "name:fo": "Windhoek", + "name:fr": "Windhoek", + "name:frr": "Windhoek", + "name:fy": "Wynhoeke", + "name:ga": "Windhoek", + "name:gd": "Windhoek", + "name:gl": "Windhoek", + "name:gn": "Vindúke", + "name:ha": "Windhoek", + "name:hak": "Windhoek", + "name:he": "וינדהוק", + "name:hif": "Windhoek", + "name:hr": "Windhoek", + "name:ht": "Windoèk", + "name:hu": "Windhoek", + "name:hy": "Վինդհուկ", + "name:ia": "Windhoek", + "name:id": "Windhoek", + "name:ie": "Windhoek", + "name:io": "Windhoek", + "name:is": "Windhoek", + "name:it": "Windhoek", + "name:ja": "ウィントフック", + "name:jv": "Windhoek", + "name:ka": "ვინდჰუკი", + "name:kab": "Windhoek", + "name:kbd": "Виндхук", + "name:kbp": "Windɔkɩ", + "name:kg": "Windhoek", + "name:khi": "Ai-Gams", + "name:ko": "빈트후크", + "name:ky": "Виндхук", + "name:la": "Windhoek", + "name:lb": "Windhoek", + "name:lfn": "Windhoek", + "name:li": "Windhoek", + "name:lij": "Windhoek", + "name:lmo": "Windhoek", + "name:ln": "Windhoek", + "name:lt": "Vindhukas", + "name:lv": "Vindhuka", + "name:mg": "Windhoek", + "name:mk": "Виндхук", + "name:mn": "Виндхук", + "name:mrj": "Виндхук", + "name:ms": "Windhoek", + "name:na": "Windhoek", + "name:nah": "Windhoek", + "name:nds": "Windhuk", + "name:nl": "Windhoek", + "name:nn": "Windhoek", + "name:no": "Windhoek", + "name:nov": "Windhuk", + "name:nv": "Nástłʼah Biiʼ Naayolí", + "name:oc": "Windhoek", + "name:olo": "Vindhuk", + "name:os": "Виндхук", + "name:pap": "Windhoek", + "name:pdc": "Windhoek", + "name:pl": "Windhuk", + "name:pms": "Windhoek", + "name:ps": "ویندهوک", + "name:pt": "Vinduque", + "name:ro": "Windhoek", + "name:ru": "Виндхук", + "name:sc": "Windhoek", + "name:sco": "Windhoek", + "name:se": "Windhoek", + "name:sh": "Windhoek", + "name:simple": "Windhoek", + "name:sk": "Windhoek", + "name:sl": "Windhoek", + "name:smn": "Windhoek", + "name:sn": "Windhoek", + "name:so": "Windhoek", + "name:sq": "Uindhuk", + "name:sr": "Виндхук", + "name:sv": "Windhoek", + "name:sw": "Windhoek", + "name:szl": "Windhuk", + "name:tg": "Виндхук", + "name:th": "วินด์ฮุก", + "name:tl": "Windhoek", + "name:tr": "Windhoek", + "name:udm": "Виндхук", + "name:uk": "Віндгук", + "name:ur": "ونڈہوک", + "name:uz": "Vindxuk", + "name:vec": "Windhoek", + "name:vep": "Vindhuk", + "name:vi": "Windhoek", + "name:vo": "Windhoek", + "name:war": "Windhoek", + "name:wuu": "溫得和克", + "name:xmf": "ვინდჰუკი", + "name:yi": "ווינטהוק", + "name:yo": "Windhoek", + "name:yue": "溫荷克", + "name:zea": "Wind'oek", + "name:zh": "温得和克", + "name:zh_min_nan": "Windhoek", + "name:zu": "Windhoek" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 17.0772739, + -22.5776104 + ] + }, + "id": "node/33364833" + }, + { + "type": "Feature", + "properties": { + "name": "Brasília", + "name:ab": "Бразилиа", + "name:am": "ብራዚሊያ", + "name:ar": "برازيليا", + "name:arz": "برازيليا", + "name:ast": "Brasilia", + "name:ay": "Brasilia", + "name:az": "Brazilia", + "name:bar": "Brasilia", + "name:bat-smg": "Brazilėjė", + "name:be": "Бразілія", + "name:be-tarask": "Бразылія", + "name:bg": "Бразилия", + "name:bo": "པུ་རུ་ཟི་ལི་ཡ།", + "name:bpy": "ব্রাসিলিয়া", + "name:bs": "Brazilija", + "name:cbk-zam": "Distrito Federal de Brasil", + "name:ce": "Бразилиа", + "name:ckb": "بەڕازیلیا", + "name:co": "Brasilia", + "name:cv": "Бразилиа", + "name:de": "Brasilia", + "name:dv": "ބްރަސީލިއާ", + "name:el": "Μπραζίλια", + "name:eml": "Brasilia", + "name:en": "Brasília", + "name:eo": "Braziljo", + "name:es": "Brasilia", + "name:et": "Brasília", + "name:eu": "Brasilia", + "name:ext": "Brasilia", + "name:fa": "برازیلیا", + "name:fr": "Brasilia", + "name:frp": "Brasilia", + "name:gl": "Brasilia", + "name:gn": "Brasilia", + "name:he": "בראזיליא", + "name:hr": "Brazilija", + "name:ht": "Brazilia", + "name:hu": "Brazíliaváros", + "name:hy": "Բրազիլիա", + "name:ia": "Brasilia", + "name:ie": "Brasilia", + "name:io": "Brasilia", + "name:is": "Brasilía", + "name:it": "Brasilia", + "name:ja": "ブラジリア", + "name:jv": "Brasilia", + "name:ka": "ბრაზილია", + "name:kk": "Бразилиа", + "name:kl": "Brasilia", + "name:ko": "브라질리아", + "name:la": "Brasiliopolis", + "name:lez": "Бразилиа", + "name:lij": "Braxilia", + "name:lmo": "Brasilia", + "name:ln": "Brazilia", + "name:lt": "Brazilija", + "name:lv": "Brazilja", + "name:mk": "Бразилија", + "name:mn": "Бразилиа", + "name:mzn": "برازیلیا", + "name:nah": "Brasilia", + "name:nl": "Brasilia", + "name:no": "Brasília", + "name:oc": "Brasília", + "name:os": "Бразилиа", + "name:pl": "Brasília", + "name:pms": "Brasilia", + "name:pt": "Brasília", + "name:qu": "Brasilia", + "name:rm": "Brasilia", + "name:ro": "Brazilia", + "name:ru": "Бразилиа", + "name:sh": "Brazilija", + "name:sk": "Brazília", + "name:sl": "Brasilia", + "name:sq": "Brazilia", + "name:sr": "Бразилија", + "name:sv": "Brasília", + "name:sw": "Brasilia", + "name:tet": "Brazília", + "name:tg": "Бразилиа", + "name:th": "บราซีเลีย", + "name:tl": "Brasilia", + "name:tr": "Brezilya", + "name:tt": "Бразилиа", + "name:uk": "Бразилія", + "name:ur": "براسیلیا", + "name:vec": "Braxiłia", + "name:vi": "Brasilia", + "name:wuu": "巴西利亚", + "name:yi": "בראזיליא", + "name:yo": "Bràsílíà", + "name:yue": "巴西利亞", + "name:zh": "巴西利亚", + "name:zh-Hans": "巴西利亚", + "name:zh-Hant": "巴西利亞" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -47.8823172, + -15.7934036 + ] + }, + "id": "node/34567423" + }, + { + "type": "Feature", + "properties": { + "name": "Muqdisho مقديشو", + "name:ace": "Mogadishu", + "name:af": "Mogadisjoe", + "name:am": "ሞቃዲሾ", + "name:an": "Mogadixo", + "name:ar": "مقديشو", + "name:az": "Moqadişo", + "name:bcl": "Mogadishu", + "name:be": "Магадыша", + "name:be-tarask": "Магадзішу", + "name:bg": "Могадишу", + "name:bo": "མོ་ག་དི་ཤུ།", + "name:br": "Muqdisho", + "name:bs": "Mogadiš", + "name:ca": "Mogadixo", + "name:ckb": "مۆگادیشو", + "name:cs": "Mogadišu", + "name:cy": "Mogadishu", + "name:da": "Mogadishu", + "name:de": "Mogadischu", + "name:el": "Μογκαντίσου", + "name:en": "Mogadishu", + "name:eo": "Mogadiŝo", + "name:es": "Mogadiscio", + "name:et": "Muqdisho", + "name:eu": "Muqdisho", + "name:fa": "موگادیشو", + "name:fi": "Mogadishu", + "name:fo": "Mogadishu", + "name:fr": "Mogadiscio", + "name:fy": "Mogadisjû", + "name:ga": "Mogaidisiú", + "name:gd": "Mogadishu", + "name:gl": "Mogadixo", + "name:he": "מוגדישו", + "name:hif": "Mogadishu", + "name:hr": "Mogadišu", + "name:ht": "Moukdicho", + "name:hu": "Mogadishu", + "name:hy": "Մոգադիշո", + "name:id": "Mogadishu", + "name:ie": "Mogadishu", + "name:io": "Mogadishu", + "name:is": "Mógadisjú", + "name:it": "Mogadiscio", + "name:ja": "モガディシュ", + "name:jv": "Mogadishu", + "name:ka": "მოგადიშო", + "name:kab": "Mugadiccu", + "name:kk": "Могадишо қаласы", + "name:ko": "모가디슈", + "name:ku": "Mogadîşu", + "name:ky": "Могадишо", + "name:la": "Mogadiscio", + "name:lij": "Mogadiscio", + "name:lmo": "Mugadiss", + "name:lt": "Mogadišas", + "name:lv": "Mogadīšo", + "name:mk": "Могадишу", + "name:ms": "Mogadishu", + "name:nan": "Mogadishu", + "name:nl": "Mogadishu", + "name:nn": "Mogadishu", + "name:no": "Mogadishu", + "name:nov": "Mogadishu", + "name:oc": "Mogadisho", + "name:pap": "Mogadishu", + "name:pl": "Mogadiszu", + "name:pms": "Mogadiss", + "name:pt": "Mogadíscio", + "name:ro": "Mogadishu", + "name:ru": "Могадишо", + "name:rw": "Mogadishu", + "name:sco": "Mogadishu", + "name:sh": "Mogadishu", + "name:simple": "Mogadishu", + "name:sk": "Mogadišo", + "name:sl": "Mogadiš", + "name:so": "Muqdisho", + "name:sr": "Могадишу", + "name:sv": "Mogadishu", + "name:sw": "Mogadishu", + "name:tg": "Могадишо", + "name:th": "โมกาดิชู", + "name:tl": "Mogadishu", + "name:tr": "Mogadişu", + "name:udm": "Могадишо", + "name:uk": "Моґадішо", + "name:ur": "موغادیشو", + "name:vec": "Mogadiscio", + "name:vi": "Mogadishu", + "name:war": "Mogadishu", + "name:wo": "Mogadisu", + "name:yo": "Mogadishu", + "name:zh": "摩加迪沙" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 45.3419183, + 2.0349312 + ] + }, + "id": "node/34684808" + }, + { + "type": "Feature", + "properties": { + "name": "المنامة", + "name:ace": "Al-Manamah", + "name:af": "Manama", + "name:als": "Manama", + "name:am": "ማናማ", + "name:an": "Manama", + "name:ang": "Manama", + "name:ar": "المنامة", + "name:arz": "المنامه", + "name:ast": "Manama", + "name:az": "Manama", + "name:azb": "منامه", + "name:ba": "Манама", + "name:bcl": "Manama", + "name:be": "Манама", + "name:be-tarask": "Манама", + "name:bg": "Манама", + "name:bo": "མ་ན་མ།", + "name:br": "Manama", + "name:bs": "Manama", + "name:ca": "Al-Manama", + "name:cdo": "Manama", + "name:ce": "Манама", + "name:ceb": "Manama", + "name:ckb": "مەنامە", + "name:cs": "Manáma", + "name:cy": "Manama", + "name:da": "Manama", + "name:de": "Manama", + "name:diq": "Mename", + "name:el": "Μανάμα", + "name:en": "Manama", + "name:eo": "Manamo", + "name:es": "Manama", + "name:et": "Manama", + "name:eu": "Manama", + "name:fa": "منامه", + "name:fi": "Manama", + "name:fr": "Manama", + "name:frp": "Manama", + "name:fy": "Manama", + "name:ga": "Manama", + "name:gd": "Manama", + "name:gl": "Manama", + "name:hak": "Manama", + "name:he": "מנאמה", + "name:hif": "Manama", + "name:hr": "Manama", + "name:hsb": "Manama", + "name:ht": "Manama", + "name:hu": "Manáma", + "name:hy": "Մանամա", + "name:ia": "Manama", + "name:id": "Al-Manamah", + "name:ie": "Manama", + "name:ilo": "Manama", + "name:io": "Al Manamah", + "name:is": "Manama", + "name:it": "Manama", + "name:ja": "マナーマ", + "name:ka": "მანამა", + "name:kaa": "Manama", + "name:kab": "Manama", + "name:ki": "Manama", + "name:kk": "Манама", + "name:ko": "마나마", + "name:ku": "Mename", + "name:ky": "Манама", + "name:la": "Manama", + "name:lb": "Manama", + "name:lij": "Manama", + "name:lmo": "Manama", + "name:lt": "Menama", + "name:lv": "Manāma", + "name:mai": "मनामा", + "name:mg": "Manama", + "name:mk": "Манама", + "name:mn": "Манама", + "name:ms": "Manama", + "name:mt": "Manama", + "name:myv": "Манама", + "name:na": "Manama", + "name:nah": "Manāmah", + "name:ne": "मनामा", + "name:nl": "Manamah", + "name:no": "Manama", + "name:oc": "Manama", + "name:os": "Манамæ", + "name:pap": "Manama", + "name:pih": "Manaama", + "name:pl": "Manama", + "name:pms": "Manama", + "name:ps": "منامه", + "name:pt": "Manama", + "name:rm": "Manama", + "name:ro": "Manama", + "name:ru": "Манама", + "name:rw": "Manama", + "name:sat": "ᱢᱟᱱᱟᱢᱟ", + "name:sc": "Manama", + "name:scn": "Manama", + "name:sco": "Manama", + "name:sh": "Manama", + "name:sk": "Manáma", + "name:sl": "Manama", + "name:sn": "Manama", + "name:sq": "Manama", + "name:sr": "Манама", + "name:su": "Al-Manamah", + "name:sv": "Manama", + "name:sw": "Manama", + "name:tg": "Манама", + "name:th": "มานามา", + "name:tl": "Manama", + "name:tr": "Menâme", + "name:udm": "Манама", + "name:uk": "Манама", + "name:ur": "منامہ", + "name:uz": "Manama", + "name:vep": "Manam", + "name:vi": "Manama", + "name:vo": "Mänamä", + "name:war": "Manama", + "name:wuu": "麦纳麦", + "name:xmf": "მანამა", + "name:yo": "Manama", + "name:yue": "麥納瑪", + "name:zh": "麥納麥" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 50.5822436, + 26.2235041 + ] + }, + "id": "node/38903284" + }, + { + "type": "Feature", + "properties": { + "name": "Santiago", + "name:ab": "Сантиаго", + "name:ace": "Santiagô", + "name:am": "ሳንቲያጎ", + "name:ang": "Santiago", + "name:ar": "سانتياغو", + "name:ast": "Santiago de Chile", + "name:az": "Santyaqo", + "name:bat-smg": "Santjags", + "name:be": "Сант'яга", + "name:be-tarask": "Сант’яга-дэ-Чылі", + "name:bg": "Сантяго", + "name:bo": "སཱན་ཏི་ཡ་གོ", + "name:ckb": "سانتیاگۆ", + "name:da": "Santiago de Chile", + "name:el": "Σαντιάγο", + "name:en": "Santiago", + "name:es": "Santiago", + "name:fa": "سانتیاگو", + "name:fr": "Santiago", + "name:he": "סנטיאגו דה צ'ילה", + "name:ht": "Santyago", + "name:hu": "Santiago de Chile", + "name:hy": "Սանտյագո", + "name:is": "Santíagó", + "name:ja": "サンティアゴ", + "name:ka": "სანტიაგო", + "name:ko": "산티아고", + "name:la": "Sanctiacobi", + "name:lt": "Santjagas", + "name:ltg": "Santjago", + "name:lv": "Santjago", + "name:mk": "Сантјаго", + "name:mn": "Сантъяго", + "name:mzn": "سانتیاگو", + "name:oc": "Santiago", + "name:os": "Сантьяго", + "name:pih": "Santi-ago", + "name:pl": "Santiago", + "name:ru": "Сантьяго", + "name:scn": "Santiagu dû Cili", + "name:sr": "Сантијаго де Чиле", + "name:sv": "Santiago", + "name:tet": "Santiagu", + "name:th": "ซานเตียโก", + "name:ug": "Santiyago", + "name:uk": "Сантьяго", + "name:ur": "سینٹیاگو", + "name:uz": "Santiyago", + "name:vep": "Santjago", + "name:vls": "Santiago", + "name:wa": "Santiago do Tchili", + "name:wuu": "圣地牙哥", + "name:yi": "סאנטיאגא", + "name:yue": "聖地亞哥", + "name:zh": "聖地亞哥/圣地亚哥", + "name:zh-Hans": "圣地亚哥" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -70.6504502, + -33.4377756 + ] + }, + "id": "node/50016356" + }, + { + "type": "Feature", + "properties": { + "name:am": "ኮሎምቦ", + "name:ar": "كولمبو", + "name:az": "Kolombo", + "name:be": "Каломба", + "name:bg": "Коломбо", + "name:bo": "ཁོ་ལུམ་པོ།", + "name:cs": "Kolombo", + "name:de": "Colombo", + "name:dv": "ކޮޅުނބު", + "name:el": "Κολόμπο", + "name:en": "Colombo", + "name:eo": "Kolombo", + "name:es": "Colombo", + "name:et": "Colombo", + "name:eu": "Kolonbo", + "name:fa": "کلمبو", + "name:fr": "Colombo", + "name:fy": "Kolombo", + "name:he": "קולומבו", + "name:ht": "Kolonbo", + "name:hu": "Colombo", + "name:id": "Kolombo", + "name:it": "Colombo", + "name:ja": "コロンボ", + "name:ka": "კოლომბო", + "name:kab": "Kulumbu", + "name:ko": "콜롬보", + "name:lt": "Kolombas", + "name:lv": "Kolombo", + "name:mn": "Коломбо", + "name:nl": "Colombo", + "name:nov": "Kolombo", + "name:oc": "Colombo", + "name:os": "Коломбо", + "name:pl": "Kolombo", + "name:ru": "Коломбо", + "name:si": "කොළඹ", + "name:sk": "Kolombo", + "name:so": "Kolonbo", + "name:sr": "Коломбо", + "name:sv": "Colombo", + "name:tg": "Коломбо", + "name:th": "โคลัมโบ", + "name:tr": "Kolombo", + "name:ug": "كولومبو", + "name:uk": "Коломбо", + "name:ur": "کولمبو", + "name:yue": "哥林堡", + "name:zh": "科伦坡/可倫坡/科倫坡/哥伦坡", + "name:zh-Hans": "科伦坡/哥伦坡", + "name:zh-Hans-CN": "科伦坡", + "name:zh-Hans-SG": "哥伦坡", + "name:zh-Hant": "可倫坡/科倫坡", + "name:zh-Hant-HK": "科倫坡", + "name:zh-Hant-TW": "可倫坡" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 79.8541134, + 6.9387469 + ] + }, + "id": "node/50794342" + }, + { + "type": "Feature", + "properties": { + "name": "Luxembourg", + "name:ace": "Luksèmburg", + "name:af": "Luxemburg", + "name:als": "Luxemburg", + "name:am": "ሉክሰምበርግ", + "name:an": "Luxemburgo", + "name:ang": "Letseburg", + "name:ar": "لوكسمبورغ", + "name:arc": "ܠܘܟܣܡܒܘܪܓ", + "name:arz": "لوكسيمبورج", + "name:ast": "Luxemburgu", + "name:az": "Lüksemburq", + "name:ba": "Люксембург", + "name:bar": "Luxmburg", + "name:bat-smg": "Lioksembōrgs", + "name:bcl": "Luhemburgo", + "name:be": "Люксембург", + "name:be-tarask": "Люксэмбург", + "name:bg": "Люксембург", + "name:bi": "Luxembourg", + "name:bo": "ལུ་སེམ་བའུརག", + "name:bpy": "লুক্সেমবুর্গ", + "name:br": "Luksembourg", + "name:bs": "Luxembourg", + "name:bxr": "Люксембург", + "name:ca": "Ciutat de Luxemburg", + "name:cdo": "Lù-sĕng-bō̤", + "name:ce": "Люксембург", + "name:ceb": "Luksemburgo", + "name:ckb": "لوکسەمبورگ", + "name:co": "Lussemburgu", + "name:crh": "Lüksemburg", + "name:cs": "Lucemburk", + "name:csb": "Luksembùrg", + "name:cu": "Люѯємбоургъ", + "name:cv": "Люксембург", + "name:cy": "Dinas Lwcsembwrg", + "name:da": "Luxembourg", + "name:de": "Luxemburg", + "name:diq": "Luksemburg", + "name:dsb": "Luxemburgska", + "name:ee": "Luxembourg", + "name:el": "Λουξεμβούργο", + "name:eml": "Lussembûrgh", + "name:en": "Luxembourg", + "name:eo": "Luksemburgo", + "name:es": "Luxemburgo", + "name:et": "Luxembourg", + "name:eu": "Luxenburgo", + "name:ext": "Lussembulgu", + "name:fa": "لوکزامبورگ", + "name:fi": "Luxemburg", + "name:fiu-vro": "Luxembourg", + "name:fo": "Luksemburg", + "name:fr": "Luxembourg", + "name:frp": "Luxembôrg", + "name:frr": "Luxemborj", + "name:fur": "Lussemburc", + "name:fy": "Lúksemboarch", + "name:ga": "Lucsamburg", + "name:gag": "Lüksemburg", + "name:gd": "Lucsamburg", + "name:gl": "Luxemburgo", + "name:gn": "Luxemburgo", + "name:gv": "Lucsemburg", + "name:hak": "Lù-sêm-pó", + "name:haw": "Lukemapuka", + "name:he": "לוקסמבורג", + "name:hif": "Luxembourg", + "name:hr": "Luksemburg", + "name:hsb": "Luxemburgska", + "name:ht": "Liksanbou", + "name:hu": "Luxembourg", + "name:hy": "Լյուքսեմբուրգ", + "name:ia": "Luxemburg", + "name:id": "Luksemburg", + "name:ie": "Luxemburgia", + "name:ilo": "Luxembourg", + "name:io": "Luxemburgia", + "name:is": "Lúxemborg", + "name:it": "Lussemburgo", + "name:ja": "ルクセンブルク", + "name:jbo": "lEtsyburg", + "name:jv": "Luksemburg", + "name:ka": "ლუქსემბურგი", + "name:kaa": "Lyuksemburg", + "name:kab": "Luxembourg", + "name:kbd": "Луксембург", + "name:kg": "Luxembourg", + "name:kk": "Люксембург", + "name:kl": "Luxembourg", + "name:ko": "룩셈부르크", + "name:koi": "Лецебург", + "name:krc": "Люксембург", + "name:ksh": "Luxemburg", + "name:ku": "Lûksembûrg", + "name:kv": "Люксембург", + "name:kw": "Lushaborg", + "name:ky": "Люксембург", + "name:la": "Luxemburgum", + "name:lad": "Luksemburgo", + "name:lb": "Lëtzebuerg", + "name:lez": "Люксембург", + "name:li": "Luxembörg", + "name:lij": "Luxemburgo", + "name:lmo": "Lüssemburgh", + "name:ln": "Luksamburg", + "name:lt": "Liuksemburgas", + "name:ltg": "Luksemburga", + "name:lv": "Luksemburga", + "name:lzh": "盧森堡", + "name:mdf": "Люксембур", + "name:mg": "Loksemborga", + "name:mhr": "Люксембург", + "name:mi": "Rakapuō", + "name:mk": "Луксембург", + "name:mn": "Люксембург", + "name:ms": "Bandar Luxembourg", + "name:mt": "Lussemburgu", + "name:mzn": "لوکزامبورگ", + "name:na": "Ruketemburg", + "name:nah": "Luxemburgo", + "name:nan": "Luxembourg", + "name:nds": "Luxemborg", + "name:nds-nl": "Luxemburg", + "name:ne": "लक्जेम्बर्ग", + "name:new": "लक्जेम्बर्ग", + "name:nl": "Luxemburg", + "name:nn": "Luxembourg by", + "name:no": "Luxembourg", + "name:nov": "Luxembourg", + "name:nrm": "Luxembourg", + "name:nv": "Látsębooʼ", + "name:oc": "Luxemborg", + "name:os": "Люксембург", + "name:pam": "Luxemburgo", + "name:pap": "Luxembourg", + "name:pcd": "Lussimbourk", + "name:pdc": "Luxemburg", + "name:pfl": "Lugsebursch", + "name:pih": "Luksemborg", + "name:pl": "Luksemburg", + "name:pms": "Lussemborgh", + "name:pnt": "Λουξεμβούργο", + "name:ps": "لوګزامبورګ", + "name:pt": "Luxemburgo", + "name:qu": "Luksimbur", + "name:rm": "Luxemburg", + "name:rmy": "Luksemburgo", + "name:ro": "Luxemburg", + "name:roa-tara": "Lussemburghe", + "name:ru": "Люксембург", + "name:rue": "Луксембурьско", + "name:rw": "Lugizamburu", + "name:sa": "लक्सम्बर्ग", + "name:sah": "Лүксембург", + "name:sc": "Lussemburgu", + "name:scn": "Lussimburgu", + "name:sco": "Luxembourg", + "name:se": "Luxemburg", + "name:sh": "Luksemburg", + "name:simple": "Luxembourg City", + "name:sk": "Luxemburg", + "name:sl": "Luksemburg", + "name:so": "Luksemburg", + "name:sq": "Luksemburgu", + "name:sr": "Луксембург", + "name:srn": "Luksemburgkondre", + "name:ss": "Lusembogu", + "name:stq": "Luxembuurich", + "name:su": "Luksemburg", + "name:sv": "Luxemburg", + "name:sw": "Luxemburg", + "name:szl": "Luksymburg", + "name:tet": "Luxemburgu", + "name:tg": "Люксембург", + "name:th": "ลักเซมเบิร์ก", + "name:tk": "Lýuksemburg", + "name:tl": "Lungsod ng Luxembourg", + "name:tr": "Lüksemburg", + "name:tt": "Люксембург", + "name:udm": "Люксембург", + "name:ug": "ليۇكسېمبۇرگ شەھىرى", + "name:uk": "Люксембург", + "name:ur": "لکسمبرگ", + "name:uz": "Luksemburg", + "name:vec": "Lusenburgo", + "name:vep": "Lüksemburg", + "name:vi": "Luxembourg", + "name:vls": "Luxemburg", + "name:vo": "Luxämburgän", + "name:wa": "Lussimbork veye", + "name:war": "Luxemburgo", + "name:wo": "Luksambuur", + "name:wuu": "卢森堡", + "name:xal": "Лүксин Балһсна Нутг", + "name:xmf": "ლუქსემბურგი", + "name:yi": "לוקסעמבורג", + "name:yo": "Luxembourg", + "name:yue": "盧森堡", + "name:zea": "Luxemburg", + "name:zh": "卢森堡 / 盧森堡", + "name:zh-Hans": "卢森堡", + "name:zh-Hant": "盧森堡" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 6.129799, + 49.6112768 + ] + }, + "id": "node/52943358" + }, + { + "type": "Feature", + "properties": { + "name": "San Juan", + "name:ar": "سان خوان", + "name:arz": "سان خوان", + "name:az": "San Xuan", + "name:azb": "سان جوان", + "name:be": "Сан-Хуан", + "name:be-tarask": "Сан-Хуан", + "name:bg": "Сан Хуан", + "name:bpy": "সান হুৱান", + "name:cs": "San Juan", + "name:de": "San Juan", + "name:el": "Σαν Χουάν", + "name:en": "San Juan", + "name:eo": "San-Juano", + "name:es": "San Juan", + "name:fa": "سان خوآن", + "name:fr": "San Juan", + "name:gl": "San Xoán", + "name:he": "סן חואן", + "name:hr": "San Juan", + "name:hu": "San Juan", + "name:hy": "Սան Խուան", + "name:it": "San Juan", + "name:ja": "サンフアン", + "name:ka": "სან-ხუანი", + "name:ko": "산후안", + "name:ks": "سان خوآن", + "name:lt": "San Chuanas", + "name:lv": "Sanhuana", + "name:mk": "Сан Хуан", + "name:ms": "San Juan", + "name:nl": "San Juan", + "name:no": "San Juan", + "name:os": "Сан-Хуан", + "name:pl": "San Juan", + "name:pt": "San Juan", + "name:ro": "San Juan", + "name:ru": "Сан-Хуан", + "name:sk": "San Juan", + "name:sr": "Сан Хуан", + "name:sr-Latn": "San Huan", + "name:sv": "San Juan", + "name:th": "ซานฮวน", + "name:tr": "San Juan", + "name:uk": "Сан-Хуан", + "name:ur": "سان خوآن", + "name:zh": "聖胡安" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -66.116666, + 18.465299 + ] + }, + "id": "node/53200527" + }, + { + "type": "Feature", + "properties": { + "name": "Kingston", + "name:am": "ኪንግስቶን", + "name:ang": "Cyninȝestūn", + "name:ar": "كينغستون", + "name:az": "Kinqston", + "name:be": "Кінгстан", + "name:be-tarask": "Кінгстан", + "name:bg": "Кингстън", + "name:bo": "ཁིང་སི་ཐོན།", + "name:cv": "Кингстон", + "name:de": "Kingston", + "name:el": "Κίνγκστον", + "name:en": "Kingston", + "name:eo": "Kingstono", + "name:es": "Kingston", + "name:fa": "کینگستون", + "name:fr": "Kingston", + "name:gd": "Kingston", + "name:he": "קינגסטון", + "name:ht": "Kinstòn", + "name:hu": "Kingston", + "name:hy": "Քինգստոն", + "name:is": "Kingston", + "name:ja": "キングストン", + "name:ka": "კინგსტონი", + "name:ko": "킹스턴", + "name:la": "Regiopolis", + "name:lt": "Kingstonas", + "name:lv": "Kingstona", + "name:mk": "Кингстон", + "name:oc": "Kingston", + "name:os": "Кингстон", + "name:pl": "Kingstone", + "name:ru": "Кингстон", + "name:sah": "Киҥстон", + "name:sr": "Кингстон", + "name:sv": "Kingston", + "name:th": "คิงส์ตัน", + "name:uk": "Кінгстон", + "name:ur": "کنگسٹن", + "name:zh": "金斯敦", + "name:zh-Hans": "京斯敦", + "name:zh-Hant": "京斯敦" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -76.7928128, + 17.9712148 + ] + }, + "id": "node/53371112" + }, + { + "type": "Feature", + "properties": { + "name": "Quito", + "name:am": "ኪቶ", + "name:ar": "كيتو", + "name:ay": "Kitu", + "name:az": "Kito", + "name:be": "Кіта", + "name:be-tarask": "Кіта", + "name:bg": "Кито", + "name:bo": "ཁེ་ཐོ།", + "name:de": "Quito", + "name:el": "Κίτο", + "name:en": "Quito", + "name:eo": "Kito", + "name:ext": "Quitu", + "name:fa": "کیتو", + "name:fr": "Quito", + "name:fy": "Kito", + "name:he": "קיטו", + "name:ht": "Kito", + "name:hu": "Quito", + "name:hy": "Կիտո", + "name:is": "Quito", + "name:ja": "キト", + "name:ka": "კიტო", + "name:kk": "Кито", + "name:ko": "키토", + "name:la": "Quitum", + "name:lt": "Kitas", + "name:lv": "Kito", + "name:mk": "Кито", + "name:nov": "Kito", + "name:oc": "Quito", + "name:os": "Кито", + "name:pl": "Quito", + "name:qu": "Kitu", + "name:ru": "Кито", + "name:sq": "Kuito", + "name:sr": "Кито", + "name:sv": "Quito", + "name:th": "กีโต", + "name:ug": "كىتو", + "name:uk": "Кіто", + "name:ur": "کیٹو", + "name:yi": "קיטא", + "name:zh": "基多" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -78.5123274, + -0.2201641 + ] + }, + "id": "node/58950371" + }, + { + "type": "Feature", + "properties": { + "name": "Andorra la Vella", + "name:am": "አንዶራ ላ ቬላ", + "name:an": "Andorra la Biella", + "name:ar": "أندورا لا فيلا", + "name:arz": "أندورا لا فيلا", + "name:az-Arab": "آندورا لا ویخا", + "name:azb": "آندورا لا ویخا", + "name:bat-smg": "Anduora", + "name:be": "Андора-ла-Велья", + "name:be-tarask": "Андора ля Вэльля", + "name:bg": "Андора ла Веля", + "name:bo": "ཨན་ཌོར་ར་གྲོང་ཁྱེར།", + "name:ca": "Andorra la Vella", + "name:ce": "Андорра-ла-Велья", + "name:ckb": "ئەندۆرا لا ڤێلا", + "name:cv": "Андорра-ла-Вьеха", + "name:de": "Andorra la Vella", + "name:el": "Ανδόρρα λα Βέγια", + "name:en": "Andorra la Vella", + "name:eo": "Andoro Malnova", + "name:es": "Andorra la Vieja", + "name:fa": "آندورا لاولا", + "name:fr": "Andorre-la-Vieille", + "name:frp": "Andorra-la-Vielye", + "name:gl": "Andorra a Vella", + "name:he": "אנדורה לה ולה", + "name:ht": "Andò-la-Vyèy", + "name:hu": "Andorra la Vella", + "name:hy": "Անդորա լա Վելյա", + "name:hyw": "Անտորրա Լէ Վալէ", + "name:is": "Andorra la Vella", + "name:it": "Andorra la Vella", + "name:ja": "アンドラ・ラ・ベリャ", + "name:ka": "ანდორა-ლა-ველა", + "name:kk": "Андорра-ла-Велья", + "name:kk-Arab": "اندوررا-لا-ۆەليا", + "name:ko": "안도라라벨랴", + "name:ks": "انڈورا لا ویخا", + "name:ku": "Andorra la Vella", + "name:kv": "Андорра-ла-Велья", + "name:la": "Andorra Vetus", + "name:lij": "A Vella", + "name:lt": "Andora", + "name:lv": "Andora la Velja", + "name:mk": "Андора ла Велја", + "name:nah": "Andorra in Huehcāuh", + "name:nl": "Andorra", + "name:oc": "Andòrra la Vièlha", + "name:os": "Андоррæ-ла-Велья", + "name:ota": "آندورا لا ویخا", + "name:pl": "Andora", + "name:pt": "Andorra-a-Velha", + "name:ru": "Андорра-ла-Велья", + "name:sah": "Андорра ла Велья", + "name:sk": "Andorra", + "name:sr": "Андора ла Веља", + "name:sv": "Andorra la Vella", + "name:tet": "Andorra Tuan", + "name:tg": "Андорра-ла-Веля", + "name:th": "อันดอร์ราลาเบยา", + "name:tl": "Lungsod ng Andorra la Vella", + "name:udm": "Андорра-ла-Велья", + "name:ug": "ئاندوررا كەنتى", + "name:uk": "Андорра-ла-Велья", + "name:ur": "انڈورا لا ویلا", + "name:vep": "Andorr la Vel'j", + "name:zh": "安道爾城", + "name:zh-Hans": "安道尔城", + "name:zh-Hant": "安道爾城" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 1.5212467, + 42.5069391 + ] + }, + "id": "node/58957648" + }, + { + "type": "Feature", + "properties": { + "name": "Kigali", + "name:am": "ኪጋሊ", + "name:ar": "كيغالي", + "name:az": "Kiqali", + "name:az-Arab": "کیقالی", + "name:azb": "کیقالی", + "name:be": "Кігалі", + "name:bg": "Кигали", + "name:bo": "ཀི་ག་ལི།", + "name:ckb": "کیگالی", + "name:cv": "Кигали", + "name:de": "Kigali", + "name:el": "Κιγκάλι", + "name:en": "Kigali", + "name:eo": "Kigalo", + "name:es": "Kigali", + "name:fa": "کیگالی", + "name:fr": "Kigali", + "name:fy": "Kigaly", + "name:he": "קיגאלי", + "name:hu": "Kigali", + "name:hy": "Կիգալի", + "name:is": "Kígalí", + "name:it": "Kigali", + "name:ja": "キガリ", + "name:ka": "კიგალი", + "name:ko": "키갈리", + "name:koi": "Кигали", + "name:ks": "کیگالی", + "name:ku": "Kîgalî", + "name:ky": "Кигали", + "name:lt": "Kigalis", + "name:mk": "Кигали", + "name:mrj": "Кигали", + "name:nl": "Kigali", + "name:no": "Kigali", + "name:oc": "Kigali", + "name:os": "Кигали", + "name:pl": "Kigali", + "name:pt": "Kigali", + "name:ru": "Кигали", + "name:si": "කිගාලි", + "name:sr": "Кигали", + "name:sv": "Kigali", + "name:tg": "Кигали", + "name:th": "คิกาลี", + "name:tr": "Kigali", + "name:udm": "Кигали", + "name:uk": "Кігалі", + "name:ur": "کیگالی", + "name:zh": "吉佳利" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 30.061507, + -1.950851 + ] + }, + "id": "node/60485579" + }, + { + "type": "Feature", + "properties": { + "name": "Београд", + "name:ace": "Belgrade", + "name:af": "Belgrado", + "name:am": "በልግራድ", + "name:an": "Belgrado", + "name:ar": "بلغراد", + "name:ast": "Belgráu", + "name:az": "Belqrad", + "name:bat-smg": "Belgrads", + "name:be": "Бялград", + "name:be-tarask": "Бялград", + "name:bg": "Белград", + "name:bo": "བེལ་གེ་རེ་ཌི།", + "name:br": "Beograd", + "name:bs": "Beograd", + "name:ca": "Belgrad", + "name:ckb": "بێلگراد", + "name:cs": "Bělehrad", + "name:cu": "Бѣлъ Градъ", + "name:cv": "Белград", + "name:cy": "Beograd", + "name:da": "Beograd", + "name:de": "Belgrad", + "name:dsb": "Běłogrod", + "name:el": "Βελιγράδι", + "name:en": "Belgrade", + "name:eo": "Beogrado", + "name:es": "Belgrado", + "name:et": "Belgrad", + "name:ext": "Belgradu", + "name:fa": "بلگراد", + "name:fi": "Belgrad", + "name:fo": "Beograd", + "name:fr": "Belgrade", + "name:frp": "Bèlgrade", + "name:fy": "Belgrado", + "name:ga": "Béalgrád", + "name:gd": "Belgrade", + "name:gl": "Belgrado", + "name:gv": "Belgraaid", + "name:he": "בלגרד", + "name:hif": "Belgrade", + "name:hr": "Beograd", + "name:hsb": "Běłohród", + "name:ht": "Bèlgrad", + "name:hu": "Belgrád", + "name:hy": "Բելգրադ", + "name:id": "Beograd", + "name:ie": "Beograd", + "name:io": "Belgrade", + "name:is": "Belgrad", + "name:it": "Belgrado", + "name:ja": "ベオグラード", + "name:jbo": "be'ograd", + "name:jv": "Beograd", + "name:ka": "ბელგრადი", + "name:kk": "Белград", + "name:ko": "베오그라드", + "name:ku": "Belgrad", + "name:kv": "Белград", + "name:la": "Belogradum", + "name:lad": "Belogrado", + "name:lb": "Belgrad", + "name:li": "Belgrado", + "name:lij": "Belgraddo", + "name:lt": "Belgradas", + "name:lv": "Belgrada", + "name:mi": "Belgrade", + "name:mk": "Белград", + "name:mn": "Белград", + "name:ms": "Belgrade", + "name:mt": "Belgrad", + "name:nan": "Belgrade", + "name:nl": "Belgrado", + "name:nn": "Beograd", + "name:no": "Beograd", + "name:nov": "Beograd", + "name:oc": "Belgrad", + "name:os": "Белград", + "name:pap": "Belgrado", + "name:pl": "Belgrad", + "name:pt": "Belgrado", + "name:qu": "Beograd", + "name:ro": "Belgrad", + "name:roa-rup": "Biligrad", + "name:ru": "Белград", + "name:sah": "Белград", + "name:sc": "Belgrado", + "name:scn": "Belgradu", + "name:sco": "Belgrade", + "name:sh": "Beograd", + "name:sk": "Belehrad", + "name:sl": "Beograd", + "name:sm": "Belgrade", + "name:so": "Belgaraad", + "name:sr": "Београд", + "name:sr-Latn": "Beograd", + "name:sv": "Belgrad", + "name:tg": "Белград", + "name:th": "เบลเกรด", + "name:tl": "Belgrade", + "name:tr": "Belgrad", + "name:tt": "Белград", + "name:ty": "Beograd", + "name:udm": "Белград", + "name:ug": "بېلگراد", + "name:uk": "Белград", + "name:ur": "بلغراد", + "name:vec": "Belgrado", + "name:vi": "Beograd", + "name:vo": "Beograd", + "name:war": "Belgrade", + "name:wuu": "贝尔格莱德", + "name:yi": "בעלגראד", + "name:yo": "Belgrade", + "name:yue": "貝爾格萊德", + "name:zh": "贝尔格莱德市/貝爾格勒市/貝爾格萊德", + "name:zh-Hans": "贝尔格莱德", + "name:zh-Hant": "貝爾格勒市/貝爾格萊德", + "name:zh-Hant-HK": "貝爾格萊德", + "name:zh-Hant-TW": "貝爾格勒市" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 20.4568974, + 44.8178131 + ] + }, + "id": "node/60571493" + }, + { + "type": "Feature", + "properties": { + "name": "Ciudad de México", + "name:ace": "Banda Meksiko", + "name:af": "Meksikostad", + "name:am": "ሜክሲኮ ከተማ", + "name:an": "Ciudat de Mexico", + "name:ang": "Mexicoburg", + "name:ar": "مدينة مكسيكو", + "name:arz": "ميكسيكو سيتى", + "name:ast": "Ciudá de Méxicu", + "name:ay": "Mïxiku marka", + "name:az": "Mexiko", + "name:ba": "Мехико", + "name:bat-smg": "Meksėks", + "name:bcl": "Mexico", + "name:be": "Мехіка", + "name:be-tarask": "Мэхіка", + "name:bg": "Мексико", + "name:bo": "མེག་སི་ཀོ་གྲོང་།", + "name:br": "Kêr-Vec'hiko", + "name:bs": "Ciudad de México", + "name:ca": "Ciutat de Mèxic", + "name:ckb": "مەکسیکۆ سیتی", + "name:cs": "Ciudad de México", + "name:cv": "Мехико", + "name:cy": "Dinas Mexico", + "name:da": "Mexico City", + "name:de": "Mexiko-Stadt", + "name:diq": "Meksiko City", + "name:el": "Πόλη του Μεξικού", + "name:en": "Mexico City", + "name:eo": "Meksik-urbo", + "name:es": "Ciudad de México", + "name:et": "México", + "name:eu": "Mexiko Hiria", + "name:ext": "Ciá de Méjicu", + "name:fa": "مکزیکو سیتی", + "name:fi": "México", + "name:fiu-vro": "México", + "name:fo": "Meksikobýur", + "name:fr": "Mexico", + "name:fy": "Meksiko-Stêd", + "name:ga": "Cathair Mheicsiceo", + "name:gd": "Meagsago", + "name:gl": "Cidade de México", + "name:gn": "Méjiko táva", + "name:haw": "Mēkiko D.F.", + "name:he": "מקסיקו סיטי", + "name:hif": "Mexico City", + "name:hr": "Ciudad de México", + "name:hsb": "Mexiko-město", + "name:ht": "Meksiko", + "name:hu": "Mexikóváros", + "name:hy": "Մեխիկո", + "name:ia": "Citate de Mexico", + "name:id": "Ciudad de México", + "name:io": "México", + "name:is": "Mexíkóborg", + "name:it": "Città del Messico", + "name:ja": "メキシコシティ", + "name:jbo": "mexygu'e tcadu", + "name:jv": "Mexico City", + "name:ka": "მეხიკო", + "name:kk": "Мехико", + "name:kl": "Mexico City", + "name:km": "ក្រុងម៉ិកស៊ិក", + "name:ko": "멕시코시티", + "name:ku": "Meksîko", + "name:kw": "Cita Mexico", + "name:la": "Mexicopolis", + "name:lad": "Sivdad de Meksiko", + "name:lij": "Çittæ do Mescico", + "name:lmo": "Cità del Messich", + "name:ln": "Mbóka ya Mexiko", + "name:lt": "Meksikas", + "name:lv": "Mehiko", + "name:mg": "Mexico", + "name:mhr": "Мехико", + "name:mk": "Мексико", + "name:mn": "Мехико", + "name:mrj": "Мехико", + "name:ms": "Bandar Raya Mexico", + "name:nah": "Āltepētl Mēxihco", + "name:nan": "México Chhī", + "name:nl": "Mexico-Stad", + "name:nn": "Mexico by", + "name:no": "Mexico by", + "name:nov": "Mexiko Urbe", + "name:nv": "Méhigoʼ sídii", + "name:oc": "Ciutat de Mexic", + "name:os": "Мехико", + "name:pap": "Ciudad di Mexico", + "name:pl": "Meksyk", + "name:pms": "Sità dël Méssich", + "name:pt": "Cidade do México", + "name:qu": "Mishiku llaqta", + "name:rm": "Citad da Mexico", + "name:ro": "Ciudad de México", + "name:ru": "Мехико", + "name:rue": "Мексіко Сіті", + "name:sah": "Мехико", + "name:sc": "Tzitade de su Mèssico", + "name:scn": "Cità dû Mèssicu", + "name:sco": "Mexico Ceety", + "name:se": "México", + "name:sh": "Ciudad de Mexico", + "name:sk": "Mexiko", + "name:sl": "Ciudad de México", + "name:sm": "Mexico Siti", + "name:sq": "Meksiko", + "name:sr": "Мексико Сити", + "name:sv": "Mexico City", + "name:sw": "Mexico", + "name:szl": "Meksyk", + "name:tg": "Мехико", + "name:th": "เม็กซิโกซิตี", + "name:tk": "Mehiko", + "name:tl": "Lungsod ng Mehiko", + "name:tr": "Meksika", + "name:tt": "Мехико", + "name:udm": "Мехико", + "name:ug": "مېكسىكا شەھىرى", + "name:uk": "Мехіко", + "name:ur": "میکسیکو شہر", + "name:uz": "Mexiko shahri", + "name:vec": "Sità del Mèsico", + "name:vi": "Thành phố Mexico", + "name:vo": "Ciudad de México", + "name:war": "Syudad han Mehiko", + "name:xmf": "მეხიკო", + "name:yi": "מעקסיקא שטאט", + "name:yo": "Ìlú Mẹ́ksíkò", + "name:yue": "墨西哥城", + "name:zh": "墨西哥城" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -99.1331785, + 19.4326296 + ] + }, + "id": "node/62270270" + }, + { + "type": "Feature", + "properties": { + "name": "काठमाडौं", + "name:af": "Katmandoe", + "name:am": "ካትማንዱ", + "name:an": "Katmandú", + "name:ar": "كاثماندو", + "name:az": "Katmandu", + "name:bat-smg": "Katmandū", + "name:be": "Катманду", + "name:be-tarask": "Катманду", + "name:bg": "Катманду", + "name:bh": "काठमाडौं", + "name:bo": "ཀ་ཏ་མན་ཏུ།", + "name:bs": "Katmandu", + "name:ca": "Katmandú", + "name:ckb": "کاتماندوو", + "name:cs": "Káthmándú", + "name:da": "Katmandu", + "name:de": "Kathmandu", + "name:el": "Κατμαντού", + "name:en": "Kathmandu", + "name:eo": "Katmanduo", + "name:es": "Katmandú", + "name:et": "Katmandu", + "name:eu": "Katmandu", + "name:fa": "کاتماندو", + "name:fr": "Katmandou", + "name:fy": "Katmandû", + "name:gl": "Katmandu - काठमांडौ", + "name:he": "קטמנדו", + "name:hr": "Katmandu", + "name:hsb": "Katmandu", + "name:ht": "Katmandou", + "name:hu": "Katmandu", + "name:hy": "Կատմանդու", + "name:io": "Katmandu", + "name:is": "Katmandú", + "name:it": "Katmandu", + "name:ja": "カトマンズ", + "name:ka": "კატმანდუ", + "name:kk": "Катманду", + "name:ko": "카트만두", + "name:lb": "Katmandu", + "name:lij": "Katmandu", + "name:lt": "Katmandu", + "name:lv": "Katmandu", + "name:mk": "Катманду", + "name:mn": "Катманду", + "name:ne": "काठमाडौं", + "name:new": "येँ", + "name:nl": "Kathmandu", + "name:nn": "Katmandu", + "name:no": "Katmandu", + "name:nov": "Katmandu", + "name:oc": "Katmandó", + "name:os": "Катманду", + "name:pl": "Katmandu", + "name:pt": "Catmandu", + "name:ru": "Катманду", + "name:sa": "काट्मण्डू", + "name:sh": "Katmandu", + "name:si": "කත්මන්ඩු", + "name:sk": "Káthmandu", + "name:sl": "Katmandu", + "name:sr": "Катманду", + "name:sv": "Katmandu", + "name:tg": "Катманду", + "name:th": "กาฐมาณฑุ", + "name:tr": "Katmandu", + "name:ug": "كاتماندۇ", + "name:uk": "Катманду", + "name:ur": "کھٹمنڈو", + "name:vi": "Kathmandu", + "name:vo": "Kathmandau", + "name:yue": "加德滿都", + "name:zh": "加德满都", + "name:zh-Hans": "加德满都" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 85.3205817, + 27.708317 + ] + }, + "id": "node/67157058" + }, + { + "type": "Feature", + "properties": { + "name": "Roma", + "name:ace": "Roma", + "name:af": "Rome", + "name:am": "ሮማ", + "name:an": "Roma", + "name:ang": "Rōm", + "name:ar": "روما", + "name:arc": "ܪܗܘܡܐ", + "name:arz": "روما", + "name:ast": "Roma", + "name:ay": "Roma", + "name:az": "Roma", + "name:ba": "Рим", + "name:bat-smg": "Ruoma", + "name:bcl": "Roma", + "name:be": "Рым", + "name:be-tarask": "Рым", + "name:bg": "Рим", + "name:bi": "Rome", + "name:bo": "རོ་མ།", + "name:br": "Roma", + "name:bs": "Rim", + "name:ca": "Roma", + "name:cbk-zam": "Roma", + "name:ceb": "Roma", + "name:chy": "Roma", + "name:cim": "Ruam", + "name:ckb": "ڕۆم", + "name:co": "Roma", + "name:cr": "ᖌᒪ", + "name:crh": "Roma", + "name:cs": "Řím", + "name:csb": "Rzim", + "name:cu": "Римъ", + "name:cv": "Рим", + "name:cy": "Rhufain", + "name:da": "Rom", + "name:de": "Rom", + "name:diq": "Roma", + "name:ee": "Rome", + "name:el": "Ρώμη", + "name:eml": "Råmma", + "name:en": "Rome", + "name:eo": "Romo", + "name:es": "Roma", + "name:et": "Rooma", + "name:eu": "Erroma", + "name:ext": "Roma", + "name:fa": "رم", + "name:fi": "Rooma", + "name:fiu-vro": "Rooma", + "name:fo": "Róm", + "name:fr": "Rome", + "name:frp": "Roma", + "name:fur": "Rome", + "name:fy": "Rome", + "name:ga": "An Róimh", + "name:gag": "Roma", + "name:gan": "羅馬", + "name:gd": "An Ròimh", + "name:gl": "Roma", + "name:gn": "Róma", + "name:gv": "Yn Raue", + "name:he": "רומא", + "name:hif": "Rome", + "name:hr": "Rim", + "name:ht": "Ròm", + "name:hu": "Róma", + "name:hy": "Հռոմ", + "name:ia": "Roma", + "name:id": "Roma", + "name:ie": "Roma", + "name:ilo": "Roma", + "name:io": "Roma", + "name:is": "Róm", + "name:it": "Roma", + "name:ja": "ローマ", + "name:jbo": "romas", + "name:jv": "Roma", + "name:ka": "რომი", + "name:kaa": "Rome", + "name:kk": "Рим", + "name:kl": "Roma", + "name:ko": "로마", + "name:krc": "Рим", + "name:ku": "Roma", + "name:kv": "Рим", + "name:kw": "Rom", + "name:la": "Roma", + "name:lad": "Roma", + "name:lb": "Roum", + "name:lez": "Рим", + "name:li": "Roeme", + "name:lij": "Romma", + "name:lmo": "Roma", + "name:ln": "Roma", + "name:lt": "Roma", + "name:lv": "Roma", + "name:lzh": "羅馬", + "name:mdf": "Рим", + "name:mg": "Roma", + "name:mhr": "Рим", + "name:mi": "Rōma", + "name:mk": "Рим", + "name:mn": "Ром", + "name:mt": "Ruma", + "name:mwl": "Roma", + "name:na": "Roma", + "name:nah": "Roma", + "name:nan": "Lô-má", + "name:nap": "Romma", + "name:nds": "Rom", + "name:nds-nl": "Rome", + "name:ne": "रोम", + "name:nl": "Rome", + "name:nn": "Roma", + "name:no": "Roma", + "name:nov": "Roma", + "name:nrm": "Rome", + "name:oc": "Roma", + "name:os": "Ром", + "name:pap": "Roma", + "name:pcd": "Rome", + "name:pl": "Rzym", + "name:pms": "Roma", + "name:pnt": "Ρώμη", + "name:pt": "Roma", + "name:qu": "Roma", + "name:rm": "Roma", + "name:rn": "Roma", + "name:ro": "Roma", + "name:roa-rup": "Roma", + "name:roa-tara": "Rome", + "name:ru": "Рим", + "name:rue": "Рим", + "name:rw": "Roma", + "name:sa": "रोमा", + "name:sah": "Ром", + "name:sc": "Roma", + "name:scn": "Roma", + "name:sco": "Roum", + "name:se": "Roma", + "name:sg": "Rome", + "name:sh": "Rim", + "name:si": "රෝමය", + "name:sk": "Rím", + "name:sl": "Rim", + "name:so": "Roma", + "name:sq": "Roma", + "name:sr": "Рим", + "name:stq": "Room", + "name:su": "Roma", + "name:sv": "Rom", + "name:sw": "Roma", + "name:szl": "Rzim", + "name:tg": "Рим", + "name:th": "โรม", + "name:tk": "Rim", + "name:tl": "Roma", + "name:tr": "Roma", + "name:tt": "Рим", + "name:ty": "Roma", + "name:udm": "Рим", + "name:ug": "Rim", + "name:uk": "Рим", + "name:ur": "روم", + "name:uz": "Rim", + "name:vec": "Roma", + "name:vep": "Rim", + "name:vi": "Rô-ma", + "name:vls": "Rome", + "name:vo": "Roma", + "name:war": "Roma", + "name:wuu": "罗马", + "name:xmf": "რომი", + "name:yi": "רוים", + "name:yo": "Rómù", + "name:yue": "羅馬", + "name:zh": "羅馬/罗马", + "name:zh-Hans": "罗马", + "name:zh-Hant": "羅馬", + "name:zh_pinyin": "Luómǎ" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 12.4829321, + 41.8933203 + ] + }, + "id": "node/72959652" + }, + { + "type": "Feature", + "properties": { + "name": "Hà Nội", + "name:am": "ሀኖይ", + "name:ar": "هانوي", + "name:arz": "هانوى", + "name:ast": "Hà Nội", + "name:az": "Hanoy", + "name:be": "Ханой", + "name:be-tarask": "Ханой", + "name:bg": "Ханой", + "name:bo": "ཧེ་ནོ།", + "name:br": "Ha Noi", + "name:ca": "Hanoi", + "name:ckb": "ھانۆی", + "name:cs": "Hanoj", + "name:cv": "Ханой", + "name:da": "Hanoi", + "name:de": "Hanoi", + "name:el": "Ανόι", + "name:en": "Hanoi", + "name:eo": "Hanojo", + "name:es": "Hanói", + "name:et": "Hanoi", + "name:eu": "Hanoi", + "name:fa": "هانوی", + "name:fi": "Hanoi", + "name:fr": "Hanoï", + "name:ga": "Ha Noi", + "name:gl": "Hanoi - Hà Nội", + "name:he": "האנוי", + "name:hr": "Hanoi", + "name:ht": "Anòy", + "name:hu": "Hanoi", + "name:hy": "Հանոյ", + "name:is": "Hanoí", + "name:it": "Hanoi", + "name:ja": "ハノイ", + "name:ka": "ჰანოი", + "name:kk": "Ханой", + "name:km": "ទីក្រុងហានូយ", + "name:ko": "하노이", + "name:ku": "Hanoi", + "name:lt": "Hanojus", + "name:lv": "Hanoja", + "name:mhr": "Ханой", + "name:mk": "Ханој", + "name:mn": "Ханой", + "name:mzn": "هانوی", + "name:nan": "Hà Nội", + "name:nds": "Hà Nội", + "name:nl": "Hanoi", + "name:oc": "Hanòi", + "name:os": "Ханой", + "name:pcd": "Hanoï", + "name:pl": "Hanoi", + "name:pt": "Hanói", + "name:qu": "Ha Nui", + "name:ru": "Ханой", + "name:sah": "Ханой", + "name:si": "හැනෝයි", + "name:sk": "Hanoj", + "name:sl": "Hanoj", + "name:sr": "Ханој", + "name:sv": "Hanoi", + "name:tg": "Ханой", + "name:th": "ฮานอย", + "name:ug": "خانوي", + "name:uk": "Ханой", + "name:ur": "ہنوئی", + "name:vi": "Hà Nội", + "name:vi-Hani": "河內", + "name:wuu": "河內市", + "name:yue": "河內市", + "name:zh": "河内市", + "name:zh-Hans": "河内市", + "name:zh-Hant": "河內市" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 105.8544441, + 21.0294498 + ] + }, + "id": "node/74132064" + }, + { + "type": "Feature", + "properties": { + "name": "Buenos Aires", + "name:ab": "Буенос-Аирес", + "name:am": "ብዌኖስ አይሬስ", + "name:ar": "بوينس آيرس", + "name:arz": "بوينوس ايريس", + "name:az": "Buenos Ayres", + "name:azb": "بوئنوس آیرس", + "name:ba": "Буэнос-Айрес", + "name:bat-smg": "Buenas Airēs", + "name:be": "Буэнас-Айрэс", + "name:be-tarask": "Буэнас-Айрэс", + "name:bg": "Буенос Айрес", + "name:bo": "པུ་ཨེ་ནོ་སི་ཨས་རི་སི།", + "name:bpy": "বুৱেনোস আইরেস", + "name:bxr": "Буэнос-Айрес", + "name:cbk-zam": "Ciudad de Buenos Aires", + "name:ce": "Буэнос-Айрес", + "name:ckb": "بۆینۆس ئایرێس", + "name:crh": "Buenos Ayres", + "name:de": "Buenos Aires", + "name:el": "Μπουένος Άιρες", + "name:en": "Buenos Aires", + "name:eo": "Bonaero", + "name:es": "Buenos Aires", + "name:et": "Buenos Aires", + "name:fa": "بوئنوس آیرس", + "name:fr": "Buenos Aires", + "name:gl": "Bos Aires", + "name:gr": "Εὐαερόπολις", + "name:grc": "Εὐαερόπολις", + "name:he": "בואנוס איירס", + "name:ht": "Bwènozè", + "name:hu": "Buenos Aires", + "name:hy": "Բուենոս Այրես", + "name:is": "Búenos Aíres", + "name:ja": "ブエノスアイレス", + "name:jbo": "buenosaires", + "name:ka": "ბუენოს-აირესი", + "name:kaa": "Buenos-Ayres", + "name:ko": "부에노스아이레스", + "name:ku": "Buenos Aires", + "name:ky": "Буэнос-Айрес", + "name:la": "Bonaëropolis", + "name:lad": "Buenos Ayres", + "name:lij": "Bonesaire", + "name:lt": "Buenos Airės", + "name:lv": "Buenosairesa", + "name:lzh": "布宜諾斯艾利斯", + "name:mk": "Буенос Аирес", + "name:mn": "Буэнос-Айрес", + "name:myv": "Буэнос-Айрес ош", + "name:nb": "Buenos Aires", + "name:nrm": "Bouonézâr", + "name:oc": "Buenos Aires", + "name:os": "Буэнос-Айрес", + "name:pl": "Buenos Aires", + "name:ru": "Буэнос-Айрес", + "name:rue": "Буенос Аірес", + "name:sah": "Буэнос Айрес", + "name:sr": "Буенос Ајрес", + "name:sv": "Buenos Aires", + "name:tg": "Буэнос Айрес", + "name:th": "บัวโนสไอเรส", + "name:tk": "Buenos-Aýres", + "name:tl": "Lungsod ng Buenos Aires", + "name:tr": "Buenos Aires", + "name:ug": "Buénos Ayrés", + "name:uk": "Буенос-Айрес", + "name:ur": "بیونس آئرس", + "name:uz": "Buenos Ayres", + "name:wuu": "布宜诺斯艾利斯", + "name:yi": "בוענאס איירעס", + "name:yue": "布宜諾斯艾利斯", + "name:zh": "布宜诺斯艾利斯", + "name:zh-Hans": "布宜诺斯艾利斯", + "name:zh-Hant": "布宜諾斯艾利斯" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -58.4370894, + -34.6075682 + ] + }, + "id": "node/81590481" + }, + { + "type": "Feature", + "properties": { + "name": "Budapest", + "name:ace": "Budapèst", + "name:af": "Boedapest", + "name:am": "ቡዳፔስት", + "name:ar": "بودابست", + "name:arz": "بودابست", + "name:ast": "Budapest", + "name:av": "Будапешт", + "name:az": "Budapeşt", + "name:azb": "بوداپست", + "name:bat-smg": "Budapešts", + "name:be": "Будапешт", + "name:be-tarask": "Будапэшт", + "name:bg": "Будапеща", + "name:bo": "བུ་ད་ཕེ་སིད།", + "name:bs": "Budimpešta", + "name:ca": "Budapest", + "name:ckb": "بوداپێست", + "name:crh": "Budapeşt", + "name:cs": "Budapešť", + "name:csb": "Bùdapeszt", + "name:cv": "Будапешт", + "name:de": "Budapest", + "name:diq": "Budapeşt", + "name:el": "Βουδαπέστη", + "name:en": "Budapest", + "name:eo": "Budapeŝto", + "name:es": "Budapest", + "name:fa": "بوداپست", + "name:fr": "Budapest", + "name:frp": "Budapèst", + "name:fy": "Boedapest", + "name:ga": "Búdaipeist", + "name:gag": "Budapeşt", + "name:gr": "Βουδαπέστη", + "name:grc": "Βουδαπέστη", + "name:he": "בודפשט", + "name:hr": "Budimpešta", + "name:ht": "Boudapès", + "name:hu": "Budapest", + "name:hy": "Բուդապեշտ", + "name:hyw": "Պուտափեսթ", + "name:is": "Búdapest", + "name:it": "Budapest", + "name:ja": "ブダペスト", + "name:ka": "ბუდაპეშტი", + "name:kk": "Будапешт", + "name:ko": "부다페스트", + "name:koi": "Будапешт", + "name:krc": "Будапешт", + "name:ku": "Budapeşt", + "name:kv": "Будапешт", + "name:la": "Budapestinum", + "name:li": "Boedapes", + "name:lt": "Budapeštas", + "name:lv": "Budapešta", + "name:mdf": "Будапешт", + "name:mhr": "Будапешт", + "name:mk": "Будимпешта", + "name:mn": "Будапешт", + "name:mrj": "Будапешт", + "name:myv": "Будапешт ош", + "name:nl": "Boedapest", + "name:no": "Budapest", + "name:nov": "Budapesht", + "name:oc": "Budapèst", + "name:os": "Будапешт", + "name:pdc": "Budapescht", + "name:pl": "Budapeszt", + "name:pms": "Bùdapest", + "name:pnt": "Βουδαπέστη", + "name:ps": "بوډاپسټ", + "name:pt": "Budapeste", + "name:ro": "Budapesta", + "name:ru": "Будапешт", + "name:sah": "Будапешт", + "name:sh": "Budimpešta", + "name:sk": "Budapešť", + "name:sl": "Budimpešta", + "name:sq": "Budapesti", + "name:sr": "Будимпешта", + "name:sv": "Budapest", + "name:szl": "Budapeszt", + "name:tg": "Будапешт", + "name:th": "บูดาเปสต์", + "name:tr": "Budapeşte", + "name:tt": "Будапешт", + "name:udm": "Будапешт", + "name:ug": "Budapésht", + "name:uk": "Будапешт", + "name:ur": "بوداپست", + "name:uz": "Budapesht", + "name:vep": "Budapešt", + "name:yi": "בודאפעשט", + "name:yue": "布達佩斯", + "name:zea": "Boedapest", + "name:zh": "布達佩斯", + "name:zh-Hans": "布达佩斯", + "name:zh-Hant": "布達佩斯" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 19.0403594, + 47.4979937 + ] + }, + "id": "node/85788293" + }, + { + "type": "Feature", + "properties": { + "name": "Dodoma", + "name:am": "ዶዶማ", + "name:ar": "دودوما", + "name:be": "Дадома", + "name:be-tarask": "Дадома", + "name:bg": "Додома", + "name:ckb": "دۆدۆما", + "name:cs": "Dodoma", + "name:de": "Dodoma", + "name:el": "Ντοντόμα", + "name:en": "Dodoma", + "name:eo": "Dodomao", + "name:es": "Dodoma", + "name:fa": "دودوما", + "name:fr": "Dodoma", + "name:he": "דודומה", + "name:hu": "Dodoma", + "name:hy": "Դոդոմա", + "name:is": "Dódóma", + "name:it": "Dodoma", + "name:ja": "ドドマ", + "name:ka": "დოდომა", + "name:kk": "Додома", + "name:ko": "도도마", + "name:ku": "Dodoma", + "name:ky": "Додома", + "name:lt": "Dodoma", + "name:mk": "Додома", + "name:mrj": "Додома", + "name:nl": "Dodoma", + "name:no": "Dodoma", + "name:oc": "Dodoma", + "name:pl": "Dodoma", + "name:ps": "دودوما", + "name:pt": "Dodoma", + "name:ru": "Додома", + "name:sr": "Додома", + "name:sv": "Dodoma", + "name:tg": "Додома", + "name:th": "โดโดมา", + "name:tr": "Dodoma", + "name:udm": "Додома", + "name:uk": "Додома", + "name:ur": "ڈوڈوما", + "name:zh": "杜篤瑪", + "name:zh-Hans": "多多马" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 35.7468174, + -6.1791181 + ] + }, + "id": "node/87841198" + }, + { + "type": "Feature", + "properties": { + "name": "București", + "name:ace": "Bucharèst", + "name:af": "Boekarest", + "name:am": "ቡካረስት", + "name:an": "Bucarest", + "name:ar": "بوخارست", + "name:arz": "بوخارست", + "name:ast": "Bucarest", + "name:az": "Buxarest", + "name:bat-smg": "Bukarėštos", + "name:be": "Бухарэст", + "name:be-tarask": "Бухарэст", + "name:bg": "Букурещ", + "name:bo": "པུ་ཁ་རེ་སིད།", + "name:bs": "Bukurešt", + "name:ca": "Bucarest", + "name:ckb": "بوخارێست", + "name:co": "Bucarest", + "name:crh": "Bükreș", + "name:cs": "Bukurešť", + "name:csb": "Bùkareszt", + "name:cv": "Бухарест", + "name:cy": "Bucureşti", + "name:da": "Bukarest", + "name:de": "Bukarest", + "name:diq": "Bukreș", + "name:ee": "Bucharest", + "name:el": "Βουκουρέστι", + "name:en": "Bucharest", + "name:eo": "Bukareŝto", + "name:es": "Bucarest", + "name:et": "Bukarest", + "name:ext": "Bucarest", + "name:fa": "بخارست", + "name:fi": "Bukarest", + "name:fr": "Bucarest", + "name:frp": "Bucarèst", + "name:fy": "Bûkarest", + "name:ga": "Búcairist", + "name:gd": "Bucharest", + "name:gl": "Bucarest", + "name:gv": "Bucharest", + "name:he": "בוקרשט", + "name:hif": "Bucharest", + "name:hr": "Bukurešt", + "name:ht": "Boukarès", + "name:hu": "Bukarest", + "name:hy": "Բուխարեստ", + "name:ia": "Bucarest", + "name:id": "Bukares", + "name:ie": "Bucarest", + "name:io": "Bucarest", + "name:is": "Búkarest", + "name:it": "Bucarest", + "name:ja": "ブカレスト", + "name:jv": "Bukarès", + "name:ka": "ბუქარესტი", + "name:kk": "Бухарест", + "name:ko": "부쿠레슈티", + "name:ku": "Bûkareşt", + "name:kv": "Бухарест", + "name:la": "Bucaresta", + "name:lad": "Bukureshti", + "name:li": "Boekares", + "name:lij": "Bucarest", + "name:lmo": "Bucarest", + "name:ln": "Bukaresti", + "name:lt": "Bukareštas", + "name:lv": "Bukareste", + "name:mi": "Bucharest", + "name:mk": "Букурешт", + "name:ms": "Bucharest", + "name:na": "Bucuresti", + "name:nan": "Bucharest", + "name:nap": "Bucarest", + "name:ne": "बुखारेस्ट", + "name:nl": "Boekarest", + "name:nn": "Bucureşti", + "name:no": "București", + "name:nov": "Bukareshti", + "name:oc": "Bucarèst", + "name:os": "Бухарест", + "name:pl": "Bukareszt", + "name:pms": "Bùcarest", + "name:ps": "بخارست", + "name:pt": "Bucareste", + "name:qu": "Bukuresti", + "name:rm": "Bucarest", + "name:rmy": "Bukureshti", + "name:ro": "București", + "name:roa-rup": "Bucureshci", + "name:roa-tara": "Bucarest", + "name:ru": "Бухарест", + "name:sah": "Бухарест", + "name:scn": "Bucarest", + "name:sco": "Bucharest", + "name:sh": "Bukurešt", + "name:simple": "Bucharest", + "name:sk": "Bukurešť", + "name:sl": "Bukarešta", + "name:sq": "Bukureshti", + "name:sr": "Букурешт", + "name:sv": "Bukarest", + "name:szl": "Bukareszt", + "name:tet": "Bukareste", + "name:tg": "Бухарест", + "name:th": "บูคาเรสต์", + "name:tl": "Bucharest", + "name:tpi": "Busares", + "name:tr": "Bükreş", + "name:udm": "Бухарест", + "name:ug": "بۇخارېست", + "name:uk": "Бухарест", + "name:ur": "بخارسٹ", + "name:vec": "Bùcarest", + "name:vep": "Buharest", + "name:vi": "Bucharest", + "name:vo": "Bucureşti", + "name:war": "Bucharest", + "name:yi": "בוקארעשט", + "name:yo": "Bucharest", + "name:zh": "布加勒斯特", + "name:zh-Hans": "布加勒斯特", + "name:zh-Hant": "布加勒斯特" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 26.1027202, + 44.4361414 + ] + }, + "id": "node/96209423" + }, + { + "type": "Feature", + "properties": { + "name": "Juba", + "name:af": "Joeba", + "name:am": "ጁባ", + "name:an": "Juba", + "name:ar": "جوبا", + "name:ast": "Juba", + "name:av": "Джуба", + "name:avk": "Juba", + "name:az": "Cuba", + "name:be": "Джуба", + "name:bg": "Джуба", + "name:br": "Juba", + "name:bs": "Juba", + "name:ca": "Juba", + "name:ce": "Джуба", + "name:ceb": "Juba", + "name:ckb": "جووبا", + "name:cs": "Džuba", + "name:cy": "Juba", + "name:da": "Juba", + "name:de": "Dschuba", + "name:din": "Juba", + "name:el": "Τζούμπα", + "name:en": "Juba", + "name:eo": "Ĵubo", + "name:es": "Yuba", + "name:et": "Juba", + "name:eu": "Juba", + "name:fa": "جوبا", + "name:fi": "Juba", + "name:fr": "Djouba", + "name:frr": "Juba", + "name:fy": "Jûba", + "name:ga": "Juba", + "name:gd": "Juba", + "name:gl": "Juba", + "name:gn": "Júva", + "name:ha": "Juba", + "name:hak": "Juba", + "name:he": "ג'ובה", + "name:hr": "Juba", + "name:hsb": "Juba", + "name:hu": "Juba", + "name:hy": "Ջուբա", + "name:ia": "Juba", + "name:id": "Juba", + "name:ie": "Juba", + "name:io": "Juba", + "name:is": "Júba", + "name:it": "Giuba", + "name:ja": "ジュバ", + "name:jv": "Juba", + "name:ka": "ჯუბა", + "name:kab": "Juba", + "name:kg": "Juba", + "name:ko": "주바", + "name:koi": "Джуба", + "name:ku": "Cuba", + "name:la": "Iuba", + "name:lfn": "Juba", + "name:lij": "Juba", + "name:lt": "Džuba", + "name:lv": "Džūba", + "name:mdf": "Джуба", + "name:mk": "Џуба", + "name:mn": "Жуба", + "name:mrj": "Джуба", + "name:ms": "Juba", + "name:mt": "Ġuba", + "name:nah": "Yuba", + "name:nl": "Djoeba", + "name:no": "Juba", + "name:oc": "Juba", + "name:os": "Джубæ", + "name:pam": "Juba", + "name:pap": "Juba", + "name:pl": "Dżuba", + "name:pms": "Juba", + "name:ps": "جوبا", + "name:pt": "Juba", + "name:ro": "Juba", + "name:ru": "Джуба", + "name:sc": "Juba", + "name:scn": "Juba", + "name:sco": "Juba", + "name:sh": "Džuba", + "name:sk": "Džúbá", + "name:sl": "Džuba", + "name:smn": "Juba", + "name:sn": "Juba", + "name:so": "Juba", + "name:sq": "Xhuba", + "name:sr": "Џуба", + "name:sv": "Juba", + "name:sw": "Juba", + "name:th": "จูบา", + "name:tl": "Juba", + "name:tr": "Cuba", + "name:udm": "Джуба", + "name:uk": "Джуба", + "name:ur": "جوبا", + "name:uz": "Juba", + "name:vec": "Juba", + "name:vep": "Džub", + "name:vi": "Juba", + "name:war": "Juba", + "name:wuu": "朱巴", + "name:xmf": "ჯუბა", + "name:yi": "דזשובא", + "name:zh": "朱巴", + "name:zu": "Juba" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 31.5959173, + 4.8459246 + ] + }, + "id": "node/97922073" + }, + { + "type": "Feature", + "properties": { + "name": "Port Vila", + "name:ace": "Port Vila", + "name:af": "Port Vila", + "name:am": "ፖርት ቪላ", + "name:an": "Port Vila", + "name:ar": "بورت فيلا", + "name:arz": "بورت فيلا", + "name:ast": "Puertu Villa", + "name:az": "Port Vila", + "name:be": "Порт-Віла", + "name:be-tarask": "Порт Віла", + "name:bg": "Порт Вила", + "name:bi": "Port Vila", + "name:bo": "ཝེ་ལ་གྲུ་ཁ།", + "name:br": "Port Vila", + "name:bs": "Port Vila", + "name:ca": "Port Vila", + "name:cs": "Port Vila", + "name:cy": "Port Vila", + "name:da": "Port Vila", + "name:de": "Port Vila", + "name:el": "Πορτ Βίλα", + "name:en": "Port Vila", + "name:eo": "Portvilao", + "name:es": "Port Vila", + "name:et": "Port Vila", + "name:eu": "Port Vila", + "name:fa": "پورت ویلا", + "name:fi": "Port Vila", + "name:fj": "Port Vila", + "name:fr": "Port-Vila", + "name:fy": "Port Fila", + "name:gd": "Port Vila", + "name:gl": "Port Vila", + "name:hak": "Port Vila", + "name:he": "פורט וילה", + "name:hif": "Port Vila", + "name:hr": "Port Vila", + "name:ht": "Pò Vila", + "name:hu": "Port Vila", + "name:hy": "Պորտ Վիլա", + "name:id": "Port Vila", + "name:ie": "Port Vila", + "name:io": "Port Vila", + "name:is": "Port Vila", + "name:it": "Port Vila", + "name:ja": "ポートビラ", + "name:ka": "პორტ-ვილა", + "name:ko": "포트빌라", + "name:ky": "Порт-Вила", + "name:la": "Portus Vila", + "name:lb": "Port Vila", + "name:lij": "Porto Vila", + "name:lmo": "Port Vila", + "name:lt": "Port Vila", + "name:lv": "Vila", + "name:mg": "Port Vila", + "name:mk": "Порт Вила", + "name:mrj": "Порт-Вила", + "name:ms": "Port Vila", + "name:na": "Port Vila", + "name:nl": "Port Vila", + "name:no": "Port Vila", + "name:ny": "Port Vila", + "name:oc": "Port Vila", + "name:os": "Порт-Вилæ", + "name:pl": "Port Vila", + "name:pms": "Port Vila", + "name:ps": "پورت ویلا", + "name:pt": "Porto Vila", + "name:ro": "Port Vila", + "name:ru": "Порт-Вила", + "name:sah": "Порт Вила", + "name:sc": "Port Vila", + "name:sh": "Port Vila", + "name:sk": "Port Vila", + "name:sl": "Port Vila", + "name:sn": "Port Vila", + "name:sq": "Port Vila", + "name:sr": "Порт Вила", + "name:sv": "Port Vila", + "name:sw": "Port Vila", + "name:szl": "Port Vila", + "name:tg": "Порт-Вила", + "name:th": "พอร์ตวิลา", + "name:tpi": "Pot Vila", + "name:tr": "Port Vila", + "name:ty": "Port-Vila", + "name:uk": "Порт-Віла", + "name:ur": "پورٹ ولا", + "name:uz": "Port-vila", + "name:vep": "Port Vil", + "name:vi": "Port Vila", + "name:vo": "Port Vila", + "name:war": "Port Vila", + "name:xmf": "პორტ-ვილა", + "name:zea": "Port Vila", + "name:zh": "維拉港" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 168.3150163, + -17.7414972 + ] + }, + "id": "node/115622916" + }, + { + "type": "Feature", + "properties": { + "name": "Nassau", + "name:am": "ናሶ", + "name:ar": "ناساو", + "name:be": "Насау", + "name:be-tarask": "Насаў", + "name:bg": "Насау", + "name:bo": "ན་སའོ།", + "name:ce": "Нассау", + "name:ckb": "ناساو", + "name:de": "Nassau", + "name:el": "Νασσάου", + "name:en": "Nassau", + "name:eo": "Nasaŭo", + "name:es": "Nasáu", + "name:fa": "ناسائو", + "name:fr": "Nassau", + "name:gr": "Νασσαῦον", + "name:grc": "Νασσαῦον", + "name:he": "נסאו", + "name:ht": "Naso", + "name:hu": "Nassau", + "name:hy": "Նասաու", + "name:is": "Nassá", + "name:ja": "ナッソー", + "name:ka": "ნასაუ", + "name:ko": "나소", + "name:lt": "Nasau", + "name:lv": "Naso", + "name:mk": "Насау", + "name:nn": "Nassau", + "name:oc": "Nassau", + "name:os": "Нассау", + "name:pl": "Nassau", + "name:ru": "Нассау", + "name:sah": "Нассау", + "name:sr": "Насау", + "name:sv": "Nassau", + "name:th": "แนสซอ", + "name:uk": "Нассау", + "name:ur": "نساؤ", + "name:zh": "拿騷" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -77.3383438, + 25.0782266 + ] + }, + "id": "node/115664268" + }, + { + "type": "Feature", + "properties": { + "name": "St Peter Port", + "name:ar": "سان بيتر بورت", + "name:be": "Сент-Пітэр-Порт", + "name:be-tarask": "Сэнт-Пітэр-Порт", + "name:en": "Saint Peter Port", + "name:fr": "Saint-Pierre-Port", + "name:hu": "Saint Peter Port", + "name:it": "Saint Peter Port", + "name:lt": "Sent Piter Portas", + "name:mk": "Сент Питер Порт", + "name:pl": "Saint Peter Port", + "name:tr": "Saint Peter Port", + "name:uk": "Сент-Пітер-Порт", + "name:zh": "聖彼得港", + "name:zh-Hans": "圣彼得港", + "name:zh-Hant": "聖彼得港" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -2.5389979, + 49.4568142 + ] + }, + "id": "node/116359720" + }, + { + "type": "Feature", + "properties": { + "name": "ວຽງຈັນ", + "name:am": "ቭየንትዬን", + "name:ar": "فيينتيان", + "name:az": "Vyentyan", + "name:be": "В'енцьян", + "name:be-tarask": "Віенцьян", + "name:bg": "Виентян", + "name:bjn": "Wiangcan", + "name:bo": "ཝིན་ཆིའང་", + "name:ckb": "ڤیەنتیان", + "name:cv": "Вьентьян", + "name:de": "Vientiane", + "name:el": "Βιεντιάν", + "name:en": "Vientiane", + "name:eo": "Vjentiano", + "name:es": "Vientián", + "name:et": "Vientiane", + "name:eu": "Vientian", + "name:fa": "وینتیان", + "name:fr": "Vientiane", + "name:fy": "Wiën Tsjan", + "name:he": "ויינטיאן", + "name:hr": "Vientiane", + "name:ht": "Vyantyàn", + "name:hu": "Vientián", + "name:hy": "Վյենտյան", + "name:is": "Vientiane", + "name:it": "Vientiane", + "name:ja": "ヴィエンチャン", + "name:ka": "ვიენტიანი", + "name:kk": "Вьентьян", + "name:ko": "비엔티안", + "name:ku": "Vientiane", + "name:lo": "ວຽງຈັນ", + "name:lt": "Vientianas", + "name:lv": "Vjenčana", + "name:mk": "Виентијан", + "name:nah": "Vianchan", + "name:nl": "Vientiane", + "name:oc": "Viengchan", + "name:os": "Вьентьян", + "name:pl": "Wientian", + "name:pt": "Vienciana", + "name:ru": "Вьентьян", + "name:sk": "Vientian", + "name:sl": "Vientjan", + "name:sr": "Вијентијан", + "name:sv": "Vientiane", + "name:tg": "Вентян", + "name:th": "เวียงจันทน์", + "name:udm": "Вьентьян", + "name:ug": "Wyéntyan", + "name:uk": "В'єнтьян", + "name:ur": "وینتیان", + "name:vi": "Viêng Chăn", + "name:vo": "Viengtjan", + "name:wuu": "万象", + "name:yue": "永珍", + "name:zh": "万象 / 永珍", + "name:zh-Hans": "万象", + "name:zh-Hans-CN": "万象", + "name:zh-Hans-TW": "永珍", + "name:zh-Hant": "永珍", + "name:zh-Hant-CN": "萬象", + "name:zh-Hant-TW": "永珍" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 102.6133707, + 17.9640988 + ] + }, + "id": "node/122739684" + }, + { + "type": "Feature", + "properties": { + "name": "Podgorica", + "name:am": "ፖድጎሪጻ", + "name:ar": "بودغوريتسا", + "name:ast": "Podgorica", + "name:az": "Podqoritsa", + "name:be": "Падгорыца", + "name:be-tarask": "Падгорыца", + "name:bg": "Подгорица", + "name:ckb": "پۆدگۆریسا", + "name:cu": "Подъгорица", + "name:cv": "Подгорица", + "name:de": "Podgorica", + "name:diq": "Podgorika", + "name:el": "Ποντγκόριτσα", + "name:en": "Podgorica", + "name:eo": "Podgorico", + "name:es": "Podgorica", + "name:fa": "پودگوریتسا", + "name:fr": "Podgorica", + "name:fy": "Podgorytsa", + "name:ga": "Podgairítse", + "name:gl": "Podgorica", + "name:he": "פודגוריצה", + "name:hr": "Podgorica", + "name:hu": "Podgorica", + "name:hy": "Պոդգորիցա", + "name:is": "Podgorica", + "name:it": "Podgorizza", + "name:ja": "ポドゴリツァ", + "name:ka": "პოდგორიცა", + "name:kk": "Подгорица", + "name:ko": "포드고리차", + "name:ku": "Podgorica", + "name:la": "Birziminium", + "name:mhr": "Подгорица", + "name:mk": "Подгорица", + "name:nah": "Podgoritza", + "name:no": "Podgorica", + "name:nov": "Podgoritsa", + "name:os": "Подгорицæ", + "name:pl": "Podgorica", + "name:ru": "Подгорица", + "name:sah": "Подгорица", + "name:scn": "Podgòrica", + "name:sh": "Podgorica", + "name:sl": "Podgorica", + "name:sq": "Podgoricë", + "name:sr": "Подгорица", + "name:sr-Latn": "Podgorica", + "name:sv": "Podgorica", + "name:tg": "Подгоритса", + "name:th": "พอดกอรีตซา", + "name:tr": "Podgoritsa", + "name:uk": "Подгориця", + "name:ur": "پوڈگوریکا", + "name:vi": "Podgorica", + "name:wo": "Podgorika", + "name:zh": "波德戈里察" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 19.2621081, + 42.4415238 + ] + }, + "id": "node/123860883" + }, + { + "type": "Feature", + "properties": { + "name": "Chișinău", + "name:af": "Chișinău", + "name:als": "Kischinau", + "name:am": "ኪሺንው", + "name:ar": "كيشيناو", + "name:ast": "Quixináu", + "name:az": "Kişinyov", + "name:bat-smg": "Kišėniuovs", + "name:be": "Кішынёў", + "name:be-tarask": "Кішынёў", + "name:bg": "Кишинев", + "name:bo": "ཅི་སི་ནའུ།", + "name:br": "Chișinău", + "name:bs": "Kišinjev", + "name:cbk-zam": "Chisinau", + "name:ckb": "کیشیناو", + "name:co": "Chișinău", + "name:crh": "Kișineu", + "name:cs": "Kišiněv", + "name:cv": "Кишинёв", + "name:cy": "Chișinău", + "name:de": "Kischinau", + "name:diq": "Kișinew", + "name:el": "Κισινάου", + "name:en": "Chișinău", + "name:eo": "Kiŝinevo", + "name:es": "Chisinau", + "name:eu": "Chisinau", + "name:fa": "کیشیناو", + "name:fo": "Chișinău", + "name:fr": "Chișinău", + "name:ga": "Císineá", + "name:gag": "Kișinöv", + "name:gd": "Chișinău", + "name:gl": "Chișinău", + "name:he": "קישינב", + "name:hif": "Chișinău", + "name:hr": "Kišinjev", + "name:hsb": "Kišinjow", + "name:ht": "Chisinaou", + "name:hu": "Kisinyov", + "name:hy": "Քիշնև", + "name:id": "Kishinev", + "name:io": "Chisinau", + "name:is": "Kisínev", + "name:it": "Chișinău", + "name:ja": "キシナウ", + "name:jv": "Chișinău", + "name:ka": "კიშინიოვი", + "name:kk": "Кишинев", + "name:ko": "키시너우", + "name:kv": "Кишинёв", + "name:la": "Chisla Nova", + "name:lb": "Chișinău", + "name:lij": "Chișinău", + "name:lmo": "Chișinău", + "name:lt": "Kišiniovas", + "name:lv": "Kišiņeva", + "name:md": "Кишинэу", + "name:mi": "Chișinău", + "name:mk": "Кишињев", + "name:mo": "Chișinău", + "name:nan": "Chișinău", + "name:nl": "Chisinau", + "name:nn": "Chișinău", + "name:no": "Chișinău", + "name:nov": "Kishinau", + "name:oc": "Chișinău", + "name:os": "Кишинёв", + "name:pl": "Kiszyniów", + "name:pms": "Chișinău", + "name:pt": "Chişinău", + "name:qu": "Chişinău", + "name:ro": "Chișinău", + "name:ru": "Кишинёв", + "name:sa": "चिशिनौ", + "name:sah": "Кишинев", + "name:scn": "Chișinău", + "name:sco": "Chișinău", + "name:sh": "Kišinjev", + "name:simple": "Chișinău", + "name:sk": "Kišiňov", + "name:sl": "Kišinjev", + "name:sq": "Kishinau", + "name:sr": "Кишињев", + "name:sv": "Chisinau", + "name:sw": "Kishineu", + "name:tg": "Кишинёв", + "name:th": "คีชีเนา", + "name:tl": "Chișinău", + "name:tr": "Kişinev", + "name:udm": "Кишинёв", + "name:ug": "كىشىنېۋ", + "name:uk": "Кишинів", + "name:ur": "کیشیناو", + "name:vec": "Chișinău", + "name:vep": "Kišinöv", + "name:vi": "Chișinău", + "name:yi": "קעשענעוו", + "name:yo": "Chișinău", + "name:zh": "基希讷乌" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 28.8322923, + 47.0245117 + ] + }, + "id": "node/129991407" + }, + { + "type": "Feature", + "properties": { + "name": "Երևան", + "name:an": "Erevan", + "name:ar": "يريفان", + "name:az": "İrəvan", + "name:be": "Ерэван", + "name:be-tarask": "Ерэван", + "name:bg": "Ереван", + "name:bo": "ཡེ་རེ་ཝན།", + "name:br": "Yerevan", + "name:bs": "Erevan", + "name:ca": "Erevan", + "name:ce": "Ереван", + "name:ckb": "یەریڤان", + "name:cs": "Jerevan", + "name:cv": "Ереван", + "name:cy": "Yerevan", + "name:da": "Jerevan", + "name:de": "Eriwan", + "name:diq": "Yerêvan", + "name:el": "Γιερεβάν", + "name:en": "Yerevan", + "name:eo": "Erevano", + "name:es": "Ereván", + "name:et": "Jerevan", + "name:eu": "Erevan", + "name:fa": "ایروان", + "name:fi": "Jerevan", + "name:fiu-vro": "Jerevan", + "name:fr": "Erevan", + "name:frp": "Yèrèvan", + "name:fy": "Jerevan", + "name:ga": "Eireaván", + "name:gag": "Erivan", + "name:gd": "Yerevan", + "name:gl": "Iereván - Երևան", + "name:gv": "Yerevan", + "name:he": "ירוואן", + "name:hr": "Erevan", + "name:hsb": "Jerjewan", + "name:ht": "Erevàn", + "name:hu": "Jereván", + "name:hy": "Երևան", + "name:id": "Yerevan", + "name:ie": "Jerevan", + "name:ilo": "Yerevan", + "name:io": "Yerevan", + "name:is": "Jerevan", + "name:it": "Yerevan", + "name:ja": "エレバン", + "name:jv": "Yerevan", + "name:ka": "ერევანი", + "name:kk": "Ереван", + "name:ko": "예레반", + "name:ku": "Yêrêvan", + "name:kv": "Ереван", + "name:ky": "Ереван", + "name:la": "Erevanum", + "name:lad": "Djerevan", + "name:lb": "Eriwan", + "name:lez": "Ереван", + "name:lij": "Erevan", + "name:lmo": "Erevan", + "name:lt": "Jerevanas", + "name:lv": "Erevāna", + "name:mdf": "Ереван ошсь", + "name:mhr": "Ереван", + "name:mi": "Yerevan", + "name:mk": "Ереван", + "name:mn": "Ереван", + "name:ms": "Yerevan", + "name:myv": "Ереван ош", + "name:mzn": "ایروان", + "name:nah": "Erevan", + "name:ne": "येरवान प्रान्त", + "name:nl": "Jerevan", + "name:nn": "Jerevan", + "name:no": "Jerevan", + "name:nov": "Yerevan", + "name:oc": "Erevan", + "name:os": "Ереван", + "name:pl": "Erywań", + "name:pms": "Erevan", + "name:pt": "Erevan", + "name:qu": "Yiriwan", + "name:ro": "Erevan", + "name:ru": "Ереван", + "name:rw": "Yerevan", + "name:sa": "येरेवान", + "name:sah": "Ереван", + "name:scn": "Erevan", + "name:sco": "Yerevan", + "name:sh": "Erevan", + "name:simple": "Yerevan", + "name:sk": "Jerevan", + "name:sl": "Erevan", + "name:sq": "Jerevani", + "name:sr": "Јереван", + "name:su": "Yérévan", + "name:sv": "Jerevan", + "name:sw": "Yerevan", + "name:tg": "Ереван", + "name:th": "เยเรวาน", + "name:tl": "Yerevan", + "name:tr": "Erivan", + "name:tt": "Ереван", + "name:udm": "Ереван", + "name:ug": "يېرېۋان", + "name:uk": "Єреван", + "name:ur": "یریوان", + "name:uz": "Yerevan", + "name:vec": "Èrevan", + "name:vep": "Jerevan", + "name:vi": "Yerevan", + "name:vo": "Yerevan", + "name:war": "Yerevan", + "name:xmf": "ერევანი", + "name:yi": "יערעוואן", + "name:yo": "Yerevan", + "name:zea": "Jerevan", + "name:zh": "埃里溫" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 44.5126174, + 40.1776245 + ] + }, + "id": "node/130040361" + }, + { + "type": "Feature", + "properties": { + "name": "Washington", + "name:Kin": "Nahalgaai Bil Hahoodzo", + "name:ace": "Washington, D.C.", + "name:ady": "Вашингтон (къалэ)", + "name:af": "Washington, D.C.", + "name:als": "Washington, D.C.", + "name:am": "ዋሺንግተን ዲሲ", + "name:an": "Washington, DC", + "name:ang": "Hwæsingatūn, D.C.", + "name:ar": "واشنطن العاصمة", + "name:arc": "ܘܐܫܢܓܛܘܢ (ܐܪܫܟܝܬܐ)", + "name:arz": "واشينطون", + "name:ast": "Washington DC", + "name:ats": "níínɔ́ɔɔsibííítaan'ɔ", + "name:av": "Вашингтон", + "name:ay": "Washington, DC", + "name:az": "Vaşinqton şəhəri", + "name:az-Arab": "واشینقتن، دی.سی.", + "name:azb": "واشینقتن، دی.سی.", + "name:ba": "Вашингтон", + "name:bar": "Washington, D.C.", + "name:bat-smg": "Vašingtuons", + "name:bat_smg": "Vašingtons", + "name:bcl": "Washington, D.C.", + "name:be": "Вашынгтон", + "name:be-tarask": "Вашынгтон", + "name:bg": "Вашингтон", + "name:bh": "वाशिंगटन, डीसी", + "name:bm": "Washington, D.C.", + "name:bo": "ཝ་ཤིན་ཏྲོན།", + "name:bpy": "ডিসটিক্ট অফ কলম্বিয়া, ডিসি", + "name:br": "Washington D.C.", + "name:bs": "Washington, D.C.", + "name:bxr": "Вашингтон", + "name:ca": "Washington DC", + "name:cbk-zam": "Washington, D.C.", + "name:cdo": "Washington, D.C.", + "name:ce": "Вашингтон", + "name:ceb": "Washington, D.C.", + "name:chy": "Vášêtaëno", + "name:ckb": "واشینگتن دی سی", + "name:co": "Washington DC", + "name:crh": "Vaşington", + "name:cs": "Washington, D.C.", + "name:cv": "Вашингтон", + "name:cy": "Washington, D.C.", + "name:da": "Washington D.C.", + "name:de": "Washington, D. C.", + "name:diq": "Washington, D.C.", + "name:dsb": "Washington, D.C.", + "name:dty": "वाशिंगटन डीसी", + "name:dv": "ވޮޝިންގޓަން، ޑީ.ސީ.", + "name:ee": "Washington D.C.", + "name:el": "Ουάσιγκτων", + "name:eml": "Washington", + "name:en": "Washington D.C.", + "name:eo": "Vaŝingtono", + "name:es": "Washington", + "name:et": "Washington", + "name:eu": "Washington", + "name:ext": "Washington D.C.", + "name:fa": "واشنگتن", + "name:fi": "Washington (DC)", + "name:fiu-vro": "Washington", + "name:fo": "Washington DC", + "name:fr": "Washington", + "name:frp": "Washington", + "name:frr": "Washington, D.C.", + "name:fy": "Washington, D.C.", + "name:ga": "Washington, D.C.", + "name:gan": "華盛頓哥倫比亞特區", + "name:gd": "Washington, D.C.", + "name:gl": "Washington, D.C.", + "name:gn": "Washington D. C.", + "name:gor": "Washington, D.C.", + "name:gr": "Οὐασιντώνη", + "name:grc": "Οὐασιντώνη", + "name:gv": "Washington, D.C.", + "name:ha": "Washington, D.C.", + "name:hak": "Washington, D.C.", + "name:haw": "Wakinekona", + "name:he": "וושינגטון", + "name:hif": "Washington, D.C.", + "name:hr": "Washington", + "name:hsb": "Washington, D.C.", + "name:ht": "Wachintòn", + "name:hu": "Washington", + "name:hy": "Վաշինգտոն", + "name:ia": "Washington, D.C.", + "name:id": "Washington, D.C.", + "name:ie": "Washington, D.C.", + "name:ig": "Washington, D.C.", + "name:ilo": "Washington, D.C.", + "name:inh": "Вашингтон", + "name:io": "Washington D.C.", + "name:iow": "Hiⁿtúga Híñe Chína", + "name:is": "Washington", + "name:it": "Washington", + "name:ja": "ワシントン", + "name:jam": "Washintan D.C.", + "name:jbo": ".uacintyn. zei tcadu", + "name:jv": "Washington, D.C.", + "name:ka": "ვაშინგტონი", + "name:kaa": "Washington", + "name:kab": "Washington", + "name:kbd": "Уашингтон", + "name:kbp": "Wasɩŋtɔŋ", + "name:kk": "Вашингтон", + "name:kk-Arab": "ۆاشىينگتون", + "name:ko": "워싱턴", + "name:krc": "Вашингтон", + "name:ks": "واشنگٹن ڈی سی", + "name:ku": "Washington", + "name:kw": "Washington, D.C.", + "name:ky": "Вашингтон", + "name:la": "Vasingtonia (D.C.)", + "name:lad": "Washington, D.C.", + "name:lb": "Washington D.C.", + "name:lez": "Вашингтон", + "name:lfn": "Distrito de Columbia", + "name:li": "Washington D.C.", + "name:lij": "Washington D.C.", + "name:lmo": "Washington, D.C.", + "name:ln": "Washington", + "name:lrc": "ڤاشینڳتون دی سی", + "name:lt": "Vašingtonas", + "name:lv": "Vašingtona", + "name:mez": "Wāsehtanoh", + "name:mg": "Washington D.C.", + "name:mi": "Takiwā o Columbia", + "name:mia": "meetaathsoopionki", + "name:min": "Washington, D.C.", + "name:mk": "Вашингтон", + "name:mn": "Вашингтон хот", + "name:moh": "Anatakáriasne", + "name:ms": "Washington, D.C.", + "name:mwl": "Washington, D.C.", + "name:myv": "Вашингтон ош", + "name:mzn": "واشینگتن دی سی", + "name:nan": "Washington, D.C.", + "name:nds": "Washington D.C.", + "name:ne": "वासिङ्टन, डी.सी.", + "name:new": "वाशिंग्तन, दिसि", + "name:nl": "Washington D.C.", + "name:nn": "Washington, D.C.", + "name:no": "Washington, D.C.", + "name:nov": "Washington D.K.", + "name:nso": "Washington, D.C.", + "name:nv": "Wááshindoon", + "name:ny": "Washington, D.C.", + "name:oc": "Washington, DC", + "name:oj": "Waashtanong", + "name:olo": "Vašington", + "name:os": "Вашингтон", + "name:pam": "Washington, D.C.", + "name:pap": "Washington D.C.", + "name:pdc": "Washington D.C.", + "name:pfl": "Washington, D.C.", + "name:pi": "वासिंगटन डि सि", + "name:pih": "Woshingtun, D.K.", + "name:pl": "Waszyngton", + "name:pms": "Washington", + "name:pot": "médadsobeynak", + "name:ps": "واشنګټن ډي سي", + "name:pt": "Washington, D.C.", + "name:qu": "Washington DC", + "name:rm": "Washington, D.C.", + "name:rmy": "Washington, D.C.", + "name:ro": "Washington, D.C.", + "name:ru": "Вашингтон", + "name:rue": "Вашінґтон", + "name:sa": "वाशिङ्ग्टन् डि सि", + "name:sah": "Уашиҥтон", + "name:sc": "Washington", + "name:scn": "Washington", + "name:sco": "Washington, D.C.", + "name:sd": "واشنگٽن ڊي سي", + "name:se": "Washington D.C.", + "name:see": "Hanödagányasgeh", + "name:sg": "Washington D.C.", + "name:sh": "Washington, D.C.", + "name:si": "වොෂින්ටන්, ඩී.සී.", + "name:sk": "Washington D.C.", + "name:sl": "Washington, D.C.", + "name:sm": "Uasigitone D.C.", + "name:sn": "Washington, DC", + "name:so": "Washington D.C", + "name:sq": "Uashington D.C.", + "name:sr": "Вашингтон", + "name:srn": "Washington D.C.", + "name:st": "Washington, D.C.", + "name:sv": "Washington D.C.", + "name:sw": "Washington, D.C.", + "name:syc": "ܘܐܫܢܓܛܘܢ (ܐܪܫܟܝܬܐ)", + "name:szl": "Waszyngtůn", + "name:tg": "Вашингтон (шаҳр)", + "name:th": "วอชิงตัน", + "name:tk": "Waşington", + "name:tl": "Washington, D.C.", + "name:tn": "Washington, D.C.", + "name:tok": "ma tomo Sisi", + "name:tpi": "Wasington DC", + "name:tr": "Washington, DC", + "name:ts": "Washington, DC", + "name:tt": "Вашингтон", + "name:tw": "Wɔhyeten", + "name:ty": "Washington", + "name:udm": "Вашингтон", + "name:ug": "ۋاشىنگتون", + "name:uk": "Вашингтон", + "name:ur": "واشنگٹن ڈی سی", + "name:uz": "Vashington", + "name:vec": "Washington D.C.", + "name:vep": "Vašington", + "name:vi": "Hoa Thịnh Đốn", + "name:vo": "Washington", + "name:war": "Washington, D.C.", + "name:wuu": "华盛顿哥伦比亚特区", + "name:xal": "Вашингтон", + "name:xh": "Washington, D.C.", + "name:xmf": "ვაშინგტონი", + "name:yi": "וואשינגטאן די סי", + "name:yo": "Washington, D.C.", + "name:yue": "華盛頓特區", + "name:za": "Washington, D.C.", + "name:zea": "Washington D.C.", + "name:zh": "华盛顿哥伦比亚特区 / 華盛頓哥倫比亞特區", + "name:zh-Hans": "华盛顿哥伦比亚特区", + "name:zh-Hant": "華盛頓哥倫比亞特區", + "name:zu": "Washington, D.C." + }, + "geometry": { + "type": "Point", + "coordinates": [ + -77.0365427, + 38.8950368 + ] + }, + "id": "node/158368533" + }, + { + "type": "Feature", + "properties": { + "name": "Скопје", + "name:an": "Scopia", + "name:ar": "إسكوبية", + "name:ast": "Skopie", + "name:az": "Skopye", + "name:be": "Скоп'е", + "name:be-tarask": "Скоп'е", + "name:bg": "Северна Македония", + "name:bo": "སི་ཀོཔ་ཇི།", + "name:bs": "Skoplje", + "name:crh": "Üsküp", + "name:cs": "Skopje", + "name:cu": "Съкопиѥ", + "name:cv": "Скопйе", + "name:cy": "Skopje", + "name:da": "Skopje", + "name:de": "Skopje", + "name:el": "Σκόπια", + "name:en": "Skopje", + "name:eo": "Skopjo", + "name:es": "Skopie", + "name:et": "Skopje", + "name:fa": "اسکوپیه", + "name:fr": "Skopje", + "name:he": "סקופיה", + "name:hr": "Skoplje", + "name:hu": "Szkopje", + "name:hy": "Սկոպյե", + "name:it": "Skopje", + "name:ja": "スコピエ", + "name:ka": "სკოპიე", + "name:kk": "Скопье", + "name:ko": "스코페", + "name:ku": "Skopye", + "name:kv": "Скопье", + "name:la": "Scupi", + "name:lad": "Skopia", + "name:ln": "Skopye", + "name:lt": "Skopjė", + "name:mk": "Скопје", + "name:mzn": "اسکوپیه", + "name:nl": "Skopje", + "name:no": "Skopje", + "name:oc": "Skopje", + "name:os": "Скопье", + "name:pl": "Skopje", + "name:pt": "Escópia", + "name:rmy": "Skopiye", + "name:roa-rup": "Scopia", + "name:ru": "Скопье", + "name:sh": "Skoplje", + "name:sk": "Skopje", + "name:sl": "Skopje", + "name:sq": "Shkup", + "name:sr": "Скопље", + "name:sv": "Skopje", + "name:tg": "Скопе", + "name:th": "สโกเปีย", + "name:tr": "Üsküp", + "name:udm": "Скопье", + "name:ug": "سكوپليې", + "name:uk": "Скоп'є", + "name:ur": "اسکوپیہ", + "name:vi": "Skopje", + "name:zh": "斯科普里", + "name:zh-Hans": "斯科普里", + "name:zh-Hant": "史高比耶" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 21.4316495, + 41.9960924 + ] + }, + "id": "node/170792214" + }, + { + "type": "Feature", + "properties": { + "name": "Managua", + "name:am": "ማናጓ", + "name:ar": "ماناغوا", + "name:az": "Manaqua", + "name:be": "Манагуа", + "name:be-tarask": "Манагуа", + "name:bg": "Манагуа", + "name:bo": "མ་ན་གུ་འ།", + "name:ckb": "ماناگوا", + "name:de": "Managua", + "name:el": "Μανάγκουα", + "name:en": "Managua", + "name:eo": "Managvo", + "name:fa": "ماناگوآ", + "name:fr": "Managua", + "name:fy": "Managûa", + "name:he": "מנגואה", + "name:ht": "Managoua", + "name:hu": "Managua", + "name:hy": "Մանագուա", + "name:is": "Managva", + "name:ja": "マナグア", + "name:ka": "მანაგუა", + "name:ko": "마나과", + "name:ku": "Managwa", + "name:lt": "Managva", + "name:lv": "Managva", + "name:mk": "Манагва", + "name:mn": "Манагуа", + "name:nah": "Mānāhuac", + "name:oc": "Managua", + "name:os": "Манагуæ", + "name:pl": "Managua", + "name:pt": "Manágua", + "name:ru": "Манагуа", + "name:sah": "Манагуа", + "name:sr": "Манагва", + "name:sv": "Managua", + "name:th": "มานากัว", + "name:ug": "ماناگۇئا", + "name:uk": "Манагуа", + "name:ur": "ماناگوا", + "name:zh": "馬那瓜" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -86.2737642, + 12.1544035 + ] + }, + "id": "node/175699213" + }, + { + "type": "Feature", + "properties": { + "name": "Basseterre", + "name:am": "ባስቴር", + "name:ar": "باستير", + "name:az": "Baster", + "name:be": "Бастэр", + "name:be-tarask": "Бастэр", + "name:bg": "Бастер", + "name:bo": "པ་སི་ཐེར།", + "name:de": "Basseterre", + "name:el": "Μπαστέρ", + "name:en": "Basseterre", + "name:es": "Basseterre", + "name:fa": "باسه‌تر", + "name:fr": "Basseterre", + "name:gcf": "Bastè", + "name:he": "באסטר", + "name:ht": "Bastè", + "name:hu": "Basseterre", + "name:it": "Basseterre", + "name:ja": "バセテール", + "name:ka": "ბასტერი", + "name:ko": "바스테르", + "name:lt": "Basteras", + "name:lv": "Bastera", + "name:mk": "Бастер", + "name:nl": "Basseterre", + "name:no": "Basseterre", + "name:pl": "Basseterre", + "name:pt": "Basseterre", + "name:ru": "Бастер", + "name:sah": "Бастер", + "name:sr": "Бастер", + "name:sv": "Basseterre", + "name:th": "บาสแตร์", + "name:tr": "Basseterre", + "name:uk": "Бастер", + "name:zh": "巴斯特爾" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -62.722301, + 17.2960919 + ] + }, + "id": "node/183864922" + }, + { + "type": "Feature", + "properties": { + "name": "San José", + "name:am": "ሳን ሆዜ", + "name:ar": "سان خوسيه، كوستاريكا", + "name:az": "San-Xose", + "name:be": "Сан-Хасэ", + "name:be-tarask": "Сан-Хасэ", + "name:bg": "Сан Хосе", + "name:bo": "སན་ཇོ་སེ།", + "name:bs": "San Jose, Kostarika", + "name:de": "San José", + "name:el": "Σαν Χοσέ", + "name:en": "San José", + "name:eo": "San-Joseo", + "name:fa": "سان خوزه", + "name:fr": "San José", + "name:gl": "San Xosé, Costa Rica", + "name:he": "סן חוסה", + "name:ht": "San Jozé", + "name:hu": "San José", + "name:hy": "Սան Խոսե", + "name:io": "San Jose", + "name:is": "San José", + "name:ja": "サンホセ", + "name:ka": "სან-ხოსე", + "name:ko": "산호세", + "name:lt": "San Chosė", + "name:lv": "Sanhosē", + "name:mk": "Сан Хозе", + "name:nl": "San José", + "name:nn": "San José i Costa Rica", + "name:os": "Сан-Хосе", + "name:pap": "San Jose", + "name:pl": "San José", + "name:ru": "Сан-Хосе", + "name:sah": "Сан Хосе", + "name:sr": "Сан Хосе", + "name:sv": "San José, Costa Rica", + "name:sw": "San Jose", + "name:th": "ซันโฮเซ", + "name:ug": "سان خوسې", + "name:uk": "Сан-Хосе", + "name:ur": "سان ہوزے", + "name:zh": "聖荷西" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -84.0795782, + 9.9325427 + ] + }, + "id": "node/197698100" + }, + { + "type": "Feature", + "properties": { + "name": "San Salvador", + "name:am": "ሳን ሳልቫዶር", + "name:ar": "سان سلفادور", + "name:be": "Сан-Сальвадор", + "name:be-tarask": "Сан-Сальвадор", + "name:bg": "Сан Салвадор", + "name:bo": "སན་སལ་ཝ་ཌོར།", + "name:de": "San Salvador", + "name:el": "Σαν Σαλβαδόρ", + "name:en": "San Salvador", + "name:eo": "San-Salvadoro", + "name:fa": "سان سالوادور", + "name:fr": "San Salvador", + "name:he": "סן סלוודור", + "name:ht": "San Salvadò", + "name:hu": "San Salvador", + "name:hy": "Սան Սալվադոր", + "name:is": "San Salvador", + "name:ja": "サンサルバドル", + "name:ka": "სან-სალვადორი", + "name:ko": "산살바도르", + "name:la": "Urbs Sancti Salvatoris", + "name:lt": "San Salvadoras", + "name:lv": "Sansalvadora", + "name:mk": "Сан Салвадор", + "name:oc": "San Salvador", + "name:os": "Сан-Сальвадор", + "name:pl": "San Salvador", + "name:pt": "São Salvador", + "name:ru": "Сан-Сальвадор", + "name:sah": "Сан Салвадор", + "name:sq": "San Salvadori", + "name:sr": "Сан Салвадор", + "name:sv": "San Salvador", + "name:th": "ซันซัลวาดอร์", + "name:ug": "سان سالۋادور", + "name:uk": "Сан-Сальвадор", + "name:ur": "سان سلواڈور", + "name:zh": "聖薩爾瓦多" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -89.1914249, + 13.6989939 + ] + }, + "id": "node/197701710" + }, + { + "type": "Feature", + "properties": { + "name": "Manila", + "name:ace": "Manila", + "name:af": "Manila", + "name:als": "Manila", + "name:am": "ማኒላ", + "name:an": "Manila", + "name:ang": "Manila", + "name:ar": "مانيلا", + "name:arz": "مانيلا", + "name:ast": "Manila", + "name:az": "Manila", + "name:azb": "مانیل", + "name:ba": "Манила", + "name:bcl": "Manila", + "name:be": "Маніла", + "name:be-tarask": "Маніла", + "name:bg": "Манила", + "name:bo": "མ་ནི་ལ།", + "name:br": "Manila", + "name:bs": "Manila", + "name:bxr": "Манила", + "name:ca": "Manila", + "name:cbk-zam": "Ciudad de Manila", + "name:cdo": "Manila", + "name:ce": "Манила", + "name:ceb": "Manila", + "name:ckb": "مانیلا", + "name:crh": "Manila", + "name:cs": "Manila", + "name:cv": "Манила", + "name:cy": "Manila", + "name:da": "Manila", + "name:de": "Manila", + "name:diq": "Manila", + "name:dsb": "Manila", + "name:dty": "मनिला", + "name:el": "Μανίλα", + "name:en": "Manila", + "name:eo": "Manilo", + "name:es": "Manila", + "name:et": "Manila", + "name:eu": "Manila", + "name:fa": "مانیل", + "name:fi": "Manila", + "name:fiu-vro": "Manila", + "name:fo": "Manila", + "name:fr": "Manille", + "name:frr": "Manila", + "name:fy": "Manilla", + "name:ga": "Mainile", + "name:gd": "Manila", + "name:gl": "Manila", + "name:ha": "Manila", + "name:hak": "Manila", + "name:he": "מנילה", + "name:hif": "Manila", + "name:hr": "Manila", + "name:hsb": "Manila", + "name:ht": "Manyl", + "name:hu": "Manila", + "name:hy": "Մանիլա", + "name:hyw": "Մանիլա", + "name:ia": "Manila", + "name:id": "Manila", + "name:ie": "Manila", + "name:ilo": "Manila", + "name:io": "Manila", + "name:is": "Maníla", + "name:it": "Manila", + "name:ja": "マニラ", + "name:jbo": "manilias.", + "name:jv": "Manila", + "name:ka": "მანილა", + "name:kaa": "Manila", + "name:ki": "Manila", + "name:kk": "Манила", + "name:km": "ម៉ានីល", + "name:ko": "마닐라", + "name:ku": "Manîla", + "name:ky": "Манила", + "name:la": "Manila", + "name:lad": "Manila", + "name:lb": "Manila", + "name:li": "Manilla", + "name:lij": "Manilla", + "name:lmo": "Manila", + "name:lt": "Manila", + "name:lv": "Manila", + "name:mai": "मनिला", + "name:map-bms": "Manila", + "name:mg": "Manille", + "name:mi": "Manira", + "name:mk": "Манила", + "name:mn": "Манила", + "name:ms": "Manila", + "name:mwl": "Manila", + "name:na": "Manila", + "name:nah": "Manillah", + "name:nan": "Manila", + "name:ne": "मनिला", + "name:new": "मनिला", + "name:nl": "Manilla", + "name:nn": "Manila", + "name:no": "Manila", + "name:oc": "Manila", + "name:olo": "Manila", + "name:os": "Манилæ", + "name:pag": "Manila", + "name:pam": "Menila", + "name:pap": "Manila", + "name:pcd": "Manille", + "name:pih": "Manila", + "name:pl": "Manila", + "name:pms": "Manila", + "name:ps": "مانیلا", + "name:pt": "Manila", + "name:qu": "Manila", + "name:ro": "Manila", + "name:ru": "Манила", + "name:rw": "Manila", + "name:sah": "Манила", + "name:sat": "ᱢᱟᱱᱤᱞᱟ", + "name:sc": "Manila", + "name:scn": "Manila", + "name:sco": "Manila", + "name:sh": "Manila", + "name:si": "මැනිලා", + "name:simple": "Manila", + "name:sk": "Manila", + "name:sl": "Manila", + "name:sn": "Manila", + "name:sq": "Manila", + "name:sr": "Манила", + "name:sv": "Manila", + "name:sw": "Manila", + "name:szl": "Manila", + "name:tg": "Манила", + "name:th": "มะนิลา", + "name:tl": "Maynila", + "name:tr": "Manila", + "name:tt": "Манила", + "name:udm": "Манила", + "name:ug": "مانىلا", + "name:uk": "Маніла", + "name:ur": "منیلا", + "name:uz": "Manila", + "name:vec": "Manila", + "name:vep": "Manil", + "name:vi": "Manila", + "name:vo": "Maynila", + "name:war": "Manila", + "name:wuu": "马尼拉", + "name:xmf": "მანილა", + "name:yi": "מאנילא", + "name:yo": "Manila", + "name:yue": "馬尼拉", + "name:zh": "马尼拉 / 馬尼拉", + "name:zh-Hans": "马尼拉", + "name:zh-Hant": "馬尼拉" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 120.9782618, + 14.5948914 + ] + }, + "id": "node/198493613" + }, + { + "type": "Feature", + "properties": { + "name": "مسقط", + "name:ace": "Muskat", + "name:am": "መስከት", + "name:ar": "مسقط", + "name:ast": "Mascate", + "name:azb": "مسقط", + "name:be": "Маскат", + "name:be-tarask": "Маскат", + "name:bg": "Маскат", + "name:bjn": "Masqat", + "name:bo": "མི་སི་ཁ་ཁྲི།", + "name:br": "Masqat", + "name:bs": "Muskat", + "name:ca": "Masqat", + "name:ckb": "مەسقەت", + "name:cs": "Maskat", + "name:cv": "Маскат", + "name:cy": "Muscat", + "name:da": "Muscat", + "name:de": "Maskat", + "name:el": "Μουσκάτ", + "name:en": "Muscat", + "name:eo": "Maskato", + "name:es": "Mascate", + "name:et": "Masqaţ", + "name:fa": "مسقط", + "name:fi": "Masqat", + "name:fr": "Mascate", + "name:frp": "Mascate", + "name:gd": "Muscat", + "name:gl": "Mascate", + "name:gr": "Μουσκάτη", + "name:grc": "Μουσκάτη", + "name:he": "מאסקט", + "name:hif": "Muscat", + "name:hr": "Muskat", + "name:ht": "Mascat", + "name:hu": "Maszkat", + "name:hy": "Մասկատ", + "name:id": "Muskat", + "name:io": "Muscat", + "name:is": "Múskat", + "name:it": "Mascate", + "name:ja": "マスカット", + "name:ka": "მასკატი", + "name:kab": "Masqaṭ", + "name:kk": "Маскат", + "name:kl": "Masqat", + "name:ko": "무스카트", + "name:ku": "Mesqet", + "name:la": "Mascate", + "name:lmo": "Mascate", + "name:lt": "Maskatas", + "name:lv": "Maskata", + "name:mk": "Мускат", + "name:mn": "Маскат", + "name:ms": "Muscat", + "name:nan": "Muscat", + "name:nl": "Masqat", + "name:nn": "Muscat", + "name:no": "Muskat", + "name:oc": "Mascate", + "name:os": "Маскат", + "name:pl": "Maskat", + "name:pms": "Mascate", + "name:pt": "Mascate", + "name:ro": "Muscat", + "name:ru": "Маскат", + "name:sco": "Muscat", + "name:simple": "Muscat", + "name:sk": "Maskat", + "name:sl": "Muškat", + "name:sr": "Маскат", + "name:sv": "Muskat", + "name:sw": "Muskat", + "name:tg": "Масқат", + "name:th": "มัสกัต", + "name:tl": "Muscat", + "name:ug": "مۇسكات", + "name:uk": "Маскат", + "name:ur": "مسقط", + "name:vi": "Muscat", + "name:vo": "Mäskat", + "name:war": "Muscat", + "name:yo": "Muscat", + "name:zh": "马斯喀特" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 58.3829448, + 23.5882019 + ] + }, + "id": "node/226881400" + }, + { + "type": "Feature", + "properties": { + "name": "Port Moresby", + "name:am": "ፖርት ሞርስቢ", + "name:ar": "بورت مورسبي", + "name:az": "Port Morsbi", + "name:be": "Порт-Морсбі", + "name:be-tarask": "Порт Морсьбі", + "name:bg": "Порт Морсби", + "name:bo": "པོ་རོ་ཊི་མོ་རེ་སི་བི།", + "name:cs": "Port Moresby", + "name:da": "Port Moresby", + "name:de": "Port Moresby", + "name:el": "Πορτ Μόρεσμπι", + "name:en": "Port Moresby", + "name:eo": "Port-Moresbo", + "name:es": "Puerto Moresby", + "name:et": "Port Moresby", + "name:fa": "پورت مورسبی", + "name:fi": "Port Moresby", + "name:fr": "Port Moresby", + "name:he": "פורט מורסבי", + "name:hr": "Port Moresby", + "name:ht": "Pò Moresbi", + "name:hu": "Port Moresby", + "name:hy": "Պորտ Մորսբի", + "name:is": "Port Moresby", + "name:it": "Port Moresby", + "name:ja": "ポートモレスビー", + "name:ka": "პორტ-მორზბი", + "name:ko": "포트모르즈비", + "name:ku": "Port Moresby", + "name:la": "Portus Moresbiensis", + "name:lt": "Port Morsbis", + "name:lv": "Portmorsbija", + "name:mk": "Порт Морсби", + "name:mrj": "Порт-Морсби", + "name:nl": "Port Moresby", + "name:no": "Port Moresby", + "name:oc": "Port Moresby", + "name:pl": "Port Moresby", + "name:pt": "Porto Moresby", + "name:ro": "Port Moresby", + "name:ru": "Порт-Морсби", + "name:sah": "Порт Морсби", + "name:sk": "Port Moresby", + "name:sl": "Port Moresby", + "name:sr": "Порт Морсби", + "name:sv": "Port Moresby", + "name:th": "พอร์ตมอร์สบี", + "name:tpi": "Pot Mosbi", + "name:tr": "Port Moresby", + "name:ug": "مورېسبى پورتى", + "name:uk": "Порт-Морсбі", + "name:ur": "پورٹ مورسبی", + "name:vi": "Port Moresby", + "name:zh": "莫爾茲比港", + "name:zh-Hans": "莫尔兹比港", + "name:zh-Hant": "莫爾茲比港" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 147.1599504, + -9.4743301 + ] + }, + "id": "node/230628786" + }, + { + "type": "Feature", + "properties": { + "name": "Berlin", + "name:ab": "Берлин", + "name:af": "Berlyn", + "name:als": "Berlin", + "name:am": "በርሊን", + "name:an": "Berlín", + "name:ang": "Berlin", + "name:ar": "برلين", + "name:arc": "ܒܪܠܝܢ", + "name:arz": "بيرلين", + "name:ast": "Berlín", + "name:az": "Berlin", + "name:ba": "Берлин", + "name:bar": "Berlin", + "name:bat-smg": "Berlīns", + "name:be": "Берлін", + "name:be-tarask": "Бэрлін", + "name:bg": "Берлин", + "name:bi": "Berlin", + "name:bo": "པེ་ལིང་", + "name:br": "Berlin", + "name:bs": "Berlin", + "name:bxr": "Берлин", + "name:ca": "Berlín", + "name:cbk-zam": "Berlín", + "name:ckb": "بەرلین", + "name:co": "Berlinu", + "name:crh": "Berlin", + "name:cs": "Berlín", + "name:csb": "Berlëno", + "name:cu": "Берлинъ", + "name:cv": "Берлин", + "name:cy": "Berlin", + "name:da": "Berlin", + "name:de": "Berlin", + "name:diq": "Berlin", + "name:dsb": "Barliń", + "name:el": "Βερολίνο", + "name:en": "Berlin", + "name:eo": "Berlino", + "name:es": "Berlín", + "name:et": "Berliin", + "name:eu": "Berlin", + "name:ext": "Berlín", + "name:fa": "برلین", + "name:fi": "Berliini", + "name:fiu-vro": "Berliin", + "name:fo": "Berlin", + "name:fr": "Berlin", + "name:frp": "Bèrlin", + "name:fur": "Berlin", + "name:fy": "Berlyn", + "name:ga": "Beirlín", + "name:gan": "柏林", + "name:gd": "Berlin", + "name:gl": "Berlín", + "name:gn": "Berlin", + "name:gv": "Berleen", + "name:haw": "Pelelina", + "name:he": "ברלין", + "name:hr": "Berlin", + "name:hsb": "Berlin", + "name:ht": "Bèlen", + "name:hu": "Berlin", + "name:hy": "Բեռլին", + "name:ia": "Berlin", + "name:id": "Berlin", + "name:ie": "Berlin", + "name:ilo": "Berlin, Alemania", + "name:io": "Berlin", + "name:is": "Berlín", + "name:it": "Berlino", + "name:iu": "ᐱᕐᓖᓐ", + "name:ja": "ベルリン", + "name:jbo": "berlin", + "name:jv": "Berlin", + "name:ka": "ბერლინი", + "name:kab": "Berlin", + "name:kbd": "Берлин", + "name:kk": "Берлин", + "name:ko": "베를린", + "name:koi": "Берлин", + "name:ksh": "Bälliin", + "name:ku": "Berlîn", + "name:kv": "Берлин", + "name:kw": "Berlin", + "name:ky": "Берлин", + "name:la": "Berolinum", + "name:lb": "Berlin", + "name:lez": "Берлин", + "name:lg": "Berlin", + "name:li": "Berlien", + "name:lij": "Berlin", + "name:lmo": "Berlin", + "name:ln": "Berlin", + "name:lt": "Berlynas", + "name:ltg": "Berlins", + "name:lv": "Berlīne", + "name:lzh": "柏林", + "name:mg": "Berlin", + "name:mhr": "Берлин", + "name:mi": "Pearīni", + "name:mk": "Берлин", + "name:mn": "Берлин", + "name:mrj": "Берлин", + "name:ms": "Berlin", + "name:mt": "Berlin", + "name:myv": "Берлин ош", + "name:mzn": "برلین", + "name:na": "Berlin", + "name:nah": "Berlin", + "name:nan": "Berlin", + "name:nap": "Berlino", + "name:nds": "Berlin", + "name:nds-nl": "Berlien", + "name:nl": "Berlijn", + "name:nn": "Berlin", + "name:no": "Berlin", + "name:nov": "Berlin", + "name:nrm": "Bèrlîn", + "name:oc": "Berlin", + "name:os": "Берлин", + "name:pam": "Berlin", + "name:pdc": "Berlin, Deitschland", + "name:pfl": "Balin", + "name:pl": "Berlin", + "name:pms": "Berlin", + "name:pnt": "Βερολίνον", + "name:prefix": "Land und Kreisfreie Stadt", + "name:ps": "برلين", + "name:pt": "Berlim", + "name:qu": "Berlin", + "name:rm": "Berlin", + "name:rmy": "Berlin", + "name:ro": "Berlin", + "name:roa-rup": "Berlin", + "name:roa-tara": "Berline", + "name:ru": "Берлин", + "name:rue": "Берлін", + "name:sah": "Берлин", + "name:sc": "Berlinu", + "name:scn": "Birlinu", + "name:sco": "Berlin", + "name:se": "Berlin", + "name:sh": "Berlin", + "name:short": "BE", + "name:si": "බර්ලිනය", + "name:sk": "Berlín", + "name:sl": "Berlin", + "name:so": "Berlin", + "name:sq": "Berlini", + "name:sr": "Берлин", + "name:stq": "Berlin", + "name:su": "Berliini", + "name:sv": "Berlin", + "name:sw": "Berlin", + "name:szl": "Berlin", + "name:tet": "Berlín", + "name:tg": "Берлин", + "name:th": "เบอร์ลิน", + "name:tl": "Berlin", + "name:tpi": "Berlin", + "name:tr": "Berlin", + "name:tt": "Берлин", + "name:ty": "Berlin", + "name:tzl": "Berlin", + "name:udm": "Берлин", + "name:ug": "Bérlin", + "name:uk": "Берлін", + "name:ur": "برلن", + "name:uz": "Berlin", + "name:vec": "Berlin", + "name:vi": "Béc-lin", + "name:vls": "Berlyn", + "name:wo": "Berlin", + "name:xmf": "ბერლინი", + "name:yi": "בערלין", + "name:yo": "Berlin", + "name:yue": "柏林", + "name:zea": "Berlijn", + "name:zh": "柏林", + "name:zh-Hans": "柏林", + "name:zh-Hant": "柏林", + "name:zu": "Berlin" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 13.3888599, + 52.5170365 + ] + }, + "id": "node/240109189" + }, + { + "type": "Feature", + "properties": { + "name": "Port Louis", + "name:af": "Port Louis", + "name:am": "ፖርት ሉዊስ", + "name:an": "Port-Louis", + "name:ar": "بورت لويس", + "name:arz": "بورت لويس", + "name:ast": "Puertu Lluis", + "name:avk": "Port-Louis", + "name:az": "Port Luiz", + "name:be": "Порт-Луі", + "name:be-x-old": "Порт Луі", + "name:bg": "Порт Луи", + "name:bo": "ལོ་ཡི་སི་གྲུ་ཁ།", + "name:br": "Port Louis", + "name:bs": "Port Louis", + "name:ca": "Port Louis", + "name:cdo": "Port Louis", + "name:ce": "Порт-Луи", + "name:ceb": "Port Louis", + "name:ckb": "پۆرت لویس", + "name:crh": "Port Lui", + "name:cs": "Port Louis", + "name:cv": "Порт Луи", + "name:cy": "Port Louis", + "name:da": "Port Louis", + "name:de": "Port Louis", + "name:diq": "Port Louis", + "name:el": "Πορ Λουί", + "name:en": "Port Louis", + "name:eo": "Port-Luiso", + "name:es": "Port Louis", + "name:et": "Port Louis", + "name:etymology": "Louis XV", + "name:etymology:wikidata": "Q7738", + "name:etymology:wikipedia": "fr:Louis XV", + "name:eu": "Port Louis", + "name:fa": "پورت‌لوئیس", + "name:fi": "Port Louis", + "name:fr": "Port-Louis", + "name:fy": "Port Louis", + "name:ga": "Port Louis", + "name:gd": "Port Louis", + "name:gl": "Port Louis", + "name:gn": "Port Louis", + "name:ha": "Port Louis", + "name:hak": "Port Louis", + "name:he": "פור לואי", + "name:hif": "Port Louis", + "name:hr": "Port Louis", + "name:ht": "Pò-Loui", + "name:hu": "Port Louis", + "name:hy": "Պորտ Լուի", + "name:ia": "Port Louis", + "name:id": "Port Louis", + "name:ie": "Port Louis", + "name:io": "Port Louis", + "name:is": "Port Louis", + "name:it": "Port Louis", + "name:ja": "ポートルイス", + "name:jv": "Port Louis", + "name:ka": "პორტ-ლუი", + "name:kk": "Порт-Луи", + "name:ko": "포트루이스", + "name:ky": "Порт-Луи", + "name:la": "Portus Ludovici", + "name:lb": "Port Louis", + "name:lfn": "Port Louis", + "name:lij": "Port Louis", + "name:lmo": "Port Louis", + "name:lt": "Port Luisas", + "name:lv": "Portluī", + "name:mfe": "Porlwi", + "name:mg": "Port Louis", + "name:mhr": "Порт-Луи", + "name:mk": "Порт Луј", + "name:mn": "Порт-Луи", + "name:ms": "Port Louis", + "name:nah": "Port Louis", + "name:nl": "Port Louis", + "name:nn": "Port Louis", + "name:no": "Port Louis", + "name:nov": "Port Louis", + "name:oc": "Port Louis", + "name:olo": "Port Lui", + "name:os": "Порт-Луи", + "name:pl": "Port Louis", + "name:pms": "Port Luis", + "name:ps": "پورت لویس", + "name:pt": "Porto Luís", + "name:ro": "Port Louis", + "name:ru": "Порт-Луи", + "name:sc": "Port Louis", + "name:sco": "Port Louis", + "name:sh": "Port Louis", + "name:simple": "Port Louis", + "name:sk": "Port Louis", + "name:sl": "Port Louis", + "name:smn": "Port Louis", + "name:sn": "Port Louis", + "name:so": "Bort Lois", + "name:sq": "Port Louis", + "name:sr": "Порт Луис", + "name:sv": "Port Louis", + "name:sw": "Port Louis", + "name:tg": "Порт-Луи", + "name:th": "พอร์ตหลุยส์", + "name:tl": "Port Louis", + "name:tr": "Port Louis", + "name:tt": "Порт-Луи", + "name:udm": "Порт-Луи", + "name:uk": "Порт-Луї", + "name:ur": "پورٹ لوئس", + "name:uz": "Port-lui", + "name:vec": "Port Louis", + "name:vep": "Port Lui", + "name:vi": "Port Louis", + "name:vo": "Port Louis", + "name:war": "Port Louis", + "name:wuu": "路易港", + "name:xmf": "პორტ-ლუი", + "name:yo": "Port Louis", + "name:yue": "路易士港", + "name:zh": "路易港", + "name:zh_min_nan": "Port Louis" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 57.5028044, + -20.1624522 + ] + }, + "id": "node/243819778" + }, + { + "type": "Feature", + "properties": { + "name": "Mbabane", + "name:am": "ምባባኔ", + "name:an": "Mbabane", + "name:ar": "مبابان", + "name:ast": "Mbabane", + "name:avk": "Mbabane", + "name:az": "Mbabane", + "name:ba": "Мбабане", + "name:bcl": "Mbabane", + "name:be": "Мбабанэ", + "name:bg": "Мбабане", + "name:bm": "Mbabane", + "name:bo": "མ་པ་པན།", + "name:br": "Mbabane", + "name:bs": "Mbabane", + "name:ca": "Mbabane", + "name:cdo": "Mbabane", + "name:ce": "Мбабане", + "name:ceb": "Mbabane", + "name:ckb": "مبابانێ", + "name:cs": "Mbabane", + "name:cy": "Mbabane", + "name:da": "Mbabane", + "name:de": "Mbabane", + "name:el": "Μπαμπάνε", + "name:en": "Mbabane", + "name:eo": "Mbabano", + "name:es": "Mbabane", + "name:et": "Mbabane", + "name:eu": "Mbabane", + "name:fa": "مبابانه", + "name:fi": "Mbabane", + "name:fr": "Mbabane", + "name:frr": "Mbabane", + "name:ga": "Mbabane", + "name:gd": "Mbabane", + "name:gl": "Mbabane", + "name:ha": "Mbabane", + "name:hak": "Mbabane", + "name:he": "מבבנה", + "name:hif": "Mbabane", + "name:hr": "Mbabane", + "name:ht": "Mbabàn", + "name:hu": "Mbabane", + "name:hy": "Մբաբանե", + "name:ia": "Mbabane", + "name:id": "Mbabane", + "name:ie": "Mbabane", + "name:io": "Mbabane", + "name:is": "Mbabane", + "name:it": "Mbabane", + "name:ja": "ムババーネ", + "name:jv": "Mbabane", + "name:ka": "მბაბანე", + "name:kab": "Mbabane", + "name:kg": "Mbabane", + "name:ko": "음바바네", + "name:ky": "Мбабане", + "name:la": "Mbabane", + "name:lb": "Mbabane", + "name:lij": "Mbabane", + "name:lmo": "Mbabane", + "name:lt": "Mbabanė", + "name:lv": "Mbabane", + "name:mg": "Mbabane", + "name:mk": "Мбабане", + "name:ms": "Mbabane", + "name:nah": "Mbabane", + "name:nds": "Mbabane", + "name:nl": "Mbabane", + "name:nn": "Mbabane", + "name:no": "Mbabane", + "name:ny": "Mbabane", + "name:oc": "Mbabane", + "name:os": "Мбабане", + "name:pl": "Mbabane", + "name:pms": "Mbabane", + "name:ps": "مبابانه", + "name:pt": "Mbabane", + "name:ro": "Mbabane", + "name:ru": "Мбабане", + "name:sc": "Mbabane", + "name:sco": "Mbabane", + "name:se": "Mbabane", + "name:sh": "Mbabane", + "name:sk": "Mbabane", + "name:sl": "Mbabane", + "name:smn": "Mbabane", + "name:sn": "Mbabane", + "name:so": "Mabane", + "name:sq": "Mbabane", + "name:sr": "Мбабане", + "name:ss": "ÉMbábáne", + "name:sv": "Mbabane", + "name:sw": "Mbabane", + "name:szl": "Mbabane", + "name:tg": "Мбабане", + "name:th": "อัมบาบาเน", + "name:tl": "Mbabane", + "name:tr": "Mbabane", + "name:udm": "Мбабане", + "name:uk": "Мбабане", + "name:ur": "مبابنے", + "name:uz": "Mbabane", + "name:vec": "Mbabane", + "name:vep": "Mbabane", + "name:vi": "Mbabane", + "name:war": "Mbabane", + "name:wuu": "姆巴巴内", + "name:xmf": "მბაბანე", + "name:yi": "מבאבאנע", + "name:yo": "Mbabane", + "name:zh": "姆巴巴內", + "name:zu": "IMbabane" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 31.144663, + -26.325745 + ] + }, + "id": "node/243837793" + }, + { + "type": "Feature", + "properties": { + "name": "St. George's", + "name:acf": "Sen jòj", + "name:ar": "سانت جورجز", + "name:az": "Sent Corces", + "name:be": "Сент-Джорджэс", + "name:be-tarask": "Сэнт Джорджэс", + "name:bg": "Сейнт Джорджис", + "name:bo": "སན་ཐ་ཇོར་ཇི།", + "name:bs": "St. George's", + "name:cy": "St. George's", + "name:da": "Saint George's", + "name:de": "St. George's", + "name:el": "Σαιντ Τζόρτζις", + "name:en": "St. George's", + "name:eo": "Sankta Georgo", + "name:es": "Saint George", + "name:fa": "سینت‌جورجس", + "name:fr": "Saint-Georges", + "name:fy": "Sint George's", + "name:gcf": "Sen jòj", + "name:gl": "Saint George's", + "name:he": "סנט ג'ורג'", + "name:hr": "St. George's", + "name:ht": "Sen Jòj", + "name:hu": "St. George's", + "name:hy": "Սենտ Ջորջես", + "name:id": "St. George's", + "name:io": "St Georges", + "name:it": "Saint George's", + "name:ja": "セントジョージズ", + "name:ka": "სენტ-ჯორჯესი", + "name:ko": "세인트조지스", + "name:lmo": "St. George's", + "name:lt": "Sent Džordžas", + "name:mk": "Сент Џорџ", + "name:mn": "Сент Жоржес", + "name:nah": "Saint George", + "name:nl": "Saint George's", + "name:no": "St. George's", + "name:pl": "Saint George's", + "name:pms": "St. George's", + "name:pt": "São Jorge", + "name:ru": "Сент-Джорджес", + "name:sah": "Сент Дьордьес", + "name:sk": "Saint George’s", + "name:sr": "Сент Џорџиз", + "name:sv": "Saint George's", + "name:th": "เซนต์จอร์เจส", + "name:tr": "St. George's", + "name:uk": "Сент-Джорджес", + "name:zh": "圣乔治" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -61.751805, + 12.0535331 + ] + }, + "id": "node/246514396" + }, + { + "type": "Feature", + "properties": { + "name": "Kingstown", + "name:acf": "Kinstòn", + "name:am": "ኪንግስታውን", + "name:ar": "كينغستاون", + "name:az": "Kinqstaun", + "name:be": "Кінгстаўн", + "name:be-tarask": "Кінгстаўн", + "name:bg": "Кингстаун", + "name:bo": "ཁིན་སི་ཐོན།", + "name:da": "Kingstown", + "name:de": "Kingstown", + "name:el": "Κίνγκσταουν", + "name:en": "Kingstown", + "name:eo": "Kingstaŭno", + "name:es": "Kingstown", + "name:fa": "کینگزتاون", + "name:fr": "Kingstown", + "name:he": "קינגסטאון", + "name:hu": "Kingstown", + "name:it": "Kingstown", + "name:ja": "キングスタウン", + "name:ka": "კინგსტაუნი", + "name:ko": "킹스타운", + "name:lt": "Kingstaunas", + "name:lv": "Kingstauna", + "name:mk": "Кингстаун", + "name:nl": "Kingstown", + "name:no": "Kingstown", + "name:pl": "Kingstown", + "name:pt": "Kingstown", + "name:ru": "Кингстаун", + "name:sah": "Киҥстаун", + "name:sr": "Кингстаун", + "name:sv": "Kingstown", + "name:tg": "Кингстаун", + "name:th": "คิงส์ทาวน์", + "name:tr": "Kingstown", + "name:uk": "Кінгстаун", + "name:ur": "کنگز ٹاؤن", + "name:zh": "金斯敦" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -61.2279621, + 13.1561864 + ] + }, + "id": "node/246514507" + }, + { + "type": "Feature", + "properties": { + "name": "Bridgetown", + "name:am": "ብርጅታውን", + "name:ar": "بريدج تاون", + "name:az": "Brictaun", + "name:be": "Брыджтаўн", + "name:be-tarask": "Брыджтаўн", + "name:bg": "Бриджтаун", + "name:bo": "པུ་རུའི་ཀྲི་ཐོན།", + "name:ckb": "بریج تاون", + "name:da": "Bridgetown", + "name:de": "Bridgetown", + "name:el": "Μπριτζτάουν", + "name:en": "Bridgetown", + "name:es": "Bridgetown", + "name:fa": "بریج‌تاون", + "name:fr": "Bridgetown", + "name:gcf": "Brijtòn", + "name:he": "ברידג'טאון", + "name:ht": "Brijtòn", + "name:hu": "Bridgetown", + "name:hy": "Բրիջթաուն", + "name:ja": "ブリッジタウン", + "name:ka": "ბრიჯტაუნი", + "name:ko": "브리지타운", + "name:ku": "Brîc tawn", + "name:lt": "Bridžtaunas", + "name:lv": "Bridžtauna", + "name:mk": "Бриџтаун", + "name:nb": "Bridgetown", + "name:os": "Бриджтаун", + "name:pl": "Bridgetown", + "name:ru": "Бриджтаун", + "name:sah": "Бридьтаун", + "name:sq": "Brixhtaun", + "name:sr": "Бриџтаун", + "name:sv": "Bridgetown", + "name:th": "บริดจ์ทาวน์", + "name:tr": "Bridgetown", + "name:uk": "Бриджтаун", + "name:ur": "برج ٹاؤن", + "name:zh": "布里奇敦" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -59.6184184, + 13.0977832 + ] + }, + "id": "node/246518890" + }, + { + "type": "Feature", + "properties": { + "name": "رام الله", + "name:ar": "رام الله", + "name:cs": "Rámaláh", + "name:de": "Ramallah", + "name:el": "Ραμάλα", + "name:en": "Ramallah", + "name:es": "Ramala", + "name:fa": "رام‌الله", + "name:fr": "Ramallah", + "name:he": "רמאללה", + "name:hu": "Rámalláh", + "name:id": "Ramallah", + "name:ks": "رام اللہ", + "name:pl": "Ramallah", + "name:ps": "رام الله", + "name:pt": "Ramalá", + "name:ru": "Рамалла", + "name:sk": "Ramalláh", + "name:sl": "Ramala", + "name:ur": "رام اللہ", + "name:zh": "拉姆安拉" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 35.1952255, + 31.9030543 + ] + }, + "id": "node/246843686" + }, + { + "type": "Feature", + "properties": { + "name": "نواكشوط", + "name:am": "ኑዋክሾት", + "name:ar": "نواكشوط", + "name:arc": "ܢܘܐܟܫܘܛ", + "name:ast": "Nuakxot", + "name:az": "Nuakşot", + "name:az-Arab": "نواكشوط", + "name:azb": "نواكشوط", + "name:be": "Нуакшот", + "name:be-tarask": "Нуакшот", + "name:ber": "ⵏⵡⴰⴽⵛⵓⵟ", + "name:bg": "Нуакшот", + "name:bo": "ནའུ་ཀ་ཅོ་ཊི།", + "name:ckb": "نواکشۆت", + "name:cs": "Nuakšott", + "name:da": "Nouakchott", + "name:de": "Nouakchott", + "name:el": "Νουακσότ", + "name:en": "Nouakchott", + "name:eo": "Nuakŝoto", + "name:es": "Nuakchot", + "name:et": "Nouakchott", + "name:eu": "Nuakchot", + "name:fa": "نوآکشوت", + "name:fi": "Nouakchott", + "name:fr": "Nouakchott", + "name:gr": "Ναυαξούτη", + "name:grc": "Ναυαξούτη", + "name:he": "נואקשוט", + "name:hr": "Nouakchott", + "name:ht": "Nouakchot", + "name:hu": "Nouakchott", + "name:hy": "Նուակշոտ", + "name:is": "Núaksjott", + "name:it": "Nouakchott", + "name:ja": "ヌアクショット", + "name:ka": "ნუაქშოტი", + "name:kab": "Nwaqcuṭ", + "name:kk": "Нуакшот қаласы", + "name:kk-Arab": "نۋاكشوت", + "name:ko": "누악쇼트", + "name:ks": "نواکشوط", + "name:ku": "Nûakşot", + "name:ky": "Нуакшот", + "name:lt": "Nuakšotas", + "name:lv": "Nuakšota", + "name:mk": "Нуакшот", + "name:mrj": "Нуакшот", + "name:nl": "Nouakchott", + "name:no": "Nouakchott", + "name:nov": "Nouakchot", + "name:oc": "Nuakshut", + "name:pl": "Nawakszut", + "name:ps": "نواکشوت", + "name:pt": "Nuaquexote", + "name:ru": "Нуакшот", + "name:sk": "Nouakchott", + "name:so": "Nawakshot", + "name:sr": "Нуакшот", + "name:sv": "Nouakchott", + "name:syc": "ܢܘܐܟܫܘܛ", + "name:tg": "Нуакшот", + "name:th": "นูแอกชอต", + "name:tr": "Nuakşot", + "name:udm": "Нуакшот", + "name:uk": "Нуакшот", + "name:ur": "نواکشوط", + "name:vi": "Nouakchott", + "name:vo": "Nävakjut", + "name:yue": "或索", + "name:zh": "努瓦克肖特" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -15.9780071, + 18.0792379 + ] + }, + "id": "node/249166495" + }, + { + "type": "Feature", + "properties": { + "name": "Banjul", + "name:am": "ባንጁል", + "name:ar": "بانجول", + "name:be": "Банжул", + "name:bg": "Банджул", + "name:bo": "བཱན་ཇཱུ་ལ།", + "name:ckb": "بانجول", + "name:de": "Banjul", + "name:el": "Μπανζούλ", + "name:en": "Banjul", + "name:eo": "Banĵulo", + "name:es": "Banjul", + "name:fa": "بانجول", + "name:fr": "Banjul", + "name:he": "בנג'ול", + "name:ht": "Banjoul", + "name:hu": "Banjul", + "name:hy": "Բանջուլ", + "name:is": "Banjul", + "name:ja": "バンジュール", + "name:ka": "ბანჯული", + "name:ko": "반줄", + "name:ky": "Банжул", + "name:la": "Bathurstopolis", + "name:lt": "Bandžulis", + "name:lv": "Bandžula", + "name:mk": "Банџул", + "name:mrj": "Банжул", + "name:nah": "Banyul", + "name:oc": "Banjul", + "name:pl": "Bandżul", + "name:ru": "Банжул", + "name:sr": "Банџул", + "name:sv": "Banjul", + "name:tg": "Банҷул", + "name:th": "บันจูล", + "name:udm": "Банжул", + "name:uk": "Банжул", + "name:ur": "بانجول", + "name:yi": "באנזשול", + "name:zh": "班珠爾" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -16.575646, + 13.45535 + ] + }, + "id": "node/249167555" + }, + { + "type": "Feature", + "properties": { + "name": "Asunción", + "name:am": "አሱንሲዮን", + "name:ar": "أسونسيون", + "name:az": "Asunson", + "name:bat-smg": "Asunsjuons", + "name:be": "Асунсьён", + "name:be-tarask": "Асунсьён", + "name:bg": "Асунсион", + "name:bo": "ཨ་སུན་སི་འན།", + "name:de": "Asunción", + "name:el": "Ασουνσιόν", + "name:en": "Asuncion", + "name:eo": "Asunciono", + "name:eu": "Asuncion", + "name:fa": "آسونسیون", + "name:fr": "Asuncion", + "name:gl": "Asunción", + "name:gn": "Paraguaŷ", + "name:he": "אסונסיון", + "name:ht": "Asounsyòn", + "name:hu": "Asunción", + "name:hy": "Ասունսյոն", + "name:io": "Asuncion", + "name:is": "Asúnsjón", + "name:it": "Asunción", + "name:ja": "アスンシオン", + "name:ka": "ასუნსიონი", + "name:kab": "Asuncion", + "name:kk": "Асунсьон", + "name:ko": "아순시온", + "name:la": "Assumptio", + "name:lt": "Asunsjonas", + "name:lv": "Asunsjona", + "name:mk": "Асунсион", + "name:ms": "Gunung Berapi Asuncion", + "name:mzn": "آسونسیون", + "name:nl": "Asuncion", + "name:no": "Asunción", + "name:nov": "Asunsion", + "name:oc": "Asunción", + "name:os": "Асунсьон", + "name:pap": "Assuncion", + "name:pl": "Asunción", + "name:pt": "Assunção", + "name:ru": "Асунсьон", + "name:sr": "Асунсион", + "name:sv": "Asunción", + "name:sw": "Asuncion", + "name:tet": "Asunsaun", + "name:th": "อะซุนซิออง", + "name:tl": "Asuncion", + "name:tr": "Asunción", + "name:ug": "ئاسۇنسىئون", + "name:uk": "Асунсьйон", + "name:ur": "اسونسیون", + "name:yi": "אסונסיאן", + "name:yue": "亞松森", + "name:zh": "亞松森" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -57.6343814, + -25.2800459 + ] + }, + "id": "node/249854726" + }, + { + "type": "Feature", + "properties": { + "name": "Bissau", + "name:am": "ቢሳው", + "name:ar": "بيساو", + "name:az": "Bisau", + "name:be": "Бісау", + "name:be-tarask": "Бісаў", + "name:bg": "Бисау", + "name:bo": "བི་སའོ།", + "name:bpy": "বিস্সাউ", + "name:ckb": "بیساو", + "name:de": "Bissau", + "name:el": "Μπισσάου", + "name:en": "Bissau", + "name:eo": "Bisaŭo", + "name:es": "Bisáu", + "name:fa": "بیسائو", + "name:fr": "Bissau", + "name:he": "ביסאו", + "name:ht": "Biso", + "name:hu": "Bissau", + "name:hy": "Բիսաու", + "name:is": "Bissá", + "name:ja": "ビサウ", + "name:ka": "ბისაუ", + "name:ko": "비사우", + "name:ky": "Бисау", + "name:lt": "Bisau", + "name:lv": "Bisava", + "name:mk": "Бисау", + "name:mrj": "Бисау", + "name:new": "बिसाउ", + "name:nl": "Bissau", + "name:no": "Bissau", + "name:nov": "Bisau", + "name:oc": "Bissau", + "name:pl": "Bissau", + "name:ru": "Бисау", + "name:rw": "Biso", + "name:sr": "Бисао", + "name:sv": "Bissau", + "name:sw": "Bisau", + "name:tg": "Бисау", + "name:th": "บิสเซา", + "name:tr": "Bissau", + "name:udm": "Бисау", + "name:uk": "Бісау", + "name:ur": "بساؤ", + "name:zh": "比紹" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -15.583055, + 11.861324 + ] + }, + "id": "node/254525765" + }, + { + "type": "Feature", + "properties": { + "name": "صنعاء", + "name:ar": "صنعاء", + "name:arz": "صنعا", + "name:azb": "صنعا", + "name:be": "Сана", + "name:be-tarask": "Сана", + "name:bg": "Сана", + "name:bo": "ས་ནཱ།", + "name:br": "Sana'a", + "name:bs": "Sana'a", + "name:ca": "Sanà", + "name:ckb": "سەنعا", + "name:cs": "San'á", + "name:cy": "Sana'a", + "name:da": "Sanaá", + "name:de": "Sanaa", + "name:el": "Σαναά", + "name:en": "Sana'a", + "name:eo": "Sanao", + "name:es": "Saná", + "name:et": "Sanaa", + "name:eu": "Sana", + "name:fa": "صنعاء", + "name:fi": "Sanaa", + "name:fr": "Sanaa", + "name:fy": "Sana'a", + "name:ga": "San’a", + "name:gd": "Ṣan'ā'", + "name:gl": "Sana", + "name:he": "צנעא", + "name:hif": "Sana‘a", + "name:hr": "Sana", + "name:hu": "Szanaa", + "name:id": "Sana'a", + "name:ie": "Saná", + "name:is": "Sana", + "name:it": "San’a", + "name:ja": "サヌア", + "name:ka": "სანა", + "name:kab": "Ṣenɛa", + "name:kk": "Сана", + "name:kl": "Sana'a", + "name:ko": "사나", + "name:ks": "صنعاء", + "name:ku": "Sana", + "name:la": "Sana", + "name:lb": "Sana´a", + "name:lmo": "San'a", + "name:lrc": "سٱنعا", + "name:lt": "Sana", + "name:lv": "Sana", + "name:mk": "Сана", + "name:mn": "Санаа хот", + "name:ms": "Sana'a", + "name:nan": "Sana'a", + "name:nn": "San'a", + "name:no": "Sanaá", + "name:nov": "Sana", + "name:oc": "Sanaa", + "name:os": "Санæ", + "name:pl": "Sana", + "name:pms": "San'a", + "name:ps": "صنعا", + "name:pt": "Sana", + "name:ro": "Sana'a", + "name:ru": "Сана", + "name:sco": "Sana'a", + "name:sh": "Sana", + "name:simple": "Sana'a", + "name:sk": "Saná", + "name:sl": "Sana", + "name:sr": "Сана", + "name:sv": "Sana", + "name:sw": "Sana'a", + "name:tg": "Санъо", + "name:th": "ซานา", + "name:tr": "San'a", + "name:tt": "Сәнга", + "name:uk": "Сана", + "name:ur": "صنعاء", + "name:vi": "Sana’a", + "name:war": "Sana'a", + "name:yi": "סאנא", + "name:yo": "Sana'a", + "name:zh": "薩那", + "name:zh-Hans": "萨那", + "name:zh-Hant": "薩那" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 44.2058841, + 15.3538569 + ] + }, + "id": "node/258013552" + }, + { + "type": "Feature", + "properties": { + "name": "أبو ظبي", + "name:af": "Aboe Dhabi", + "name:am": "አቡ ዳቢ", + "name:ar": "أبو ظبي", + "name:az": "Əbu-Dabi", + "name:az-Arab": "ابوظبی", + "name:azb": "ابوظبی", + "name:bat-smg": "Abu Dabis", + "name:be": "Абу-Дабі", + "name:be-tarask": "Абу Дабі", + "name:bg": "Абу Даби", + "name:bo": "ཨ་པོའུ་དྷ་པེ།", + "name:bs": "Abu Dabi", + "name:ckb": "ئەبووزەبی", + "name:cs": "Abú Zabí", + "name:de": "Abu Dhabi", + "name:el": "Αμπού Ντάμπι", + "name:en": "Abu Dhabi", + "name:eo": "Abu-Dabio", + "name:es": "Abu Dabi", + "name:et": "Abu Dhabi", + "name:eu": "Abu Dhabi", + "name:fa": "ابوظبی", + "name:fi": "Abu Dhabi", + "name:fr": "Abou Dabi", + "name:frp": "Abou Dabi", + "name:fy": "Abû Daby", + "name:ga": "Abú Daibí", + "name:he": "אבו דאבי", + "name:hr": "Abu Dhabi", + "name:ht": "Abou Dabi", + "name:hu": "Abu-Dzabi", + "name:hy": "Աբու Դաբի", + "name:hyw": "Ապու Տապի", + "name:is": "Abú Dabí", + "name:it": "Abu Dhabi", + "name:ja": "アブダビ", + "name:ka": "აბუ-ზაბი", + "name:kab": "Abu Ḍabi", + "name:kab-Arab": "أبو ظبي", + "name:kk": "Абу-Даби", + "name:kk-Arab": "ابۋ-دابىي", + "name:kmr": "ئابوو زەبی", + "name:ko": "아부다비", + "name:ks": "ابوظہبی", + "name:ku": "Abû Zebî", + "name:lrc": "ٱبۊزٱبی", + "name:lt": "Abu Dabis", + "name:lv": "Abū Dabī", + "name:mk": "Абу Даби", + "name:mn": "Абу Даби", + "name:mzn": "ابوظبی", + "name:nov": "Abu Dabi", + "name:oc": "Abu Dhabi", + "name:os": "Абу-Даби", + "name:pl": "Abu Zabi", + "name:ps": "ابوظبی", + "name:pt": "Abu Dhabi", + "name:ru": "Абу-Даби", + "name:sah": "Абу Даби", + "name:sh": "Abu Dabi", + "name:si": "අබුඩාබි", + "name:sk": "Abú Zabí", + "name:sl": "Abu Dabi", + "name:sq": "Abu Dabi", + "name:sr": "Абу Даби", + "name:sv": "Abu Dhabi", + "name:tg": "Абу Даби", + "name:th": "อาบูดาบี", + "name:tr": "Abu Dabi", + "name:tt": "Әбү-Дәби шәһәре", + "name:ug": "ئەبۇ زەبى", + "name:uk": "Абу-Дабі", + "name:ur": "ابو ظہبی", + "name:vep": "Abu Dabi", + "name:vi": "Abu Dhabi", + "name:vo": "Äbu Saby", + "name:zh": "阿布扎比" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 54.3774014, + 24.4538352 + ] + }, + "id": "node/261611194" + }, + { + "type": "Feature", + "properties": { + "name": "Dili", + "name:ar": "ديلي", + "name:en": "Dili", + "name:es": "Dili", + "name:fr": "Dili", + "name:hu": "Dili", + "name:ja": "ディリ", + "name:lt": "Dilis", + "name:pl": "Dili", + "name:pt": "Díli", + "name:ru": "Дили", + "name:sk": "Dili", + "name:sv": "Dili", + "name:uk": "Ділі", + "name:zh": "帝力" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 125.5784093, + -8.5536809 + ] + }, + "id": "node/262310617" + }, + { + "type": "Feature", + "properties": { + "name": "東京都", + "name:ar": "طوكيو", + "name:ast": "Tokio", + "name:be": "Токіа", + "name:bg": "Токио", + "name:ca": "Tòquio", + "name:ckb": "تۆکیۆ", + "name:cs": "Tokio", + "name:cy": "Tokyo", + "name:da": "Tokyo", + "name:de": "Tokio", + "name:el": "Τόκιο", + "name:en": "Tokyo", + "name:eo": "Tokio", + "name:es": "Tokio", + "name:et": "Tōkyō", + "name:fa": "توکیو", + "name:fi": "Tokio", + "name:fr": "Tokyo", + "name:he": "טוקיו", + "name:hr": "Tokio", + "name:hu": "Tokió", + "name:ia": "Tokyo", + "name:io": "Tokyo", + "name:is": "Tókýó", + "name:it": "Tokyo", + "name:ja": "東京都", + "name:ja-Hira": "とうきょうと", + "name:ja-Latn": "Tōkyō-to", + "name:jbo": ".tokios.", + "name:ko": "도쿄도", + "name:ku": "Tokyo", + "name:la": "Tokium", + "name:lb": "Tokio", + "name:lt": "Tokijas", + "name:lv": "Tokija", + "name:nan": "Tang-kiaⁿ", + "name:nl": "Tokio", + "name:oc": "Tòquio", + "name:pap": "Tokyo", + "name:pl": "Tokio", + "name:pt": "Tóquio", + "name:ru": "Токио", + "name:sk": "Tokio", + "name:sl": "Tokio", + "name:sr": "Токио", + "name:sv": "Tokyo", + "name:szl": "Tokjo", + "name:tg": "Токио", + "name:th": "โตเกียว", + "name:tr": "Tokyo", + "name:uk": "Токіо", + "name:vi": "Tokyo", + "name:wuu": "东京都", + "name:yue": "東京都", + "name:zh": "东京都/東京都", + "name:zh-Hans": "东京都", + "name:zh-Hant": "東京都" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 139.7594549, + 35.6828387 + ] + }, + "id": "node/265018692" + }, + { + "type": "Feature", + "properties": { + "name": "Lisboa", + "name:ar": "أشبونة", + "name:be": "Лісабон", + "name:br": "Lisbon", + "name:ckb": "لیسبۆن", + "name:cs": "Lisabon", + "name:de": "Lissabon", + "name:el": "Λισαβόνα", + "name:en": "Lisbon", + "name:eo": "Lisbono", + "name:es": "Lisboa", + "name:et": "Lissabon", + "name:fa": "لیسبون", + "name:fi": "Lissabon", + "name:fr": "Lisbonne", + "name:hr": "Lisabon", + "name:hu": "Lisszabon", + "name:ia": "Lisbona", + "name:it": "Lisbona", + "name:kab": "Lisbun", + "name:ku": "Lîsabon", + "name:mi": "Rihipane", + "name:mk": "Лисабон", + "name:nl": "Lissabon", + "name:oc": "Lisbona", + "name:pl": "Lizbona", + "name:pt": "Lisboa", + "name:ru": "Лиссабон", + "name:sk": "Lisabon", + "name:sr": "Лисабон", + "name:sv": "Lissabon", + "name:tr": "Lizbon", + "name:uk": "Лісабон", + "name:zh": "里斯本", + "name:zh-Hans": "里斯本", + "name:zh-Hant": "里斯本" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -9.1365919, + 38.7077507 + ] + }, + "id": "node/265958490" + }, + { + "type": "Feature", + "properties": { + "name": "Avarua", + "name:af": "Avarua", + "name:ar": "آواروآ", + "name:ast": "Avarua", + "name:az": "Avarua", + "name:be": "Аваруа", + "name:be-tarask": "Аваруа", + "name:bg": "Аваруа", + "name:bo": "ཨ་ཝ་རུ་ཨ།", + "name:bs": "Avarua", + "name:ca": "Avarua", + "name:ceb": "Avarua", + "name:cs": "Avarua", + "name:cy": "Avarua", + "name:da": "Avarua", + "name:de": "Avarua", + "name:el": "Αβαρούα", + "name:en": "Avarua", + "name:eo": "Avaruo", + "name:es": "Avarua", + "name:et": "Avarua", + "name:fa": "آواروآ", + "name:fi": "Avarua", + "name:fr": "Avarua", + "name:gl": "Avarua", + "name:hak": "Avarua", + "name:he": "אוורואה", + "name:hr": "Avarua", + "name:hu": "Avarua", + "name:hy": "Ավարուա", + "name:id": "Avarua", + "name:io": "Avarua", + "name:is": "Avarua", + "name:ja": "アバルア", + "name:ka": "ავარუა", + "name:kk": "Аваруа", + "name:ko": "아바루아", + "name:lt": "Avarua", + "name:lv": "Avarua", + "name:mk": "Аваруа", + "name:ms": "Avarua", + "name:nl": "Avarua", + "name:no": "Avarua", + "name:pl": "Avarua", + "name:ps": "اواروا", + "name:pt": "Avarua", + "name:ro": "Avarua", + "name:ru": "Аваруа", + "name:sh": "Avarua", + "name:sk": "Avarua", + "name:sl": "Avarua", + "name:sn": "Avarua", + "name:sr": "Аваруа", + "name:sv": "Avarua", + "name:tg": "Аваруа", + "name:th": "อาวารัว", + "name:tr": "Avarua", + "name:uk": "Аваруа", + "name:ur": "آواریا", + "name:uz": "Avarua", + "name:vi": "Avarua", + "name:war": "Avarua", + "name:wuu": "阿瓦鲁阿", + "name:xmf": "ავარუა", + "name:zh": "阿瓦魯阿" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -159.7708145, + -21.2074736 + ] + }, + "id": "node/266727954" + }, + { + "type": "Feature", + "properties": { + "name": "Gibraltar", + "name:am": "ጅብራልታር", + "name:an": "Chibraltar", + "name:ang": "Calpis", + "name:ar": "جبل طارق", + "name:arz": "جيبرالتار", + "name:ast": "Xibraltar", + "name:be": "Гібралтар", + "name:br": "Jibraltar", + "name:cs": "Gibraltár", + "name:en": "Gibraltar", + "name:fr": "Gibraltar", + "name:hu": "Gibraltár", + "name:it": "Gibilterra", + "name:ja": "ジブラルタル", + "name:ku": "Cîbraltar", + "name:ru": "Гибралтар", + "name:sk": "Gibraltár", + "name:zh": "直布罗陀 / 直布羅陀", + "name:zh-Hans": "直布罗陀", + "name:zh-Hant": "直布羅陀" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -5.3541295, + 36.140807 + ] + }, + "id": "node/267933614" + }, + { + "type": "Feature", + "properties": { + "name": "Amsterdam", + "name:am": "አምስተርዳም", + "name:ar": "أمستردام", + "name:arc": "ܐܡܣܛܪܕܐܡ", + "name:arz": "امستردام", + "name:ast": "Ámsterdam", + "name:ba": "Амстердам", + "name:bat-smg": "Amsterdams", + "name:be": "Амстэрдам", + "name:be-tarask": "Амстэрдам", + "name:bg": "Амстердам", + "name:bo": "ཨེམ་སི་ཊར་ཌམ།", + "name:ckb": "ئەمستەردام", + "name:cv": "Амстердам", + "name:de": "Amsterdam", + "name:el": "Αμστελόδαμο", + "name:en": "Amsterdam", + "name:eo": "Amsterdamo", + "name:es": "Ámsterdam", + "name:ext": "Ámsterdam", + "name:fa": "آمستردام", + "name:fr": "Amsterdam", + "name:ga": "Amstardam", + "name:gl": "Ámsterdam", + "name:he": "אמסטרדם", + "name:ht": "Amstèdam", + "name:hu": "Amszterdam", + "name:hy": "Ամստերդամ", + "name:is": "Amsterdam", + "name:it": "Amsterdam", + "name:ja": "アムステルダム", + "name:ka": "ამსტერდამი", + "name:kk": "Амстердам", + "name:ko": "암스테르담", + "name:koi": "Амстердам", + "name:krc": "Амстердам", + "name:ku": "Amsterdam", + "name:kv": "Амстердам", + "name:la": "Amstelodamum", + "name:lt": "Amsterdamas", + "name:lv": "Amsterdama", + "name:lzh": "阿姆斯特丹", + "name:mdf": "Амстердам", + "name:mk": "Амстердам", + "name:mn": "Амстердам", + "name:mrj": "Амстердам", + "name:nds": "Amsterdam", + "name:ne": "आम्स्टर्डम", + "name:new": "एम्स्टर्ड्याम", + "name:nl": "Amsterdam", + "name:no": "Amsterdam", + "name:oc": "Amsterdam", + "name:os": "Амстердам", + "name:pl": "Amsterdam", + "name:pms": "Àmsterdam", + "name:ps": "امسټرډام", + "name:pt": "Amsterdão", + "name:pt-BR": "Amsterdã", + "name:ru": "Амстердам", + "name:rue": "Амстердам", + "name:sah": "Амстердам", + "name:si": "ඈම්ස්ටර්ඩෑම්", + "name:sk": "Amsterdam", + "name:so": "Amistardam", + "name:sq": "Amsterdami", + "name:sr": "Амстердам", + "name:srn": "Damsko", + "name:sv": "Amsterdam", + "name:tg": "Амстердам", + "name:th": "อัมสเตอร์ดัม", + "name:tok": "ma tomo Ansetan", + "name:tt": "Амстердам", + "name:udm": "Амстердам", + "name:ug": "ئامستېردام", + "name:uk": "Амстердам", + "name:ur": "ایمسٹرڈیم", + "name:yi": "אמסטערדאם", + "name:yue": "阿姆斯特丹", + "name:zh": "阿姆斯特丹", + "name:zu": "I-Amsterdami" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 4.8936041, + 52.3727598 + ] + }, + "id": "node/268396336" + }, + { + "type": "Feature", + "properties": { + "name": "القاهرة", + "name:ace": "Al-Qahirah", + "name:ady": "Каир", + "name:af": "Kaïro", + "name:ak": "Cairo", + "name:am": "ካይሮ", + "name:an": "O Caire", + "name:ar": "القاهرة", + "name:arz": "القاهره", + "name:ast": "El Cairu", + "name:av": "Къагьира", + "name:avk": "Alkaira", + "name:awa": "काइरो", + "name:az": "Qahirə", + "name:ba": "Ҡәһир", + "name:bat-smg": "Kairs", + "name:bcl": "Cairo", + "name:be": "Каір", + "name:bg": "Кайро", + "name:bo": "ཁ་ཡི་རོ", + "name:br": "Kaero", + "name:bs": "Kairo", + "name:ca": "el Caire", + "name:ce": "КъахӀира", + "name:ceb": "Cairo", + "name:chy": "Cairo", + "name:ckb": "قاھیرە", + "name:crh": "Qaire", + "name:cs": "Káhira", + "name:csb": "Kairo", + "name:cv": "Каир", + "name:cy": "Cairo", + "name:da": "Kairo", + "name:de": "Kairo", + "name:diq": "Qahire", + "name:dsb": "Kairo", + "name:el": "Κάιρο", + "name:en": "Cairo", + "name:eo": "Kairo", + "name:es": "El Cairo", + "name:et": "Kairo", + "name:eu": "Kairo", + "name:ext": "El Cairu", + "name:fa": "قاهره", + "name:fi": "Kairo", + "name:fo": "Keiro", + "name:fr": "Le Caire", + "name:frp": "Lo Cayiro", + "name:frr": "Kairo", + "name:fur": "El Cairo", + "name:fy": "Kairo", + "name:ga": "Caireo", + "name:gd": "Cairo", + "name:gl": "O Cairo - القاهرة", + "name:gn": "Káiro", + "name:gv": "Cairo", + "name:ha": "Kairo", + "name:hak": "Cairo", + "name:he": "קהיר", + "name:hif": "Cairo", + "name:hr": "Kairo", + "name:hsb": "Kairo", + "name:ht": "Li Kè", + "name:hu": "Kairó", + "name:hy": "Կահիրե", + "name:hyw": "Գահիրէ", + "name:ia": "Cairo", + "name:id": "Kairo", + "name:ie": "Cairo", + "name:ilo": "Cairo", + "name:inh": "Каир", + "name:io": "Kairo", + "name:is": "Kaíró", + "name:it": "Il Cairo", + "name:ja": "カイロ", + "name:jv": "Kairo", + "name:ka": "კაირო", + "name:kaa": "Al-Qahira", + "name:kab": "Taqahirt", + "name:kk": "Әл-Қаһира", + "name:kl": "Cairo", + "name:ko": "카이로", + "name:ku": "Qahîre", + "name:kv": "Каир", + "name:kw": "Cairo", + "name:ky": "Каир", + "name:la": "Cairus", + "name:lad": "El Kairo", + "name:lb": "Kairo", + "name:lbe": "Кьагьира", + "name:lez": "Каир", + "name:lfn": "Qahira", + "name:li": "Caïro", + "name:lij": "O Cairo", + "name:lmo": "El Cairo", + "name:ln": "Kairo", + "name:lt": "Kairas", + "name:lv": "Kaira", + "name:mad": "Kairo", + "name:mai": "काइरो", + "name:mdf": "Каир", + "name:mhr": "Каир", + "name:mi": "Kairo", + "name:min": "Kairo", + "name:mk": "Каиро", + "name:mn": "Каир", + "name:mrj": "Каир", + "name:ms": "Kaherah", + "name:mt": "Kajr", + "name:mwl": "Cairo", + "name:myv": "Каир ош", + "name:mzn": "قاهره", + "name:na": "Cairo", + "name:nah": "El Cairo", + "name:nan": "Cairo", + "name:nap": "Il cairo", + "name:nds": "Kairo", + "name:new": "कायरो", + "name:nl": "Caïro", + "name:no": "Kairo", + "name:ny": "Cairo", + "name:oc": "Lo Caire", + "name:os": "Каир", + "name:pap": "Kairo", + "name:pl": "Kair", + "name:pms": "Ël Càiro", + "name:pnt": "Κάιρον", + "name:ps": "قاهره", + "name:pt": "Cairo", + "name:qu": "Qahira", + "name:rm": "Cairo", + "name:ro": "Cairo", + "name:roa-rup": "Cairo", + "name:roa-tara": "'U Cairo", + "name:ru": "Каир", + "name:rue": "Кагіра", + "name:sah": "Каир", + "name:sc": "Cairo", + "name:scn": "Cairu", + "name:sco": "Cairo", + "name:sd": "قاهره", + "name:se": "Cairo", + "name:sh": "Kairo", + "name:simple": "Cairo", + "name:sk": "Káhira", + "name:sl": "Kairo", + "name:smn": "Kairo", + "name:sn": "Cairo", + "name:so": "Qaahiro", + "name:sq": "Kajro", + "name:sr": "Каиро", + "name:ss": "Cairo", + "name:su": "Kairo", + "name:sv": "Kairo", + "name:sw": "Kairo", + "name:szl": "Kajir", + "name:tg": "Қоҳира", + "name:th": "ไคโร", + "name:tk": "Kair", + "name:tl": "Cairo", + "name:tpi": "Kairo", + "name:tr": "Kahire", + "name:tt": "Каһирә", + "name:tw": "Kairo", + "name:udm": "Каир", + "name:ug": "كايرو", + "name:uk": "Каїр", + "name:ur": "قاہرہ", + "name:uz": "Qohira", + "name:vec": "El Cairo", + "name:vep": "Kair", + "name:vi": "Cairo", + "name:vls": "Caïro", + "name:vo": "Kahirä", + "name:wa": "El Caire", + "name:war": "Cairo", + "name:wo": "Xayra", + "name:wuu": "开罗", + "name:xal": "Каир балһсн", + "name:xmf": "კაირო", + "name:yi": "קיירא", + "name:yo": "Káírò", + "name:yue": "開羅", + "name:zea": "Caïro", + "name:zh": "开罗", + "name:zh-Hans": "开罗", + "name:zh-Hant": "開羅", + "name:zu": "Cairo" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 31.2357257, + 30.0443879 + ] + }, + "id": "node/271613766" + }, + { + "type": "Feature", + "properties": { + "name": "Road Town", + "name:ar": "رود تاون", + "name:az": "Roud Taun", + "name:be": "Род-Таўн", + "name:be-tarask": "Роўд Таўн", + "name:bg": "Роуд Таун", + "name:de": "Road Town", + "name:el": "Ρόουντ Τάουν", + "name:en": "Road Town", + "name:eo": "Rod-Taŭno", + "name:es": "Road Town", + "name:fr": "Road Town", + "name:he": "רואוד טאון", + "name:hu": "Road Town", + "name:it": "Road Town", + "name:ja": "ロードタウン", + "name:ka": "როუდ-ტაუნი", + "name:ko": "로드타운", + "name:la": "Oppidum Viae", + "name:lt": "Rod Taunas", + "name:mk": "Роуд Таун", + "name:nl": "Road Town", + "name:no": "Road Town", + "name:pl": "Road Town", + "name:pt": "Road Town", + "name:ru": "Род-Таун", + "name:sr": "Роуд Таун", + "name:sv": "Road Town", + "name:tr": "Road Town", + "name:uk": "Род-Таун", + "name:zh": "羅德城" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -64.6232227, + 18.4257128 + ] + }, + "id": "node/280972174" + }, + { + "type": "Feature", + "properties": { + "name": "Charlotte Amalie", + "name:ar": "شارلوت أمالي", + "name:az": "Şarlotta-Amaliya", + "name:be": "Шарлота-Амалія", + "name:be-tarask": "Шарлот Амалія", + "name:bg": "Шарлот Амали", + "name:de": "Charlotte Amalie", + "name:el": "Σαρλότ Αμαλί", + "name:en": "Charlotte Amalie", + "name:eo": "Ĉarlotamalio", + "name:es": "Carlota Amalia", + "name:fa": "شارلوت آمالی", + "name:fr": "Charlotte Amalie", + "name:he": "שרלוט אמאלי", + "name:hu": "Charlotte Amalie", + "name:it": "Charlotte Amalie", + "name:ja": "シャーロット・アマリー", + "name:ka": "შარლოტა-ამალია", + "name:ko": "샬럿 아말리에", + "name:lt": "Šarlotė Amalija", + "name:mk": "Шарлота Амалија", + "name:nl": "Charlotte Amalie", + "name:nn": "Charlotte Amalie", + "name:no": "Charlotte Amalie", + "name:pl": "Charlotte Amalie", + "name:pt": "Charlotte Amalie", + "name:ru": "Шарлотта-Амалия", + "name:sr": "Шарлота Амалија", + "name:sv": "Charlotte Amalie", + "name:tr": "Charlotte Amalie", + "name:uk": "Шарлотта-Амалія", + "name:vi": "Charlotte Amalie", + "name:war": "Charlotte Amalie", + "name:yo": "Charlotte Amalie", + "name:zh": "夏洛特阿马利亚" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -64.932789, + 18.341137 + ] + }, + "id": "node/280978108" + }, + { + "type": "Feature", + "properties": { + "name": "Città di San Marino", + "name:af": "San Marino", + "name:am": "ሳን ማሪኖ", + "name:an": "Ciudad de San Marino", + "name:ar": "مدينة سان مارينو", + "name:arc": "ܣܢ ܡܪܝܢܘ", + "name:ast": "Ciudá de San Marín", + "name:az-Arab": "سان مارینو", + "name:azb": "سان مارینو", + "name:bat-smg": "San Marins", + "name:be": "Сан-Марына", + "name:be-tarask": "Сан-Марына", + "name:bg": "Сан Марино", + "name:bo": "སན་མ་རི་ནོ།", + "name:br": "Kêr San Marino", + "name:bs": "San Marino", + "name:ca": "Ciutat de San Marino", + "name:ckb": "سان مارینۆ", + "name:cs": "San Marino", + "name:cy": "Dinas San Marino", + "name:da": "San Marino", + "name:de": "Stadt San Marino", + "name:el": "Άγιος Μαρίνος", + "name:en": "City of San Marino", + "name:eo": "San-Marino", + "name:es": "San Marino", + "name:et": "San Marino", + "name:eu": "San Marino", + "name:fa": "شهر سان مارینو", + "name:fi": "San Marino", + "name:fiu-vro": "San Marino", + "name:fr": "Ville de Saint-Marin", + "name:frr": "San Marino", + "name:fy": "San Marino", + "name:ga": "Cathair San Mairíne, San Mairíne", + "name:gd": "San Marino", + "name:gl": "Cidade de San Mariño - Città di San Marino", + "name:gr": "Ἁγιομαρινούπολις", + "name:grc": "Ἁγιομαρινούπολις", + "name:gv": "San Marino", + "name:he": "סן מרינו", + "name:hr": "San Marino", + "name:ht": "Sen Maren", + "name:hu": "San Marino", + "name:hy": "Սան Մարինո", + "name:id": "San Marino", + "name:ie": "San Marino", + "name:io": "San Marino", + "name:is": "San Marínó", + "name:it": "Città di San Marino", + "name:ja": "サンマリノ市", + "name:jv": "San Marino", + "name:ka": "სან-მარინო", + "name:kab-Arab": "سان مارين", + "name:kk": "Сан-Марино", + "name:kk-Arab": "سان مارىينو", + "name:kmr": "سان مارینۆ", + "name:ko": "산마리노", + "name:ks": "سان مارینو", + "name:ku-Arab": "سان مارینۆ", + "name:la": "Marinum", + "name:lb": "San Marino", + "name:lt": "San Marinas", + "name:lv": "Sanmarīno", + "name:mk": "Сан Марино", + "name:mzn": "سان مارینو", + "name:nl": "San Marino", + "name:nn": "San Marino i San Marino", + "name:no": "San Marino by", + "name:oc": "Sant Marin", + "name:os": "Сан-Марино", + "name:pl": "San Marino", + "name:pms": "Sità ëd San Marin", + "name:ps": "سان مارینو", + "name:pt": "San Marino", + "name:qu": "San Marino", + "name:ro": "Orașul San Marino", + "name:roa-tara": "Cetate de San Marine", + "name:sco": "Ceety o San Marino", + "name:sd": "سان مارينو", + "name:simple": "San Marino City", + "name:sk": "San Maríno", + "name:sl": "San Marino", + "name:sq": "San Marino", + "name:sr": "Сан Марино", + "name:sv": "San Marino", + "name:syc": "ܣܢ ܡܪܝܢܘ", + "name:szl": "San Marino", + "name:tl": "San Marino, San Marino", + "name:tr": "San Marino şehri", + "name:udm": "Сан-Марино", + "name:ug": "سان مارىنو", + "name:uk": "Сан-Марино", + "name:ur": "سان مارینو شہر", + "name:vec": "Sità de San Marin", + "name:vi": "Thành phố San Marino", + "name:vo": "San Marino", + "name:war": "San Marino, San Marino", + "name:yo": "Ìlú San Màrínò", + "name:zh": "聖馬力諾", + "name:zh-Hans": "圣马力诺", + "name:zh-Hant": "聖馬力諾" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 12.4466991, + 43.9363996 + ] + }, + "id": "node/280982720" + }, + { + "type": "Feature", + "properties": { + "name": "Paramaribo", + "name:ace": "Paramaribô", + "name:am": "ፓራማሪቦ", + "name:ar": "باراماريبو", + "name:be": "Парамарыба", + "name:be-tarask": "Парамарыба", + "name:bg": "Парамарибо", + "name:bo": "པེ་ར་མེ་རི་བོ།", + "name:ckb": "پاراماریبۆ", + "name:cv": "Парамарибо", + "name:de": "Paramaribo", + "name:el": "Παραμαρίμπο", + "name:en": "Paramaribo", + "name:es": "Paramaribo", + "name:fa": "پاراماریبو", + "name:fr": "Paramaribo", + "name:he": "פרמריבו", + "name:hu": "Paramaribo", + "name:hy": "Պարամարիբո", + "name:is": "Paramaríbó", + "name:ja": "パラマリボ", + "name:ka": "პარამარიბო", + "name:ko": "파라마리보", + "name:ku": "Paramarîbo", + "name:lt": "Paramaribas", + "name:mk": "Парамарибо", + "name:nl": "Paramaribo", + "name:no": "Paramaribo", + "name:oc": "Paramaribo", + "name:os": "Парамарибо", + "name:pl": "Paramaribo", + "name:ru": "Парамарибо", + "name:sr": "Парамарибо", + "name:sv": "Paramaribo", + "name:uk": "Парамарибо", + "name:ur": "پاراماریبو", + "name:yue": "巴拉馬利波", + "name:zh": "帕拉馬里博" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -55.1703941, + 5.8247628 + ] + }, + "id": "node/281537750" + }, + { + "type": "Feature", + "properties": { + "name": "Belmopan", + "name:ace": "Bèlmopan", + "name:am": "ቤልሞፓን", + "name:ar": "بلموبان", + "name:be": "Бельмапан", + "name:be-tarask": "Бэльмапан", + "name:bg": "Белмопан", + "name:bo": "པེར་མོ་ཕན།", + "name:ckb": "بێلمۆپان", + "name:de": "Belmopan", + "name:el": "Μπελμοπάν", + "name:en": "Belmopan", + "name:eo": "Belmopano", + "name:es": "Belmopán", + "name:fa": "بلموپان", + "name:fr": "Belmopan", + "name:frp": "Bèlmopan", + "name:gl": "Belmopán", + "name:he": "בלמופן", + "name:ht": "Bèlmopan", + "name:hu": "Belmopan", + "name:hy": "Բելմոպան", + "name:is": "Belmópan", + "name:ja": "ベルモパン", + "name:ka": "ბელმოპანი", + "name:ko": "벨모판", + "name:ku": "Belmopan", + "name:la": "Belmopanum", + "name:lt": "Belmopanas", + "name:lv": "Belmopana", + "name:mk": "Белмопан", + "name:oc": "Belmopán", + "name:pl": "Belmopan", + "name:ru": "Бельмопан", + "name:sah": "Белмопан", + "name:sr": "Белмопан", + "name:sv": "Belmopan", + "name:th": "เบลโมแพน", + "name:tr": "Belmopán", + "name:uk": "Бельмопан", + "name:zh": "貝爾莫潘" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -88.770018, + 17.250199 + ] + }, + "id": "node/282294082" + }, + { + "type": "Feature", + "properties": { + "name": "Harare", + "name:am": "ሀራሬ", + "name:ar": "هراري", + "name:arz": "هارارى", + "name:be": "Харарэ", + "name:bg": "Хараре", + "name:bo": "ཧ་ར་རི།", + "name:ckb": "ھەرارێ", + "name:de": "Harare", + "name:el": "Χαράρε", + "name:en": "Harare", + "name:eo": "Harareo", + "name:es": "Harare", + "name:fa": "هراره", + "name:fi": "Harare", + "name:fr": "Harare", + "name:he": "הארארה", + "name:ht": "Arare", + "name:hu": "Harare", + "name:hy": "Հարարե", + "name:is": "Harare", + "name:it": "Harare", + "name:ja": "ハラレ", + "name:ka": "ჰარარე", + "name:ko": "하라레", + "name:ku": "Harare", + "name:ky": "Хараре", + "name:la": "Hararensis Urbs", + "name:lt": "Hararė", + "name:mk": "Хараре", + "name:mn": "Хараре", + "name:mrj": "Хараре", + "name:nl": "Harare", + "name:no": "Harare", + "name:oc": "Harare", + "name:os": "Хараре", + "name:pl": "Harare", + "name:pt": "Harare", + "name:ru": "Хараре", + "name:sr": "Хараре", + "name:sv": "Harare", + "name:tg": "Хараре", + "name:th": "ฮาราเร", + "name:tr": "Harare", + "name:udm": "Хараре", + "name:ug": "ھارارې", + "name:uk": "Хараре", + "name:ur": "ہرارے", + "name:wo": "Arare", + "name:zh": "哈拉雷" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 31.045686, + -17.831773 + ] + }, + "id": "node/282335934" + }, + { + "type": "Feature", + "properties": { + "name": "بيروت", + "name:af": "Beiroet", + "name:am": "ቤይሩት", + "name:ar": "بيروت", + "name:arc": "ܒܝܪܘܬ", + "name:arz": "بيروت", + "name:az": "Beyrut", + "name:bat-smg": "Beirots", + "name:be": "Бейрут", + "name:be-tarask": "Бэйрут", + "name:bg": "Бейрут", + "name:bo": "པེ་རུ་ཐེ།", + "name:br": "Beirout", + "name:bs": "Bejrut", + "name:ckb": "بەیرووت", + "name:cs": "Bejrút", + "name:da": "Beirut", + "name:de": "Beirut", + "name:el": "Βηρυτός", + "name:en": "Beirut", + "name:eo": "Bejruto", + "name:es": "Beirut", + "name:et": "Beirut", + "name:eu": "Beirut", + "name:fa": "بیروت", + "name:fi": "Beirut", + "name:fr": "Beyrouth", + "name:fy": "Beirût", + "name:ga": "Béiriút", + "name:gag": "Beyrut", + "name:he": "ביירות", + "name:hr": "Bejrut", + "name:ht": "Bewout", + "name:hu": "Bejrút", + "name:hy": "Պէյրութ", + "name:is": "Beirút", + "name:it": "Beirut", + "name:ja": "ベイルート", + "name:ka": "ბეირუთი", + "name:kab": "Birut", + "name:kk": "Бейрут", + "name:ko": "베이루트", + "name:ku": "Bêrût", + "name:ky": "Бейрут", + "name:la": "Berytus", + "name:lt": "Beirutas", + "name:lv": "Beirūta", + "name:mdf": "Бейрут ошсь", + "name:mk": "Бејрут", + "name:mn": "Бейрут", + "name:mzn": "بیروت", + "name:nan": "Beyrouth", + "name:nl": "Beiroet", + "name:nov": "Beyrut", + "name:oc": "Barut", + "name:os": "Бейрут", + "name:pl": "Bejrut", + "name:pt": "Beirute", + "name:ru": "Бейрут", + "name:sah": "Бейрут", + "name:sh": "Bejrut", + "name:sk": "Bejrút", + "name:sl": "Bejrut", + "name:sq": "Bejrut", + "name:sr": "Бејрут", + "name:sv": "Beirut", + "name:tet": "Beirute", + "name:tg": "Бейрут", + "name:th": "เบรุต", + "name:tr": "Beyrut", + "name:tt": "Бәйрут", + "name:ug": "بېيرۇت", + "name:uk": "Бейрут", + "name:ur": "بیروت", + "name:vo": "Bäyrut", + "name:wuu": "贝鲁特", + "name:yi": "ביירוט", + "name:zh": "貝魯特" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 35.47843, + 33.8959203 + ] + }, + "id": "node/289346590" + }, + { + "type": "Feature", + "properties": { + "name": "Malabo", + "name:am": "ማላቦ", + "name:ar": "مالابو", + "name:be": "Малаба", + "name:be-tarask": "Маляба", + "name:bg": "Малабо", + "name:bo": "མ་ལ་བོ།", + "name:ckb": "مالابۆ", + "name:cs": "Malabo", + "name:de": "Malabo", + "name:el": "Μαλάμπο", + "name:en": "Malabo", + "name:es": "Malabo", + "name:fa": "مالابو", + "name:fr": "Malabo", + "name:he": "מלאבו", + "name:hu": "Malabo", + "name:hy": "Մալաբո", + "name:is": "Malabó", + "name:it": "Malabo", + "name:ja": "マラボ", + "name:ka": "მალაბო", + "name:ko": "말라보", + "name:ky": "Малабо", + "name:lt": "Malabas", + "name:mk": "Малабо", + "name:mrj": "Малабо", + "name:nl": "Malabo", + "name:no": "Malabo", + "name:oc": "Malabo", + "name:pl": "Malabo", + "name:pt": "Malabo", + "name:ru": "Малабо", + "name:sr": "Малабо", + "name:sv": "Malabo", + "name:tg": "Малабо", + "name:th": "มาลาโบ", + "name:tr": "Malabo", + "name:udm": "Малабо", + "name:uk": "Малабо", + "name:ur": "ملابو", + "name:yue": "馬拉博", + "name:zh": "马拉博", + "name:zh-Hans": "马拉博", + "name:zh-Hant": "馬拉博" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 8.780061, + 3.752828 + ] + }, + "id": "node/292521364" + }, + { + "type": "Feature", + "properties": { + "name": "Jamestown", + "name:ar": "جيمز تون", + "name:el": "Τζέιμσταουν", + "name:en": "Jamestown", + "name:es": "Jamestown", + "name:fa": "جیمزتون", + "name:fr": "Jamestown", + "name:hu": "Jamestown", + "name:lt": "Džeimstaunas", + "name:mk": "Џејмстаун", + "name:ru": "Джеймстаун", + "name:ur": "جیمز ٹاون" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -5.7160872, + -15.9277296 + ] + }, + "id": "node/293673697" + }, + { + "type": "Feature", + "properties": { + "name": "Georgetown", + "name:am": "ጆርጅታውን", + "name:ar": "جورج تاون", + "name:be": "Джорджтаўн", + "name:be-tarask": "Джорджтаўн", + "name:bg": "Джорджтаун", + "name:bo": "ཅོར་ཅི་ཐོན།", + "name:de": "Georgetown", + "name:el": "Τζώρτζταουν", + "name:en": "Georgetown", + "name:eo": "Ĝorĝtaŭno", + "name:es": "Georgetown", + "name:fa": "جورج‌تاون", + "name:fr": "Georgetown", + "name:he": "ג'ורג'טאון", + "name:ht": "Jòjtòn", + "name:hu": "Georgetown", + "name:is": "Georgetown", + "name:it": "Georgetown", + "name:ja": "ジョージタウン", + "name:ka": "ჯორჯტაუნი", + "name:ko": "조지타운", + "name:la": "Georgiopolis", + "name:lt": "Džordžtaunas", + "name:lv": "Džordžtauna", + "name:mk": "Џорџтаун", + "name:nl": "Georgetown", + "name:no": "Georgetown", + "name:oc": "Georgetown", + "name:os": "Джорджтаун", + "name:pl": "Georgetown", + "name:ru": "Джорджтаун", + "name:sr": "Џорџтаун", + "name:sv": "Georgetown, Guyana", + "name:th": "จอร์จทาวน์", + "name:tr": "Georgetown", + "name:uk": "Джорджтаун", + "name:ur": "جارج ٹاؤن", + "name:zh": "喬治敦" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -58.1624465, + 6.8137426 + ] + }, + "id": "node/293789508" + }, + { + "type": "Feature", + "properties": { + "name": "São Tomé", + "name:am": "ሳን ቶሜ", + "name:ar": "ساو تومي", + "name:az": "San Tome", + "name:be": "Сан-Тамэ", + "name:bg": "Сао Томе", + "name:bo": "སའོ་ཊོ་མེ།", + "name:bpy": "সাও টোমে", + "name:ckb": "سائۆتۆمێ", + "name:de": "São Tomé", + "name:el": "Σάο Τομέ", + "name:en": "São Tomé", + "name:eo": "Sao-Tomeo", + "name:es": "Santo Tomé", + "name:fa": "سائوتومه", + "name:fy": "Sao Tomee", + "name:gl": "San Tomé", + "name:gr": "Ἅγιος Θωμᾶς", + "name:grc": "Ἅγιος Θωμᾶς", + "name:he": "סאו טומה", + "name:hr": "Sveti Toma", + "name:ht": "Sao Tome", + "name:hu": "Sao Tomé", + "name:hy": "Սան Տոմե", + "name:io": "Sao Tome", + "name:is": "São Tomé", + "name:ja": "サントメ", + "name:ka": "სან-ტომე", + "name:ko": "상투메", + "name:ku": "Sao Tome", + "name:ky": "Сан-Томе", + "name:la": "Urbs Sancti Thomae", + "name:lt": "San Tomė", + "name:lv": "Santome", + "name:mk": "Сао Томе", + "name:mrj": "Сан-Томе", + "name:nl": "Sao Tomé", + "name:nov": "Sao Tome", + "name:pap": "Santo Tomé", + "name:pl": "São Tomé", + "name:ro": "São Tomé", + "name:ru": "Сан-Томе", + "name:sk": "Svätý Tomáš", + "name:so": "Sao Tome", + "name:sr": "Сао Томе", + "name:sv": "São Tomé", + "name:sw": "Sao Tome", + "name:tg": "Сан-Томе", + "name:th": "เซาตูเม", + "name:tl": "San Tomas", + "name:udm": "Сан-Томе", + "name:uk": "Сан-Томе", + "name:ur": "ساؤ ٹومے", + "name:war": "Sao Tome", + "name:zh": "圣多美", + "name:zh-Hans": "圣多美", + "name:zh-Hant": "聖多美" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 6.7313031, + 0.3389242 + ] + }, + "id": "node/295342933" + }, + { + "type": "Feature", + "properties": { + "name": "Montevideo", + "name:ab": "Монтевидео", + "name:am": "ሞንቴቪዴዎ", + "name:ar": "مونتيفيديو", + "name:ay": "Muntividëw", + "name:bat-smg": "Montevidiejos", + "name:be": "Мантэвідэа", + "name:be-tarask": "Мантэвідэо", + "name:bg": "Монтевидео", + "name:bo": "མཱོན་ཊི་ཝི་ཌོ།", + "name:cbk-zam": "Montevideo ciudad", + "name:ckb": "مۆنتێڤیدیۆ", + "name:de": "Montevideo", + "name:el": "Μοντεβιδέο", + "name:en": "Montevideo", + "name:es": "Montevideo", + "name:fa": "مونته‌ویدئو", + "name:fr": "Montevideo", + "name:gl": "Montevideo", + "name:he": "מונטווידאו", + "name:hu": "Montevideo", + "name:hy": "Մոնտեվիդեո", + "name:is": "Montevídeó", + "name:it": "Montevideo", + "name:ja": "モンテビデオ", + "name:ka": "მონტევიდეო", + "name:ko": "몬테비데오", + "name:ku": "Montevideo", + "name:la": "Monsvideus", + "name:lt": "Montevidėjas", + "name:mk": "Монтевидео", + "name:nl": "Montevideo", + "name:no": "Montevideo", + "name:oc": "Montevideo", + "name:os": "Монтевидео", + "name:pap": "Montevidéu", + "name:pl": "Montevideo", + "name:pt": "Montevidéu", + "name:ru": "Монтевидео", + "name:scn": "Muntividèu", + "name:sk": "Montevideo", + "name:sr": "Монтевидео", + "name:sv": "Montevideo", + "name:tet": "Montevideu", + "name:th": "มอนเตวิเดโอ", + "name:tr": "Montevideo", + "name:ug": "مونتېۋىدېئو", + "name:uk": "Монтевідео", + "name:ur": "مونٹیویڈیو", + "name:xmf": "მონტევიდეო", + "name:yi": "מאנטעווידעא", + "name:zh": "蒙得維的亞" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -56.1913095, + -34.9058916 + ] + }, + "id": "node/296140043" + }, + { + "type": "Feature", + "properties": { + "name": "Rabat ⵔⴱⴰⵟ الرباط", + "name:am": "ራባት", + "name:ar": "الرباط", + "name:ast": "Rabat", + "name:be": "Рабат", + "name:be-tarask": "Рабат", + "name:ber": "ⵔⴱⴰⵟ", + "name:bg": "Рабат", + "name:bo": "ར་བ་ཐེ།", + "name:ckb": "ڕەبات", + "name:cs": "Rabat", + "name:cv": "Рабат", + "name:da": "Rabat", + "name:de": "Rabat", + "name:el": "Ραμπάτ", + "name:en": "Rabat", + "name:eo": "Rabato", + "name:es": "Rabat", + "name:et": "Rabat", + "name:fa": "رباط", + "name:fi": "Rabat", + "name:fr": "Rabat", + "name:gl": "Rabat", + "name:he": "רבאט", + "name:ht": "Raba", + "name:hu": "Rabat", + "name:hy": "Ռաբաթ", + "name:is": "Rabat", + "name:it": "Rabat", + "name:ja": "ラバト", + "name:ka": "რაბატი", + "name:kab": "Rbaṭ", + "name:ko": "라바트", + "name:ku": "Rabat", + "name:ky": "Рабат", + "name:lt": "Rabatas", + "name:lv": "Rabāta", + "name:mk": "Рабат", + "name:mrj": "Рабат", + "name:mzn": "رباط", + "name:nah": "Rabāt", + "name:nl": "Rabat", + "name:oc": "Rabat", + "name:os": "Рабат", + "name:pl": "Rabat", + "name:ps": "ربات", + "name:pt": "Rabat", + "name:ru": "Рабат", + "name:sk": "Rabat", + "name:sr": "Рабат", + "name:sv": "Rabat", + "name:tg": "Рабат", + "name:th": "ราบัต", + "name:tr": "Rabat", + "name:udm": "Рабат", + "name:ug": "رابات", + "name:uk": "Рабат", + "name:ur": "رباط", + "name:vi": "Rabat", + "name:vo": "Ribat", + "name:xmf": "რაბატი", + "name:zgh": "ⵕⵕⴱⴰⵟ", + "name:zh": "拉巴特" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -6.834543, + 34.022405 + ] + }, + "id": "node/299120862" + }, + { + "type": "Feature", + "properties": { + "name": "Alger الجزائر", + "name:af": "Algiers", + "name:an": "Alcher", + "name:ar": "الجزائر", + "name:arc": "ܓܙܐܐܪ", + "name:az": "Əlcəzair", + "name:azb": "الجزیره", + "name:bat-smg": "Alžīrs", + "name:be": "Алжыр", + "name:be-tarask": "Альжыр", + "name:ber": "ⴷⵣⴰⵢⴻⵔ", + "name:bg": "Алжир", + "name:bo": "ཨཱལ་ཇི་ཡར་སི།", + "name:bs": "Alžir", + "name:ca": "Alger", + "name:ckb": "جەزائیر", + "name:cs": "Alžír", + "name:cv": "Алҫир", + "name:cy": "Alger", + "name:da": "Algier", + "name:de": "Algier", + "name:diq": "Cezayir", + "name:el": "Αλγέρι", + "name:en": "Algiers", + "name:eo": "Alĝero", + "name:es": "Argel", + "name:et": "Alžiir", + "name:eu": "Aljer", + "name:fa": "الجزیره", + "name:fi": "Alger", + "name:fo": "Alger", + "name:fr": "Alger", + "name:frp": "Alg·èr", + "name:fy": "Algiers", + "name:gd": "Algiers", + "name:gl": "Alxer", + "name:gr": "Ἀλγέριον", + "name:grc": "Ἀλγέριον", + "name:he": "אלג'יר", + "name:hif": "Algiers", + "name:hr": "Alžir", + "name:hsb": "Alžěr", + "name:ht": "Alje", + "name:hu": "Algír", + "name:hy": "Ալժիր", + "name:id": "Aljir", + "name:ie": "Alger", + "name:io": "Aljer", + "name:is": "Algeirsborg", + "name:it": "Algeri", + "name:ja": "アルジェ", + "name:jv": "Aljir", + "name:ka": "მარკეტი", + "name:kab": "Zzayer", + "name:kk": "Алжир", + "name:ko": "알제", + "name:ku": "Cezayir", + "name:ky": "Алжир шаары", + "name:la": "Algeria", + "name:lad": "Arjel", + "name:lb": "Alger", + "name:lij": "Algè", + "name:lmo": "Algeri", + "name:ln": "Alje", + "name:lt": "Alžyras", + "name:lv": "Alžīra", + "name:mdf": "Алжир", + "name:mk": "Алжир", + "name:mrj": "Алжир", + "name:ms": "Algiers", + "name:nah": "Argel", + "name:nan": "Algiers", + "name:nl": "Algiers", + "name:nn": "Alger", + "name:no": "Alger", + "name:nov": "Algiers", + "name:oc": "Argièr", + "name:os": "Алжир", + "name:pap": "Algiers", + "name:pl": "Algier", + "name:pms": "Algeri", + "name:ps": "الجزيره", + "name:pt": "Argel", + "name:ro": "Alger", + "name:roa-rup": "Alger", + "name:ru": "Алжир", + "name:scn": "Algeri", + "name:sco": "Algiers", + "name:sh": "Alžir", + "name:simple": "Algiers", + "name:sk": "Alžír", + "name:sl": "Alžir", + "name:so": "Algiers", + "name:sr": "Алжир", + "name:su": "Aljir", + "name:sv": "Alger", + "name:sw": "Algiers", + "name:syc": "ܓܙܐܐܪ", + "name:tg": "Алҷазоир", + "name:th": "แอลเจียร์", + "name:tl": "Algiers", + "name:tr": "Cezayir", + "name:udm": "Алжир", + "name:ug": "ئالجىر", + "name:uk": "Алжир", + "name:ur": "الجزائر شہر", + "name:vec": "Algeri", + "name:vep": "Alžir", + "name:vi": "Algiers", + "name:vo": "Cäsair", + "name:war": "Algiers", + "name:wo": "Alse", + "name:yo": "Algiers", + "name:yue": "阿爾及爾", + "name:zh": "阿爾及爾/阿尔及尔", + "name:zh-Hans": "阿尔及尔", + "name:zu": "Algiers" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 3.0601882, + 36.7753606 + ] + }, + "id": "node/299617915" + }, + { + "type": "Feature", + "properties": { + "name": "Gitega", + "name:ar": "غيتيغا", + "name:az-Arab": "قیتقا", + "name:azb": "قیتقا", + "name:ckb": "گیتێگا", + "name:de": "Gitega", + "name:el": "Γκιτέγκα", + "name:en": "Gitega", + "name:es": "Gitega", + "name:fa": "گیتگا", + "name:fr": "Gitega", + "name:ko": "기테가", + "name:ks": "گیتیگا", + "name:ku": "Gîtêga", + "name:ru": "Гитега", + "name:ur": "گیتیگا" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 29.9249718, + -3.4284953 + ] + }, + "id": "node/301351574" + }, + { + "type": "Feature", + "properties": { + "name": "Tegucigalpa", + "name:ace": "Tègucigalpa", + "name:am": "ቴጉሲጋልፓ", + "name:ar": "تيجوسيجالبا", + "name:az": "Tequsiqalpa", + "name:be": "Тэгусігальпа", + "name:be-tarask": "Тэгусыгальпа", + "name:bg": "Тегусигалпа", + "name:bo": "ཐེ་གུ་སི་གེ་པ།", + "name:de": "Tegucigalpa", + "name:el": "Τεγκουσιγκάλπα", + "name:en": "Tegucigalpa", + "name:eo": "Tegucigalpo", + "name:fa": "تگوسیگالپا", + "name:fr": "Tegucigalpa", + "name:fy": "Tegusigalpa", + "name:he": "טגוסיגלפה", + "name:ht": "Tegousigoualpa", + "name:hu": "Tegucigalpa", + "name:hy": "Տեգուսիգալպա", + "name:is": "Tegucigalpa", + "name:ja": "テグシガルパ", + "name:ka": "ტეგუსიგალპა", + "name:ko": "테구시갈파", + "name:lt": "Tegusigalpa", + "name:lv": "Tegusigalpa", + "name:mk": "Тегусигалпа", + "name:nah": "Teōcuitlapan", + "name:oc": "Tegucigalpa", + "name:pl": "Tegucigalpa", + "name:ru": "Тегусигальпа", + "name:sah": "Тегусигалпа", + "name:sr": "Тегусигалпа", + "name:sv": "Tegucigalpa", + "name:th": "เตกูซิกัลปา", + "name:udm": "Тегусигальпа", + "name:uk": "Тегусігальпа", + "name:ur": "ٹیگوسیگلپا", + "name:zh": "特古西加爾巴" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -87.2040052, + 14.1057433 + ] + }, + "id": "node/305138115" + }, + { + "type": "Feature", + "properties": { + "name": "Sucre", + "name:ar": "سوكري", + "name:ay": "Sukri", + "name:az": "Sukre", + "name:be": "Сукрэ", + "name:be-tarask": "Сукрэ", + "name:bg": "Сукре", + "name:bo": "སུ་ཁུ་རེ།", + "name:de": "Sucre", + "name:el": "Σούκρε", + "name:en": "Sucre", + "name:eo": "Sukro", + "name:fa": "سوکره", + "name:fr": "Sucre", + "name:gn": "Sucre", + "name:he": "סוקרה", + "name:ht": "Sik", + "name:hu": "Sucre történelmi óvárosa", + "name:hy": "Սուկրե", + "name:id": "Sucre", + "name:is": "Súkre", + "name:ja": "スクレ", + "name:ka": "სუკრე", + "name:ko": "수크레", + "name:lt": "Sukrė", + "name:lv": "Sukre", + "name:mk": "Сукре", + "name:oc": "Sucre", + "name:os": "Сукре", + "name:pl": "Sucre", + "name:qu": "Chuqichaka", + "name:ru": "Сукре", + "name:sr": "Сукре", + "name:sv": "Sucre", + "name:tg": "Иёлоти Сукре", + "name:th": "ซูเกร", + "name:ug": "سۇكرې", + "name:uk": "Сукре", + "name:ur": "سکرے", + "name:zh": "蘇克雷" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -65.2594306, + -19.0477251 + ] + }, + "id": "node/313764484" + }, + { + "type": "Feature", + "properties": { + "name": "Santo Domingo", + "name:am": "ሳንቶ ዶሚንጎ", + "name:ar": "سانتو دومينجو", + "name:azb": "سانتو دومینقو", + "name:be": "Санта-Дамінга", + "name:be-tarask": "Санта-Дамінга", + "name:bg": "Санто Доминго", + "name:bo": "སཱན་ཏོ་ཌོ་མིང་གོ", + "name:ce": "Санто-Доминго", + "name:cs": "Santo Domingo", + "name:de": "Santo Domingo", + "name:el": "Σάντο Ντομίγκο", + "name:en": "Santo Domingo", + "name:eo": "Sankta Domingo", + "name:fa": "سانتو دومینگو", + "name:fr": "Saint-Domingue", + "name:gr": "Ἅγιος Δομίνικος", + "name:grc": "Ἅγιος Δομίνικος", + "name:he": "סנטו דומינגו", + "name:hr": "Santo Domingo", + "name:ht": "Sen Domeng", + "name:hu": "Santo Domingo", + "name:hy": "Սանտո Դոմինգո", + "name:is": "Santó Dómingó", + "name:it": "Santo Domingo", + "name:ja": "サントドミンゴ", + "name:ka": "სანტო-დომინგო", + "name:ko": "산토도밍고", + "name:la": "Dominicopolis", + "name:lt": "Santo Domingas", + "name:mk": "Санто Доминго", + "name:nl": "Santo Domingo", + "name:no": "Santo Domingo", + "name:oc": "Sant Domingo", + "name:os": "Санто-Доминго", + "name:pl": "Santo Domingo", + "name:pt": "São Domingos", + "name:qu": "Santo Domingo llaqta", + "name:ru": "Санто-Доминго", + "name:sah": "Санто Доминго", + "name:sk": "Santo Domingo", + "name:sr": "Санто Доминго", + "name:sv": "Santo Domingo", + "name:tg": "Вилояти Санто Доминго", + "name:th": "ซันโตโดมิงโก", + "name:tr": "Santo Domingo", + "name:ug": "سانتو دومىنگو", + "name:uk": "Санто-Домінго", + "name:ur": "سانتو دومنگو", + "name:war": "Santo Domingo de Guzmán", + "name:zh": "聖多明各" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -69.942111, + 18.4801972 + ] + }, + "id": "node/315342451" + }, + { + "type": "Feature", + "properties": { + "name": "الرياض", + "name:af": "Riaad", + "name:am": "ሪያድ", + "name:ar": "الرياض", + "name:arz": "الرياض", + "name:az": "Ər-Riyad", + "name:be": "Эр-Рыяд", + "name:be-tarask": "Рыяд", + "name:bg": "Рияд", + "name:bo": "རིས་ཡག", + "name:br": "Riyadh", + "name:bs": "Rijad", + "name:ca": "Al-Riyad", + "name:ckb": "ڕیاز", + "name:cs": "Rijád", + "name:cy": "Riyadh", + "name:da": "Riyadh", + "name:de": "Riad", + "name:diq": "Riyad", + "name:el": "Ριάντ", + "name:en": "Riyadh", + "name:eo": "Riado", + "name:es": "Riad", + "name:et": "Ar-Riyāḑ", + "name:eu": "Riad", + "name:fa": "ریاض", + "name:fi": "Riad", + "name:fo": "Riyadh", + "name:fr": "Riyad", + "name:frp": "Riyad", + "name:fy": "Riyad", + "name:ga": "Riyadh", + "name:gag": "Riyad", + "name:gd": "Riyadh", + "name:haw": "Riyadh", + "name:he": "ריאד", + "name:hif": "Riyadh", + "name:hr": "Rijad", + "name:ht": "Riyad", + "name:hu": "Rijád", + "name:hy": "Էր Ռիադ", + "name:id": "Riyadh", + "name:ilo": "Riyadh", + "name:is": "Ríad", + "name:it": "Riyad", + "name:ja": "リヤド", + "name:ka": "ერ-რიადი", + "name:kab": "Riyaḍ", + "name:kk": "Эр-Рияд", + "name:kl": "Riyadh", + "name:ko": "리야드", + "name:ku": "Riyad", + "name:ky": "Эр-Рияд", + "name:la": "Riadum", + "name:lmo": "Riyad", + "name:lt": "Rijadas", + "name:lv": "Rijāda", + "name:mhr": "Эр-Рияд", + "name:mk": "Ријад", + "name:ms": "Riyadh", + "name:mzn": "ریاض", + "name:ne": "रियाद", + "name:nl": "Riyad", + "name:nn": "Riyadh", + "name:no": "Riyadh", + "name:nov": "Riyad", + "name:oc": "Riyad", + "name:os": "Эр-Рияд", + "name:pl": "Rijad", + "name:pms": "Riyadh", + "name:ps": "رياض", + "name:pt": "Riade", + "name:ru": "Эр-Рияд", + "name:scn": "Rihad", + "name:sco": "Riyadh", + "name:sh": "Rijad", + "name:simple": "Riyadh", + "name:sk": "Rijád", + "name:sl": "Rijad", + "name:sq": "Riadi", + "name:sr": "Ријад", + "name:su": "Riyadh", + "name:sv": "Riyadh", + "name:sw": "Riyad", + "name:tg": "Эр-Рияд", + "name:th": "ริยาด", + "name:tl": "Riyadh", + "name:tr": "Riyad", + "name:ug": "رىياد", + "name:uk": "Ер-Ріяд", + "name:ur": "ریاض", + "name:uz": "Ar-Riyod", + "name:vi": "Ri-át", + "name:vo": "Riyad", + "name:war": "Riyadh", + "name:yi": "ריאד", + "name:yo": "Riyadh", + "name:zh": "利雅得/利雅德", + "name:zh-Hans": "利雅得", + "name:zh-Hant": "利雅德" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 46.7160104, + 24.638916 + ] + }, + "id": "node/315358390" + }, + { + "type": "Feature", + "properties": { + "name:ar": "نايبييدو", + "name:az": "Naypyida", + "name:be": "Найп'іда", + "name:be-tarask": "Найп'іда", + "name:bg": "Найпидо", + "name:ckb": "نایپیداو", + "name:cs": "Neipyijto", + "name:cv": "Нейпьидо", + "name:de": "Nay Pyi Taw", + "name:el": "Νάι Πι Τάου", + "name:en": "Nay Pyi Taw", + "name:es": "Naipyidó", + "name:et": "Nay Pyi Taw", + "name:eu": "Naypyidaw", + "name:fa": "نایپیداو", + "name:fi": "Naypyidaw", + "name:fr": "Naypyidaw", + "name:he": "נייפידאו", + "name:hr": "Naypyidaw", + "name:hu": "Nepjida", + "name:hy": "Նայպյիդաու", + "name:is": "Nay Pyi Taw", + "name:ja": "ネピドー", + "name:ka": "ნაიფიიდო", + "name:ko": "네피도", + "name:lt": "Neipidas", + "name:lv": "Nepjido", + "name:mk": "Непјидо", + "name:nl": "Nay Pyi Taw", + "name:oc": "Nay Pyi Taw", + "name:os": "Нейпьидо", + "name:pl": "Naypyidaw", + "name:pt": "Nepiedó", + "name:ru": "Нейпьидо", + "name:sk": "Nepjito", + "name:sq": "Nepxhidou", + "name:sr": "Нејпјидо", + "name:sv": "Naypyitaw", + "name:th": "เนปีดอ", + "name:ug": "ناپيىداۋ", + "name:uk": "Найп'їдо", + "name:ur": "نیپیداو", + "name:vi": "Nây-pi-tô", + "name:vo": "Nepyido", + "name:zh": "内比都/奈比多", + "name:zh-Hans-CN": "内比都", + "name:zh-Hant-TW": "奈比多" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 96.1344976, + 19.7540045 + ] + }, + "id": "node/315390382" + }, + { + "type": "Feature", + "properties": { + "name": "اسلام آباد", + "name:am": "ኢስላማባድ", + "name:ar": "إسلام آباد", + "name:arz": "اسلام اباد", + "name:az": "İslamabad", + "name:azb": "ایسلام آباد", + "name:be": "Ісламабад", + "name:bg": "Исламабад", + "name:bo": "ཨི་སི་ལམ་བོ།", + "name:ckb": "ئیسلاماباد", + "name:cs": "Islámábád", + "name:de": "Islamabad", + "name:dv": "އިސްލާމްއާބާދު", + "name:el": "Ισλαμαμπάντ", + "name:en": "Islamabad", + "name:eo": "Islamabado", + "name:es": "Islamabad", + "name:et": "Islāmābād", + "name:eu": "Islamabad", + "name:fa": "اسلام‌آباد", + "name:fr": "Islamabad", + "name:gr": "Ἰσλαμαβάδη", + "name:grc": "Ἰσλαμαβάδη", + "name:he": "איסלמבד", + "name:hu": "Iszlámábád", + "name:hy": "Իսլամաբադ", + "name:is": "Islamabad", + "name:it": "Islamabad", + "name:ja": "イスラーマーバード首都圏;イスラマバード", + "name:ka": "ისლამაბადი", + "name:kk": "Исламабад", + "name:kmr": "ئیسلاماباد", + "name:ko": "이슬라마바드", + "name:ks": "اِسلام آبادٖ", + "name:ku": "Îslamabad", + "name:ku-Arab": "ئیسلاماباد", + "name:la": "Islamabada", + "name:lez": "Исламабад", + "name:lrc": "اْسلام آباد", + "name:lt": "Islamabadas", + "name:lv": "Islāmābāda", + "name:mk": "Исламабад", + "name:mn": "Исламабад", + "name:mzn": "اسلام آباد", + "name:nl": "Islamabad", + "name:nn": "Islamabad", + "name:no": "Islamabad", + "name:oc": "Islamabad", + "name:os": "Исламабад", + "name:pl": "Islamabad", + "name:pnt": "Ἰσλαμαβάδη", + "name:ps": "اسلام آباد", + "name:pt": "Islamabade", + "name:ru": "Исламабад", + "name:sah": "Исламабад", + "name:sd": "اسلام آباد", + "name:sk": "Islamabad", + "name:sq": "Islamabadi", + "name:sr": "Исламабад", + "name:sv": "Islamabad", + "name:tg": "Исламабад", + "name:th": "อิสลามาบัด", + "name:tr": "İslamabad", + "name:ug": "ئىسلامئاباد", + "name:uk": "Ісламабад", + "name:ur": "اسلام آباد", + "name:vi": "Islamabad", + "name:yi": "איסלאמאבאד", + "name:yue": "伊斯蘭堡", + "name:zh": "伊斯蘭堡" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 73.0651511, + 33.6938118 + ] + }, + "id": "node/316440978" + }, + { + "type": "Feature", + "properties": { + "name": "Yamoussoukro", + "name:am": "ያሙሱክሮ", + "name:ar": "ياموسوكرو", + "name:az": "Yamosukro", + "name:be": "Ямусукра", + "name:bg": "Ямусукро", + "name:bo": "ཡམ་སོ་ཁེ་རོ།", + "name:ckb": "یامۆسۆکرۆ", + "name:de": "Yamoussoukro", + "name:diq": "Yamusukro", + "name:el": "Γιαμουσσούκρο", + "name:en": "Yamoussoukro", + "name:eo": "Jamusukro", + "name:es": "Yamusukro", + "name:eu": "Jamusukro", + "name:fa": "یاموسوکرو", + "name:fr": "Yamoussoukro", + "name:he": "יאמוסוקרו", + "name:ht": "Yamousoukro", + "name:hu": "Yamoussoukro", + "name:hy": "Յամուսուկրո", + "name:is": "Yamoussoukro", + "name:it": "Yamoussoukro", + "name:ja": "ヤムスクロ", + "name:ka": "იამუსუკრო", + "name:ko": "야무수크로", + "name:ky": "Ямусукро", + "name:la": "Iamoussoukro", + "name:lt": "Jamusukras", + "name:lv": "Jamusukro", + "name:mk": "Јамусукро", + "name:mrj": "Ямусукро", + "name:nah": "Yamusukro", + "name:nl": "Yamoussoukro", + "name:no": "Yamoussoukro", + "name:nov": "Yamusukro", + "name:oc": "Yamoussoukro", + "name:pl": "Jamusukro", + "name:pt": "Iamussucro", + "name:ru": "Ямусукро", + "name:sr": "Јамусукро", + "name:sv": "Yamoussoukro", + "name:tg": "Ямусукро", + "name:th": "ยามุสซุโกร", + "name:tr": "Yamoussoukro", + "name:udm": "Ямусукро", + "name:ug": "يامۇسسۇكرو", + "name:uk": "Ямусукро", + "name:ur": "یاموسوکرو", + "name:zh": "亞穆蘇克羅" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -5.273263, + 6.809107 + ] + }, + "id": "node/319225774" + }, + { + "type": "Feature", + "properties": { + "name": "Yaoundé", + "name:am": "ያዉንዴ", + "name:ar": "ياوندي", + "name:az": "Yaunde", + "name:be": "Яундэ", + "name:be-tarask": "Яундэ", + "name:bg": "Яунде", + "name:bo": "ཡོན་དྷི།", + "name:ckb": "یائوندێ", + "name:cs": "Yaoundé", + "name:de": "Jaunde", + "name:el": "Γιαουντέ", + "name:en": "Yaounde", + "name:eo": "Jaundeo", + "name:es": "Yaoundé", + "name:eu": "Jaunde", + "name:fa": "یائونده", + "name:fr": "Yaoundé", + "name:he": "יאונדה", + "name:ht": "Yaounde", + "name:hu": "Yaoundé", + "name:hy": "Յաունդե", + "name:io": "Yaounde", + "name:is": "Jánde", + "name:it": "Yaoundé", + "name:ja": "ヤウンデ", + "name:ka": "იაუნდე", + "name:ko": "야운데", + "name:ky": "Яунде", + "name:la": "Yaunde", + "name:lt": "Jaundė", + "name:lv": "Jaunde", + "name:mk": "Јаунде", + "name:mrj": "Яунде", + "name:nah": "Yaundé", + "name:nl": "Yaoundé", + "name:no": "Yaoundé", + "name:nov": "Yaunde", + "name:oc": "Yaoundé", + "name:pl": "Jaunde", + "name:pt": "Iaundé", + "name:ru": "Яунде", + "name:sk": "Yaoundé", + "name:so": "Yawunde", + "name:sr": "Јаунде", + "name:sv": "Yaoundé", + "name:sw": "Yaounde", + "name:tg": "Яунде", + "name:th": "ยาอุนเด", + "name:tr": "Yaoundé", + "name:udm": "Яунде", + "name:uk": "Яунде", + "name:ur": "یاؤندے", + "name:wo": "Yaunde", + "name:yi": "יאונדע", + "name:yue": "耶溫得", + "name:zh": "雅温得" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 11.5213344, + 3.8689867 + ] + }, + "id": "node/331136682" + }, + { + "type": "Feature", + "properties": { + "name": "Moroni موروني", + "name:am": "ሞሮኒ", + "name:ar": "موروني", + "name:azb": "مورونی", + "name:be": "Мароні", + "name:bg": "Морони", + "name:bo": "མོ་རོ་ནི།", + "name:ckb": "مۆرۆنی", + "name:de": "Moroni", + "name:el": "Μορονί", + "name:en": "Moroni", + "name:es": "Moroni", + "name:fa": "موروني", + "name:fr": "Moroni", + "name:fy": "Morony", + "name:he": "מורוני", + "name:hu": "Moroni", + "name:hy": "Մորոնի", + "name:id": "Moroni", + "name:is": "Moróní", + "name:ja": "モロニ", + "name:jv": "Moroni", + "name:ka": "მორონი", + "name:kab": "Moroni", + "name:ko": "모로니", + "name:ku": "Moronî", + "name:ky": "Морони", + "name:lt": "Moronis", + "name:mk": "Морони", + "name:mn": "Морони", + "name:nl": "Moroni", + "name:no": "Moroni", + "name:oc": "Moròni", + "name:ota": "مورونی", + "name:pl": "Moroni", + "name:ps": "مورونی", + "name:pt": "Moroni", + "name:ru": "Морони", + "name:sco": "Moroni", + "name:simple": "Moroni", + "name:sr": "Морони", + "name:sv": "Moroni", + "name:th": "โมโรนี", + "name:tl": "Moroni", + "name:tr": "Moroni", + "name:udm": "Морони", + "name:uk": "Мороні", + "name:ur": "مورونی", + "name:vi": "Moroni", + "name:war": "Moroni", + "name:yo": "Moroni", + "name:zh": "莫羅尼" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 43.2543044, + -11.6931255 + ] + }, + "id": "node/339324562" + }, + { + "type": "Feature", + "properties": { + "name": "Mājro", + "name:af": "Majuro", + "name:am": "ማጁሮ", + "name:ar": "ماجورو", + "name:ast": "Mayuru", + "name:az": "Macuro", + "name:ba": "Маджуро", + "name:be": "Маджура", + "name:be-tarask": "Маджура", + "name:bg": "Маджуро", + "name:bo": "མ་ཇུ་རོ།", + "name:br": "Majuro", + "name:bs": "Majuro", + "name:ca": "Majuro", + "name:ceb": "Majuro", + "name:cs": "Majuro", + "name:cy": "Majuro", + "name:da": "Majuro", + "name:de": "Majuro", + "name:el": "Ματζούρο", + "name:en": "Majuro", + "name:eo": "Majuro", + "name:es": "Majuro", + "name:et": "Majuro atoll", + "name:eu": "Majuro", + "name:fa": "ماجورو", + "name:fi": "Majuro", + "name:fr": "Majuro", + "name:fy": "Majuro", + "name:gd": "Majuro", + "name:gl": "Majuro", + "name:gn": "Majuro", + "name:hak": "Majuro", + "name:he": "מג'ורו", + "name:hif": "Majuro", + "name:hr": "Majuro", + "name:ht": "Majouro", + "name:hu": "Majuro", + "name:hy": "Մաջուրո", + "name:id": "Majuro", + "name:ie": "Majuro", + "name:io": "Majuro", + "name:is": "Majúró", + "name:it": "Majuro", + "name:ja": "マジュロ", + "name:ka": "მაჯურო", + "name:kk": "Маджуро", + "name:ko": "마주로", + "name:ky": "Мажeро", + "name:la": "Madzurum", + "name:lb": "Majuro", + "name:lij": "Majuro", + "name:lt": "Madžūras", + "name:lv": "Madžuro", + "name:mh": "Mājro", + "name:mk": "Маџуро", + "name:ms": "Majuro", + "name:nah": "Majuro", + "name:nds": "Majuro-Atoll", + "name:nl": "Majuro", + "name:nn": "Majuro", + "name:no": "Majuro", + "name:ny": "Majuro", + "name:oc": "Majuro", + "name:os": "Маджуро", + "name:pl": "Majuro", + "name:ps": "ماجورو", + "name:pt": "Majuro", + "name:ro": "Majuro", + "name:ru": "Маджуро", + "name:rw": "Majuro", + "name:sah": "Мадьуро", + "name:sat": "ᱢᱟᱡᱩᱨᱚ", + "name:sc": "Majuro", + "name:sco": "Majuro", + "name:sh": "Majuro", + "name:sk": "Dalap-Uliga-Darrit", + "name:sl": "Majuro", + "name:sn": "Majuro", + "name:sq": "Majuro", + "name:sr": "Маџуро", + "name:sv": "Majuro", + "name:sw": "Majuro", + "name:szl": "Majuro", + "name:tg": "Маҷуро", + "name:th": "มาจูโร", + "name:tl": "Majuro", + "name:tr": "Majuro", + "name:ty": "Majuro", + "name:uk": "Маджуро", + "name:ur": "ماجورو", + "name:uz": "Majuro", + "name:vep": "Madžuro", + "name:vi": "Majuro", + "name:war": "Majuro", + "name:wuu": "马朱罗", + "name:xmf": "მაჯურო", + "name:zh": "马朱罗", + "name:zh-Hans": "马朱罗", + "name:zh-Hant": "馬朱羅" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 171.3816354, + 7.0909924 + ] + }, + "id": "node/385761740" + }, + { + "type": "Feature", + "properties": { + "name": "Apia", + "name:am": "አፒያ", + "name:ar": "أبيا", + "name:az": "Apia", + "name:be": "Апія", + "name:be-tarask": "Апія", + "name:bg": "Апия", + "name:bo": "ཨ་པི་ཡ།", + "name:ckb": "ئەپیا", + "name:cs": "Apia", + "name:da": "Apia", + "name:de": "Apia", + "name:el": "Απία", + "name:en": "Apia", + "name:eo": "Apio", + "name:es": "Apia", + "name:et": "Apia", + "name:fa": "آپیا", + "name:fi": "Apia", + "name:fr": "Apia", + "name:he": "אפיה", + "name:hr": "Apia", + "name:ht": "Apiya", + "name:hu": "Apia", + "name:is": "Apía", + "name:it": "Apia", + "name:ja": "アピア", + "name:ka": "აპია", + "name:ko": "아피아", + "name:lt": "Apija", + "name:lv": "Apija", + "name:mk": "Апија", + "name:mrj": "Апиа", + "name:nl": "Apia", + "name:no": "Apia", + "name:os": "Апиæ", + "name:pl": "Apia", + "name:pt": "Apia", + "name:ro": "Apia", + "name:ru": "Апиа", + "name:sah": "Апиа", + "name:sk": "Apia", + "name:sl": "Apia", + "name:sr": "Апија", + "name:sv": "Apia", + "name:th": "อาปีอา", + "name:uk": "Апіа", + "name:ur": "آپیا", + "name:vi": "Apia", + "name:zh": "阿皮亞" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -171.7692793, + -13.8343691 + ] + }, + "id": "node/388977545" + }, + { + "type": "Feature", + "properties": { + "name": "St. John's", + "name:af": "St. John's", + "name:am": "ሴንት ጆንስ፥ አንቲጋ እና ባርቡዳ", + "name:an": "Saint John's", + "name:ar": "سانت جونز، أنتيغوا وبربودا", + "name:ay": "Saint John's", + "name:be": "Сент-Джонс", + "name:be-tarask": "Сэнт-Джонс", + "name:bg": "Сейнт Джонс", + "name:bo": "སེནཊི་ཇཱོན་སི།", + "name:br": "Saint John's", + "name:ckb": "سانت جۆنس", + "name:cs": "Saint John's", + "name:da": "Saint John's", + "name:de": "Saint John’s", + "name:el": "Σαιντ Τζονς", + "name:en": "St. John's", + "name:eo": "Santjonso", + "name:es": "Saint John", + "name:et": "Saint John's", + "name:fa": "سینت جانز", + "name:fi": "St. John’s", + "name:fr": "Saint John's", + "name:fy": "Sint John's", + "name:gd": "Saint John's", + "name:gl": "Saint John's", + "name:he": "סנט ג'ונס", + "name:hif": "Saint John's", + "name:hr": "St. John's", + "name:ht": "Sen Jòns", + "name:hu": "St. John's", + "name:hy": "Սենթ Ջոնս", + "name:id": "St. John's, Antigua dan Barbuda", + "name:io": "St Johns", + "name:it": "Saint John's", + "name:ja": "セントジョンズ", + "name:ka": "სენტ-ჯონზი", + "name:ko": "세인트존스", + "name:ku": "Saint John's", + "name:kw": "Saint John's, Antiga ha Barbuda", + "name:la": "Urbs Sancti Iohannis", + "name:lt": "Sent Džonsas", + "name:lv": "Sentdžonsa", + "name:mk": "Сент Џон", + "name:nah": "Saint John", + "name:nl": "Saint John's", + "name:nn": "Saint John's", + "name:no": "Saint John's", + "name:oc": "Saint John's", + "name:pl": "Saint John's", + "name:pt": "São João", + "name:ru": "Сент-Джонс", + "name:sah": "Сент Дьонс", + "name:sh": "St. John's", + "name:sk": "Saint John’s", + "name:sq": "Saint John's", + "name:sr": "Сент Џонс", + "name:sv": "Saint John's", + "name:th": "เซนต์จอนส์", + "name:tl": "San Juan, Antigua at Barbuda", + "name:tr": "St. John's", + "name:uk": "Сент-Джонс", + "name:ur": "سینٹ جونز", + "name:vep": "Sent Džons", + "name:zh": "聖約翰" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -61.8448509, + 17.1184569 + ] + }, + "id": "node/425746989" + }, + { + "type": "Feature", + "properties": { + "name": "Warszawa", + "name:ab": "Варшава", + "name:ace": "Warsawa", + "name:af": "Warskou", + "name:ak": "Warsaw", + "name:am": "ዋርሶው", + "name:an": "Varsovia", + "name:ar": "وارسو", + "name:arc": "ܘܐܪܣܘ", + "name:arz": "وارسو", + "name:ast": "Varsovia", + "name:az": "Varşava", + "name:ba": "Варшава", + "name:bat-smg": "Varšova", + "name:be": "Варшава", + "name:be-tarask": "Варшава", + "name:bg": "Варшава", + "name:bi": "Warsaw", + "name:bo": "ཝར་སོ།", + "name:br": "Varsovia", + "name:bs": "Varšava", + "name:ca": "Varsòvia", + "name:ckb": "وارساو", + "name:crh": "Varşava", + "name:cs": "Varšava", + "name:csb": "Warszawa", + "name:cu": "Варшава", + "name:cv": "Варшава", + "name:cy": "Warsaw", + "name:da": "Warszawa", + "name:de": "Warschau", + "name:diq": "Warşowa", + "name:dsb": "Waršawa", + "name:ee": "Warsaw", + "name:el": "Βαρσοβία", + "name:en": "Warsaw", + "name:eo": "Varsovio", + "name:es": "Varsovia", + "name:et": "Varssavi", + "name:eu": "Varsovia", + "name:fa": "ورشو", + "name:fi": "Varsova", + "name:fiu-vro": "Varssavi", + "name:fo": "Warszawa", + "name:fr": "Varsovie", + "name:frp": "Varsovie", + "name:fy": "Warsjau", + "name:ga": "Vársá", + "name:gag": "Varşava", + "name:gd": "Warsaw", + "name:gl": "Varsovia", + "name:gv": "Warszawa", + "name:he": "ורשה", + "name:hif": "Warsaw", + "name:hr": "Varšava", + "name:hsb": "Waršawa", + "name:ht": "Vasovi", + "name:hu": "Varsó", + "name:hy": "Վարշավա", + "name:ia": "Varsovia", + "name:id": "Warsawa", + "name:ie": "Warszawa", + "name:io": "Warszawa", + "name:is": "Varsjá", + "name:it": "Varsavia", + "name:ja": "ワルシャワ", + "name:jbo": "varcavas", + "name:jv": "Warsawa", + "name:ka": "ვარშავა", + "name:kk": "Варшава", + "name:kl": "Warszawa", + "name:ko": "바르샤바", + "name:krc": "Варшава", + "name:ku": "Warşova", + "name:kv": "Варшава", + "name:kw": "Warszawa", + "name:ky": "Варшава", + "name:la": "Varsovia", + "name:lb": "Warschau", + "name:lij": "Varsavvia", + "name:lmo": "Varsavia", + "name:ln": "Warsaw", + "name:lt": "Varšuva", + "name:lv": "Varšava", + "name:mg": "Varsôvia", + "name:mi": "Pakangakite", + "name:mk": "Варшава", + "name:mn": "Варшав", + "name:mrj": "Варшава", + "name:ms": "Warsaw", + "name:mt": "Varsavja", + "name:na": "Warsaw", + "name:nah": "Varsovia", + "name:nan": "Warszawa", + "name:nap": "Varsavia", + "name:nds": "Warschau", + "name:nl": "Warschau", + "name:nn": "Warszawa", + "name:no": "Warszawa", + "name:nov": "Varsava", + "name:oc": "Varsòvia", + "name:os": "Варшавæ", + "name:pap": "Varsovia", + "name:pdc": "Woarschau", + "name:pih": "Worsaaw", + "name:pl": "Warszawa", + "name:pms": "Varsavia", + "name:pt": "Varsóvia", + "name:qu": "Warszawa", + "name:rm": "Varsovia", + "name:ro": "Varșovia", + "name:roa-rup": "Varshava", + "name:ru": "Варшава", + "name:sah": "Варшава", + "name:sc": "Varsavia", + "name:scn": "Varsavia", + "name:sco": "Warsaw", + "name:sh": "Varšava", + "name:sk": "Varšava", + "name:sl": "Varšava", + "name:sq": "Varshava", + "name:sr": "Варшава", + "name:st": "Warsaw", + "name:sv": "Warszawa", + "name:sw": "Warshawa", + "name:szl": "Warszawa", + "name:tet": "Varsóvia", + "name:tg": "Варшава", + "name:th": "วอร์ซอ", + "name:tk": "Warşawa", + "name:tl": "Warsaw", + "name:tpi": "Woso", + "name:tr": "Varşova", + "name:tt": "Варшава", + "name:udm": "Варшава", + "name:ug": "Warshawa", + "name:uk": "Варшава", + "name:ur": "وارسا", + "name:uz": "Varshava", + "name:vec": "Varsavia", + "name:vep": "Varšav", + "name:vi": "Warszawa", + "name:war": "Warsovya", + "name:wo": "Warsaw", + "name:xmf": "ვარშავა", + "name:yi": "ווארשע", + "name:yo": "Warsaw", + "name:yue": "華沙", + "name:zh": "華沙", + "name:zh-Hans": "华沙", + "name:zh-Hant": "華沙", + "name:zu": "IWarshawa" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 21.0067249, + 52.2319581 + ] + }, + "id": "node/428339515" + }, + { + "type": "Feature", + "properties": { + "name": "Brazzaville", + "name:am": "ብራዛቪል", + "name:ar": "برازافيل", + "name:az": "Brazzavil", + "name:be": "Бразавіль", + "name:bg": "Бразавил", + "name:bo": "བ་ར་ཛ་བི་ལི།", + "name:ckb": "برازاڤیل", + "name:de": "Brazzaville", + "name:el": "Μπραζαβίλ", + "name:en": "Brazzaville", + "name:eo": "Brazavilo", + "name:es": "Brazzaville", + "name:fa": "برازاویل", + "name:fr": "Brazzaville", + "name:he": "ברזוויל", + "name:ht": "Brazavil", + "name:hu": "Brazzaville", + "name:hy": "Բրազավիլ", + "name:is": "Brazzaville", + "name:ja": "ブラザヴィル", + "name:ka": "ბრაზავილი", + "name:kg": "Mavula", + "name:ko": "브라자빌", + "name:la": "Brazzapolis", + "name:lt": "Brazavilis", + "name:lv": "Brazavila", + "name:mk": "Бразавил", + "name:nov": "Brazavil", + "name:oc": "Brazzaville", + "name:os": "Браззавиль", + "name:pl": "Brazzaville", + "name:pt": "Brazzaville", + "name:ru": "Браззавиль", + "name:so": "Barasafille", + "name:sr": "Бразавил", + "name:sv": "Brazzaville", + "name:tg": "Браззавил", + "name:th": "บราซซาวิล", + "name:udm": "Браззавиль", + "name:uk": "Браззавіль", + "name:ur": "برازاویلے", + "name:wo": "Brasawil", + "name:zh": "布拉柴维尔", + "name:zh-Hans": "布拉柴维尔" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 15.2712256, + -4.2694407 + ] + }, + "id": "node/435903633" + }, + { + "type": "Feature", + "properties": { + "name": "Alofi", + "name:ar": "الوفي (نييوي)", + "name:arz": "الوفى", + "name:ast": "Alofi", + "name:az": "Alofi", + "name:be": "Алофі", + "name:be-tarask": "Алофі", + "name:be-x-old": "Алофі", + "name:bg": "Алофи", + "name:bs": "Alofi", + "name:ca": "Alofi", + "name:cdo": "Alofi", + "name:ceb": "Alofi", + "name:ckb": "ئەلۆفی", + "name:cs": "Alofi", + "name:cv": "Алофи", + "name:da": "Alofi", + "name:de": "Alofi", + "name:el": "Αλόφι", + "name:en": "Alofi", + "name:eo": "Alofo", + "name:es": "Alofi", + "name:et": "Alofi", + "name:eu": "Alofi", + "name:fa": "الوفی", + "name:fi": "Alofi", + "name:fiu-vro": "Alofi", + "name:fr": "Alofi", + "name:ga": "Alofi", + "name:gd": "Alofi", + "name:gl": "Alofi", + "name:hak": "Alofi", + "name:he": "אלופי", + "name:hr": "Alofi", + "name:hu": "Alofi", + "name:hy": "Ալոֆի", + "name:id": "Alofi", + "name:io": "Alofi", + "name:is": "Alofi", + "name:it": "Alofi", + "name:ja": "アロフィ", + "name:ka": "ალოფი", + "name:ko": "알로피", + "name:lmo": "Alofi", + "name:lt": "Alofis", + "name:lv": "Alofi", + "name:mk": "Алофи", + "name:ms": "Alofi", + "name:nan": "Alofi", + "name:nl": "Alofi", + "name:nn": "Alofi", + "name:no": "Alofi", + "name:pih": "Alofi", + "name:pl": "Alofi", + "name:pms": "Alofi", + "name:ps": "الوفي", + "name:pt": "Alofi", + "name:ro": "Alofi", + "name:ru": "Алофи", + "name:sk": "Alofi", + "name:sl": "Alofi", + "name:sn": "Alofi", + "name:so": "Alofi", + "name:sq": "Alofi", + "name:sr": "Алофи", + "name:sv": "Alofi", + "name:sw": "Alofi", + "name:szl": "Alofi", + "name:tg": "Алофи", + "name:th": "อาโลฟี", + "name:tr": "Alofi", + "name:ty": "Alofi", + "name:uk": "Алофі", + "name:ur": "الوفی", + "name:vi": "Alofi", + "name:war": "Alofi", + "name:wuu": "阿洛菲", + "name:yue": "阿洛菲", + "name:zh": "阿洛菲" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -169.919199, + -19.0534159 + ] + }, + "id": "node/448768937" + }, + { + "type": "Feature", + "properties": { + "name": "Ciudad de Guatemala", + "name:ace": "Banda Guatemala", + "name:af": "Guatemala-stad", + "name:ar": "مدينة غواتيمالا", + "name:ay": "Watimala marka", + "name:az": "Qvatemala", + "name:be": "Гватэмала", + "name:bg": "Гватемала", + "name:bo": "གུ་ཝེ་ཐི་མ་ལ་གྲོང་ཁྱེར།", + "name:br": "Ciudad de Guatemala", + "name:bs": "Guatemala City", + "name:ca": "Ciutat de Guatemala", + "name:cs": "Ciudad de Guatemala", + "name:cy": "Dinas Guatemala", + "name:da": "Guatamala City", + "name:de": "Guatemala-Stadt", + "name:el": "Πόλη της Γουατεμάλας", + "name:en": "Guatemala City", + "name:eo": "Gvatemalurbo", + "name:es": "Ciudad de Guatemala", + "name:et": "Guatemala", + "name:eu": "Guatemalako Hiria", + "name:fa": "گواتمالاسیتی", + "name:fi": "Guatemala", + "name:fr": "Guatemala", + "name:fy": "Gûatemala-Stêd", + "name:gd": "Baile Guatemala", + "name:gl": "Cidade de Guatemala - Ciudad de Guatemala", + "name:he": "גואטמלה סיטי", + "name:hif": "Guatemala City", + "name:hr": "Guatemala", + "name:ht": "Siwdad", + "name:hu": "Guatemalaváros", + "name:id": "Kota Guatemala", + "name:ie": "Guatemala Cité", + "name:io": "Guatemala-Urbo", + "name:is": "Gvatemalaborg", + "name:it": "Città del Guatemala", + "name:ja": "グアテマラシティ", + "name:ka": "გვატემალა", + "name:ko": "과테말라", + "name:ku": "Guatemala", + "name:lmo": "Cità del Guatemala", + "name:lt": "Gvatemala", + "name:lv": "Gvatemala", + "name:mk": "Гватемала", + "name:nah": "Āltepētl Cuauhtēmallān", + "name:nan": "Guatemala Chhī", + "name:nl": "Guatemala-Stad", + "name:nn": "Guatemala by", + "name:no": "Guatemala by", + "name:nov": "Guatemala Urbe", + "name:oc": "Ciutat de Guatemala", + "name:os": "Гватемалæ", + "name:pap": "Siudad di Guatemala", + "name:pl": "Gwatemala", + "name:pms": "Sità ëd Guatemala", + "name:pt": "Cidade da Guatemala", + "name:qu": "Watimala llaqta", + "name:ro": "Ciudad de Guatemala", + "name:roa-rup": "Guatemala casaba", + "name:ru": "Гватемала", + "name:sah": "Гуатемала", + "name:sco": "Guatemala Ceety", + "name:se": "Ciudad de Guatemala", + "name:sk": "Guatemala", + "name:sl": "Ciudad Guatemala", + "name:sr": "Град Гватемала", + "name:sv": "Guatemala City", + "name:sw": "Guatemala City", + "name:th": "กัวเตมาลาซิตี", + "name:tl": "Lungsod ng Guwatemala", + "name:tr": "Guatemala", + "name:udm": "Гватемала", + "name:ug": "گۋاتېمالا شەھىرى", + "name:uk": "Гватемала", + "name:ur": "گوئٹے مالا شہر", + "name:vi": "Thành phố Guatemala", + "name:vo": "Ciudad de Guatemala", + "name:war": "Syudad han Guatemala", + "name:yo": "Ìlú Guatẹmálà", + "name:zh": "危地马拉城", + "name:zh-Hans": "危地马拉城", + "name:zh-Hant": "瓜地馬拉城/危地馬拉城", + "name:zh-Hant-HK": "危地馬拉城", + "name:zh-Hant-TW": "瓜地馬拉城" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -90.5185188, + 14.6222328 + ] + }, + "id": "node/472114145" + }, + { + "type": "Feature", + "properties": { + "name": "Bratislava", + "name:ar": "براتيسلافا", + "name:arc": "ܒܪܛܝܣܠܐܒܐ", + "name:azb": "براتیسلاوا", + "name:be": "Браціслава", + "name:be-tarask": "Браціслава", + "name:ckb": "براتسیلاڤا", + "name:cu": "Братислава", + "name:cv": "Братислава", + "name:de": "Bratislava", + "name:diq": "Bratislawa", + "name:el": "Μπρατισλάβα", + "name:en": "Bratislava", + "name:eo": "Bratislavo", + "name:es": "Bratislava", + "name:fa": "براتیسلاوا", + "name:fr": "Bratislava", + "name:gr": "Ἰστρόπολις", + "name:grc": "Ἰστρόπολις", + "name:hr": "Bratislava", + "name:hu": "Pozsony", + "name:it": "Bratislava", + "name:ja": "ブラチスラヴァ", + "name:ka": "ბრატისლავა", + "name:kk": "Братислава", + "name:ko": "브라티슬라바", + "name:koi": "Братислава", + "name:ku": "Bratîslava", + "name:kv": "Братислава", + "name:la": "Posonium", + "name:lt": "Bratislava", + "name:mk": "Братислава", + "name:mn": "Братислав", + "name:nds": "Pressburg", + "name:nl": "Bratislava", + "name:no": "Bratislava", + "name:oc": "Bratislava", + "name:os": "Братиславæ", + "name:pl": "Bratysława", + "name:pt": "Bratislava", + "name:ru": "Братислава", + "name:rue": "Братїслава", + "name:sah": "Братислава", + "name:sk": "Bratislava", + "name:sq": "Bratisllava", + "name:sr": "Братислава", + "name:sv": "Bratislava", + "name:syc": "ܒܪܛܝܣܠܐܒܐ", + "name:tg": "Братислава", + "name:th": "บราติสลาวา", + "name:tt": "Братислава", + "name:udm": "Братислава", + "name:ug": "براتىسلاۋا", + "name:uk": "Братислава", + "name:ur": "براٹیسلاوا", + "name:vep": "Bratislav", + "name:yi": "בראטיסלאווא", + "name:yue": "布拉迪斯拉發", + "name:zh": "布拉迪斯拉發", + "name:zh-Hans": "布拉迪斯拉发", + "name:zh-Hant": "布拉迪斯拉發" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 17.1093063, + 48.1516988 + ] + }, + "id": "node/530544342" + }, + { + "type": "Feature", + "properties": { + "name": "Singapore", + "name:ace": "Singapura", + "name:af": "Singapoer", + "name:am": "ሲንጋፖር", + "name:ar": "سنغافورة", + "name:arz": "سينجابوره", + "name:az": "Sinqapur", + "name:az-Arab": "سنقاپور", + "name:azb": "سنقاپور", + "name:ba": "Сингапур", + "name:bat-smg": "Singapūrs", + "name:bcl": "Singapore", + "name:be": "Сінгапур", + "name:be-tarask": "Сынгапур", + "name:bg": "Сингапур", + "name:bi": "Singapore", + "name:bjn": "Singapura", + "name:bo": "སེང་ག་ཕོར།", + "name:bpy": "সিঙ্গাপুর", + "name:br": "Singapoura", + "name:bug": "Singapura", + "name:bxr": "Сингапур", + "name:ca": "Singapur", + "name:cdo": "Sĭng-gă-pŏ̤", + "name:ceb": "Singgapura", + "name:ckb": "سینگاپور", + "name:cs": "Singapur", + "name:csb": "Singapùr", + "name:cv": "Сингапур", + "name:cy": "Singapore", + "name:da": "Singapore", + "name:de": "Singapur", + "name:dv": "ސިންގަޕޫރު", + "name:el": "Σιγκαπούρη", + "name:en": "Singapore", + "name:eo": "Singapuro", + "name:es": "Singapur", + "name:et": "Singapur", + "name:ext": "Singapul", + "name:fa": "سنگاپور", + "name:ff": "Sinngapuur", + "name:fi": "Singapore", + "name:fo": "Singapor", + "name:fr": "Singapour", + "name:frp": "Singapor", + "name:fy": "Singapore", + "name:ga": "Singeapór", + "name:gan": "新加坡", + "name:gd": "Singeapòr", + "name:gl": "Singapur", + "name:gv": "Singapore", + "name:ha": "Singapore", + "name:hak": "Sîn-kâ-po", + "name:haw": "Sinapoa", + "name:he": "סינגפור", + "name:hif": "Singapore", + "name:hr": "Singapur", + "name:ht": "Sengapou", + "name:hu": "Szingapúr", + "name:hy": "Սինգապուրի Հանրապետություն", + "name:id": "Singapura", + "name:ie": "Singapor", + "name:is": "Singapúr", + "name:it": "Singapore", + "name:ja": "シンガポール", + "name:jbo": "singapura", + "name:jv": "Singapura", + "name:ka": "სინგაპური", + "name:ki": "Singapore", + "name:kk": "Сингапур", + "name:kk-Arab": "سىينگاپۋر", + "name:kl": "Singapore", + "name:km": "សិង្ហបុរី", + "name:ko": "싱가포르", + "name:ku": "Singapûr", + "name:kv": "Сингапур", + "name:kw": "Singapour", + "name:la": "Singapura", + "name:lb": "Singapur", + "name:lez": "Сингапур", + "name:li": "Singapore", + "name:lij": "Scingapô", + "name:lt": "Singapūras", + "name:lv": "Singapūra", + "name:map-bms": "Singapura", + "name:mg": "Singapaoro", + "name:mhr": "Сингапур", + "name:mi": "Hingapoa", + "name:mk": "Сингапур", + "name:mn": "Сингапур", + "name:ms": "Singapura", + "name:mt": "Singapor", + "name:mzn": "سنگاپور", + "name:na": "Tsingapoar", + "name:nan": "Sin-ka-pho", + "name:ne": "सिंगापुर", + "name:nl": "Singapore", + "name:nn": "Singapore", + "name:no": "Singapore", + "name:nov": "Singapore", + "name:nv": "Sį́ʼgaboo", + "name:oc": "Singapor", + "name:os": "Сингапур", + "name:pam": "Singapore", + "name:pl": "Singapur", + "name:pms": "Singapor", + "name:ps": "سينګاپور", + "name:pt": "Singapura", + "name:ro": "Singapore", + "name:roa-rup": "Singapore", + "name:roa-tara": "Singapore", + "name:ru": "Сингапур", + "name:rue": "Сінґапур", + "name:rw": "Singapore", + "name:sa": "सिङ्गापुर", + "name:sah": "Сингапур", + "name:scn": "Singapura", + "name:sco": "Singapore", + "name:se": "Singapore", + "name:sg": "Sïngäpûru", + "name:sk": "Singapur", + "name:sl": "Singapur", + "name:sm": "Sigapoa", + "name:so": "Singabuur", + "name:sq": "Singapori", + "name:sr": "Сингапур", + "name:ss": "ISingapholo", + "name:su": "Singapura", + "name:sv": "Singapore", + "name:sw": "Singapuri", + "name:tg": "Сингапур", + "name:th": "สิงคโปร์", + "name:tl": "Singgapur", + "name:tr": "Singapur", + "name:tt": "Сингапур", + "name:tzl": "Singapura", + "name:udm": "Сингапур", + "name:ug": "سىنگاپور", + "name:uk": "Сінгапур", + "name:ur": "سنگاپور", + "name:vec": "Singapore", + "name:vi": "Tân Gia Ba", + "name:vls": "Singapore", + "name:vo": "Singapurän", + "name:war": "Singgapura", + "name:wo": "Singapoor", + "name:wuu": "新加坡", + "name:xal": "Сингапурмудин Орн", + "name:yi": "סינגאפור", + "name:yo": "Singapore", + "name:yue": "星架坡", + "name:zh": "新加坡", + "name:zh-Hans": "新加坡", + "name:zh-Hant": "新加坡", + "name:zh_pinyin": "Xīnjiāpō" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 103.8519072, + 1.2899175 + ] + }, + "id": "node/531668011" + }, + { + "type": "Feature", + "properties": { + "name": "مدينة الكويت", + "name:ace": "Al-Kuwait", + "name:af": "Koeweit", + "name:am": "ኩዌት ከተማ", + "name:ar": "مدينة الكويت", + "name:arc": "ܟܘܘܝܬ", + "name:az": "Küveyt", + "name:be": "Кувейт", + "name:be-tarask": "Кувэйт", + "name:bg": "Кувейт", + "name:bo": "ཁུ་ཝི་ཐི།", + "name:br": "Koweit", + "name:bs": "Kuvajt", + "name:ca": "Al-Kuwait", + "name:ckb": "کووەیت", + "name:cs": "Kuvajt", + "name:cy": "Dinas Kuwait", + "name:da": "Kuwait City", + "name:de": "Kuwait-Stadt", + "name:el": "Πόλη του Κουβέιτ", + "name:en": "Kuwait City", + "name:eo": "Kuvajturbo", + "name:es": "Kuwait", + "name:et": "Al-Kuwayt", + "name:eu": "Kuwait", + "name:fa": "کویت", + "name:fi": "Kuwait", + "name:fiu-vro": "Al-Kuwayt", + "name:fr": "Koweït", + "name:frp": "Koveyit", + "name:fy": "Koeweit", + "name:gd": "Cubhait", + "name:gl": "Kuwait", + "name:he": "העיר כווית", + "name:hif": "Kuwait City", + "name:hr": "Kuvait", + "name:ht": "Kowèt", + "name:hu": "Kuvaitváros", + "name:hy": "Էլ Քուվեյթ", + "name:id": "Kuwait City", + "name:io": "Kuwait-Urbo", + "name:it": "Città del Kuwait", + "name:ja": "クウェート市", + "name:ka": "ელ-ქუვეითი", + "name:kl": "Kuwait Illoqarfik", + "name:ko": "쿠웨이트시티", + "name:lmo": "Cità del Kuwait", + "name:lt": "Kuveitas", + "name:lv": "Kuveita", + "name:mk": "Кувајт", + "name:mn": "Кувейт хот", + "name:ms": "Bandar Kuwait", + "name:nah": "Āltepētl Cuhuait", + "name:nan": "Kuwait Chhī", + "name:nl": "Koeweit", + "name:nn": "Kuwait by", + "name:no": "Kuwait", + "name:nov": "Kuwayt Urbe", + "name:oc": "Kowait", + "name:os": "Эль-Кувейт", + "name:pl": "Kuwejt", + "name:pms": "Sità dël Kuwait", + "name:pt": "Kuwait", + "name:ro": "Kuweit", + "name:ru": "Эль-Кувейт", + "name:sco": "Kuwait Ceety", + "name:simple": "Kuwait City", + "name:sk": "Kuvajt", + "name:sr": "Кувајт", + "name:sv": "Kuwait City", + "name:sw": "Jiji la Kuwait", + "name:tg": "Ал-Кувейт", + "name:th": "คูเวตซิตี", + "name:tl": "Lungsod ng Kuwait", + "name:tr": "Kuveyt", + "name:ug": "كۇۋائىت شەھىرى", + "name:uk": "Ель-Кувейт", + "name:ur": "کویت شہر", + "name:vi": "Thành phố Kuwait", + "name:vo": "Kuväyt", + "name:war": "Syudad han Kuwait", + "name:yo": "Ìlú Kuwaiti", + "name:zh": "科威特市" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 47.9734174, + 29.3796532 + ] + }, + "id": "node/544060405" + }, + { + "type": "Feature", + "properties": { + "name": "រាជធានីភ្នំពេញ", + "name:am": "ፕኖም ፔን", + "name:ar": "بنوم بنه", + "name:be": "Пнампень", + "name:be-tarask": "Пномпэнь", + "name:bg": "Пном Пен", + "name:bjn": "Phnum Pény", + "name:bo": "ཕོམ་ཕེན།", + "name:ckb": "پنۆم پێن", + "name:cs": "Phnompenh", + "name:de": "Phnom Penh", + "name:el": "Πνομ Πενχ", + "name:en": "Phnom Penh", + "name:eo": "Pnom-Peno", + "name:es": "Nom Pen", + "name:et": "Phnom Penh", + "name:eu": "Phnom Penh", + "name:fa": "پنوم‌پن", + "name:fr": "Phnom Penh", + "name:fy": "Pnom Pen", + "name:he": "פנום פן", + "name:hu": "Phnompen", + "name:hy": "Պնոմպեն", + "name:it": "Phnom Penh", + "name:ja": "プノンペン", + "name:ka": "პნომპენი", + "name:km": "រាជធានីភ្នំពេញ", + "name:km:IPA": "riəc.tʰiə.niː pʰnum pɨɲ", + "name:ko": "프놈펜", + "name:lt": "Pnompenis", + "name:lv": "Pnompeņa", + "name:lzh": "金邊", + "name:mk": "Пном Пен", + "name:nl": "Pnom Penh", + "name:oc": "Phnom Penh", + "name:os": "Пномпень", + "name:pl": "Phnom Penh", + "name:pt": "Phnom Penh", + "name:ru": "Пномпень", + "name:sah": "Пном Пэнь", + "name:sk": "Phnom Pénh", + "name:sr": "Пном Пен", + "name:sv": "Phnom Penh", + "name:th": "พนมเปญ", + "name:ug": "فنوم پېن", + "name:uk": "Пномпень", + "name:vi": "Phnom Penh", + "name:vo": "Phnum Pénh", + "name:wuu": "金边", + "name:zh": "金边/金邊", + "name:zh-Hans": "金边", + "name:zh-Hant": "金邊" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 104.9224426, + 11.568271 + ] + }, + "id": "node/560229438" + }, + { + "type": "Feature", + "properties": { + "name": "Bogotá", + "name:am": "ቦጎታ", + "name:ar": "بوغوتا", + "name:arz": "بوجوتا", + "name:ay": "Wukuta", + "name:az": "Boqota", + "name:ba": "Богота", + "name:be": "Багата", + "name:bg": "Богота", + "name:bo": "པོ་གོ་ཏ", + "name:ca": "Bogotà", + "name:ckb": "بۆگۆتا", + "name:de": "Bogotá", + "name:diq": "Bogota", + "name:el": "Μπογκοτά", + "name:en": "Bogota", + "name:eo": "Bogoto", + "name:es": "Bogotá", + "name:fa": "بوگوتا", + "name:fr": "Bogota", + "name:he": "בוגוטה", + "name:hsb": "Bogota", + "name:ht": "Bogota", + "name:hu": "Bogotá", + "name:hy": "Բոգոտա", + "name:io": "Bogota", + "name:is": "Bógóta", + "name:ja": "ボゴタ", + "name:ka": "ბოგოტა", + "name:kk": "Богота", + "name:km": "ទីក្រុងបូកូតា", + "name:ko": "보고타", + "name:ku": "Bogota", + "name:la": "Bogota", + "name:lad": "Bogota", + "name:lmo": "Bogotà", + "name:ln": "Bogota", + "name:lt": "Bogota", + "name:lv": "Bogota", + "name:mhr": "Богота", + "name:mk": "Богота", + "name:nl": "Bogota", + "name:nov": "Bogota", + "name:oc": "Bogotà", + "name:os": "Богота", + "name:pap": "Bogota", + "name:pl": "Bogota", + "name:pms": "Bogotà", + "name:ru": "Богота", + "name:rue": "Боґота", + "name:rw": "Bogota", + "name:scn": "Bogotà", + "name:sh": "Bogota", + "name:sk": "Bogota", + "name:sl": "Bogota", + "name:so": "Bogota", + "name:sr": "Богота", + "name:sv": "Bogotá", + "name:sw": "Bogota", + "name:szl": "Bogota", + "name:th": "โบโกตา", + "name:tk": "Bogota", + "name:tl": "Bogota", + "name:ug": "Bogota", + "name:uk": "Богота", + "name:ur": "بوگوتا", + "name:uz": "Bogota", + "name:yi": "באגאטא", + "name:yue": "波哥大", + "name:zh": "波哥大" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -74.0836453, + 4.6534649 + ] + }, + "id": "node/671806634" + }, + { + "type": "Feature", + "properties": { + "name": "South Tarawa", + "name:af": "Suid-Tarawa", + "name:am": "ደቡብ ታራዋ", + "name:ar": "جنوب تاراوا", + "name:az": "Cənubi Tarava", + "name:be": "Паўднёвая Тарава", + "name:be-tarask": "Паўднёвая Тарава", + "name:bg": "Южна Тарауа", + "name:ca": "Tarawa Sud", + "name:cs": "Jižní Tarawa", + "name:cy": "De Tarawa", + "name:en": "South Tarawa", + "name:eo": "Bairiko", + "name:es": "Tarawa Sur", + "name:et": "Tarawa South", + "name:fa": "تاراوای جنوبی", + "name:fr": "Tarawa-Sud", + "name:fy": "Súd-Tarawa", + "name:gl": "Tarawa Sur", + "name:he": "דרום טאראווה", + "name:hu": "South Tarawa", + "name:id": "Tarawa Selatan", + "name:it": "Tarawa Sud", + "name:ja": "サウス・タラワ", + "name:ka": "სამხრეთი ტარავა", + "name:ko": "사우스타라와", + "name:lt": "Pietų Tarava", + "name:mk": "Јужна Тарава", + "name:nl": "Zuid-Tarawa", + "name:pl": "South Tarawa", + "name:pms": "Tarawa-Sud", + "name:pt": "Tarawa do Sul", + "name:ru": "Южная Тарава", + "name:sah": "Соҕуруу Тарава", + "name:sh": "Južna Tarawa", + "name:sr": "Јужна Тарава", + "name:sv": "South Tarawa", + "name:tr": "Güney Tarava", + "name:uk": "Південна Тарава", + "name:vi": "Nam Tarawa", + "name:war": "Salatan Tarawa", + "name:zh": "南塔拉瓦" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 173.0386512, + 1.3490778 + ] + }, + "id": "node/703437318" + }, + { + "type": "Feature", + "properties": { + "name": "Palikir", + "name:af": "Palikir", + "name:am": "ፓሊኪር", + "name:ar": "باليكير", + "name:arz": "باليكير", + "name:ast": "Palikir", + "name:avk": "Palikir", + "name:az": "Palikir", + "name:be": "Палікір", + "name:be-tarask": "Палікір", + "name:bg": "Паликир", + "name:br": "Palikir", + "name:bs": "Palikir", + "name:ca": "Palikir", + "name:ce": "Паликир", + "name:cs": "Palikir", + "name:cy": "Palikir", + "name:da": "Palikir", + "name:de": "Palikir", + "name:el": "Παλικίρ", + "name:en": "Palikir", + "name:eo": "Palikiro", + "name:es": "Palikir", + "name:et": "Palikir", + "name:eu": "Palikir", + "name:fa": "پالیکیر", + "name:fi": "Palikir", + "name:fr": "Palikir", + "name:gd": "Palikir", + "name:gl": "Palikir", + "name:hak": "Palikir", + "name:he": "פליקיר", + "name:hif": "Palikir", + "name:hr": "Palikir", + "name:ht": "Paliki", + "name:hu": "Palikir", + "name:hy": "Պալիկիր", + "name:id": "Palikir", + "name:ie": "Palikir", + "name:io": "Palikir", + "name:is": "Palikír", + "name:it": "Palikir", + "name:ja": "パリキール", + "name:ka": "პალიკირი", + "name:ko": "팔리키르", + "name:ky": "Паликир", + "name:la": "Palicrum", + "name:lb": "Palikir", + "name:lij": "Palikir", + "name:lt": "Palikyras", + "name:lv": "Palikira", + "name:mg": "Palikir", + "name:mk": "Паликир", + "name:ms": "Palikir", + "name:nds": "Palikir", + "name:nl": "Palikir", + "name:no": "Palikir", + "name:oc": "Palikir", + "name:pl": "Palikir", + "name:ps": "پالیکیر", + "name:pt": "Paliquir", + "name:ro": "Palikir", + "name:ru": "Паликир", + "name:rw": "Palikir", + "name:sah": "Паликир", + "name:sc": "Palikir", + "name:sco": "Palikir", + "name:sh": "Palikir", + "name:sk": "Palikir", + "name:sl": "Palikir", + "name:sn": "Palikir", + "name:sr": "Паликир", + "name:sv": "Palikir", + "name:sw": "Palikir", + "name:tg": "Паликир", + "name:th": "ปาลีกีร์", + "name:tl": "Palikir", + "name:tr": "Palikir", + "name:ty": "Palikir", + "name:uk": "Палікір", + "name:ur": "پالیکیر", + "name:vep": "Palikir", + "name:vi": "Palikir", + "name:war": "Palikir", + "name:xmf": "პალიკირი", + "name:zh": "帕利基尔", + "name:zh-Hans": "帕利基尔", + "name:zh-Hant": "帕利基爾" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 158.1627143, + 6.920744 + ] + }, + "id": "node/703902171" + }, + { + "type": "Feature", + "properties": { + "name": "Kampala", + "name:am": "ካምፓላ", + "name:ar": "كمبالا", + "name:arz": "كمبالا", + "name:azb": "کامپالا", + "name:be": "Кампала", + "name:bg": "Кампала", + "name:bo": "ཀམ་པ་ལ།", + "name:ckb": "کامپالا", + "name:cv": "Кампала", + "name:de": "Kampala", + "name:el": "Καμπάλα", + "name:en": "Kampala", + "name:eo": "Kampalo", + "name:es": "Kampala", + "name:fa": "کامپالا", + "name:fr": "Kampala", + "name:he": "קמפלה", + "name:ht": "Kanpala", + "name:hu": "Kampala", + "name:hy": "Կամպալա", + "name:it": "Kampala", + "name:ja": "カンパラ", + "name:ka": "კამპალა", + "name:ko": "캄팔라", + "name:ku": "Kampala", + "name:ky": "Кампала", + "name:mk": "Кампала", + "name:mrj": "Кампала", + "name:nl": "Kampala", + "name:no": "Kampala", + "name:oc": "Kampala", + "name:pl": "Kampala", + "name:ps": "کامپالا", + "name:pt": "Kampala", + "name:ru": "Кампала", + "name:so": "Kambaala", + "name:sr": "Кампала", + "name:sv": "Kampala", + "name:tg": "Кампала", + "name:th": "กัมปาลา", + "name:tr": "Kampala", + "name:udm": "Кампала", + "name:ug": "كامپالا", + "name:uk": "Кампала", + "name:ur": "کمپالا", + "name:zh": "坎帕拉" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 32.5813539, + 0.3177137 + ] + }, + "id": "node/773119937" + }, + { + "type": "Feature", + "properties": { + "name": "Honiara", + "name:am": "ሆኒያራ", + "name:ar": "هونيارا", + "name:be": "Ханіяра", + "name:be-tarask": "Ханіяра", + "name:bg": "Хониара", + "name:bo": "ཧོ་ཉི་ཡ་ར།", + "name:de": "Honiara", + "name:el": "Ονιάρα", + "name:en": "Honiara", + "name:eo": "Honiaro", + "name:es": "Honiara", + "name:fa": "هونیارا", + "name:fr": "Honiara", + "name:he": "הוניארה", + "name:ht": "Onyara", + "name:hu": "Honiara", + "name:is": "Honíara", + "name:ja": "ホニアラ", + "name:ka": "ჰონიარა", + "name:ko": "호니아라", + "name:lt": "Honiara", + "name:mk": "Хонијара", + "name:nl": "Honiara", + "name:no": "Honiara", + "name:oc": "Honiara", + "name:pl": "Honiara", + "name:ru": "Хониара", + "name:sah": "Хониара", + "name:sr": "Хонијара", + "name:sv": "Honiara", + "name:th": "โฮนีอารา", + "name:tr": "Honiara", + "name:uk": "Хоніара", + "name:ur": "ہونیارا", + "name:zh": "霍尼亞拉", + "name:zh-Hans": "霍尼亚拉", + "name:zh-Hant": "荷尼阿拉" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 159.9552552, + -9.4310769 + ] + }, + "id": "node/790807049" + }, + { + "type": "Feature", + "properties": { + "name": "Caracas", + "name:ab": "Каракас", + "name:am": "ካራካስ", + "name:ar": "كراكاس", + "name:ast": "Caraques", + "name:az": "Karakas", + "name:be": "Каракас", + "name:be-tarask": "Каракас", + "name:bg": "Каракас", + "name:bo": "ཁ་ར་ཁ་སི", + "name:cbk-zam": "Ciudad de Caracas", + "name:de": "Caracas", + "name:el": "Καράκας", + "name:en": "Caracas", + "name:eo": "Karakaso", + "name:es": "Caracas", + "name:fa": "کاراکاس", + "name:fr": "Caracas", + "name:fy": "Karakas", + "name:he": "קראקס", + "name:ht": "Karakas", + "name:hu": "Caracas", + "name:hy": "Կարակաս", + "name:is": "Karakas", + "name:ja": "カラカス", + "name:ka": "კარაკასი", + "name:ko": "카라카스", + "name:ku": "Caracas", + "name:la": "Caracae", + "name:lt": "Karakasas", + "name:lv": "Karakasa", + "name:mk": "Каракас", + "name:nl": "Caracas", + "name:nov": "Karakas", + "name:oc": "Caracas", + "name:os": "Каракас", + "name:pl": "Caracas", + "name:ru": "Каракас", + "name:sq": "Karakas", + "name:sr": "Каракас", + "name:sv": "Caracas", + "name:tet": "Karakas", + "name:th": "การากัส", + "name:ug": "Karakas", + "name:uk": "Каракас", + "name:ur": "کراکس", + "name:yi": "קאראקאס", + "name:zh": "卡拉卡斯" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -66.9146008, + 10.5060934 + ] + }, + "id": "node/914310439" + }, + { + "type": "Feature", + "properties": { + "name": "Nuuk", + "name:ang": "Godhopa", + "name:ar": "نوك", + "name:az-Arab": "نوک", + "name:azb": "نوک", + "name:bat-smg": "Nuuks", + "name:be": "Нук", + "name:be-tarask": "Нук", + "name:bg": "Нуук", + "name:ckb": "نووک", + "name:cv": "Нуук", + "name:da": "Nuuk", + "name:de": "Nuuk", + "name:el": "Νουούκ", + "name:en": "Nuuk", + "name:eo": "Nuko", + "name:es": "Nuuk", + "name:fa": "نوک", + "name:fr": "Nuuk", + "name:he": "נואוק", + "name:hu": "Nuuk", + "name:hy": "Նուուկ", + "name:ja": "ヌーク", + "name:ka": "ნუუკი", + "name:kk": "Нүүк", + "name:kk-Arab": "نۋۋك", + "name:kl": "Nuuk", + "name:ko": "누크", + "name:ks": "نوک", + "name:ku": "Nûk", + "name:kv": "Нук", + "name:lt": "Nukas", + "name:lv": "Nūka", + "name:mk": "Нук", + "name:mn": "Нуук", + "name:os": "Нуук", + "name:pl": "Nuuk", + "name:ro": "Godthåb", + "name:ru": "Нуук", + "name:sah": "Нуук", + "name:sr": "Нук", + "name:sv": "Nuuk", + "name:th": "นุก", + "name:tt": "Нуук", + "name:uk": "Нуук", + "name:ur": "نوک", + "name:zh": "努克" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -51.7355386, + 64.175029 + ] + }, + "id": "node/992046822" + }, + { + "type": "Feature", + "properties": { + "name": "Nukuʻalofa", + "name:am": "ኑኩአሎፋ", + "name:ar": "نوكو ألوفا", + "name:ast": "Nuku'alofa", + "name:az": "Nukualofa", + "name:be": "Нукуалофа", + "name:be-tarask": "Нукуалофа", + "name:bg": "Нукуалофа", + "name:bo": "ནུ་ཁུ་ཨ་ལོ་ཧྥ།", + "name:ca": "Nuku'alofa", + "name:ckb": "نوکوئەلۆفا", + "name:cs": "Nuku'alofa", + "name:cy": "Nuku'alofa", + "name:da": "Nuku'alofa", + "name:de": "Nukuʻalofa", + "name:el": "Νουκουαλόφα", + "name:en": "Nuku'alofa", + "name:eo": "Nukualofo", + "name:es": "Nukualofa", + "name:et": "Nuku‘alofa", + "name:eu": "Nuku'alofa", + "name:fa": "نوکوآلوفا", + "name:fi": "Nukuʻalofa", + "name:fr": "Nukuʻalofa", + "name:fy": "Nuku'alofa", + "name:gd": "Nuku'alofa", + "name:gl": "Nuku'alofa", + "name:hak": "Nuku'alofa", + "name:he": "נוקואלופה", + "name:hif": "Nukualofa", + "name:hr": "Nuku'alofa", + "name:ht": "Noukou'alofa", + "name:hu": "Nuku'alofa", + "name:hy": "Նուկուալոֆա", + "name:id": "Nukuʻalofa", + "name:io": "Nuku'alofa", + "name:is": "Nukuʻalofa", + "name:it": "Nuku'alofa", + "name:ja": "ヌクアロファ", + "name:ka": "ნუკუალოფა", + "name:kk": "Нукуалофа", + "name:ko": "누쿠알로파", + "name:ku": "Nukuelofa", + "name:ky": "Нукуалофа", + "name:la": "Nukualofa", + "name:lb": "Nuku'alofa", + "name:lmo": "Nuku'alofa", + "name:lt": "Nukualofa", + "name:lv": "Nukualofa", + "name:mk": "Нукуалофа", + "name:mrj": "Нукуалофа", + "name:ms": "Nukuʻalofa", + "name:mzn": "نوکوآلوفا", + "name:nah": "Nukualofa", + "name:nan": "Nuku'alofa", + "name:nl": "Nuku'alofa", + "name:nn": "Nuku'alofa", + "name:no": "Nuku'alofa", + "name:oc": "Nuku'alofa", + "name:pl": "Nuku'alofa", + "name:pms": "Nuku'alofa", + "name:ps": "نوکوالوفا", + "name:pt": "Nucualofa", + "name:ro": "Nuku'alofa", + "name:ru": "Нукуалофа", + "name:sh": "Nuku'alofa", + "name:sk": "Nuku’alofa", + "name:sq": "Nuku'alofa", + "name:sr": "Нукуалофа", + "name:sv": "Nuku'alofa", + "name:sw": "Nuku'alofa", + "name:tg": "Нукуалофа", + "name:th": "นูกูอะโลฟา", + "name:tl": "Nukualofa", + "name:tr": "Nuku'alofa", + "name:ty": "Nuku’alofa", + "name:uk": "Нуку'алофа", + "name:ur": "نوکوالوفا", + "name:uz": "Nukualofa", + "name:vi": "Nukuʻalofa", + "name:xmf": "ნუკუალოფა", + "name:zh": "努库阿洛法/努庫阿洛法", + "name:zh-Hans": "努库阿洛法", + "name:zh-Hant": "努庫阿洛法" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -175.201808, + -21.1343401 + ] + }, + "id": "node/1082208696" + }, + { + "type": "Feature", + "properties": { + "name": "دمشق", + "name:af": "Damaskus", + "name:am": "ደማስቆ", + "name:an": "Domás", + "name:ar": "دمشق", + "name:arc": "ܕܪܡܣܘܩ", + "name:arz": "دمشق", + "name:av": "Димишкъ", + "name:az": "Dəməşq", + "name:ba": "Дамаск", + "name:bat-smg": "Damaskos", + "name:be": "Дамаск", + "name:be-tarask": "Дамаск", + "name:bg": "Дамаск", + "name:bjn": "Damsyik", + "name:bo": "དྷ་མ་སི་ཁོ་སི།", + "name:br": "Damask", + "name:bs": "Damask", + "name:ca": "Damasc", + "name:ckb": "دیمەشق", + "name:cs": "Damašek", + "name:cu": "Дамаскъ", + "name:cv": "Дамаск", + "name:cy": "Damascus", + "name:da": "Damaskus", + "name:de": "Damaskus", + "name:dv": "ދިމިޝްޤު", + "name:el": "Δαμασκός", + "name:en": "Damascus", + "name:eo": "Damasko", + "name:es": "Damasco", + "name:et": "Damaskus", + "name:eu": "Damasko", + "name:ext": "Damascu", + "name:fa": "دمشق", + "name:fi": "Damaskos", + "name:fr": "Damas", + "name:frp": "Damas", + "name:ga": "An Damaisc", + "name:gd": "Damascus", + "name:gl": "Damasco - دمشق", + "name:grc": "Δαμασκός", + "name:haw": "Kamakeko", + "name:he": "דמשק", + "name:hif": "Damascus", + "name:hr": "Damask", + "name:hsb": "Damask", + "name:ht": "Damas", + "name:hu": "Damaszkusz", + "name:hy": "Դամասկոս", + "name:ia": "Damasco", + "name:ie": "Damascus", + "name:ilo": "Damascus", + "name:io": "Damascus", + "name:is": "Damaskus", + "name:it": "Damasco", + "name:ja": "ダマスカス", + "name:ka": "დამასკი", + "name:kab": "Dimecq", + "name:kk": "Дамаск", + "name:kl": "Damascus", + "name:ko": "다마스쿠스", + "name:ku": "Dîmeşq", + "name:kw": "Damask", + "name:ky": "Дамаск", + "name:la": "Damascus", + "name:lad": "Damask", + "name:lij": "Damasco", + "name:lmo": "Damasch", + "name:ln": "Damas", + "name:lt": "Damaskas", + "name:lv": "Damaska", + "name:mg": "Damaskosy", + "name:mhr": "Дамаск", + "name:mi": "Ramaiku", + "name:mk": "Дамаск", + "name:mn": "Дамаск", + "name:ms": "Damsyik", + "name:nan": "Damascus", + "name:nl": "Damascus", + "name:no": "Damaskus", + "name:oc": "Damasc", + "name:os": "Дамаск", + "name:pl": "Damaszek", + "name:pms": "Damasch", + "name:pnt": "Δαμασκός", + "name:ps": "د مشق", + "name:pt": "Damasco", + "name:qu": "Dimashq", + "name:ro": "Damasc", + "name:roa-tara": "Damasche", + "name:ru": "Дамаск", + "name:rue": "Дамаск", + "name:rw": "Damasiko", + "name:sah": "Дамаскус", + "name:sc": "Damasco", + "name:scn": "Damascu", + "name:sco": "Damascus", + "name:sh": "Damask", + "name:simple": "Damascus", + "name:sk": "Damask", + "name:sl": "Damask", + "name:so": "Dimishiq", + "name:sq": "Damasku", + "name:sr": "Дамаск", + "name:sv": "Damaskus", + "name:sw": "Dameski", + "name:syc": "ܕܪܡܣܘܩ", + "name:tg": "Димишқ", + "name:th": "ดามัสกัส", + "name:tk": "Damask", + "name:tl": "Damascus", + "name:tr": "Şam", + "name:tt": "Damask", + "name:ug": "دەمەشىق", + "name:uk": "Дамаск", + "name:ur": "دمشق", + "name:uz": "Damashq", + "name:vi": "Damas", + "name:vo": "Dimäjk", + "name:war": "Damascus", + "name:yi": "דמשק", + "name:yo": "Dàmáskù", + "name:yue": "大馬士革", + "name:zh": "大马士革 / 大馬士革", + "name:zh-Hans": "大马士革", + "name:zh-Hant": "大馬士革" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 36.3095814, + 33.5130695 + ] + }, + "id": "node/1091272140" + }, + { + "type": "Feature", + "properties": { + "name": "臺北市", + "name:ace": "Taipéi", + "name:af": "Taipei", + "name:als": "Taipeh", + "name:am": "ታይፔ", + "name:ar": "تايبيه", + "name:arz": "تايبيه", + "name:ast": "Taipéi", + "name:az": "Taybey", + "name:azb": "تایپه", + "name:bcl": "Taipei", + "name:be": "Тайбэй", + "name:be-tarask": "Тайбэй", + "name:be-x-old": "Тайбэй", + "name:bg": "Тайпе", + "name:bo": "ཐའེ་པེ", + "name:br": "Taipei", + "name:bs": "Taipei", + "name:bxr": "Тайбэй", + "name:ca": "Taipei", + "name:cdo": "Dài-báe̤k", + "name:ce": "Тайбэй", + "name:ceb": "Taipei", + "name:ckb": "تایپێ", + "name:cs": "Tchaj-pej", + "name:cy": "Taipei", + "name:da": "Taipei", + "name:de": "Taipeh", + "name:diq": "Taipei", + "name:el": "Ταϊπέι", + "name:en": "Taipei", + "name:eo": "Tajpeo", + "name:es": "Taipéi", + "name:et": "Taipei", + "name:eu": "Taipei", + "name:fa": "تایپه", + "name:fi": "Taipei", + "name:fj": "Taipeh", + "name:fo": "Taipei", + "name:fr": "Taipei", + "name:frp": "Tayipèh", + "name:fy": "Taipei", + "name:ga": "Taipei", + "name:gan": "臺北市", + "name:gd": "Taipei", + "name:gl": "Taipei", + "name:ha": "Taipei", + "name:hak": "Thòi-pet-sṳ", + "name:he": "טאיפיי", + "name:hif": "Taipei", + "name:hr": "Taipei", + "name:ht": "Taypè", + "name:hu": "Tajpej", + "name:hy": "Թայբեյ", + "name:hyw": "Թայբէյ", + "name:ia": "Taipei", + "name:id": "Taipei", + "name:ie": "Taipei", + "name:ilo": "Taipei", + "name:io": "Taipei", + "name:is": "Taípei", + "name:it": "Taipei", + "name:ja": "台北市", + "name:jam": "Taipei", + "name:jv": "Taipei", + "name:ka": "ტაიბეი", + "name:kk": "Тайбэй", + "name:ko": "타이베이시", + "name:ky": "Тайбэй", + "name:la": "Taipeia", + "name:lad": "Taipei", + "name:lb": "Taipeh", + "name:lij": "Taipei", + "name:lmo": "Taipei", + "name:lt": "Taipėjus", + "name:lv": "Taipeja", + "name:lzh": "臺北市", + "name:mg": "Taipei", + "name:mk": "Тајпеј", + "name:mn": "Тайбэй", + "name:ms": "Taipei", + "name:nan": "Tâi-pak-chhī", + "name:nan-HJ": "臺北市", + "name:nan-POJ": "Tâi-pak-chhī", + "name:nan-TL": "Tâi-pak-tshī", + "name:ne": "ताइपेइ", + "name:new": "ताइपेइ", + "name:nl": "Taipei", + "name:nn": "Taipei", + "name:no": "Taipei", + "name:nov": "Taipei", + "name:oc": "Taipei", + "name:os": "Тайбэй", + "name:pam": "Taipei", + "name:pap": "Taipei", + "name:pl": "Tajpej", + "name:pms": "Taipei", + "name:pt": "Taipé", + "name:qu": "T'aypik", + "name:ro": "Taipei", + "name:ru": "Тайбэй", + "name:rw": "Tayipeyi", + "name:sah": "Тайпэй", + "name:scn": "Taipei", + "name:sco": "Taipei", + "name:sh": "Taipei", + "name:si": "තායිපේ", + "name:sk": "Tchaj-pej", + "name:sl": "Tajpej", + "name:sn": "Taipei", + "name:so": "Taipei", + "name:sq": "Taipei", + "name:sr": "Тајпеј", + "name:sv": "Taipei", + "name:sw": "Taipei", + "name:szl": "Tajpej", + "name:tg": "Тайпей", + "name:th": "ไทเป", + "name:tl": "Taipei", + "name:tpi": "Taipei", + "name:tr": "Taipei", + "name:tt": "Taybey", + "name:ug": "تەيبېي شەھىرى", + "name:uk": "Тайбей", + "name:ur": "تائپے", + "name:uz": "Taypey", + "name:vec": "Taipei", + "name:vep": "Taibei", + "name:vi": "Đài Bắc", + "name:war": "Taipei", + "name:wuu": "臺北市", + "name:yo": "Taipei", + "name:yue": "臺北市", + "name:za": "Daizbaek", + "name:zea": "Taipei", + "name:zh": "臺北市", + "name:zh-Hans": "台北市", + "name:zh-Hant": "臺北市", + "name:zh_pinyin": "Táiběi Shì" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 121.5636796, + 25.0375198 + ] + }, + "id": "node/1147314253" + }, + { + "type": "Feature", + "properties": { + "name": "Panamá", + "name:ace": "Banda Panama", + "name:af": "Panama-stad", + "name:am": "ፓናማ ከተማ", + "name:an": "Ciudat de Panamá", + "name:ar": "مدينة بنما", + "name:az": "Panama", + "name:be": "Панама", + "name:be-tarask": "Панама", + "name:bg": "Панама", + "name:bo": "པ་ན་མ།", + "name:br": "Ciudad de Panamá", + "name:bs": "Panama City", + "name:ca": "Ciutat de Panamà", + "name:ckb": "پەنەما", + "name:cs": "Ciudad de Panamá", + "name:cy": "Dinas Panama", + "name:da": "Panama City", + "name:de": "Panama-Stadt", + "name:el": "Πόλη του Παναμά", + "name:en": "Panama", + "name:eo": "Panamurbo", + "name:et": "Panamá", + "name:eu": "Panama Hiria", + "name:fa": "پاناماسیتی", + "name:fi": "Panamá", + "name:fr": "Panama", + "name:fy": "Panama-Stêd", + "name:gd": "Panama", + "name:gl": "Cidade de Panamá", + "name:gv": "Caayr ny Panamaa", + "name:he": "פנמה סיטי", + "name:hif": "Panama City", + "name:hr": "Panamá", + "name:ht": "Panama", + "name:hu": "Panamaváros", + "name:id": "Kota Panama", + "name:ie": "Panamá Cité", + "name:io": "Panama-Urbo", + "name:is": "Panamaborg", + "name:it": "Panamà", + "name:ja": "パナマ市", + "name:ka": "პანამა", + "name:ko": "파나마시티", + "name:ku": "Panama", + "name:la": "Urbs Panamensis", + "name:lij": "Çittæ do Panamá", + "name:lmo": "Cità de Panama", + "name:lt": "Panama", + "name:lv": "Panama", + "name:mk": "Панама", + "name:nah": "Āltepētl Panama", + "name:nan": "Panamá Chhī", + "name:nl": "Panama-Stad", + "name:nn": "Panama by", + "name:no": "Panama by", + "name:nov": "Panama Urbe", + "name:oc": "Ciutat de Panamà", + "name:pl": "Panama", + "name:pms": "Sità ëd Panamà", + "name:pt": "Cidade do Panamá", + "name:qu": "Panama llaqta", + "name:ro": "Ciudad de Panamá", + "name:ru": "Панама", + "name:sah": "Панама", + "name:sco": "Panama Ceety", + "name:sh": "Panamá", + "name:sk": "Panama", + "name:sr": "Панама", + "name:sv": "Panama City", + "name:sw": "Panama City", + "name:th": "ปานามาซิตี", + "name:tl": "Lungsod ng Panama", + "name:tr": "Panama", + "name:uk": "Панама", + "name:ur": "پاناما شہر", + "name:vi": "Thành phố Panama", + "name:war": "Syudad han Panamá", + "name:yo": "Ìlú Panamá", + "name:zh": "巴拿馬城" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -79.5341802, + 8.9714493 + ] + }, + "id": "node/1242998122" + }, + { + "type": "Feature", + "properties": { + "name": "Helsinki", + "name:ace": "Hèlsinki", + "name:am": "ሄልሲንኪ", + "name:ar": "هلسنكي", + "name:arc": "ܗܠܣܢܩܝ", + "name:arz": "هيلسينكى", + "name:ast": "Ḥelsinki", + "name:bat-smg": "Helsėnkis", + "name:be": "Хельсінкі", + "name:be-tarask": "Хэльсынкі", + "name:bg": "Хелзинки", + "name:bo": "ཧེལ་སིན་ཀི།", + "name:ca": "Hèlsinki", + "name:ckb": "ھێلسینکی", + "name:cs": "Helsinky", + "name:cv": "Хелҫинки", + "name:de": "Helsinki", + "name:el": "Ελσίνκι", + "name:en": "Helsinki", + "name:eo": "Helsinko", + "name:es": "Helsinki", + "name:et": "Helsingi", + "name:eu": "Helsinki", + "name:fa": "هلسینکی", + "name:fi": "Helsinki", + "name:fiu-vro": "Helsingi", + "name:fr": "Helsinki", + "name:fy": "Helsinky", + "name:ga": "Heilsincí", + "name:gl": "Helsinqui", + "name:he": "הלסינקי", + "name:ht": "Èlzinki", + "name:hu": "Helsinki", + "name:hy": "Հելսինկի", + "name:is": "Helsinki", + "name:it": "Helsinki", + "name:ja": "ヘルシンキ", + "name:ka": "ჰელსინკი", + "name:kk": "Хельсинки", + "name:ko": "헬싱키", + "name:koi": "Хельсинки", + "name:ku": "Helsînkî", + "name:kv": "Хельсинки", + "name:la": "Helsingia", + "name:lt": "Helsinkis", + "name:lzh": "赫爾辛基", + "name:mdf": "Хельсинки", + "name:mhr": "Хельсинки", + "name:mk": "Хелсинки", + "name:mrj": "Хельсинки", + "name:mt": "Ħelsinki", + "name:myv": "Хельсинки ош", + "name:nah": "Helsinqui", + "name:ne": "हेल्सिन्कि", + "name:nn": "Helsingfors", + "name:no": "Helsingfors", + "name:oc": "Helsinki", + "name:os": "Хельсинки", + "name:pl": "Helsinki", + "name:pt": "Helsínquia", + "name:ru": "Хельсинки", + "name:sah": "Хельсинки", + "name:se": "Helsset", + "name:sk": "Helsinki", + "name:smn": "Helsig", + "name:sr": "Хелсинки", + "name:sv": "Helsingfors", + "name:tg": "Ҳелсинкӣ", + "name:th": "เฮลซิงกิ", + "name:tl": "Lungsod ng Helsinki", + "name:tt": "Хельсинки", + "name:udm": "Хельсинки", + "name:ug": "Xélsinki", + "name:uk": "Гельсінкі", + "name:ur": "ہلسنکی", + "name:vep": "Hel'sinki", + "name:yi": "העלסינקי", + "name:yue": "赫爾辛基", + "name:zh": "赫爾辛基", + "name:zh-Hans": "赫尔辛基" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 24.9427473, + 60.1674881 + ] + }, + "id": "node/1372477580" + }, + { + "type": "Feature", + "properties": { + "name": "ཐིམ་ཕུ", + "name:am": "ጢምጱ", + "name:ar": "تيمفو", + "name:az-Arab": "تیمفو", + "name:azb": "تیمفو", + "name:be": "Тхімпху", + "name:be-tarask": "Тхімпху", + "name:bg": "Тхимпху", + "name:bo": "ཐིམ་ཕུ།", + "name:ckb": "تیمفوو", + "name:cs": "Thimbú", + "name:da": "Thimphu", + "name:de": "Thimphu", + "name:dz": "ཐིམ་ཕུ", + "name:el": "Τιμπού", + "name:en": "Thimphu", + "name:eo": "Timbuo", + "name:es": "Timbu", + "name:eu": "Thimphu", + "name:fa": "تیمفو", + "name:fr": "Thimphou", + "name:fy": "Timpû", + "name:gr": "Θιμφουΐα", + "name:grc": "Θιμφουΐα", + "name:he": "טהימפהו", + "name:ht": "Timfou", + "name:hu": "Timpu", + "name:hy": "Թհիմփհու", + "name:is": "Timfú", + "name:it": "Thimphu", + "name:ja": "ティンプー", + "name:ka": "თიმფუ", + "name:ko": "팀부", + "name:ks": "تھمپو", + "name:lt": "Timpu", + "name:mk": "Тимбу", + "name:mn": "Тхимпху", + "name:nah": "Timbu", + "name:no": "Thimpu", + "name:nov": "Timpu", + "name:oc": "Thimphu", + "name:os": "Тхимпху", + "name:pl": "Thimphu", + "name:ps": "تیمفو", + "name:pt": "Thimbu", + "name:ru": "Тхимпху", + "name:sr": "Тимбу", + "name:tg": "Тхимпху", + "name:th": "ทิมพู", + "name:ug": "تىمپۇ", + "name:uk": "Тхімпху", + "name:ur": "تھمپو", + "name:zh": "廷布" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 89.6336729, + 27.4713546 + ] + }, + "id": "node/1376501203" + }, + { + "type": "Feature", + "properties": { + "name": "Valletta", + "name:am": "ቫሌታ", + "name:ar": "فاليتا", + "name:arz": "فاليتا", + "name:be": "Валета", + "name:be-tarask": "Валета", + "name:bg": "Валета", + "name:bo": "ཝ་ལེ་ཐ།", + "name:ca": "La Valletta", + "name:ckb": "واڵێتا", + "name:cv": "Валлетта", + "name:de": "Valletta", + "name:el": "Βαλέτα", + "name:en": "Valletta", + "name:eo": "La-Valeto", + "name:es": "La Valeta", + "name:eu": "Valleta", + "name:fa": "والتا", + "name:fr": "La Valette", + "name:ga": "Vaileite", + "name:gag": "Valetta", + "name:gcf": "Valèt", + "name:gl": "A Valeta", + "name:he": "ולטה", + "name:ht": "La Valèt", + "name:hu": "Valetta", + "name:hy": "Վալետա", + "name:is": "Valletta", + "name:it": "La Valletta", + "name:ja": "バレッタ", + "name:ka": "ვალეტა", + "name:ko": "발레타", + "name:lij": "A Valletta", + "name:lmo": "La Valeta", + "name:lt": "Valeta", + "name:lv": "Valleta", + "name:mk": "Валета", + "name:no": "Valletta", + "name:oc": "La Valeta", + "name:os": "Валлеттæ", + "name:pl": "Valletta", + "name:pms": "La Valëtta", + "name:pt": "Valeta", + "name:ru": "Валлетта", + "name:sk": "Valletta", + "name:sq": "Valeta", + "name:sr": "Валета", + "name:sr-Latn": "Valeta", + "name:sv": "Valletta", + "name:tg": "Валлетта", + "name:th": "วัลเลตตา", + "name:tt": "Валлетта", + "name:udm": "Валлетта", + "name:uk": "Валлетта", + "name:vep": "Vallett", + "name:wo": "Waleta", + "name:yue": "華列他", + "name:zh": "瓦萊塔", + "name:zh-Hans": "瓦莱塔" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 14.5136759, + 35.8989818 + ] + }, + "id": "node/1501909943" + }, + { + "type": "Feature", + "properties": { + "name": "Zagreb", + "name:am": "ዛግሬብ", + "name:ar": "زغرب", + "name:ast": "Zagreb", + "name:az": "Zaqreb", + "name:ba": "Zagreb", + "name:bar": "Zagreb", + "name:bat-smg": "Zagrėbs", + "name:be": "Заграб", + "name:be-tarask": "Загрэб", + "name:bg": "Загреб", + "name:bo": "ཛག་རེབ།", + "name:ckb": "زاگرێب", + "name:co": "Zagabria", + "name:cs": "Záhřeb", + "name:cu": "Ꙁагрєбъ", + "name:cv": "Загреб", + "name:el": "Ζάγκρεμπ", + "name:en": "Zagreb", + "name:eo": "Zagrebo", + "name:es": "Zagreb", + "name:eu": "Zagreb", + "name:fa": "زاگرب", + "name:fr": "Zagreb", + "name:ga": "Ságrab", + "name:he": "זגרב", + "name:hr": "Zagreb", + "name:hu": "Zágráb", + "name:hy": "Զագրեբ", + "name:is": "Zagreb", + "name:it": "Zagabria", + "name:ja": "ザグレブ", + "name:ka": "ზაგრები", + "name:kk": "Загреб", + "name:ko": "자그레브", + "name:ku": "Zagreb", + "name:kv": "Загреб", + "name:la": "Zagrabia", + "name:lij": "Zagabbria", + "name:lmo": "Zagabria", + "name:lt": "Zagrebas", + "name:lv": "Zagreba", + "name:mhr": "Загреб", + "name:mk": "Загреб", + "name:mt": "Żagreb", + "name:no": "Zagreb", + "name:oc": "Zagrèb", + "name:os": "Загреб", + "name:pih": "Sakreb", + "name:pl": "Zagrzeb", + "name:pms": "Zagabria", + "name:ru": "Загреб", + "name:sah": "Загреб", + "name:sc": "Zagàbria", + "name:sk": "Záhreb", + "name:sq": "Zagrebi", + "name:sr": "Загреб", + "name:sr-Latn": "Zagreb", + "name:sv": "Zagreb", + "name:szl": "Zagrzeb", + "name:tg": "Загреб", + "name:th": "ซาเกร็บ", + "name:tl": "Zagreb", + "name:udm": "Загреб", + "name:ug": "Zagréb", + "name:uk": "Загреб", + "name:ur": "زغرب", + "name:vec": "Zagavria", + "name:wo": "Sagreb", + "name:yi": "זאגרעב", + "name:yue": "薩格勒布", + "name:zh": "薩格勒布", + "name:zh-Hans": "萨格勒布", + "name:zh-Hant": "薩格勒布" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 15.9771774, + 45.8131847 + ] + }, + "id": "node/1551865419" + }, + { + "type": "Feature", + "properties": { + "name": "Praha", + "name:af": "Praag", + "name:ak": "Prague", + "name:am": "ፕራግ", + "name:an": "Praga", + "name:ar": "براغ", + "name:arc": "ܦܪܐܓ", + "name:arz": "براج", + "name:ast": "Praga", + "name:az": "Praqa", + "name:bat-smg": "Praha", + "name:be": "Прага", + "name:be-tarask": "Прага", + "name:bg": "Прага", + "name:bo": "པུ་ལ་ཁེ།", + "name:br": "Praha", + "name:bs": "Prag", + "name:ca": "Praga", + "name:ckb": "پراگ", + "name:co": "Praga", + "name:cs": "Praha", + "name:csb": "Praga", + "name:cu": "Прага", + "name:cv": "Прага", + "name:cy": "Prag", + "name:da": "Prag", + "name:de": "Prag", + "name:dsb": "Praha", + "name:ee": "Prague", + "name:el": "Πράγα", + "name:en": "Prague", + "name:eo": "Prago", + "name:es": "Praga", + "name:et": "Praha", + "name:eu": "Praga", + "name:ext": "Praga", + "name:fa": "پراگ", + "name:fi": "Praha", + "name:fiu-vro": "Praha", + "name:fo": "Prag", + "name:fr": "Prague", + "name:fy": "Praach", + "name:ga": "Prág", + "name:gag": "Praga", + "name:gd": "Pràg", + "name:gl": "Praga", + "name:gv": "Praag", + "name:he": "פראג", + "name:hif": "Prague", + "name:hr": "Prag", + "name:hsb": "Praha", + "name:hu": "Prága", + "name:hy": "Պրահա", + "name:ia": "Praga", + "name:id": "Praha", + "name:ie": "Praha", + "name:io": "Praha", + "name:is": "Prag", + "name:it": "Praga", + "name:ja": "プラハ", + "name:jbo": "pragas", + "name:jv": "Praha", + "name:ka": "პრაღა", + "name:kk": "Прага", + "name:kl": "Praha", + "name:ko": "프라하", + "name:krc": "Прага", + "name:ku": "Prag", + "name:kv": "Прага", + "name:kw": "Praha", + "name:ky": "Прага", + "name:la": "Praga", + "name:lad": "Praga", + "name:lb": "Prag", + "name:li": "Praag", + "name:lij": "Praga", + "name:lmo": "Praga", + "name:lt": "Praha", + "name:lv": "Prāga", + "name:mdf": "Прага", + "name:mhr": "Прага", + "name:mi": "Prague", + "name:mk": "Прага", + "name:mn": "Прага", + "name:ms": "Praha", + "name:mt": "Praga", + "name:mzn": "پراگ", + "name:na": "Praha", + "name:nah": "Praha", + "name:nan": "Praha", + "name:nap": "Praga", + "name:nds": "Prag", + "name:nds-nl": "Praag", + "name:nl": "Praag", + "name:nn": "Praha", + "name:no": "Praha", + "name:nov": "Praha", + "name:nrm": "Prague", + "name:oc": "Praga", + "name:os": "Прагæ", + "name:pam": "Prague", + "name:pcd": "Prague", + "name:pl": "Praga", + "name:pms": "Praga", + "name:ps": "پراګ", + "name:pt": "Praga", + "name:qu": "Praha", + "name:rmy": "Praga", + "name:ro": "Praga", + "name:roa-rup": "Praga", + "name:roa-tara": "Praghe", + "name:ru": "Прага", + "name:sah": "Прага", + "name:sc": "Praga", + "name:sco": "Prague", + "name:se": "Praha", + "name:sh": "Prag", + "name:sk": "Praha", + "name:sl": "Praga", + "name:sq": "Praga", + "name:sr": "Праг", + "name:sr-Latn": "Prag", + "name:stq": "Praag", + "name:sv": "Prag", + "name:sw": "Praha", + "name:szl": "Praga", + "name:tg": "Прага", + "name:th": "ปราก", + "name:tl": "Praga", + "name:tr": "Prag", + "name:tt": "Прага", + "name:tzl": "Praha", + "name:udm": "Прага", + "name:ug": "پراگا", + "name:uk": "Прага", + "name:ur": "پراگ", + "name:uz": "Praga", + "name:vec": "Praga", + "name:vi": "Praha", + "name:war": "Praga", + "name:yi": "פראג", + "name:yo": "Prague", + "name:yue": "布拉格", + "name:zh": "布拉格", + "name:zu": "IPraha" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 14.4212535, + 50.0874654 + ] + }, + "id": "node/1601837931" + }, + { + "type": "Feature", + "properties": { + "name": "თბილისი", + "name:ab": "Қарҭ", + "name:ace": "Tbilisi", + "name:af": "Tbilisi", + "name:am": "ትብሊሲ", + "name:an": "Tbilisi", + "name:ar": "تبليسي", + "name:arc": "ܛܒܝܠܝܣܝ", + "name:av": "Тбилиси", + "name:az": "Tbilisi", + "name:bat-smg": "Tbėlėsis", + "name:bcl": "Tbilisi", + "name:be": "Тбілісі", + "name:be-tarask": "Тбілісі", + "name:bg": "Тбилиси", + "name:bo": "ཁྲེ་བྷི་ལི་སི།", + "name:br": "Tbilisi", + "name:bs": "Tbilisi", + "name:ca": "Tbilissi", + "name:ckb": "تبلیس", + "name:cs": "Tbilisi", + "name:cv": "Тбилиси", + "name:cy": "Tbilisi", + "name:da": "Tbilisi", + "name:de": "Tiflis", + "name:diq": "Tıflis", + "name:el": "Τιφλίδα", + "name:en": "Tbilisi", + "name:eo": "Tbiliso", + "name:es": "Tiflis", + "name:et": "Thbilisi", + "name:eu": "Tbilisi", + "name:fa": "تفلیس", + "name:fi": "Tbilisi", + "name:fiu-vro": "Thbilisi", + "name:fo": "Tbilisi", + "name:fr": "Tbilissi", + "name:frp": "Tbilisi", + "name:fy": "Tbilisy", + "name:ga": "Tbilisi", + "name:gag": "Tbilisi", + "name:gd": "Tbilisi", + "name:gl": "Tbilisi", + "name:gv": "Tbilisi", + "name:he": "טביליסי", + "name:hif": "Tbilisi", + "name:hr": "Tbilisi", + "name:hsb": "Tbilisi", + "name:ht": "Tbilisi", + "name:hu": "Tbiliszi", + "name:hy": "Թբիլիսի", + "name:id": "Tbilisi", + "name:io": "Tbilisi", + "name:is": "Tíblisi", + "name:it": "Tbilisi", + "name:ja": "トビリシ", + "name:jv": "Tbilisi", + "name:ka": "თბილისი", + "name:kbd": "Тбилиси", + "name:kk": "Тбилиси", + "name:ko": "트빌리시", + "name:ku": "Tibîlîsî", + "name:kv": "Тбилиси", + "name:ky": "Тбилиси", + "name:la": "Triphelis", + "name:lbe": "Ттуплис", + "name:lij": "Tiblisi", + "name:lmo": "Tbilisi", + "name:lt": "Tbilisis", + "name:lv": "Tbilisi", + "name:mhr": "Тбилиси", + "name:mi": "Tbilisi", + "name:mk": "Тбилиси", + "name:mn": "Тбилис", + "name:mrj": "Тбилиси", + "name:ms": "Tbilisi", + "name:myv": "Тбилиси ош", + "name:mzn": "تفلیس", + "name:nah": "Tbilisi", + "name:nan": "Tbilisi", + "name:nl": "Tbilisi", + "name:nn": "Tbilisi", + "name:no": "Tbilisi", + "name:nov": "Tbilisi", + "name:oc": "Tbilissi", + "name:os": "Тбилис", + "name:pam": "Tbilisi", + "name:pl": "Tbilisi", + "name:pms": "Tbilisi", + "name:pt": "Tbilisi", + "name:ro": "Tbilisi", + "name:roa-tara": "Tbilisi", + "name:ru": "Тбилиси", + "name:sah": "Тбилиси", + "name:sc": "Tbilisi", + "name:scn": "Tbilisi", + "name:sco": "Tbilisi", + "name:sh": "Tbilisi", + "name:simple": "Tbilisi", + "name:sk": "Tbilisi", + "name:sl": "Tbilisi", + "name:sq": "Tbilisi", + "name:sr": "Тбилиси", + "name:sv": "Tbilisi", + "name:sw": "Tbilisi", + "name:szl": "Tbilisi", + "name:tg": "Тбилисӣ", + "name:th": "ทบิลิซิ", + "name:tl": "Tbilisi", + "name:tr": "Tiflis", + "name:udm": "Тбилиси", + "name:ug": "تبىلىسى", + "name:uk": "Тбілісі", + "name:ur": "تبلیسی", + "name:vep": "Tbilisi", + "name:vi": "Tbilisi", + "name:vo": "Tbilisi", + "name:war": "Tbilisi", + "name:wo": "Tibilisi", + "name:xmf": "ქართი", + "name:yi": "טביליסי", + "name:yo": "Tbilisi", + "name:zh": "第比利斯" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 44.8014495, + 41.6934591 + ] + }, + "id": "node/1614277087" + }, + { + "type": "Feature", + "properties": { + "name": "กรุงเทพมหานคร", + "name:am": "ባንኮክ", + "name:ar": "بانكوك", + "name:arz": "بانكوك", + "name:az": "Banqkok", + "name:bat-smg": "Bankoks", + "name:be": "Бангкок", + "name:bg": "Банкок", + "name:bo": "པན་ཀོག", + "name:bpy": "চাংৱাত ব্যাংকক", + "name:ckb": "بانکۆک", + "name:cs": "Bangkok", + "name:cv": "Бангкок", + "name:de": "Bangkok", + "name:el": "Μπανγκόκ", + "name:en": "Bangkok", + "name:eo": "Bankoko", + "name:es": "Bangkok", + "name:et": "Bangkok", + "name:eu": "Bangkok", + "name:fa": "بانکوک", + "name:fi": "Bangkok", + "name:fr": "Bangkok", + "name:ga": "Bancác", + "name:gl": "Bangkok", + "name:hak": "Màn-kuk", + "name:he": "בנגקוק", + "name:hr": "Bangkok", + "name:hu": "Bangkok", + "name:hy": "Բանգկոկ", + "name:ia": "Bangkok", + "name:ie": "Banghok", + "name:io": "Bangkok", + "name:is": "Bangkok", + "name:it": "Bangkok", + "name:ja": "バンコク", + "name:ka": "ბანგკოკი", + "name:kk": "Бангкок", + "name:km": "បាងកក", + "name:ko": "방콕", + "name:koi": "Бангкок", + "name:ku": "Bangkok", + "name:la": "Bancocum", + "name:lo": "ບາງກອກ", + "name:lt": "Bankokas", + "name:lv": "Bangkoka", + "name:lzh": "曼谷", + "name:mhr": "Бангкок", + "name:mk": "Бангкок", + "name:mn": "Бангкок", + "name:mwl": "Banguecoque", + "name:new": "बैंकक", + "name:nl": "Bangkok", + "name:oc": "Bangkòk", + "name:os": "Бангкок", + "name:pl": "Bangkok", + "name:ps": "بانګکوک", + "name:pt": "Banguecoque", + "name:ru": "Бангкок", + "name:rue": "Банкок", + "name:sah": "Баҥкок", + "name:si": "බැංකොක්", + "name:sk": "Bangkok", + "name:sl": "Bangkok", + "name:sr": "Бангкок", + "name:stq": "Bangkok", + "name:sv": "Bangkok", + "name:szl": "Bangkok", + "name:tg": "Бангкок", + "name:th": "กรุงเทพมหานคร", + "name:th-Latn": "Krung Thep Maha Nakhon", + "name:uk": "Банґкок", + "name:ur": "بنکاک", + "name:vi": "Băng Cốc", + "name:wuu": "曼谷", + "name:yi": "באנגקאק", + "name:yue": "曼谷", + "name:zh": "曼谷" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 100.4935089, + 13.7524938 + ] + }, + "id": "node/1628207792" + }, + { + "type": "Feature", + "properties": { + "name": "Bruxelles - Brussel", + "name:af": "Brussel", + "name:am": "ብሩክሴል", + "name:an": "Bruselas", + "name:ang": "Brysel", + "name:ar": "بروكسل", + "name:arc": "ܒܪܘܟܣܠ", + "name:ast": "Bruxeles", + "name:azb": "بروکسل", + "name:bat-smg": "Briuselis", + "name:be": "Брусель", + "name:be-tarask": "Брусэль", + "name:bg": "Брюксел", + "name:bo": "པུའུ་ལུའུ་སེལ​།", + "name:br": "Brusel", + "name:bs": "Brisel", + "name:ca": "Brussel·les", + "name:ce": "Бруссель", + "name:ckb": "بروکسێل", + "name:crh": "Brüksel", + "name:cs": "Brusel", + "name:cy": "Brwsel", + "name:da": "Bruxelles", + "name:de": "Brüssel", + "name:diq": "Bruksel", + "name:el": "Βρυξέλλες", + "name:en": "Brussels", + "name:eo": "Bruselo", + "name:es": "Bruselas", + "name:et": "Brüssel", + "name:eu": "Brusela", + "name:ext": "Brusselas", + "name:fa": "بروکسل", + "name:fi": "Bryssel", + "name:fo": "Brussel", + "name:fr": "Bruxelles", + "name:frp": "Brussèles", + "name:fy": "Brussel", + "name:ga": "An Bhruiséil", + "name:gcf": "Brisèl", + "name:gd": "A' Bhruiseal", + "name:gl": "Bruxelas", + "name:gr": "Βρυξέλλαι", + "name:grc": "Βρυξέλλαι", + "name:gv": "Yn Vrussyl", + "name:he": "בריסל", + "name:hr": "Brisel", + "name:ht": "Briksèl", + "name:hu": "Brüsszel", + "name:hy": "Բրյուսել", + "name:ia": "Brussel", + "name:id": "Brussel", + "name:io": "Bruxel", + "name:is": "Brussel", + "name:it": "Bruxelles", + "name:ja": "ブリュッセル", + "name:jv": "Brussel", + "name:ka": "ბრიუსელი", + "name:kab": "Bruxelles", + "name:kk": "Бруссел", + "name:kl": "Bruxelles", + "name:kmr": "بروکسەل", + "name:ko": "브뤼셀", + "name:ku": "Bruksel", + "name:kv": "Брюссель", + "name:kw": "Brusselas", + "name:la": "Bruxellae", + "name:lad": "Bruselas", + "name:lb": "Bréissel", + "name:li": "Brussel", + "name:lij": "Bruxelles", + "name:ln": "Bruxelles", + "name:lrc": "بورۊکسل", + "name:lt": "Briuselis", + "name:lv": "Brisele", + "name:mg": "Brussel", + "name:mi": "Parahara", + "name:mk": "Брисел", + "name:mn": "Брюссель", + "name:ms": "Brussels", + "name:mt": "Brussell", + "name:mzn": "بروکسل", + "name:na": "Brussels", + "name:nah": "Brusel", + "name:nan": "Brussels", + "name:nap": "Bruxelles", + "name:nds": "Brüssel", + "name:nds-nl": "Bruzzel", + "name:nl": "Brussel", + "name:nn": "Brussel", + "name:no": "Brussel", + "name:nov": "Bruxelles", + "name:oc": "Brussèlas", + "name:os": "Брюссель", + "name:pap": "Brusela", + "name:pcd": "Brusselle", + "name:pl": "Bruksela", + "name:pms": "Brussel", + "name:ps": "بروکسل", + "name:pt": "Bruxelas", + "name:qu": "Brussel", + "name:ro": "Bruxelles", + "name:ru": "Брюссель", + "name:rue": "Брусел", + "name:sah": "Брүссель", + "name:scn": "Bruxelles", + "name:sh": "Bruxelles", + "name:simple": "Brussels", + "name:sk": "Brusel", + "name:sl": "Bruselj", + "name:sq": "Brukseli", + "name:sr": "Брисел", + "name:sr-Latn": "Brisel", + "name:stq": "Brussel", + "name:sv": "Bryssel", + "name:sw": "Brussels", + "name:syc": "ܒܪܘܟܣܠ", + "name:szl": "Bruksela", + "name:tg": "Брюссел", + "name:th": "บรัสเซลส์", + "name:tpi": "Brussels", + "name:tr": "Brüksel", + "name:tzl": "Brüxell", + "name:ug": "Bryussél", + "name:uk": "Брюссель", + "name:ur": "برسلز", + "name:vec": "Borseła", + "name:vep": "Brüssel'", + "name:vi": "Bruxelles", + "name:vls": "Brussel", + "name:wa": "Brussele", + "name:wuu": "布鲁塞尔", + "name:yi": "בריסל", + "name:yue": "布魯塞爾", + "name:zea": "Brussel", + "name:zh": "布魯塞爾", + "name:zh-Hans": "布鲁塞尔", + "name:zh-Hant": "布魯塞爾" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 4.351697, + 50.8465573 + ] + }, + "id": "node/1635651356" + }, + { + "type": "Feature", + "properties": { + "name": "عمان", + "name:am": "አማን", + "name:ar": "عمان", + "name:arc": "ܥܡܐܢ", + "name:bat-smg": "Amans", + "name:be": "Аман", + "name:bg": "Аман", + "name:bo": "ཨམ་མན།", + "name:bs": "Aman", + "name:ckb": "عەممان", + "name:cs": "Ammán", + "name:cv": "Амман", + "name:da": "Amman", + "name:de": "Amman", + "name:el": "Αμμάν", + "name:en": "Amman", + "name:eo": "Amano", + "name:es": "Amán", + "name:et": "Amman", + "name:eu": "Amman", + "name:fa": "امان", + "name:fi": "Amman", + "name:fr": "Amman", + "name:gl": "Amán - عمان", + "name:he": "רבת עמון", + "name:hr": "Amman", + "name:ht": "Amàn", + "name:hu": "Ammán", + "name:hy": "Ամման", + "name:is": "Amman", + "name:it": "Amman", + "name:ja": "アンマン", + "name:ka": "ამანი", + "name:kab": "Ɛemman", + "name:kk": "Амман", + "name:ko": "암만", + "name:ks": "عمان", + "name:ku": "Amman", + "name:lt": "Amanas", + "name:lv": "Ammāna", + "name:mk": "Аман", + "name:mn": "Амман", + "name:mzn": "امان", + "name:nah": "Ammān", + "name:nl": "Amman", + "name:no": "Amman", + "name:nov": "Aman", + "name:oc": "Amman", + "name:os": "Амман", + "name:pl": "Amman", + "name:pt": "Amã", + "name:ru": "Амман", + "name:sk": "Ammán", + "name:sl": "Aman", + "name:sr": "Аман", + "name:sv": "Amman", + "name:tg": "Аммон", + "name:th": "อัมมาน", + "name:tr": "Amman", + "name:tt": "Амман", + "name:ug": "ئاممان", + "name:uk": "Амман", + "name:ur": "عمان", + "name:wuu": "安曼", + "name:yi": "אמאן", + "name:zh": "安曼", + "name:zh-Hans": "安曼", + "name:zh-Hant": "安曼" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 35.9239625, + 31.9515694 + ] + }, + "id": "node/1643504896" + }, + { + "type": "Feature", + "properties": { + "name": "Porto-Novo", + "name:af": "Porto-Novo", + "name:am": "ፖርቶ ኖቮ", + "name:ar": "بورتو نوفو", + "name:ast": "Porto-Novo", + "name:az": "Porto-Novo", + "name:be": "Порта-Нова", + "name:be-tarask": "Порта-Нова", + "name:bg": "Порто Ново", + "name:bo": "པོར་ཊོ་-ནོ་བོ།", + "name:br": "Porto-Novo", + "name:bs": "Porto-Novo", + "name:ca": "Porto-Novo", + "name:ckb": "پۆرتۆ نۆڤۆ", + "name:cy": "Porto-Novo", + "name:da": "Porto-Novo", + "name:de": "Porto-Novo", + "name:el": "Πόρτο-Νόβο", + "name:en": "Porto-Novo", + "name:eo": "Porto-Novo", + "name:es": "Porto Novo", + "name:et": "Porto-Novo", + "name:eu": "Porto-Novo", + "name:fa": "پورتو نووو", + "name:fi": "Porto-Novo", + "name:fr": "Porto-Novo", + "name:frp": "Pôrto-Novo", + "name:fy": "Porto-Novo", + "name:gd": "Porto-Novo", + "name:he": "פורטו נובו", + "name:hif": "Porto-Novo", + "name:hr": "Porto-Novo", + "name:ht": "Pòto-Novo", + "name:hu": "Porto Novo", + "name:hy": "Պորտո Նովո", + "name:it": "Porto-Novo", + "name:ja": "ポルトノボ", + "name:jv": "Porto-Novo", + "name:ka": "პორტო-ნოვო", + "name:ko": "포르토노보", + "name:ky": "Порто-Ново", + "name:la": "Portus Novus", + "name:lij": "Pòrto Neuvo", + "name:lmo": "Porto-Novo", + "name:lt": "Porto Novas", + "name:lv": "Portonovo", + "name:mk": "Порто Ново", + "name:mrj": "Порто-Ново", + "name:nan": "Porto-Novo", + "name:nl": "Porto-Novo", + "name:nn": "Porto-Novo", + "name:no": "Porto-Novo", + "name:nov": "Porto-Novo", + "name:oc": "Porto-Novo", + "name:pl": "Porto-Novo", + "name:pms": "Porto-Novo", + "name:pt": "Porto-Novo", + "name:roa-rup": "Porto-Novo", + "name:ru": "Порто-Ново", + "name:sh": "Porto-Novo", + "name:simple": "Porto-Novo", + "name:sk": "Porto-Novo", + "name:so": "Borto-Novo", + "name:sr": "Порто Ново", + "name:sv": "Porto-Novo", + "name:tg": "Порто-Ново", + "name:th": "ปอร์โต-โนโว", + "name:tl": "Porto-Novo", + "name:tr": "Porto-Novo", + "name:udm": "Порто-Ново", + "name:uk": "Порто-Ново", + "name:ur": "پورٹو نووو", + "name:vec": "Porto-Novo", + "name:vi": "Porto-Novo", + "name:vo": "Porto-Novo", + "name:war": "Porto-Novo", + "name:yo": "Porto-Novo", + "name:yue": "波圖奴埠", + "name:zh": "波多諾伏", + "name:zh-Hans": "波多诺伏", + "name:zh-Hant": "波多諾伏" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 2.6253361, + 6.4990718 + ] + }, + "id": "node/1669842684" + }, + { + "type": "Feature", + "properties": { + "name": "الدوحة", + "name:ace": "Doha", + "name:af": "Doha", + "name:am": "ዶሃ", + "name:an": "Doha", + "name:ar": "الدوحة", + "name:ast": "Doḥa", + "name:awa": "दोहा(जगह)", + "name:az": "Doha", + "name:azb": "دوحه", + "name:ba": "Доһа", + "name:ban": "Doha", + "name:bat-smg": "Duoha", + "name:be": "Доха", + "name:bg": "Доха", + "name:bo": "དྷོ་ཧ།", + "name:br": "Doha", + "name:bs": "Doha", + "name:ca": "Doha", + "name:ce": "Духьа", + "name:ceb": "Doha", + "name:ckb": "دەوحە", + "name:cs": "Dauhá", + "name:cy": "Doha", + "name:da": "Doha", + "name:de": "Doha", + "name:diq": "Dewhe", + "name:dty": "दोहा", + "name:el": "Ντόχα", + "name:en": "Doha", + "name:eo": "Doho", + "name:es": "Doha", + "name:et": "Doha", + "name:eu": "Doha", + "name:ext": "Doha", + "name:fa": "دوحه", + "name:fi": "Doha", + "name:fr": "Doha", + "name:frp": "Doha", + "name:fy": "Doha", + "name:ga": "Doha", + "name:gd": "Doha", + "name:gl": "Doha", + "name:gn": "Doha", + "name:gr": "Δοχή", + "name:grc": "Δοχή", + "name:ha": "Doha", + "name:hak": "Doha", + "name:he": "דוחה", + "name:hif": "Doha", + "name:hr": "Doha", + "name:hsb": "Doha", + "name:ht": "Doha", + "name:hu": "Doha", + "name:hy": "Դոհա", + "name:ia": "Doha", + "name:id": "Doha", + "name:ie": "Doha", + "name:is": "Doha", + "name:it": "Doha", + "name:ja": "ドーハ", + "name:jv": "Doha", + "name:ka": "დოჰა", + "name:kab": "Dawḥa", + "name:kk": "Доһа", + "name:kl": "Doha", + "name:km": "ដូហា", + "name:ko": "도하", + "name:ku": "Dohe", + "name:ky": "Доха", + "name:la": "Doha", + "name:lb": "Doha", + "name:lij": "Doha", + "name:lmo": "Doha", + "name:lt": "Doha", + "name:lv": "Doha", + "name:mai": "दोहा", + "name:mg": "Doha", + "name:mk": "Доха", + "name:mn": "Доха", + "name:ms": "Doha", + "name:mzn": "دوحه", + "name:nah": "Doha", + "name:ne": "दोहा", + "name:nl": "Doha", + "name:no": "Doha", + "name:oc": "Doha", + "name:os": "Дохæ", + "name:pap": "Doha", + "name:pl": "Ad-Dauha", + "name:pms": "Doha", + "name:ps": "دوها", + "name:pt": "Doha", + "name:ro": "Doha", + "name:ru": "Доха", + "name:rue": "Доуга", + "name:rw": "Doha", + "name:sat": "ᱫᱚᱦᱟ", + "name:sc": "Doha", + "name:scn": "Doha", + "name:sco": "Doha", + "name:sh": "Doha", + "name:sk": "Dauhá", + "name:sl": "Doha", + "name:sn": "Doha", + "name:so": "Dooxa", + "name:sq": "Doha", + "name:sr": "Доха", + "name:sv": "Doha", + "name:sw": "Doha", + "name:szl": "Doha", + "name:tg": "Доҳа", + "name:th": "โดฮา", + "name:tk": "Doha", + "name:tl": "Doha", + "name:tr": "Doha", + "name:tt": "Doha", + "name:udm": "Доха", + "name:ug": "دوھا", + "name:uk": "Доха", + "name:ur": "دوحہ", + "name:uz": "Doʻha", + "name:vec": "Doha", + "name:vep": "Doh", + "name:vi": "Doha", + "name:vo": "Däuha", + "name:war": "Doha", + "name:wuu": "多哈", + "name:xmf": "დოჰა", + "name:yi": "דאכא", + "name:yo": "Doha", + "name:zh": "多哈" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 51.5264162, + 25.2856329 + ] + }, + "id": "node/1676664890" + }, + { + "type": "Feature", + "properties": { + "name": "Москва", + "name:ab": "Москва", + "name:ace": "Moskow", + "name:af": "Moskou", + "name:ak": "Moscow", + "name:am": "ሞስኮ", + "name:an": "Moscú", + "name:ang": "Moscoƿ", + "name:ar": "موسكو", + "name:arc": "ܡܘܣܩܒܐ", + "name:arz": "موسكو", + "name:ast": "Moscú", + "name:av": "Москва", + "name:ay": "Mosku", + "name:az": "Moskva", + "name:ba": "Мәскәү", + "name:bat-smg": "Maskva", + "name:bcl": "Mosku", + "name:be": "Масква", + "name:be-tarask": "Масква", + "name:bg": "Москва", + "name:bi": "Moskow", + "name:bo": "མོ་སི་ཁོ།", + "name:br": "Moskov", + "name:bs": "Moskva", + "name:bxr": "Мушхаваа", + "name:ca": "Moscou", + "name:ce": "Москох", + "name:ch": "Moscow", + "name:chm": "Моско", + "name:chu": "Москва̀", + "name:ckb": "مۆسکۆ", + "name:co": "Moscù", + "name:crh": "Moskva", + "name:cs": "Moskva", + "name:csb": "Mòskwa", + "name:cu": "Москъва", + "name:cv": "Мускав", + "name:cy": "Moscfa", + "name:da": "Moskva", + "name:de": "Moskau", + "name:diq": "Moskowa", + "name:dsb": "Moskwa", + "name:dv": "މޮސްކޯ", + "name:dz": "མོསི་ཀོ", + "name:el": "Μόσχα", + "name:eml": "Måssca", + "name:en": "Moscow", + "name:eo": "Moskvo", + "name:es": "Moscú", + "name:et": "Moskva", + "name:eu": "Mosku", + "name:ext": "Moscú", + "name:fa": "مسکو", + "name:fi": "Moskova", + "name:fiu-vro": "Moskva", + "name:fo": "Moskva", + "name:fr": "Moscou", + "name:frp": "Moscou", + "name:frr": "Moskva", + "name:fy": "Moskou", + "name:ga": "Moscó", + "name:gag": "Moskva", + "name:gan": "莫斯科", + "name:gd": "Mosgo", + "name:gl": "Moscova - Москва", + "name:gn": "Mosku", + "name:gv": "Moscow", + "name:haw": "Mokekao", + "name:he": "מוסקווה", + "name:hif": "Moscow", + "name:hr": "Moskva", + "name:hsb": "Moskwa", + "name:ht": "Moskou", + "name:hu": "Moszkva", + "name:hy": "Մոսկվա", + "name:ia": "Moscova", + "name:id": "Moskwa", + "name:ie": "Moskwa", + "name:ilo": "Moscow", + "name:io": "Moskva", + "name:is": "Moskva", + "name:it": "Mosca", + "name:iu": "ᒨᔅᑯ", + "name:ja": "モスクワ", + "name:jbo": "moskovas", + "name:jv": "Moskwa", + "name:ka": "მოსკოვი", + "name:kaa": "Moskva", + "name:kab": "Mosku", + "name:kbd": "Мэзкуу", + "name:kg": "Moskva", + "name:kk": "Мәскеу", + "name:kl": "Moskva", + "name:ko": "모스크바", + "name:koi": "Мӧсква", + "name:krc": "Москва", + "name:ku": "Moskow", + "name:kv": "Мӧскуа", + "name:kw": "Moskva", + "name:ky": "Москва", + "name:la": "Moscua", + "name:lad": "Mosku", + "name:lbe": "Москав", + "name:lez": "Москва", + "name:lg": "Moosko", + "name:li": "Moskou", + "name:lij": "Mosca", + "name:lmo": "Musca", + "name:ln": "Moskú", + "name:lt": "Maskva", + "name:lv": "Maskava", + "name:lzh": "莫斯科", + "name:mdf": "Моску", + "name:mg": "Moskva", + "name:mhr": "Моско", + "name:mi": "Mohikau", + "name:mk": "Москва", + "name:mn": "Москва", + "name:mrj": "Москва", + "name:ms": "Moscow", + "name:mt": "Moska", + "name:mwl": "Moscobo", + "name:myv": "Москов ош", + "name:mzn": "موسکو", + "name:na": "Moscow", + "name:nah": "Moscohuia", + "name:nan": "Bo̍k-su-kho", + "name:nap": "Mosca", + "name:nb": "Moskva", + "name:nds": "Moskau", + "name:nds-nl": "Moskou", + "name:nl": "Moskou", + "name:nn": "Moskva", + "name:no": "Moskva", + "name:nov": "Moskva", + "name:nrm": "Moscou", + "name:oc": "Moscòu", + "name:os": "Мæскуы", + "name:pap": "Moskou", + "name:pcd": "Moscou", + "name:pdc": "Moscow", + "name:pl": "Moskwa", + "name:pms": "Mosca", + "name:pnt": "Μόσχα", + "name:ps": "مسکو", + "name:pt": "Moscou", + "name:qu": "Moskwa", + "name:rmy": "Moscova", + "name:ro": "Moscova", + "name:roa-rup": "Moscova", + "name:roa-tara": "Mosche", + "name:ru": "Москва", + "name:rue": "Москва", + "name:sah": "Москва", + "name:sc": "Mosca", + "name:scn": "Mosca", + "name:sco": "Moscow", + "name:se": "Moskva", + "name:sg": "Moscow", + "name:sh": "Moskva", + "name:simple": "Moscow", + "name:sk": "Moskva", + "name:sl": "Moskva", + "name:sm": "Moscow", + "name:so": "Moskow", + "name:sq": "Moska", + "name:sr": "Москва", + "name:ss": "Moscow", + "name:st": "Moscow", + "name:su": "Moskwa", + "name:sv": "Moskva", + "name:sw": "Moscow", + "name:szl": "Moskwa", + "name:tet": "Moskovu", + "name:tg": "Маскав", + "name:th": "มอสโก", + "name:tk": "Moskwa", + "name:tl": "Moscow", + "name:tpi": "Mosko", + "name:tr": "Moskova", + "name:tt": "Мәскәү", + "name:ty": "Moscou", + "name:tzl": "Moscal", + "name:udm": "Муско", + "name:ug": "Moskwa", + "name:uk": "Москва", + "name:ur": "ماسکو", + "name:uz": "Moskva", + "name:vec": "Mosca", + "name:vep": "Moskv", + "name:vi": "Mát-xcơ-va", + "name:vls": "Moskou", + "name:vo": "Moskva", + "name:wa": "Moscou", + "name:war": "Moscow", + "name:wo": "Mosku", + "name:xal": "Москва балһсн", + "name:xmf": "მოსკოვი", + "name:yi": "מאסקווע", + "name:yo": "Mọsko", + "name:yue": "莫斯科", + "name:za": "Moscow", + "name:zea": "Moskou", + "name:zh": "莫斯科", + "name:zu": "IMoskwa" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 37.6174943, + 55.7504461 + ] + }, + "id": "node/1686293227" + }, + { + "type": "Feature", + "properties": { + "name": "Bandar Seri Begawan", + "name:am": "ባንዳር ሰሪ ቤጋዋን", + "name:ar": "بندر سري بكاوان", + "name:az": "Bandar Seri Begavan", + "name:be": "Бандар-Серы-Бегаван", + "name:be-tarask": "Бандар-Сэры-Бэгаван", + "name:bg": "Бандар Сери Бегаван", + "name:bo": "སི་རི་པེ་ཀ་མཚོ་ཁུགས་གྲོང་ཁྱེར​།", + "name:ckb": "بەندەر سێری بێگاوان", + "name:de": "Bandar Seri Begawan", + "name:el": "Μπαντάρ Σερί Μπεγκαβάν", + "name:en": "Bandar Seri Begawan", + "name:eo": "Bandar-Seri-Begavano", + "name:es": "Bandar Seri Begawan", + "name:eu": "Bandar Seri Begawan", + "name:fa": "بندر سری بگاوان", + "name:fr": "Bandar Seri Begawan", + "name:fy": "Bandar Sery Begawan", + "name:he": "בנדר סרי בגוואן", + "name:ht": "Banda Seri", + "name:hu": "Bandar Seri Begawan", + "name:hy": "Բանդար Սերի Բեգավան", + "name:is": "Bandar Seri Begawan", + "name:ja": "バンダルスリブガワン", + "name:ka": "ბანდარ-სერი-ბეგავანი", + "name:ko": "반다르스리브가완", + "name:ky": "Бандар-Сери-Бегаван", + "name:lt": "Bandar Seri Begavanas", + "name:lv": "Bandarseribegavana", + "name:mk": "Бандар Сери Бегаван", + "name:mn": "Бандар Сери Бегаван", + "name:os": "Бандар-Сери-Бегаван", + "name:pl": "Bandar Seri Begawan", + "name:ru": "Бандар-Сери-Бегаван", + "name:sr": "Бандар Сери Бегаван", + "name:sv": "Bandar Seri Begawan", + "name:tg": "Бандар-Сери-Бегаван", + "name:th": "บันดาร์เสรีเบกาวัน", + "name:tr": "Bandar Seri Begavan", + "name:tt": "Бандар-Сери-Бегаван", + "name:ug": "باندار سەرى بەگاۋان", + "name:uk": "Бандар-Сері-Бегаван", + "name:ur": "بندر سری بگاوان", + "name:zh": "斯里巴加湾市" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 114.9417574, + 4.8895453 + ] + }, + "id": "node/1699083598" + }, + { + "type": "Feature", + "properties": { + "name": "طرابلس", + "name:ace": "Tarabulus", + "name:af": "Tripoli", + "name:am": "ትሪፖሊ", + "name:an": "Tripoli", + "name:ar": "طرابلس", + "name:arz": "طرابلس", + "name:ast": "Trípoli", + "name:az": "Tripoli", + "name:azb": "طرابلس", + "name:bcl": "Tripoli", + "name:be": "Трыпалі", + "name:be-tarask": "Трыпалі", + "name:bg": "Триполи", + "name:bo": "ཐི་རི་ཕོ་ལི", + "name:br": "Tripoli", + "name:bs": "Tripoli", + "name:ca": "Trípoli", + "name:ckb": "تەرابلوس", + "name:cs": "Tripolis", + "name:cy": "Tripoli", + "name:da": "Tripoli", + "name:de": "Tripolis", + "name:el": "Τρίπολη", + "name:en": "Tripoli", + "name:eo": "Tripolo", + "name:es": "Trípoli", + "name:et": "Tripoli", + "name:eu": "Tripoli", + "name:ext": "Trípoli", + "name:fa": "طرابلس", + "name:fi": "Tripoli", + "name:fr": "Tripoli", + "name:fy": "Tripoly", + "name:ga": "Tripilí", + "name:gd": "Tripoli", + "name:gl": "Trípoli", + "name:gr": "Τρίπολις", + "name:grc": "Τρίπολις", + "name:he": "טריפולי", + "name:hif": "Tripoli", + "name:hr": "Tripoli", + "name:ht": "Tripoli", + "name:hu": "Tripoli", + "name:hy": "Տրիպոլի", + "name:hyw": "Թրիփոլի", + "name:id": "Tripoli", + "name:io": "Tripoli", + "name:is": "Trípólí", + "name:it": "Tripoli", + "name:ja": "トリポリ", + "name:jv": "Tripoli", + "name:ka": "ტრიპოლი", + "name:kab": "Ṭrables", + "name:kk": "Триполи", + "name:kl": "Tripoli", + "name:ko": "트리폴리", + "name:ks": "طرابلس", + "name:ku": "Trablûs", + "name:kw": "Tripoli", + "name:ky": "Триполи", + "name:la": "Oea", + "name:lad": "Tripoli", + "name:lij": "Tripoli", + "name:lmo": "Tripul", + "name:lt": "Tripolis", + "name:lv": "Tripole", + "name:map-bms": "Tripoli", + "name:mk": "Триполи", + "name:mn": "Триполи", + "name:mrj": "Триполи", + "name:ms": "Tripoli", + "name:nan": "Tripoli", + "name:nl": "Tripoli", + "name:nn": "Tripoli", + "name:no": "Tripoli", + "name:nov": "Tripoli", + "name:oc": "Trípol", + "name:os": "Триполи", + "name:pap": "Tripoli", + "name:pl": "Trypolis", + "name:pms": "Trìpoli", + "name:pnt": "Τρίπολις", + "name:ps": "ترابلس", + "name:pt": "Trípoli", + "name:qu": "Tripoli", + "name:ro": "Tripoli", + "name:roa-rup": "Tripoli", + "name:ru": "Триполи", + "name:sc": "Tripoli", + "name:scn": "Trìpuli", + "name:sco": "Tripoli", + "name:sh": "Tripoli", + "name:simple": "Tripoli", + "name:sk": "Tripolis", + "name:sl": "Tripoli", + "name:so": "Triboli", + "name:sr": "Триполи", + "name:sv": "Tripoli", + "name:sw": "Tripoli", + "name:tg": "Триполи", + "name:th": "ตริโปลี", + "name:tl": "Tripoli", + "name:tr": "Trablus", + "name:udm": "Триполи", + "name:ug": "ترىپولى", + "name:uk": "Триполі", + "name:ur": "طرابلس", + "name:vec": "Tripołi", + "name:vi": "Tripoli", + "name:vo": "Tarabulus", + "name:war": "Tripoli", + "name:wo": "Tripoli", + "name:yi": "טריפאלי", + "name:yo": "Tripoli", + "name:yue": "的黎波里", + "name:zh": "的黎波里" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 13.1777923, + 32.896672 + ] + }, + "id": "node/1699640925" + }, + { + "type": "Feature", + "properties": { + "name": "София", + "name:am": "ሶፊያ", + "name:an": "Sofiya", + "name:ar": "صوفيا", + "name:arz": "صوفيا", + "name:ast": "Sofía", + "name:az": "Sofiya", + "name:bat-smg": "Suofėjė", + "name:be": "Сафія", + "name:be-tarask": "Сафія", + "name:bg": "София", + "name:bo": "སོ་ཧྥི་ཡ།", + "name:bs": "Sofija", + "name:ca": "Sofia", + "name:ckb": "سۆفیا", + "name:crh": "Sofiya", + "name:cs": "Sofie", + "name:cu": "Софїꙗ", + "name:cv": "Софиа", + "name:de": "Sofia", + "name:diq": "Sofya", + "name:dsb": "Sofija", + "name:el": "Σόφια", + "name:en": "Sofia", + "name:eo": "Sofio", + "name:es": "Sofía", + "name:et": "Sofia", + "name:eu": "Sofia", + "name:fa": "صوفیه", + "name:fi": "Sofia", + "name:fr": "Sofia", + "name:ga": "Sóifia", + "name:gag": "Sofiya", + "name:gl": "Sofía", + "name:he": "סופיה", + "name:hr": "Sofija", + "name:hsb": "Sofija", + "name:hu": "Szófia", + "name:hy": "Սոֆիա", + "name:io": "Sofiya", + "name:is": "Sófía", + "name:it": "Sofia", + "name:ja": "ソフィア", + "name:ka": "სოფია", + "name:kaa": "Sofiya", + "name:kk": "София", + "name:ko": "소피아", + "name:ku": "Sofya", + "name:kv": "София", + "name:ky": "София", + "name:la": "Serdica", + "name:lez": "София", + "name:lij": "Sòfia", + "name:lt": "Sofija", + "name:lv": "Sofija", + "name:mhr": "Софий", + "name:mk": "Софија", + "name:mn": "Софи", + "name:myv": "София ош", + "name:nah": "Sofiya", + "name:nl": "Sofia", + "name:no": "Sofia", + "name:oc": "Sòfia", + "name:os": "София", + "name:pl": "Sofia", + "name:pms": "Sòfia", + "name:pt": "Sófia", + "name:qu": "Sofiya", + "name:rmy": "Sofiya", + "name:ro": "Sofia", + "name:ru": "София", + "name:rw": "Sofiya", + "name:sah": "София", + "name:sh": "Sofija", + "name:sk": "Sofia", + "name:sl": "Sofija", + "name:sq": "Sofja", + "name:sr": "Софија", + "name:sv": "Sofia", + "name:tg": "София", + "name:th": "โซเฟีย", + "name:tk": "Sofiýa", + "name:tr": "Sofya", + "name:udm": "София", + "name:ug": "سوفىيە", + "name:uk": "Софія", + "name:ur": "صوفیہ", + "name:vep": "Sofii", + "name:vi": "Sofia", + "name:vo": "Sofiya", + "name:wo": "Sofiya", + "name:yi": "סאפיע", + "name:zh": "索非亞", + "name:zh-Hans": "索非亚", + "name:zh-Hant": "索非亞" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 23.3217359, + 42.6977028 + ] + }, + "id": "node/1700083447" + }, + { + "type": "Feature", + "properties": { + "name": "Monaco", + "name:ace": "Monakô", + "name:af": "Monaco", + "name:ak": "Mɔnako", + "name:als": "Monaco", + "name:am": "ሞናኮ", + "name:an": "Múnegu", + "name:ang": "Monaco", + "name:ar": "موناكو", + "name:arc": "ܡܘܢܐܩܘ", + "name:arz": "موناكو", + "name:ast": "Mónacu", + "name:az": "Monako", + "name:azb": "موناکو", + "name:ba": "Монако", + "name:bar": "Monaco", + "name:bat-smg": "Muonaks", + "name:bcl": "Monako", + "name:be": "Манака", + "name:be-tarask": "Манака", + "name:bg": "Монако", + "name:bi": "Monaco", + "name:bm": "Monako", + "name:bo": "མོ་ན་ཁོ།", + "name:bpy": "মোনাকো", + "name:br": "Monako", + "name:bs": "Monako", + "name:bxr": "Монако", + "name:ca": "Mònaco", + "name:ce": "Монако", + "name:ceb": "Monako", + "name:chr": "ᎹᎾᎪ", + "name:ckb": "مۆناکۆ", + "name:crh": "Monako", + "name:cs": "Monako", + "name:csb": "Mònakò", + "name:cu": "Монако", + "name:cv": "Монако", + "name:cy": "Monaco", + "name:da": "Monaco", + "name:de": "Monaco", + "name:diq": "Monako", + "name:dsb": "Monaco", + "name:dv": "މޮނާކޯ", + "name:dz": "མོ་ན་ཀོ", + "name:ee": "Monako nutome", + "name:el": "Μονακό", + "name:en": "Monaco", + "name:eo": "Monako", + "name:es": "Mónaco", + "name:et": "Monaco", + "name:eu": "Monako", + "name:ext": "Mónacu", + "name:fa": "موناکو", + "name:ff": "Monaakoo", + "name:fi": "Monaco", + "name:fiu-vro": "Monaco", + "name:fo": "Monako", + "name:fr": "Monaco", + "name:frp": "Monacô", + "name:frr": "Monako", + "name:fy": "Monako", + "name:ga": "Monacó", + "name:gag": "Monako", + "name:gd": "Monaco", + "name:gl": "Mónaco", + "name:gv": "Monaco", + "name:ha": "Monako", + "name:hak": "Mô-na̍p-kô", + "name:haw": "Monako", + "name:he": "מונקו", + "name:hif": "Monaco", + "name:hr": "Monako", + "name:hsb": "Monako", + "name:ht": "Monako", + "name:hu": "Monaco", + "name:hy": "Մոնակո", + "name:ia": "Monaco", + "name:id": "Monako", + "name:ie": "Mónaco", + "name:ilo": "Monaco", + "name:io": "Monako", + "name:is": "Mónakó", + "name:it": "Monaco", + "name:ja": "モナコ", + "name:jv": "Monako", + "name:ka": "მონაკო", + "name:kaa": "Monako", + "name:kab": "Munaku", + "name:kbd": "Монако", + "name:kg": "Monako", + "name:ki": "Monako", + "name:kk": "Монако", + "name:kl": "Monaco", + "name:km": "ម៉ូណាកូ", + "name:ko": "모나코", + "name:koi": "Монако", + "name:krc": "Монако", + "name:ks": "مونیٚکو", + "name:ksh": "Monakko", + "name:ku": "Monako", + "name:kv": "Монако", + "name:kw": "Monako", + "name:la": "Monoecus", + "name:lad": "Monako", + "name:lb": "Monaco", + "name:lez": "Монако", + "name:lg": "Monako", + "name:li": "Monaco", + "name:lij": "Múnegu", + "name:lmo": "Monach", + "name:ln": "Monako", + "name:lo": "ໂມນາໂກ", + "name:lt": "Monakas", + "name:ltg": "Monaks", + "name:lv": "Monako", + "name:mdf": "Монако", + "name:mg": "Mônakô", + "name:mhr": "Монако онлык", + "name:mi": "Manako", + "name:mk": "Монако", + "name:mn": "Монако", + "name:ms": "Monaco", + "name:mt": "Monako", + "name:na": "Monako", + "name:nah": "Monaco", + "name:nan": "Monaco", + "name:nds": "Monaco", + "name:nds-nl": "Monaco", + "name:ne": "मोनाको", + "name:nl": "Monaco", + "name:nn": "Monaco", + "name:no": "Monaco", + "name:nov": "Monako", + "name:oc": "Mónegue", + "name:os": "Монако", + "name:pam": "Monako", + "name:pcd": "Monaco", + "name:pfl": "Monaggo", + "name:pih": "Monako", + "name:pl": "Monako", + "name:pms": "Mònaco", + "name:pnt": "Μονακό", + "name:pt": "Mónaco", + "name:qu": "Munaku", + "name:rm": "Monaco", + "name:rn": "Monako", + "name:ro": "Monaco", + "name:roa-tara": "Prengepáte de Monache", + "name:ru": "Монако", + "name:rw": "Monako", + "name:sa": "मोनाको", + "name:sah": "Монако", + "name:scn": "Mònacu", + "name:sco": "Monaco", + "name:se": "Monaco", + "name:sg": "Monaköo", + "name:sh": "Monako", + "name:si": "මොනාකෝව", + "name:sk": "Monako", + "name:sl": "Monako", + "name:smn": "Monaco", + "name:sms": "Monaco", + "name:so": "Moonako", + "name:sq": "Monako", + "name:sr": "Монако", + "name:ss": "IMonakho", + "name:stq": "Monaco", + "name:su": "Monako", + "name:sv": "Monaco", + "name:sw": "Monako", + "name:szl": "Můnako", + "name:tg": "Монако", + "name:th": "ประเทศโมนาโก", + "name:ti": "ሞናኮ", + "name:tk": "Monako", + "name:tl": "Monako", + "name:to": "Manako", + "name:tr": "Monako", + "name:tt": "Монако", + "name:tw": "Monako", + "name:tzl": "Mónaco", + "name:udm": "Монако", + "name:ug": "موناكو", + "name:uk": "Монако", + "name:ur": "موناکو", + "name:uz": "Monako", + "name:vec": "Mònaco", + "name:vep": "Monak", + "name:vi": "Monaco", + "name:vo": "Monakän", + "name:war": "Monaco", + "name:wo": "Monaako", + "name:wuu": "摩纳哥", + "name:xal": "Монакин Нутг", + "name:xmf": "მონაკო", + "name:yi": "מאנאקא", + "name:yo": "Mónakò", + "name:yue": "摩納哥", + "name:zea": "Monaco", + "name:zh": "摩納哥", + "name:zh-Hans": "摩纳哥", + "name:zh_pinyin": "Mónàgē", + "name:zu": "i-Monaco" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 7.4197576, + 43.7311424 + ] + }, + "id": "node/1790048269" + }, + { + "type": "Feature", + "properties": { + "name": "Stanley", + "name:ar": "ستانلي", + "name:az": "Stenli", + "name:bat-smg": "Port Stenlis", + "name:be": "Порт-Стэнлі", + "name:be-tarask": "Стэнлі", + "name:bg": "Порт Стенли", + "name:el": "Στάνλεϋ", + "name:en": "Stanley", + "name:eo": "Stanlejo", + "name:es": "Puerto Argentino", + "name:fr": "Port Stanley", + "name:gv": "Stanley", + "name:he": "סטנלי", + "name:hr": "Stanley", + "name:hy": "Պորտ Սթենլի", + "name:id": "Stanley", + "name:ja": "スタンリー", + "name:ko": "스탠리", + "name:lt": "Stenlis", + "name:lv": "Stenli", + "name:os": "Порт-Стэнли", + "name:ru": "Стэнли", + "name:uk": "Порт-Стенлі", + "name:ur": "اسٹینلے", + "name:zh": "斯坦利港" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -57.8491693, + -51.6950575 + ] + }, + "id": "node/1791553385" + }, + { + "type": "Feature", + "properties": { + "name": "Hamilton", + "name:ar": "هاميلتون", + "name:de": "Hamilton", + "name:en": "Hamilton", + "name:es": "Hamilton", + "name:fr": "Hamilton", + "name:hu": "Hamilton", + "name:it": "Hamilton", + "name:ko": "해밀턴", + "name:lt": "Hamiltonas", + "name:mk": "Хамилтон", + "name:nl": "Hamilton", + "name:no": "Hamilton", + "name:pl": "Hamilton", + "name:pt": "Hamilton", + "name:ru": "Гамильтон", + "name:sv": "Hamilton", + "name:tr": "Hamilton", + "name:uk": "Гамільтон", + "name:zh": "漢密爾頓" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -64.7827048, + 32.2956076 + ] + }, + "id": "node/1811574522" + }, + { + "type": "Feature", + "properties": { + "name": "Aşgabat", + "name:ace": "Ashgabat", + "name:af": "Asjchabat", + "name:am": "አሽጋባት", + "name:ar": "عشق آباد", + "name:arz": "عشق اباد", + "name:az": "Aşqabad", + "name:be": "Ашхабад", + "name:be-tarask": "Ашгабад", + "name:bg": "Ашхабад", + "name:bo": "ཨ་ཧྲི་ཁ་པད​།", + "name:bs": "Ashgabat", + "name:ckb": "عیشقاباد", + "name:crh": "Aşğabat", + "name:cs": "Ašchabad", + "name:cy": "Ashgabat", + "name:da": "Asjkhabad", + "name:de": "Aschgabat", + "name:dsb": "Ašchabad", + "name:el": "Ασγκαμπάτ", + "name:en": "Ashgabat", + "name:eo": "Aŝgabato", + "name:es": "Asjabad", + "name:eu": "Asgabat", + "name:fa": "عشق آباد", + "name:fi": "Ašgabat", + "name:fr": "Achgabat", + "name:fy": "Asjchabad", + "name:gd": "Ashgabat", + "name:gl": "Achkhabad - Aşgabat", + "name:he": "אשגאבט", + "name:hif": "Ashgabat", + "name:hr": "Ašgabat", + "name:hsb": "Ašchabad", + "name:ht": "Achgabat", + "name:hu": "Asgabat", + "name:hy": "Աշխաբադ", + "name:id": "Ashgabat", + "name:ie": "Ashgabat", + "name:io": "Ashgabat", + "name:is": "Asgabat", + "name:it": "Aşgabat", + "name:ja": "アシガバート", + "name:ka": "აშხაბადი", + "name:kk": "Ашғабад", + "name:ko": "아시가바트", + "name:koi": "Ашхабад", + "name:kv": "Ашхабад", + "name:lb": "Aschchabad", + "name:lt": "Ašchabadas", + "name:lv": "Ašgabata", + "name:mhr": "Ашхабад", + "name:mk": "Ашхабад", + "name:mn": "Ашгабат", + "name:ms": "Ashgabat", + "name:myv": "Ашхабад ош", + "name:nan": "Ashgabat", + "name:nl": "Asjchabad", + "name:nn": "Asjkhabad", + "name:no": "Asjkhabad", + "name:nov": "Ashgabat", + "name:oc": "Ashgabat", + "name:os": "Ашхабад", + "name:pl": "Aszchabad", + "name:pms": "Ashgabat", + "name:pt": "Asgabate", + "name:roa-rup": "Ashgabat", + "name:ru": "Ашхабад", + "name:sah": "Ашгабат", + "name:sco": "Ashgabat", + "name:sk": "Ašchabad", + "name:sl": "Ašhabad", + "name:sq": "Aschgabat", + "name:sr": "Ашхабад", + "name:sv": "Asjchabad", + "name:sw": "Ashgabat", + "name:tg": "Ишқобод", + "name:th": "อาชกาบัต", + "name:tl": "Ashgabat", + "name:tr": "Aşkabat", + "name:tt": "Ашкабад", + "name:udm": "Ашхабад", + "name:ug": "Ashxabad", + "name:uk": "Ашгабат", + "name:ur": "اشک آباد", + "name:uz": "Ashxobod", + "name:vep": "Ašhabad", + "name:vi": "Ashgabat", + "name:war": "Ashgabat", + "name:wuu": "阿什哈巴德", + "name:yi": "אשגאבאט", + "name:yo": "Ashgabat", + "name:zh": "阿什哈巴德" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 58.3823487, + 37.9404648 + ] + }, + "id": "node/1811650017" + }, + { + "type": "Feature", + "properties": { + "name": "Tiranë", + "name:am": "ቲራና", + "name:an": "Tirana", + "name:ar": "تيرانا", + "name:arz": "تيرانا", + "name:ast": "Tirana", + "name:bat-smg": "Tėrana", + "name:be": "Тырана", + "name:be-tarask": "Тырана", + "name:bg": "Тирана", + "name:bo": "ཐིས་རན།", + "name:ca": "Tirana", + "name:ce": "Тирана", + "name:ckb": "تیرانا", + "name:cs": "Tirana", + "name:cv": "Тирана", + "name:de": "Tirana", + "name:el": "Τίρανα", + "name:en": "Tirana", + "name:eo": "Tirano", + "name:es": "Tirana", + "name:et": "Tirana", + "name:eu": "Tirana", + "name:fa": "تیرانا", + "name:fr": "Tirana", + "name:ga": "Tiorána", + "name:gl": "Tirana", + "name:gv": "Tiranë", + "name:he": "טירנה", + "name:hr": "Tirana", + "name:hu": "Tirana", + "name:hy": "Տիրանա", + "name:io": "Tirane", + "name:is": "Tírana", + "name:it": "Tirana", + "name:ja": "ティラナ", + "name:ka": "ტირანა", + "name:kab": "Tirana", + "name:kk": "Тирана", + "name:ko": "티라나", + "name:ku": "Tîrana", + "name:kv": "Тирана", + "name:la": "Theranda", + "name:lv": "Tirāna", + "name:mhr": "Тирана", + "name:mk": "Тирана", + "name:nl": "Tirana", + "name:no": "Tirana", + "name:oc": "Tirana", + "name:os": "Тиранæ", + "name:pl": "Tirana", + "name:pms": "Tiran-a", + "name:ps": "تیرانا", + "name:pt": "Tirana", + "name:ru": "Тирана", + "name:sah": "Тирана", + "name:sk": "Tirana", + "name:sr": "Тирана", + "name:sv": "Tirana", + "name:tg": "Тирана", + "name:th": "ติรานา", + "name:tr": "Tiran, Arnavutluk", + "name:tt": "Тирана", + "name:udm": "Тирана", + "name:uk": "Тирана", + "name:ur": "تیرانا", + "name:vep": "Tiran", + "name:yi": "טיראנא", + "name:zh": "地拉那" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 19.8184435, + 41.3281482 + ] + }, + "id": "node/1835254686" + }, + { + "type": "Feature", + "properties": { + "name": "Kuala Lumpur", + "name:am": "ኩዋላ ሉምፑር", + "name:ar": "كوالالمبور", + "name:arz": "كوالا لامبور", + "name:be": "Куала-Лумпур", + "name:be-tarask": "Куала Лумпур", + "name:bg": "Куала Лумпур", + "name:bo": "ཁལ་ལུང་ཕུ།", + "name:ckb": "کوالالومپور", + "name:de": "Kuala Lumpur", + "name:el": "Κουάλα Λουμπούρ", + "name:en": "Kuala Lumpur", + "name:eo": "Kuala-Lumpuro", + "name:es": "Kuala Lumpur", + "name:fa": "کوالالامپور", + "name:fr": "Kuala Lumpur", + "name:he": "קואלה לומפור", + "name:ht": "Kouala Loumpou", + "name:hu": "Kuala Lumpur", + "name:hy": "Կուալա Լումպուր", + "name:is": "Kúala Lúmpúr", + "name:ja": "クアラルンプール", + "name:ka": "კუალა-ლუმპური", + "name:kk": "Куала Лумпур", + "name:ko": "쿠알라룸푸르", + "name:lt": "Kvala Lumpūras", + "name:lv": "Kualalumpūra", + "name:mk": "Куала Лумпур", + "name:mn": "Куала Лумпур", + "name:nl": "Kuala Lumpur", + "name:oc": "Kuala Lumpur", + "name:os": "Куалæ-Лумпур", + "name:pl": "Kuala Lumpur", + "name:ps": "کوالالامپور", + "name:pt": "Kuala Lumpur", + "name:ru": "Куала-Лумпур", + "name:sah": "Куала Лумпур", + "name:sr": "Куала Лумпур", + "name:sv": "Kuala Lumpur", + "name:th": "กัวลาลัมเปอร์", + "name:ug": "كۇئالالۇمپۇر", + "name:uk": "Куала-Лумпур", + "name:ur": "کوالالمپور", + "name:yue": "吉隆坡", + "name:zh": "吉隆坡", + "name:zh_pinyin": "Jílóngbō" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 101.6942371, + 3.1516964 + ] + }, + "id": "node/1889910974" + }, + { + "type": "Feature", + "properties": { + "name": "Λευκωσία - Lefkoşa", + "name:af": "Nicosia", + "name:am": "ሌፍኮዚያ", + "name:an": "Nicosia", + "name:ar": "نيقوسيا", + "name:arz": "نيكوسيا", + "name:az": "Nikosiya", + "name:az-Arab": "لفکوشا", + "name:azb": "لفکوشا", + "name:be": "Нікасія", + "name:bg": "Никозия", + "name:bo": "ནེ་ཁོ་ཤི་ཡ།", + "name:br": "Nikozia", + "name:bs": "Nikozija", + "name:ca": "Nicòsia", + "name:ckb": "نیکۆسیا", + "name:crh": "Lefkoşa", + "name:cs": "Nikósie", + "name:cy": "Nicosia", + "name:da": "Nicosia", + "name:de": "Nikosia", + "name:el": "Λευκωσία", + "name:en": "Nicosia", + "name:eo": "Nikozio", + "name:es": "Nicosia", + "name:et": "Nikosia", + "name:fa": "لفکوشای", + "name:fr": "Nicosie", + "name:ga": "An Leafcóis", + "name:gag": "Lefkoşa", + "name:gd": "Nicosia", + "name:gl": "Nicosia", + "name:gr": "Λευκωσία", + "name:grc": "Λευκωσία", + "name:gv": "Lefkosia", + "name:he": "ניקוסיה", + "name:hr": "Nikozija", + "name:ht": "Nikozi", + "name:hu": "Nicosia", + "name:hy": "Նիկոսիա", + "name:hyw": "Նիկոսիա", + "name:is": "Nikósía", + "name:it": "Nicosia", + "name:ja": "ニコシア", + "name:ka": "ნიქოზია", + "name:kaa": "Arqa Nikosiya", + "name:kk": "Никосия", + "name:kk-Arab": "لەفكوسىييا", + "name:kl": "Nicosia", + "name:ko": "니코시아", + "name:ky": "Лефкоша", + "name:la": "Nicosia", + "name:lad": "Nikosiya", + "name:lij": "Nicosia", + "name:lmo": "Nicoséa", + "name:lt": "Nikosija", + "name:lv": "Nikosija", + "name:mdf": "Никосия", + "name:mi": "Nicosia", + "name:mk": "Левкозија", + "name:ms": "Nicosia", + "name:mzn": "نیکوزیا", + "name:nah": "Nicosia", + "name:nan": "Nicosia", + "name:nap": "Nicosìa", + "name:nl": "Nicosia", + "name:oc": "Nicosia", + "name:os": "Никоси", + "name:pl": "Nikozja", + "name:pms": "Nicosìa", + "name:pnt": "Λευκωσίαν", + "name:ps": "نیکوزیا", + "name:pt": "Nicósia", + "name:ro": "Nicosia", + "name:ru": "Никосия", + "name:rw": "Nikosiya", + "name:sah": "Никосия", + "name:sco": "Nicosia", + "name:sh": "Nikozija", + "name:sk": "Nikózia", + "name:sl": "Nikozija", + "name:sq": "Nicosia", + "name:sr": "Никозија", + "name:stq": "Nicosia", + "name:sv": "Nicosia", + "name:tg": "Никосия", + "name:th": "นิโคเซีย", + "name:tl": "Nicosia", + "name:tr": "Lefkoşa", + "name:tt": "Никосия", + "name:udm": "Никосия", + "name:ug": "نىكوسىيە", + "name:uk": "Нікосія", + "name:ur": "نیکوسیا", + "name:vep": "Nikosii", + "name:vi": "Nicosia", + "name:war": "Nicosia", + "name:yi": "ניקאסיע", + "name:yo": "Nicosia", + "name:zh": "尼科西亞" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 33.3638568, + 35.1748976 + ] + }, + "id": "node/1893015330" + }, + { + "type": "Feature", + "properties": { + "name": "서울", + "name:af": "Seoel", + "name:am": "ሶል", + "name:an": "Seúl", + "name:ar": "سول", + "name:arz": "سول", + "name:ast": "Seúl", + "name:az": "Seul", + "name:ba": "Сеул", + "name:bat-smg": "Seuls", + "name:be": "Сеул", + "name:be-tarask": "Сэул", + "name:bg": "Сеул", + "name:bh": "सियोल", + "name:bjn": "Soul", + "name:bo": "སེ་ཨུལ།", + "name:bs": "Seul", + "name:ca": "Seül", + "name:cdo": "Siū-ék", + "name:ckb": "سیئۆل", + "name:crh": "Seul", + "name:cs": "Soul", + "name:csb": "Seul", + "name:cv": "Сеул", + "name:de": "Seoul", + "name:diq": "Seul", + "name:dsb": "Soul", + "name:el": "Σεούλ", + "name:en": "Seoul", + "name:eo": "Seulo", + "name:es": "Seúl", + "name:et": "Sŏul", + "name:eu": "Seul", + "name:ext": "Seúl", + "name:fa": "سئول", + "name:fi": "Soul", + "name:fiu-vro": "Sŏul", + "name:fr": "Séoul", + "name:gag": "Seul", + "name:gan": "首爾", + "name:gl": "Seúl", + "name:he": "סיאול", + "name:hr": "Seul", + "name:hu": "Szöul", + "name:hy": "Սեուլ", + "name:is": "Seúl", + "name:it": "Seul", + "name:ja": "ソウル", + "name:jbo": ".sol.", + "name:ka": "სეული", + "name:kab": "Seyul", + "name:kk": "Сеул", + "name:km": "សេអ៊ូល", + "name:ko": "서울", + "name:ku": "Sêûl", + "name:ky": "Сеул", + "name:la": "Seulum", + "name:lt": "Seulas", + "name:lv": "Seula", + "name:lzh": "首爾", + "name:mhr": "Сеул", + "name:mk": "Сеул", + "name:mn": "Сөүл", + "name:nah": "Seul", + "name:nan": "Seoul Te̍k-pia̍t-chhī", + "name:nl": "Seoel", + "name:oc": "Seol", + "name:os": "Сеул", + "name:pl": "Seul", + "name:pt": "Seul", + "name:qu": "Siul", + "name:ro": "Seul", + "name:roa-tara": "Seul", + "name:ru": "Сеул", + "name:rue": "Соул", + "name:sah": "Сеул", + "name:sk": "Soul", + "name:sl": "Seul", + "name:sr": "Сеул", + "name:sv": "Seoul", + "name:szl": "Seul", + "name:tg": "Сеул", + "name:th": "โซล", + "name:tk": "Seul", + "name:tpi": "Sol", + "name:tr": "Seul", + "name:uk": "Сеул", + "name:ur": "سؤل", + "name:uz": "Seul", + "name:vi": "Seoul", + "name:vo": "Söul", + "name:wuu": "首尔", + "name:yi": "סעאל", + "name:yue": "首爾", + "name:zh": "首尔", + "name:zh-Hans": "首尔", + "name:zh-Hant": "首爾" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 126.9782914, + 37.5666791 + ] + }, + "id": "node/1912365631" + }, + { + "type": "Feature", + "properties": { + "name": "Vaduz", + "name:am": "ፋዱጽ", + "name:ar": "فادوز", + "name:az": "Vaduts", + "name:be": "Вадуц", + "name:be-tarask": "Вадуц", + "name:bg": "Вадуц", + "name:bo": "བ་དུ་ཛི།", + "name:ckb": "ڤادوز", + "name:cv": "Вадуц", + "name:el": "Βαντούζ", + "name:en": "Vaduz", + "name:eo": "Vaduzo", + "name:es": "Vaduz", + "name:fa": "فادوتس", + "name:fr": "Vaduz", + "name:he": "ואדוץ", + "name:ht": "Vadouz", + "name:hu": "Vaduz", + "name:hy": "Վադուց", + "name:ja": "ファドゥーツ", + "name:ka": "ვადუცი", + "name:ko": "파두츠", + "name:ky": "Вадуц", + "name:la": "Dulcis Vallis", + "name:lij": "Vadus", + "name:lt": "Vaducas", + "name:lv": "Vaduca", + "name:mk": "Вадуц", + "name:nds": "Vaduz", + "name:no": "Vaduz", + "name:os": "Вадуц", + "name:pl": "Vaduz", + "name:ru": "Вадуц", + "name:sah": "Вадуц", + "name:sr": "Вадуц", + "name:tg": "Вадутс", + "name:th": "วาดุซ", + "name:udm": "Вадуц", + "name:ug": "ۋادۇز", + "name:uk": "Вадуц", + "name:vep": "Vaduc", + "name:wo": "Wadus", + "name:zh": "瓦杜茲" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 9.5227962, + 47.1392862 + ] + }, + "id": "node/1932181216" + }, + { + "type": "Feature", + "properties": { + "name": "La Paz", + "name:am": "ላፓዝ", + "name:ar": "لاباز", + "name:ay": "Chuquiago Marka", + "name:az": "La Pas", + "name:be": "Ла-Пас", + "name:bg": "Ла Пас", + "name:ckb": "لاپاز", + "name:de": "La Paz", + "name:el": "Λα Παζ", + "name:en": "La Paz", + "name:eo": "La-Pazo", + "name:fa": "لاپاز", + "name:fr": "La Paz", + "name:gl": "La Paz", + "name:he": "לה פאס", + "name:hy": "Լա Պաս", + "name:id": "La Paz", + "name:is": "La Paz", + "name:it": "La Paz", + "name:ja": "ラパス", + "name:ka": "ლა-პასი", + "name:ko": "라파스", + "name:ku": "Lapaz", + "name:la": "Paxia", + "name:lt": "La Pasas", + "name:lv": "Lapasa", + "name:mi": "La Paz", + "name:mk": "Ла Паз", + "name:nl": "La Paz", + "name:no": "La Paz", + "name:oc": "La Paz", + "name:os": "Ла-Пас", + "name:pl": "La Paz", + "name:pt": "La Paz", + "name:qu": "Chuqiyapu", + "name:ru": "Ла-Пас", + "name:sr": "Ла Паз", + "name:sv": "La Paz", + "name:th": "ลาปาซ", + "name:tr": "La Paz", + "name:uk": "Ла-Пас", + "name:ur": "لا پاز", + "name:yi": "לא פאז", + "name:zh": "拉巴斯" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -68.1336229, + -16.4955455 + ] + }, + "id": "node/1975648720" + }, + { + "type": "Feature", + "properties": { + "name": "Sarajevo", + "name:ar": "سراييفو", + "name:be": "Сараева", + "name:bs": "Sarajevo", + "name:ckb": "سارایێڤۆ", + "name:de": "Sarajevo", + "name:en": "Sarajevo", + "name:es": "Sarajevo", + "name:fa": "سارایوو", + "name:fr": "Sarajevo", + "name:gl": "Saraxevo", + "name:he": "סרייבו", + "name:hr": "Sarajevo", + "name:hu": "Szarajevó", + "name:it": "Saraievo", + "name:ja": "サラエヴォ", + "name:ko": "사라예보", + "name:lrc": "سارایاٛ ڤو", + "name:lt": "Sarajevas", + "name:mk": "Сараево", + "name:no": "Sarajevo", + "name:oc": "Sarajevo", + "name:pl": "Sarajewo", + "name:ru": "Сараево", + "name:sl": "Sarajevo", + "name:sr": "Сарајево", + "name:sr-Latn": "Sarajevo", + "name:sv": "Sarajevo", + "name:tr": "Saraybosna", + "name:ug": "سارايېۋو", + "name:uk": "Сараєво", + "name:ur": "سرائیوو", + "name:zh": "塞拉耶佛", + "name:zh-HK": "薩拉熱窩", + "name:zh-TW": "塞拉耶佛" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 18.3866868, + 43.8519774 + ] + }, + "id": "node/2021709163" + }, + { + "type": "Feature", + "properties": { + "name": "Reykjavík", + "name:ar": "ريكيافيك", + "name:be": "Рэйк'явік", + "name:ckb": "ڕێکیاڤیک", + "name:de": "Reykjavik", + "name:en": "Reykjavik", + "name:es": "Reikiavik", + "name:fr": "Reykjavik", + "name:hu": "Reykjavík", + "name:is": "Reykjavík", + "name:it": "Reykjavík", + "name:ja": "レイキャヴィク", + "name:lt": "Reikjavikas", + "name:no": "Reykjavík", + "name:oc": "Reykjavik", + "name:pl": "Reykjavík", + "name:pt": "Reiquiavique", + "name:ru": "Рейкьявик", + "name:sk": "Reykjavík", + "name:sv": "Reykjavik", + "name:zh": "雷克雅未克" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -21.9422367, + 64.145981 + ] + }, + "id": "node/2107832620" + }, + { + "type": "Feature", + "properties": { + "name": "Bakı", + "name:ab": "Бақәа", + "name:ace": "Baku", + "name:ady": "Баку", + "name:af": "Bakoe", + "name:am": "ባኩ", + "name:an": "Bacú", + "name:ang": "Baku", + "name:ar": "باكو", + "name:arz": "باكو", + "name:ast": "Bakú", + "name:av": "Баку", + "name:awa": "बाकु", + "name:az": "Bakı", + "name:az-cyr": "Бакы", + "name:azb": "باکی", + "name:ba": "Баҡы", + "name:bat-smg": "Baku", + "name:bcl": "Baku", + "name:be": "Баку", + "name:be-tarask": "Баку", + "name:be-x-old": "Баку", + "name:bg": "Баку", + "name:bo": "བཱ་ཀུ།", + "name:br": "Bakou", + "name:bs": "Baku", + "name:bxr": "Баку", + "name:ca": "Bakú", + "name:cdo": "Baku", + "name:ce": "Бакох", + "name:ceb": "Baku City", + "name:ckb": "باکوو", + "name:crh": "Baqu", + "name:cs": "Baku", + "name:cv": "Баку", + "name:cy": "Baku", + "name:da": "Baku", + "name:de": "Baku", + "name:diq": "Bakı", + "name:dsb": "Baku", + "name:dv": "ބާކޫ", + "name:el": "Μπακού", + "name:en": "Baku", + "name:eo": "Bakuo", + "name:es": "Bakú", + "name:et": "Bakuu", + "name:eu": "Baku", + "name:fa": "باکو", + "name:ff": "Baku", + "name:fi": "Baku", + "name:fiu-vro": "Bakuu", + "name:fo": "Baku", + "name:fr": "Bakou", + "name:frp": "Bakou", + "name:frr": "Baku", + "name:fy": "Bakû", + "name:ga": "Bakı", + "name:gag": "Baku", + "name:gd": "Baku", + "name:gl": "Bakú", + "name:gr": "Βακυΐα", + "name:grc": "Βακυΐα", + "name:ha": "Baku", + "name:hak": "Baku", + "name:he": "באקו", + "name:hif": "Baku", + "name:hr": "Baku", + "name:hsb": "Baku", + "name:ht": "Bakou", + "name:hu": "Baku", + "name:hy": "Բաքու", + "name:hyw": "Պաքու", + "name:ia": "Baku", + "name:id": "Baku", + "name:ie": "Baku", + "name:ilo": "Baku", + "name:inh": "Баку", + "name:io": "Baku", + "name:is": "Bakú", + "name:it": "Baku", + "name:ja": "バクー", + "name:jv": "Baku", + "name:ka": "ბაქო", + "name:kaa": "Baku", + "name:kab": "Baku", + "name:kbd": "Баку", + "name:kg": "Baku", + "name:kk": "Баку", + "name:ko": "바쿠", + "name:ku": "Bakû", + "name:kv": "Баку", + "name:kw": "Baku", + "name:ky": "Баку", + "name:la": "Bacua", + "name:lad": "Baku", + "name:lb": "Baku", + "name:lez": "Баку", + "name:lfn": "Bacu", + "name:li": "Bakoe", + "name:lij": "Baku", + "name:lmo": "Baku", + "name:ln": "Baku", + "name:lt": "Baku", + "name:lv": "Baku", + "name:mai": "बाकु (राजधानी)", + "name:mdf": "Баку", + "name:mg": "Baku", + "name:mhr": "Баку", + "name:mi": "Baku", + "name:mk": "Баку", + "name:mn": "Баку", + "name:mni": "ꯕꯥꯀꯨ", + "name:mrj": "Баку", + "name:ms": "Baku", + "name:mt": "Baku", + "name:myv": "Баку ош", + "name:mzn": "باکو", + "name:na": "Baku", + "name:ne": "बाकु (राजधानी)", + "name:new": "बाकु", + "name:nl": "Bakoe", + "name:nn": "Baku", + "name:no": "Baku", + "name:nov": "Baku", + "name:nv": "Kinłánítah Naayolí", + "name:ny": "Baku", + "name:oc": "Baki", + "name:os": "Баку", + "name:pap": "Baku", + "name:pih": "Baku", + "name:pl": "Baku", + "name:pms": "Baku", + "name:ps": "باکو", + "name:pt": "Baku", + "name:qu": "Baku", + "name:ro": "Baku", + "name:roa_tara": "Baku", + "name:ru": "Баку", + "name:rw": "Baku", + "name:sah": "Баку", + "name:sat": "ᱵᱟᱠᱩ", + "name:sc": "Baku", + "name:scn": "Baku", + "name:sco": "Baku", + "name:sd": "باڪو", + "name:se": "Baku", + "name:sh": "Baku", + "name:si": "බාකු", + "name:simple": "Baku", + "name:sk": "Baku", + "name:sl": "Baku", + "name:smn": "Baku", + "name:sn": "Baku", + "name:so": "Baku", + "name:sq": "Baku", + "name:sr": "Баку", + "name:srn": "Baku", + "name:st": "Baku", + "name:su": "Baku", + "name:sv": "Baku", + "name:sw": "Baku", + "name:szl": "Baku", + "name:tet": "Baku", + "name:tg": "Боку", + "name:th": "บากู", + "name:tk": "Baku", + "name:tl": "Baku", + "name:tr": "Bakü", + "name:tt": "Бакы", + "name:tw": "Baku", + "name:ty": "Baku", + "name:tyv": "Бакы", + "name:udm": "Баку", + "name:ug": "باکو", + "name:uk": "Баку", + "name:ur": "باکو", + "name:uz": "Boku", + "name:vec": "Bakù", + "name:vep": "Baku", + "name:vi": "Baku", + "name:vls": "Baku", + "name:vo": "Bakı", + "name:war": "Baku", + "name:wo": "Baku", + "name:wuu": "巴库", + "name:xmf": "ბაქო", + "name:yi": "באקו", + "name:yo": "Baku", + "name:yue": "巴庫", + "name:zea": "Bakoe", + "name:zh": "巴库", + "name:zh_min_nan": "Baku", + "name:zu": "Baku" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 49.8328009, + 40.3755885 + ] + }, + "id": "node/2117350415" + }, + { + "type": "Feature", + "properties": { + "name": "Adamstown", + "name:ar": "آدمزتاون", + "name:az": "Adamstaun", + "name:bg": "Адамстаун", + "name:da": "Adamstown", + "name:de": "Adamstown", + "name:en": "Adamstown", + "name:es": "Adamstown", + "name:fr": "Adamstown", + "name:hr": "Adamstown", + "name:hu": "Adamstown", + "name:it": "Adamstown", + "name:ja": "アダムスタウン", + "name:ko": "애덤스타운", + "name:lt": "Adamstaunas", + "name:mk": "Адамстаун", + "name:nl": "Adamstown", + "name:no": "Adamstown", + "name:pih": "Adamstaun", + "name:pl": "Adamstown", + "name:pt": "Adamstown", + "name:ro": "Adamstown", + "name:ru": "Адамстаун", + "name:sk": "Adamstown", + "name:sr": "Адамстаун", + "name:sv": "Adamstown", + "name:tr": "Adamstown", + "name:uk": "Адамстаун", + "name:zh": "亞當斯敦" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -130.100205, + -25.066667 + ] + }, + "id": "node/2134592841" + }, + { + "type": "Feature", + "properties": { + "name": "Lomé", + "name:am": "ሎሜ", + "name:ar": "لومي", + "name:arz": "لوميه", + "name:az": "Lome", + "name:be": "Ламэ", + "name:be-tarask": "Ломэ", + "name:bg": "Ломе", + "name:bo": "ལཱོ་མེ།", + "name:ckb": "لۆمێ", + "name:de": "Lomé", + "name:el": "Λομέ", + "name:en": "Lomé", + "name:eo": "Lomeo", + "name:es": "Lomé", + "name:eu": "Lome", + "name:fa": "لومه", + "name:fr": "Lomé", + "name:fy": "Lomee", + "name:he": "לומה", + "name:ht": "Lomé", + "name:hu": "Lomé", + "name:hy": "Լոմե", + "name:io": "Lome", + "name:is": "Lomé", + "name:it": "Lomé", + "name:ja": "ロメ", + "name:ka": "ლომე", + "name:ko": "로메", + "name:ky": "Ломе", + "name:la": "Lome", + "name:lt": "Lomė", + "name:lv": "Lome", + "name:mk": "Ломе", + "name:mrj": "Ломе", + "name:nl": "Lomé", + "name:no": "Lomé", + "name:nov": "Lome", + "name:oc": "Lomé", + "name:pl": "Lomé", + "name:ps": "لوم", + "name:pt": "Lomé", + "name:ru": "Ломе", + "name:so": "Lome", + "name:sr": "Ломе", + "name:sv": "Lomé", + "name:sw": "Lome", + "name:tg": "Ломе", + "name:th": "โลเม", + "name:tr": "Lomé", + "name:udm": "Ломе", + "name:ug": "لومې", + "name:uk": "Ломе", + "name:ur": "لومے", + "name:zh": "洛美" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 1.215829, + 6.130419 + ] + }, + "id": "node/2195276463" + }, + { + "type": "Feature", + "properties": { + "name": "Douglas", + "name:br": "Doolish", + "name:en": "Douglas", + "name:es": "Douglas", + "name:fr": "Douglas", + "name:ga": "Dúlais", + "name:gd": "Dùghlais", + "name:gv": "Doolish", + "name:hu": "Douglas", + "name:it": "Douglas", + "name:mk": "Даглас", + "name:pl": "Douglas", + "name:ru": "Дуглас", + "name:zh": "道格拉斯" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -4.4779021, + 54.149774 + ] + }, + "id": "node/2199688788" + }, + { + "type": "Feature", + "properties": { + "name": "Suva", + "name:ar": "سوفا", + "name:az-Arab": "سووا", + "name:azb": "سووا", + "name:be": "Сува", + "name:da": "Suva", + "name:de": "Suva", + "name:el": "Σούβα", + "name:en": "Suva", + "name:eo": "Suva", + "name:es": "Suva", + "name:fa": "سووا", + "name:fr": "Suva", + "name:hu": "Suva", + "name:hy": "Սուվա", + "name:ia": "Suva", + "name:id": "Suva", + "name:ie": "Suva", + "name:io": "Suva", + "name:is": "Suva", + "name:it": "Suva", + "name:ja": "スバ", + "name:ka": "სუვა", + "name:ko": "수바", + "name:ks": "سووا", + "name:mk": "Сува", + "name:ms": "Suva", + "name:nl": "Suva", + "name:nn": "Suva", + "name:no": "Suva", + "name:ny": "Suva", + "name:oc": "Suva", + "name:pl": "Suva", + "name:ps": "سووا", + "name:pt": "Suva", + "name:ro": "Suva", + "name:ru": "Сува", + "name:rw": "Suva", + "name:sk": "Suva", + "name:sl": "Suva", + "name:sn": "Suva", + "name:sq": "Suva", + "name:sr": "Сува", + "name:sv": "Suva", + "name:sw": "Suva", + "name:tl": "Suva", + "name:to": "Suva", + "name:tr": "Suva", + "name:ur": "سووا", + "name:uz": "Suva", + "name:vi": "Suva", + "name:yue": "蘇瓦", + "name:zh": "苏瓦" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 178.4421662, + -18.1415884 + ] + }, + "id": "node/2289652909" + }, + { + "type": "Feature", + "properties": { + "name": "St. Helier", + "name:ar": "ساينت هيلير", + "name:be": "Сент-Хеліер", + "name:br": "Sant-Heler", + "name:en": "St. Helier", + "name:es": "San Helerio", + "name:fa": "سن هلیه", + "name:fr": "Saint-Hélier", + "name:he": "סנט הלייר", + "name:hu": "Saint Helier", + "name:it": "Saint Helier", + "name:ka": "სენტ-ჰელიერი", + "name:ko": "세인트헬리어", + "name:lt": "Sent Helieras", + "name:mk": "Сент Хелиер", + "name:nrf": "St. Hélyi", + "name:pl": "Saint Helier", + "name:pt": "Santo Helério", + "name:ru": "Сент-Хелиер", + "name:th": "เซนต์เฮลิเยอร์", + "name:tr": "Saint Helier", + "name:uk": "Сент-Гелієр", + "name:ur": "سینٹ ہیلیر", + "name:zh": "聖赫利爾", + "name:zh-Hans": "圣赫利尔", + "name:zh-Hant": "聖赫利爾" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -2.1102277, + 49.1856637 + ] + }, + "id": "node/2615659256" + }, + { + "type": "Feature", + "properties": { + "name": "Port of Spain", + "name:azb": "پورت آو اسپاین", + "name:be": "Порт-оф-Спейн", + "name:be-tarask": "Порт-оф-Спэйн", + "name:en": "Port of Spain", + "name:es": "Puerto España", + "name:fr": "Port-d'Espagne", + "name:gcf": "Pòt o spèn", + "name:gr": "Ἱσπανολιμήν", + "name:grc": "Ἱσπανολιμήν", + "name:hu": "Port of Spain", + "name:oc": "Port of Spain", + "name:pl": "Port of Spain", + "name:pt": "Porto Espanha", + "name:ru": "Порт-оф-Спейн", + "name:sr": "Порт ов Спејн", + "name:sv": "Port-of-Spain", + "name:uk": "Порт-оф-Спейн", + "name:ur": "پورٹ آف اسپین", + "name:zh": "西班牙港" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -61.5180173, + 10.6572678 + ] + }, + "id": "node/2718091147" + }, + { + "type": "Feature", + "properties": { + "name": "Prishtinë", + "name:ar": "بريشتينا", + "name:be": "Прышціна", + "name:be-tarask": "Прышціна", + "name:cs": "Priština", + "name:de": "Pristina", + "name:el": "Πρίστινα", + "name:en": "Pristina", + "name:es": "Pristina", + "name:et": "Priština", + "name:fr": "Pristina", + "name:he": "פרישטינה", + "name:hr": "Priština", + "name:hu": "Pristina", + "name:it": "Pristina", + "name:ja": "プリシュティナ", + "name:mk": "Приштина", + "name:pl": "Prisztina", + "name:pt": "Pristina", + "name:ru": "Приштина", + "name:sk": "Priština", + "name:sl": "Priština", + "name:sq": "Prishtinë", + "name:sr": "Приштина", + "name:sr-Latn": "Priština", + "name:sv": "Pristina", + "name:tr": "Priştine", + "name:zh": "普里什蒂纳" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 21.1640849, + 42.6638771 + ] + }, + "id": "node/2885136501" + }, + { + "type": "Feature", + "properties": { + "name": "Funafuti", + "name:en": "Funafuti", + "name:hu": "Funafuti", + "name:ru": "Фунафути", + "name:zh": "富纳富提" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 179.1982548, + -8.5199633 + ] + }, + "id": "node/3376265049" + }, + { + "type": "Feature", + "properties": { + "name": "މާލެ", + "name:cs": "Male", + "name:de": "Malé", + "name:en": "Malé", + "name:et": "Male", + "name:fr": "Malé", + "name:hu": "Malé", + "name:nl": "Malé", + "name:oc": "Male", + "name:pl": "Male", + "name:sv": "Malé", + "name:zh": "马累" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 73.5107387, + 4.1779879 + ] + }, + "id": "node/3385374395" + }, + { + "type": "Feature", + "properties": { + "name": "ঢাকা", + "name:am": "ዳካ", + "name:ar": "دكا", + "name:arz": "داكا", + "name:az": "Dəkkə", + "name:ba": "Дакка", + "name:bat-smg": "Daka", + "name:be": "Дака", + "name:bg": "Дака", + "name:bo": "དྷ་ཁ།", + "name:ce": "Дакка", + "name:ckb": "داکا", + "name:crh": "Dakka", + "name:cs": "Dháka", + "name:de": "Dhaka", + "name:diq": "Deka", + "name:dv": "ޑާކާ", + "name:el": "Ντάκα", + "name:en": "Dhaka", + "name:eo": "Dako", + "name:es": "Daca", + "name:et": "Dhaka", + "name:eu": "Dhaka", + "name:ext": "Dacca", + "name:fa": "داکا", + "name:fr": "Dacca", + "name:fy": "Daka", + "name:gl": "Dacca - ঢাকা", + "name:he": "דאקה", + "name:ht": "Daka", + "name:hu": "Dakka", + "name:hy": "Դաքքա", + "name:ia": "Dhaka", + "name:io": "Dhaka", + "name:is": "Daka", + "name:it": "Dacca", + "name:ja": "ダッカ", + "name:ka": "დაკა", + "name:kk": "Дакка", + "name:ko": "다카", + "name:ku": "Daka", + "name:la": "Dacca", + "name:lt": "Daka", + "name:lv": "Daka", + "name:mhr": "Дакка", + "name:mk": "Дака", + "name:mn": "Дака", + "name:nah": "Daca", + "name:new": "ढाका", + "name:nov": "Daka", + "name:oc": "Dhaka", + "name:os": "Даккæ", + "name:pl": "Dhaka", + "name:pms": "Dacca", + "name:pt": "Daca", + "name:ro": "Dacca", + "name:ru": "Дакка", + "name:rue": "Дгака", + "name:sah": "Дака", + "name:scn": "Dacca", + "name:sk": "Dháka", + "name:sl": "Daka", + "name:sr": "Дака", + "name:sv": "Dhaka", + "name:tg": "Дакка", + "name:th": "ธากา", + "name:tk": "Dakka", + "name:tr": "Dakka", + "name:udm": "Дакка", + "name:ug": "داككا", + "name:uk": "Дакка", + "name:ur": "ڈھاکہ", + "name:vep": "Dakk", + "name:yi": "דאקא", + "name:yue": "達卡", + "name:zh": "達卡/达卡" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 90.389015, + 23.7644025 + ] + }, + "id": "node/3442474911" + }, + { + "type": "Feature", + "properties": { + "name": "Dublin", + "name:ace": "Dublin", + "name:ady": "Дублин", + "name:af": "Dublin", + "name:als": "Dublin", + "name:am": "ደብሊን", + "name:an": "Dublín", + "name:ang": "Difelin", + "name:ar": "دبلن", + "name:arc": "ܕܒܠܢ", + "name:arz": "دوبلين", + "name:ast": "Ciudá de Dublín", + "name:av": "Дублин", + "name:avk": "Dublin", + "name:ay": "Dublin", + "name:az": "Dublin", + "name:azb": "دوبلین", + "name:ba": "Дублин", + "name:ban": "Dublin", + "name:bar": "Dublin", + "name:bat-smg": "Doblėns", + "name:bcl": "Dublin", + "name:be": "Дублін", + "name:be-tarask": "Дублін", + "name:be-x-old": "Дублін", + "name:bg": "Дъблин", + "name:bo": "དུབ་ལིན།", + "name:br": "Dulenn", + "name:bs": "Dublin", + "name:bxr": "Дублин", + "name:ca": "Dublín", + "name:cdo": "Dublin", + "name:ce": "Дублин", + "name:ceb": "Dublin", + "name:ckb": "دەبڵین", + "name:crh": "Dublin", + "name:cs": "Dublin", + "name:cu": "Доублинъ", + "name:cv": "Дублин", + "name:cy": "Dulyn", + "name:da": "Dublin", + "name:de": "Dublin", + "name:diq": "Dublin", + "name:dsb": "Dublin", + "name:ee": "Dublin", + "name:el": "Δουβλίνο", + "name:en": "Dublin", + "name:eo": "Dublino", + "name:es": "Dublín", + "name:et": "Dublin", + "name:eu": "Dublin", + "name:ext": "Dublín", + "name:fa": "دوبلین", + "name:fi": "Dublin", + "name:fo": "Dublin", + "name:fr": "Dublin", + "name:frp": "Dublin", + "name:frr": "Dublin", + "name:fy": "Dublin", + "name:ga": "Baile Átha Cliath", + "name:gag": "Dublin", + "name:gd": "Baile Àtha Cliath", + "name:gl": "Dublín - Baile Átha Cliath", + "name:gv": "Divlyn", + "name:hak": "Dublin", + "name:haw": "Kupelina", + "name:he": "דבלין", + "name:hif": "Dublin", + "name:hr": "Dublin", + "name:hsb": "Dublin", + "name:ht": "Diblin", + "name:hu": "Dublin", + "name:hy": "Դուբլին", + "name:hyw": "Տապլին", + "name:ia": "Dublin", + "name:id": "Dublin", + "name:ie": "Dublin", + "name:ilo": "Dublin", + "name:io": "Dublin", + "name:is": "Dyflinn", + "name:it": "Dublino", + "name:ja": "ダブリン", + "name:jbo": "dublin", + "name:jv": "Dublin", + "name:ka": "დუბლინი", + "name:kab": "Dublin", + "name:kk": "Дублин", + "name:ko": "더블린", + "name:krc": "Дублин", + "name:ku": "Dublîn", + "name:kw": "Dulyn", + "name:ky": "Дублин", + "name:la": "Eblana", + "name:lad": "Dublin", + "name:lb": "Dublin", + "name:lfn": "Dublin", + "name:li": "Dublin", + "name:lij": "Dublin", + "name:lmo": "Düblin", + "name:ln": "Dublin", + "name:lt": "Dublinas", + "name:lv": "Dublina", + "name:mi": "Tapurini", + "name:mk": "Даблин", + "name:mn": "Дублин", + "name:mrj": "Дублин", + "name:ms": "Dublin", + "name:mt": "Dublin", + "name:myv": "Дублин ош", + "name:na": "Dublin", + "name:nah": "Dublin", + "name:nan": "Dublin", + "name:nds": "Dublin", + "name:nds-nl": "Dublin", + "name:new": "दब्लिन", + "name:nl": "Dublin", + "name:nn": "Dublin", + "name:no": "Dublin", + "name:nov": "Dublin", + "name:nrm": "Dublîn", + "name:nv": "Tóhodiłhił", + "name:oc": "Dublin", + "name:om": "Dubliin", + "name:os": "Дублин", + "name:pap": "Dublin", + "name:pih": "Dublin", + "name:pl": "Dublin", + "name:pms": "Dublin", + "name:ps": "ډبلن", + "name:pt": "Dublin", + "name:qu": "Baile Átha Cliath", + "name:rm": "Dublin", + "name:ro": "Dublin", + "name:ru": "Дублин", + "name:rue": "Даблин", + "name:rw": "Dublin", + "name:sah": "Дублин", + "name:sc": "Dublinu", + "name:scn": "Dublinu", + "name:sco": "Dublin", + "name:sd": "ڊبلن", + "name:se": "Dublin", + "name:sh": "Dublin", + "name:sk": "Dublin", + "name:sl": "Dublin", + "name:sn": "Dublin", + "name:so": "Dublin", + "name:sq": "Dublini", + "name:sr": "Даблин", + "name:stq": "Dublin", + "name:sv": "Dublin", + "name:sw": "Dublin", + "name:szl": "Dublin", + "name:tg": "Дублин", + "name:th": "ดับลิน", + "name:tl": "Dublin", + "name:tpi": "Dublin", + "name:tr": "Dublin", + "name:tt": "Дублин", + "name:udm": "Дублин", + "name:ug": "دۇبلىن", + "name:uk": "Дублін", + "name:ur": "ڈبلن", + "name:uz": "Dublin", + "name:vec": "Dublin", + "name:vep": "Dublin", + "name:vi": "Dublin", + "name:vo": "Baile Átha Cliath", + "name:wa": "Dublin", + "name:war": "Dublin", + "name:wo": "Dublin", + "name:wuu": "都柏林", + "name:xmf": "დუბლინი", + "name:yi": "דובלין", + "name:yo": "Dublin", + "name:yue": "都柏林", + "name:zh": "都柏林" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -6.2602964, + 53.3498006 + ] + }, + "id": "node/3473474851" + }, + { + "type": "Feature", + "properties": { + "name": "Ngerulmud", + "name:ar": "نغيرولمود", + "name:en": "Ngerulmud", + "name:es": "Ngerulmud", + "name:fr": "Ngerulmud", + "name:hu": "Ngerulmud", + "name:pl": "Ngerulmud", + "name:zh": "恩吉鲁穆德", + "name:zh-Hans": "恩吉鲁穆德", + "name:zh-Hant": "恩吉鲁穆德" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 134.6242864, + 7.5006446 + ] + }, + "id": "node/4244310289" + }, + { + "type": "Feature", + "properties": { + "name": "Lima", + "name:ab": "Лима", + "name:am": "ሊማ", + "name:ar": "ليما", + "name:arz": "ليما", + "name:be": "Ліма", + "name:be-tarask": "Ліма", + "name:bg": "Лима", + "name:bo": "ལི་མ།", + "name:cv": "Лима", + "name:de": "Lima", + "name:el": "Λίμα", + "name:en": "Lima", + "name:eo": "Limo", + "name:es": "Lima", + "name:fa": "لیما", + "name:fr": "Lima", + "name:ga": "Líoma", + "name:he": "לימה", + "name:hu": "Lima", + "name:hy": "Լիմա", + "name:is": "Líma", + "name:ja": "リマ", + "name:ka": "ლიმა", + "name:ko": "리마", + "name:krc": "Лима", + "name:ku": "Lîma", + "name:mhr": "Лима", + "name:mk": "Лима", + "name:oc": "Lima", + "name:os": "Лимæ", + "name:pl": "Lima", + "name:ru": "Лима", + "name:sr": "Лима", + "name:sv": "Lima", + "name:th": "ลิมา", + "name:tl": "Lungsod ng Lima", + "name:ug": "لىما", + "name:uk": "Ліма", + "name:ur": "لیما", + "name:xmf": "ლიმა", + "name:yi": "לימא", + "name:zh": "利馬/利马", + "name:zh-Hans": "利马" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -77.0365256, + -12.0621065 + ] + }, + "id": "node/4289361265" + }, + { + "type": "Feature", + "properties": { + "name": "Hargeysa هرجيسا", + "name:ar": "هرجيسا", + "name:de": "Hargeysa", + "name:en": "Hargeisa", + "name:es": "Hargeisa", + "name:fr": "Hargeysa", + "name:hak": "Hargeysa", + "name:he": "הרגייסה", + "name:it": "Hargheisa", + "name:ko": "하르게이사", + "name:nan": "Hargeysa", + "name:ru": "Харгейса", + "name:so": "Hargeysa", + "name:zh": "哈尔格萨 / 哈爾格薩", + "name:zh-Hans": "哈尔格萨", + "name:zh-Hant": "哈爾格薩" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 44.061803, + 9.561733 + ] + }, + "id": "node/4298140251" + }, + { + "type": "Feature", + "properties": { + "name": "Castries", + "name:acf": "Kastwi", + "name:am": "ካስትሪስ", + "name:ar": "كاستريس", + "name:az": "Kastris", + "name:be": "Кастры", + "name:be-tarask": "Кастрыз", + "name:bg": "Кастрийс", + "name:bo": "ཁ་སི་ཐྲིས།", + "name:el": "Κάστρις", + "name:en": "Castries", + "name:es": "Castries", + "name:fa": "کاستریس", + "name:fr": "Castries", + "name:fy": "Kastrys", + "name:gcf": "Kastri", + "name:he": "קסטריז", + "name:ht": "Kastri", + "name:hu": "Castries", + "name:ja": "カストリーズ", + "name:ka": "კასტრი", + "name:ko": "캐스트리스", + "name:lt": "Kastris", + "name:lv": "Kastri", + "name:mk": "Кастри", + "name:pl": "Castries", + "name:ru": "Кастри", + "name:sah": "Кастрис", + "name:sr": "Кастри", + "name:sv": "Castries", + "name:th": "แคสตรีส์", + "name:uk": "Кастрі", + "name:ur": "کاستریس", + "name:zh": "卡斯特里" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -60.9902359, + 14.0095966 + ] + }, + "id": "node/4428259435" + }, + { + "type": "Feature", + "properties": { + "name": "Victoria", + "name:af": "Victoria", + "name:am": "ቪክቶሪያ፥ ሲሸልስ", + "name:an": "Victoria", + "name:ar": "فيكتوريا", + "name:arz": "فيكتوريا", + "name:ast": "Victoria", + "name:avk": "Victoria", + "name:az": "Viktoriya", + "name:be": "Вікторыя", + "name:be-x-old": "Вікторыя", + "name:bg": "Виктория", + "name:bo": "ཝིག་ཐོ་རི་ཡ།", + "name:br": "Victoria", + "name:bs": "Victoria", + "name:ca": "Victòria", + "name:cdo": "Victoria", + "name:ce": "Виктори", + "name:ceb": "Victoria", + "name:ckb": "ڤیکتۆریا", + "name:cs": "Victoria", + "name:cv": "Виктори", + "name:cy": "Victoria", + "name:da": "Victoria", + "name:de": "Victoria", + "name:el": "Βικτώρια", + "name:en": "Victoria", + "name:eo": "Viktorio", + "name:es": "Victoria", + "name:et": "Victoria", + "name:eu": "Victoria", + "name:fa": "ویکتوریا", + "name:fi": "Victoria", + "name:fr": "Victoria", + "name:fy": "Victoria", + "name:ga": "Victoria na Séiséal", + "name:gd": "Victoria", + "name:gl": "Victoria", + "name:gn": "Victoria", + "name:ha": "Biktoriya", + "name:hak": "Victoria", + "name:he": "ויקטוריה", + "name:hif": "Victoria", + "name:hr": "Victoria", + "name:ht": "Viktorya", + "name:hu": "Victoria", + "name:hy": "Վիկտորիա", + "name:ia": "Victoria", + "name:id": "Victoria", + "name:ie": "Victoria", + "name:io": "Victoria", + "name:it": "Victoria", + "name:ja": "ヴィクトリア", + "name:jv": "Victoria", + "name:ka": "ვიქტორია", + "name:kab": "Victoria", + "name:kk": "Виктория", + "name:ko": "빅토리아", + "name:ku": "Vîktorya", + "name:ky": "Виктория", + "name:la": "Victoria", + "name:lb": "Victoria", + "name:lij": "Victòria", + "name:lmo": "Victoria", + "name:lt": "Viktorija", + "name:lv": "Viktorija", + "name:mg": "Victoria", + "name:mk": "Викторија", + "name:mn": "Викториа", + "name:ms": "Victoria", + "name:nap": "Victoria", + "name:nl": "Victoria", + "name:nn": "Victoria på Seychellane", + "name:no": "Victoria", + "name:oc": "Victòria", + "name:olo": "Viktorii", + "name:os": "Виктори", + "name:pl": "Victoria", + "name:pms": "Victoria", + "name:pt": "Vitória", + "name:ro": "Victoria", + "name:ru": "Виктория", + "name:sc": "Victoria", + "name:sco": "Victoria", + "name:sh": "Victoria", + "name:simple": "Victoria", + "name:sk": "Victoria", + "name:sl": "Viktorija", + "name:smn": "Victoria", + "name:sn": "Victoria", + "name:so": "Fiktoria", + "name:sq": "Viktoria", + "name:sr": "Викторија", + "name:sv": "Victoria", + "name:sw": "Victoria", + "name:szl": "Victoria", + "name:th": "วิกทอเรีย", + "name:tl": "Victoria", + "name:tr": "Victoria", + "name:udm": "Виктория", + "name:uk": "Вікторія", + "name:ur": "وکٹوریا", + "name:uz": "Viktoriya", + "name:vec": "Port Victoria", + "name:vep": "Viktorii", + "name:vi": "Victoria", + "name:vo": "Victoria", + "name:war": "Victoria", + "name:wo": "Wiktoria", + "name:wuu": "维多利亚", + "name:yo": "Victoria", + "name:yue": "維多利亞", + "name:zh": "维多利亚", + "name:zh_min_nan": "Victoria" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 55.452359, + -4.6232085 + ] + }, + "id": "node/4547527878" + }, + { + "type": "Feature", + "properties": { + "name": "Roseau", + "name:af": "Roseau", + "name:am": "ሮዞ", + "name:ar": "روسو", + "name:ay": "Roseau", + "name:az": "Rozo", + "name:be": "Горад Разо", + "name:bg": "Розо", + "name:bo": "རུ་ཟོ།", + "name:br": "Roseau", + "name:bs": "Roseau", + "name:ca": "Roseau", + "name:ce": "Розо", + "name:cs": "Roseau", + "name:cy": "Roseau", + "name:da": "Roseau", + "name:de": "Roseau", + "name:el": "Ροζό", + "name:en": "Roseau", + "name:eo": "Roseo", + "name:es": "Roseau", + "name:et": "Roseau", + "name:eu": "Roseau", + "name:fi": "Roseau", + "name:fr": "Roseau", + "name:fy": "Roseau", + "name:ga": "Roseau", + "name:gcf": "Rozo", + "name:gd": "Roseau", + "name:gl": "Roseau", + "name:he": "רוזו", + "name:hr": "Roseau", + "name:ht": "Rozo", + "name:hu": "Roseau", + "name:hy": "Ռոզո", + "name:id": "Roseau", + "name:io": "Roseau", + "name:is": "Roseau", + "name:it": "Roseau", + "name:ja": "ロゾー", + "name:ka": "როზო", + "name:ko": "로조", + "name:ky": "Розо", + "name:lt": "Rozo", + "name:lv": "Rozo", + "name:mk": "Розо", + "name:nb": "Roseau", + "name:nl": "Roseau", + "name:nn": "Roseau", + "name:no": "Roseau", + "name:oc": "Roseau", + "name:os": "Розо", + "name:pl": "Roseau", + "name:pt": "Roseau", + "name:ro": "Roseau", + "name:ru": "Розо", + "name:sh": "Roseau", + "name:sk": "Roseau", + "name:sn": "Roseau", + "name:sq": "Roseau", + "name:sr": "Розо", + "name:sv": "Roseau", + "name:sw": "Roseau", + "name:th": "โรโซ", + "name:tl": "Roseau", + "name:tr": "Roseau", + "name:uk": "Розо", + "name:uz": "Rozo", + "name:vi": "Roseau", + "name:yo": "Roseau", + "name:zh": "羅索" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -61.3872868, + 15.2991923 + ] + }, + "id": "node/4950552057" + }, + { + "type": "Feature", + "properties": { + "name": "ኣስመራ Asmara أسمرة", + "name:af": "Asmara", + "name:am": "አስመራ", + "name:ar": "أسمرة", + "name:az": "Əsməra", + "name:az-Arab": "اسمره", + "name:azb": "اسمره", + "name:be": "Асмара", + "name:bg": "Асмара", + "name:bo": "ཨཱ་སི་མི་ར།", + "name:ckb": "ئاسمارا", + "name:cs": "Asmara", + "name:cu": "Асмєра", + "name:de": "Asmara", + "name:el": "Ασμάρα", + "name:en": "Asmara", + "name:eo": "Asmaro", + "name:es": "Asmara", + "name:et": "Asmara", + "name:eu": "Asmara", + "name:fa": "اسمره", + "name:fr": "Asmara", + "name:gez": "ኣሥመራ", + "name:gr": "Ἀσμάρα", + "name:grc": "Ἀσμάρα", + "name:he": "אסמרה", + "name:hr": "Asmera", + "name:hu": "Aszmara", + "name:hy": "Ասմարա", + "name:id": "Asmara", + "name:is": "Asmara", + "name:it": "Asmara", + "name:ja": "アスマラ", + "name:ka": "ასმერა", + "name:kab": "Asmara", + "name:kab-Arab": "أسمرة", + "name:kk-Arab": "اسمەرا", + "name:kmr": "ئاسمارا", + "name:ko": "아스마라", + "name:ks": "اسمارا", + "name:ky": "Асмара", + "name:lv": "Asmera", + "name:mk": "Асмара", + "name:mn": "Асмара", + "name:mrj": "Асмэра", + "name:nl": "Asmara", + "name:no": "Asmara", + "name:oc": "Asmara", + "name:pl": "Asmara", + "name:ps": "اسمره", + "name:pt": "Asmara", + "name:ru": "Асмэра", + "name:sk": "Asmara", + "name:sr": "Асмара", + "name:sv": "Asmara", + "name:tg": "Асмэра", + "name:th": "แอสมารา", + "name:ti": "አስመራ", + "name:tr": "Asmara", + "name:udm": "Асмэра", + "name:uk": "Асмара", + "name:ur": "اسمارا", + "name:zh": "阿斯馬拉" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 38.9326763, + 15.3389667 + ] + }, + "id": "node/5621920820" + }, + { + "type": "Feature", + "properties": { + "name": "King Edward Point", + "name:mk": "Кинг Едвард Поинт" + }, + "geometry": { + "type": "Point", + "coordinates": [ + -36.4946355, + -54.283545 + ] + }, + "id": "node/6764600494" + }, + { + "type": "Feature", + "properties": { + "name": "Lilongwe", + "name:am": "ሊሎንጔ", + "name:an": "Lilongwe", + "name:ar": "ليلونغوي", + "name:arz": "ليلونغوي", + "name:ast": "Lilongüe", + "name:avk": "Lilongwe", + "name:az": "Lilonqve", + "name:azb": "لیلونگوه", + "name:be": "Лілонгвэ", + "name:bg": "Лилонгве", + "name:bo": "ལི་ལོང་ཀུའེ།", + "name:br": "Lilongwe", + "name:bs": "Lilongwe", + "name:ca": "Lilongwe", + "name:cdo": "Lilongwe", + "name:ce": "Лилонгве", + "name:ckb": "لیلۆنگوێ", + "name:cs": "Lilongwe", + "name:cy": "Lilongwe", + "name:da": "Lilongwe", + "name:de": "Lilongwe", + "name:dsb": "Lilongwe", + "name:el": "Λιλόνγκουε", + "name:en": "Lilongwe", + "name:eo": "Lilongvo", + "name:es": "Lilongüe", + "name:et": "Lilongwe", + "name:eu": "Lilongwe", + "name:fa": "لیلونگوه", + "name:fi": "Lilongwe", + "name:fr": "Lilongwe", + "name:frr": "Lilongwe", + "name:fy": "Lilongwe", + "name:ga": "Lilongwe", + "name:gd": "Lilongwe", + "name:gl": "Lilongwe", + "name:gn": "Lilongue", + "name:ha": "Lilongwe", + "name:hak": "Lilongwe", + "name:he": "לילונגווה", + "name:hif": "Lilongwe", + "name:hr": "Lilongwe", + "name:hsb": "Lilongwe", + "name:ht": "Lilongwe", + "name:hu": "Lilongwe", + "name:hy": "Լիլոնգվե", + "name:ia": "Lilongwe", + "name:id": "Lilongwe", + "name:ie": "Lilongwe", + "name:io": "Lilongwe", + "name:is": "Lilongwe", + "name:it": "Lilongwe", + "name:ja": "リロングウェ", + "name:jv": "Lilongwe", + "name:ka": "ლილონგვე", + "name:kab": "Lilongwe", + "name:kg": "Lilongwe", + "name:ko": "릴롱궤", + "name:ky": "Лилонгве", + "name:la": "Lilongwe", + "name:lb": "Lilongwe", + "name:lfn": "Lilongwe", + "name:lij": "Lilongwe", + "name:lmo": "Lilongwe", + "name:lt": "Lilongvė", + "name:lv": "Lilongve", + "name:mg": "Lilongwe", + "name:mk": "Лилонгве", + "name:mrj": "Лилонгве", + "name:ms": "Lilongwe", + "name:nah": "Lilonhue", + "name:nds": "Lilongwe", + "name:nl": "Lilongwe (stad)", + "name:nn": "Lilongwe", + "name:no": "Lilongwe", + "name:ny": "Lilongwe", + "name:oc": "Lilongwe", + "name:olo": "Lilongwe", + "name:os": "Лилонгве", + "name:pap": "Lilongwe", + "name:pl": "Lilongwe", + "name:pms": "Lilongwe", + "name:ps": "لیلونګوه", + "name:pt": "Lilôngué", + "name:ro": "Lilongwe", + "name:ru": "Лилонгве", + "name:sc": "Lilongwe", + "name:sk": "Lilongwe", + "name:sl": "Lilongwe", + "name:smn": "Lilongwe", + "name:sn": "Lilongwe", + "name:so": "Lilongwe", + "name:sq": "Lilongwe", + "name:sr": "Лилонгве", + "name:sv": "Lilongwe", + "name:sw": "Lilongwe", + "name:tg": "Лилонгве", + "name:th": "ลิลองเว", + "name:tl": "Lilongwe", + "name:tr": "Lilongwe", + "name:tum": "Lilongwe", + "name:udm": "Лилонгве", + "name:uk": "Лілонгве", + "name:ur": "لیلونگوے", + "name:uz": "Lilongve", + "name:vec": "Lilongve", + "name:vi": "Lilongwe", + "name:vo": "Lilongwe", + "name:war": "Lilongwe", + "name:wo": "Lilongwe", + "name:wuu": "利隆圭", + "name:xmf": "ლილონგვე", + "name:yo": "Lilongwe", + "name:zh": "利隆圭", + "name:zu": "Lilongwe" + }, + "geometry": { + "type": "Point", + "coordinates": [ + 33.768144, + -13.9875107 + ] + }, + "id": "node/6765699485" + } + ] +} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..746b871 --- /dev/null +++ b/index.html @@ -0,0 +1,15 @@ + + + + + + + Font Maker + + + + +
+ + + diff --git a/sdfglyph.js b/sdfglyph.js new file mode 100644 index 0000000..1d41d17 --- /dev/null +++ b/sdfglyph.js @@ -0,0 +1,5187 @@ + + +// The Module object: Our interface to the outside world. We import +// and export values on it. There are various ways Module can be used: +// 1. Not defined. We create it here +// 2. A function parameter, function(Module) { ..generated code.. } +// 3. pre-run appended it, var Module = {}; ..generated code.. +// 4. External script tag defines var Module. +// We need to check if Module already exists (e.g. case 3 above). +// Substitution will be replaced with actual code on later stage of the build, +// this way Closure Compiler will not mangle it (e.g. case 4. above). +// Note that if you want to run closure, and also to use Module +// after the generated code, you will need to define var Module = {}; +// before the code. Then that object will be used in the code, and you +// can continue to use Module afterwards as well. +var Module = typeof Module !== 'undefined' ? Module : {}; + + + +// --pre-jses are emitted after the Module integration code, so that they can +// refer to Module (if they choose; they can also define Module) +// {{PRE_JSES}} + +// Sometimes an existing Module object exists with properties +// meant to overwrite the default module functionality. Here +// we collect those properties and reapply _after_ we configure +// the current environment's defaults to avoid having to be so +// defensive during initialization. +var moduleOverrides = {}; +var key; +for (key in Module) { + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key]; + } +} + +var arguments_ = []; +var thisProgram = './this.program'; +var quit_ = function(status, toThrow) { + throw toThrow; +}; + +// Determine the runtime environment we are in. You can customize this by +// setting the ENVIRONMENT setting at compile time (see settings.js). + +var ENVIRONMENT_IS_WEB = false; +var ENVIRONMENT_IS_WORKER = false; +var ENVIRONMENT_IS_NODE = false; +var ENVIRONMENT_IS_SHELL = false; +ENVIRONMENT_IS_WEB = typeof window === 'object'; +ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; +// N.b. Electron.js environment is simultaneously a NODE-environment, but +// also a web environment. +ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof process.versions === 'object' && typeof process.versions.node === 'string'; +ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; + +if (Module['ENVIRONMENT']) { + throw new Error('Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)'); +} + + + +// `/` should be present at the end if `scriptDirectory` is not empty +var scriptDirectory = ''; +function locateFile(path) { + if (Module['locateFile']) { + return Module['locateFile'](path, scriptDirectory); + } + return scriptDirectory + path; +} + +// Hooks that are implemented differently in different runtime environments. +var read_, + readAsync, + readBinary, + setWindowTitle; + +var nodeFS; +var nodePath; + +if (ENVIRONMENT_IS_NODE) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = require('path').dirname(scriptDirectory) + '/'; + } else { + scriptDirectory = __dirname + '/'; + } + + + + + read_ = function shell_read(filename, binary) { + if (!nodeFS) nodeFS = require('fs'); + if (!nodePath) nodePath = require('path'); + filename = nodePath['normalize'](filename); + return nodeFS['readFileSync'](filename, binary ? null : 'utf8'); + }; + + readBinary = function readBinary(filename) { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert(ret.buffer); + return ret; + }; + + + + + if (process['argv'].length > 1) { + thisProgram = process['argv'][1].replace(/\\/g, '/'); + } + + arguments_ = process['argv'].slice(2); + + if (typeof module !== 'undefined') { + module['exports'] = Module; + } + + process['on']('uncaughtException', function(ex) { + // suppress ExitStatus exceptions from showing an error + if (!(ex instanceof ExitStatus)) { + throw ex; + } + }); + + process['on']('unhandledRejection', abort); + + quit_ = function(status) { + process['exit'](status); + }; + + Module['inspect'] = function () { return '[Emscripten Module object]'; }; + + + +} else +if (ENVIRONMENT_IS_SHELL) { + + + if (typeof read != 'undefined') { + read_ = function shell_read(f) { + return read(f); + }; + } + + readBinary = function readBinary(f) { + var data; + if (typeof readbuffer === 'function') { + return new Uint8Array(readbuffer(f)); + } + data = read(f, 'binary'); + assert(typeof data === 'object'); + return data; + }; + + if (typeof scriptArgs != 'undefined') { + arguments_ = scriptArgs; + } else if (typeof arguments != 'undefined') { + arguments_ = arguments; + } + + if (typeof quit === 'function') { + quit_ = function(status) { + quit(status); + }; + } + + if (typeof print !== 'undefined') { + // Prefer to use print/printErr where they exist, as they usually work better. + if (typeof console === 'undefined') console = /** @type{!Console} */({}); + console.log = /** @type{!function(this:Console, ...*): undefined} */ (print); + console.warn = console.error = /** @type{!function(this:Console, ...*): undefined} */ (typeof printErr !== 'undefined' ? printErr : print); + } + + +} else + +// Note that this includes Node.js workers when relevant (pthreads is enabled). +// Node.js workers are detected as a combination of ENVIRONMENT_IS_WORKER and +// ENVIRONMENT_IS_NODE. +if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { // Check worker, not web, since window could be polyfilled + scriptDirectory = self.location.href; + } else if (document.currentScript) { // web + scriptDirectory = document.currentScript.src; + } + // blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them. + // otherwise, slice off the final part of the url to find the script directory. + // if scriptDirectory does not contain a slash, lastIndexOf will return -1, + // and scriptDirectory will correctly be replaced with an empty string. + if (scriptDirectory.indexOf('blob:') !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf('/')+1); + } else { + scriptDirectory = ''; + } + + + // Differentiate the Web Worker from the Node Worker case, as reading must + // be done differently. + { + + + + + read_ = function shell_read(url) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.send(null); + return xhr.responseText; + }; + + if (ENVIRONMENT_IS_WORKER) { + readBinary = function readBinary(url) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.responseType = 'arraybuffer'; + xhr.send(null); + return new Uint8Array(/** @type{!ArrayBuffer} */(xhr.response)); + }; + } + + readAsync = function readAsync(url, onload, onerror) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = 'arraybuffer'; + xhr.onload = function xhr_onload() { + if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0 + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + }; + + + + + } + + setWindowTitle = function(title) { document.title = title }; +} else +{ + throw new Error('environment detection error'); +} + + +// Set up the out() and err() hooks, which are how we can print to stdout or +// stderr, respectively. +var out = Module['print'] || console.log.bind(console); +var err = Module['printErr'] || console.warn.bind(console); + +// Merge back in the overrides +for (key in moduleOverrides) { + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key]; + } +} +// Free the object hierarchy contained in the overrides, this lets the GC +// reclaim data used e.g. in memoryInitializerRequest, which is a large typed array. +moduleOverrides = null; + +// Emit code to handle expected values on the Module object. This applies Module.x +// to the proper local x. This has two benefits: first, we only emit it if it is +// expected to arrive, and second, by using a local everywhere else that can be +// minified. +if (Module['arguments']) arguments_ = Module['arguments'];if (!Object.getOwnPropertyDescriptor(Module, 'arguments')) Object.defineProperty(Module, 'arguments', { configurable: true, get: function() { abort('Module.arguments has been replaced with plain arguments_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); +if (Module['thisProgram']) thisProgram = Module['thisProgram'];if (!Object.getOwnPropertyDescriptor(Module, 'thisProgram')) Object.defineProperty(Module, 'thisProgram', { configurable: true, get: function() { abort('Module.thisProgram has been replaced with plain thisProgram (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); +if (Module['quit']) quit_ = Module['quit'];if (!Object.getOwnPropertyDescriptor(Module, 'quit')) Object.defineProperty(Module, 'quit', { configurable: true, get: function() { abort('Module.quit has been replaced with plain quit_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); + +// perform assertions in shell.js after we set up out() and err(), as otherwise if an assertion fails it cannot print the message +// Assertions on removed incoming Module JS APIs. +assert(typeof Module['memoryInitializerPrefixURL'] === 'undefined', 'Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['pthreadMainPrefixURL'] === 'undefined', 'Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['cdInitializerPrefixURL'] === 'undefined', 'Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['filePackagePrefixURL'] === 'undefined', 'Module.filePackagePrefixURL option was removed, use Module.locateFile instead'); +assert(typeof Module['read'] === 'undefined', 'Module.read option was removed (modify read_ in JS)'); +assert(typeof Module['readAsync'] === 'undefined', 'Module.readAsync option was removed (modify readAsync in JS)'); +assert(typeof Module['readBinary'] === 'undefined', 'Module.readBinary option was removed (modify readBinary in JS)'); +assert(typeof Module['setWindowTitle'] === 'undefined', 'Module.setWindowTitle option was removed (modify setWindowTitle in JS)'); +assert(typeof Module['TOTAL_MEMORY'] === 'undefined', 'Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY'); +if (!Object.getOwnPropertyDescriptor(Module, 'read')) Object.defineProperty(Module, 'read', { configurable: true, get: function() { abort('Module.read has been replaced with plain read_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); +if (!Object.getOwnPropertyDescriptor(Module, 'readAsync')) Object.defineProperty(Module, 'readAsync', { configurable: true, get: function() { abort('Module.readAsync has been replaced with plain readAsync (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); +if (!Object.getOwnPropertyDescriptor(Module, 'readBinary')) Object.defineProperty(Module, 'readBinary', { configurable: true, get: function() { abort('Module.readBinary has been replaced with plain readBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); +if (!Object.getOwnPropertyDescriptor(Module, 'setWindowTitle')) Object.defineProperty(Module, 'setWindowTitle', { configurable: true, get: function() { abort('Module.setWindowTitle has been replaced with plain setWindowTitle (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); +var IDBFS = 'IDBFS is no longer included by default; build with -lidbfs.js'; +var PROXYFS = 'PROXYFS is no longer included by default; build with -lproxyfs.js'; +var WORKERFS = 'WORKERFS is no longer included by default; build with -lworkerfs.js'; +var NODEFS = 'NODEFS is no longer included by default; build with -lnodefs.js'; + + + + + + +// {{PREAMBLE_ADDITIONS}} + +var STACK_ALIGN = 16; + +function dynamicAlloc(size) { + assert(DYNAMICTOP_PTR); + var ret = HEAP32[DYNAMICTOP_PTR>>2]; + var end = (ret + size + 15) & -16; + assert(end <= HEAP8.length, 'failure to dynamicAlloc - memory growth etc. is not supported there, call malloc/sbrk directly'); + HEAP32[DYNAMICTOP_PTR>>2] = end; + return ret; +} + +function alignMemory(size, factor) { + if (!factor) factor = STACK_ALIGN; // stack alignment (16-byte) by default + return Math.ceil(size / factor) * factor; +} + +function getNativeTypeSize(type) { + switch (type) { + case 'i1': case 'i8': return 1; + case 'i16': return 2; + case 'i32': return 4; + case 'i64': return 8; + case 'float': return 4; + case 'double': return 8; + default: { + if (type[type.length-1] === '*') { + return 4; // A pointer + } else if (type[0] === 'i') { + var bits = Number(type.substr(1)); + assert(bits % 8 === 0, 'getNativeTypeSize invalid bits ' + bits + ', type ' + type); + return bits / 8; + } else { + return 0; + } + } + } +} + +function warnOnce(text) { + if (!warnOnce.shown) warnOnce.shown = {}; + if (!warnOnce.shown[text]) { + warnOnce.shown[text] = 1; + err(text); + } +} + + + + + + + + +// Wraps a JS function as a wasm function with a given signature. +function convertJsFunctionToWasm(func, sig) { + + // If the type reflection proposal is available, use the new + // "WebAssembly.Function" constructor. + // Otherwise, construct a minimal wasm module importing the JS function and + // re-exporting it. + if (typeof WebAssembly.Function === "function") { + var typeNames = { + 'i': 'i32', + 'j': 'i64', + 'f': 'f32', + 'd': 'f64' + }; + var type = { + parameters: [], + results: sig[0] == 'v' ? [] : [typeNames[sig[0]]] + }; + for (var i = 1; i < sig.length; ++i) { + type.parameters.push(typeNames[sig[i]]); + } + return new WebAssembly.Function(type, func); + } + + // The module is static, with the exception of the type section, which is + // generated based on the signature passed in. + var typeSection = [ + 0x01, // id: section, + 0x00, // length: 0 (placeholder) + 0x01, // count: 1 + 0x60, // form: func + ]; + var sigRet = sig.slice(0, 1); + var sigParam = sig.slice(1); + var typeCodes = { + 'i': 0x7f, // i32 + 'j': 0x7e, // i64 + 'f': 0x7d, // f32 + 'd': 0x7c, // f64 + }; + + // Parameters, length + signatures + typeSection.push(sigParam.length); + for (var i = 0; i < sigParam.length; ++i) { + typeSection.push(typeCodes[sigParam[i]]); + } + + // Return values, length + signatures + // With no multi-return in MVP, either 0 (void) or 1 (anything else) + if (sigRet == 'v') { + typeSection.push(0x00); + } else { + typeSection = typeSection.concat([0x01, typeCodes[sigRet]]); + } + + // Write the overall length of the type section back into the section header + // (excepting the 2 bytes for the section id and length) + typeSection[1] = typeSection.length - 2; + + // Rest of the module is static + var bytes = new Uint8Array([ + 0x00, 0x61, 0x73, 0x6d, // magic ("\0asm") + 0x01, 0x00, 0x00, 0x00, // version: 1 + ].concat(typeSection, [ + 0x02, 0x07, // import section + // (import "e" "f" (func 0 (type 0))) + 0x01, 0x01, 0x65, 0x01, 0x66, 0x00, 0x00, + 0x07, 0x05, // export section + // (export "f" (func 0 (type 0))) + 0x01, 0x01, 0x66, 0x00, 0x00, + ])); + + // We can compile this wasm module synchronously because it is very small. + // This accepts an import (at "e.f"), that it reroutes to an export (at "f") + var module = new WebAssembly.Module(bytes); + var instance = new WebAssembly.Instance(module, { + 'e': { + 'f': func + } + }); + var wrappedFunc = instance.exports['f']; + return wrappedFunc; +} + +var freeTableIndexes = []; + +// Weak map of functions in the table to their indexes, created on first use. +var functionsInTableMap; + +// Add a wasm function to the table. +function addFunctionWasm(func, sig) { + var table = wasmTable; + + // Check if the function is already in the table, to ensure each function + // gets a unique index. First, create the map if this is the first use. + if (!functionsInTableMap) { + functionsInTableMap = new WeakMap(); + for (var i = 0; i < table.length; i++) { + var item = table.get(i); + // Ignore null values. + if (item) { + functionsInTableMap.set(item, i); + } + } + } + if (functionsInTableMap.has(func)) { + return functionsInTableMap.get(func); + } + + // It's not in the table, add it now. + + + var ret; + // Reuse a free index if there is one, otherwise grow. + if (freeTableIndexes.length) { + ret = freeTableIndexes.pop(); + } else { + ret = table.length; + // Grow the table + try { + table.grow(1); + } catch (err) { + if (!(err instanceof RangeError)) { + throw err; + } + throw 'Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.'; + } + } + + // Set the new value. + try { + // Attempting to call this with JS function will cause of table.set() to fail + table.set(ret, func); + } catch (err) { + if (!(err instanceof TypeError)) { + throw err; + } + assert(typeof sig !== 'undefined', 'Missing signature argument to addFunction'); + var wrapped = convertJsFunctionToWasm(func, sig); + table.set(ret, wrapped); + } + + functionsInTableMap.set(func, ret); + + return ret; +} + +function removeFunctionWasm(index) { + functionsInTableMap.delete(wasmTable.get(index)); + freeTableIndexes.push(index); +} + +// 'sig' parameter is required for the llvm backend but only when func is not +// already a WebAssembly function. +function addFunction(func, sig) { + assert(typeof func !== 'undefined'); + + return addFunctionWasm(func, sig); +} + +function removeFunction(index) { + removeFunctionWasm(index); +} + + + +var funcWrappers = {}; + +function getFuncWrapper(func, sig) { + if (!func) return; // on null pointer, return undefined + assert(sig); + if (!funcWrappers[sig]) { + funcWrappers[sig] = {}; + } + var sigCache = funcWrappers[sig]; + if (!sigCache[func]) { + // optimize away arguments usage in common cases + if (sig.length === 1) { + sigCache[func] = function dynCall_wrapper() { + return dynCall(sig, func); + }; + } else if (sig.length === 2) { + sigCache[func] = function dynCall_wrapper(arg) { + return dynCall(sig, func, [arg]); + }; + } else { + // general case + sigCache[func] = function dynCall_wrapper() { + return dynCall(sig, func, Array.prototype.slice.call(arguments)); + }; + } + } + return sigCache[func]; +} + + + + + + + +function makeBigInt(low, high, unsigned) { + return unsigned ? ((+((low>>>0)))+((+((high>>>0)))*4294967296.0)) : ((+((low>>>0)))+((+((high|0)))*4294967296.0)); +} + +/** @param {Array=} args */ +function dynCall(sig, ptr, args) { + if (args && args.length) { + // j (64-bit integer) must be passed in as two numbers [low 32, high 32]. + assert(args.length === sig.substring(1).replace(/j/g, '--').length); + assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \'' + sig + '\''); + return Module['dynCall_' + sig].apply(null, [ptr].concat(args)); + } else { + assert(sig.length == 1); + assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \'' + sig + '\''); + return Module['dynCall_' + sig].call(null, ptr); + } +} + +var tempRet0 = 0; + +var setTempRet0 = function(value) { + tempRet0 = value; +}; + +var getTempRet0 = function() { + return tempRet0; +}; + +function getCompilerSetting(name) { + throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for getCompilerSetting or emscripten_get_compiler_setting to work'; +} + +// The address globals begin at. Very low in memory, for code size and optimization opportunities. +// Above 0 is static memory, starting with globals. +// Then the stack. +// Then 'dynamic' memory for sbrk. +var GLOBAL_BASE = 1024; + + + + + +// === Preamble library stuff === + +// Documentation for the public APIs defined in this file must be updated in: +// site/source/docs/api_reference/preamble.js.rst +// A prebuilt local version of the documentation is available at: +// site/build/text/docs/api_reference/preamble.js.txt +// You can also build docs locally as HTML or other formats in site/ +// An online HTML version (which may be of a different version of Emscripten) +// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html + + +var wasmBinary;if (Module['wasmBinary']) wasmBinary = Module['wasmBinary'];if (!Object.getOwnPropertyDescriptor(Module, 'wasmBinary')) Object.defineProperty(Module, 'wasmBinary', { configurable: true, get: function() { abort('Module.wasmBinary has been replaced with plain wasmBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); +var noExitRuntime;if (Module['noExitRuntime']) noExitRuntime = Module['noExitRuntime'];if (!Object.getOwnPropertyDescriptor(Module, 'noExitRuntime')) Object.defineProperty(Module, 'noExitRuntime', { configurable: true, get: function() { abort('Module.noExitRuntime has been replaced with plain noExitRuntime (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); + + +if (typeof WebAssembly !== 'object') { + abort('No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead.'); +} + + + + +// In MINIMAL_RUNTIME, setValue() and getValue() are only available when building with safe heap enabled, for heap safety checking. +// In traditional runtime, setValue() and getValue() are always available (although their use is highly discouraged due to perf penalties) + +/** @param {number} ptr + @param {number} value + @param {string} type + @param {number|boolean=} noSafe */ +function setValue(ptr, value, type, noSafe) { + type = type || 'i8'; + if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit + switch(type) { + case 'i1': HEAP8[((ptr)>>0)]=value; break; + case 'i8': HEAP8[((ptr)>>0)]=value; break; + case 'i16': HEAP16[((ptr)>>1)]=value; break; + case 'i32': HEAP32[((ptr)>>2)]=value; break; + case 'i64': (tempI64 = [value>>>0,(tempDouble=value,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break; + case 'float': HEAPF32[((ptr)>>2)]=value; break; + case 'double': HEAPF64[((ptr)>>3)]=value; break; + default: abort('invalid type for setValue: ' + type); + } +} + +/** @param {number} ptr + @param {string} type + @param {number|boolean=} noSafe */ +function getValue(ptr, type, noSafe) { + type = type || 'i8'; + if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit + switch(type) { + case 'i1': return HEAP8[((ptr)>>0)]; + case 'i8': return HEAP8[((ptr)>>0)]; + case 'i16': return HEAP16[((ptr)>>1)]; + case 'i32': return HEAP32[((ptr)>>2)]; + case 'i64': return HEAP32[((ptr)>>2)]; + case 'float': return HEAPF32[((ptr)>>2)]; + case 'double': return HEAPF64[((ptr)>>3)]; + default: abort('invalid type for getValue: ' + type); + } + return null; +} + + + + + + +// Wasm globals + +var wasmMemory; + +// In fastcomp asm.js, we don't need a wasm Table at all. +// In the wasm backend, we polyfill the WebAssembly object, +// so this creates a (non-native-wasm) table for us. +var wasmTable = new WebAssembly.Table({ + 'initial': 550, + 'maximum': 550 + 0, + 'element': 'anyfunc' +}); + + +//======================================== +// Runtime essentials +//======================================== + +// whether we are quitting the application. no code should run after this. +// set in exit() and abort() +var ABORT = false; + +// set by exit() and abort(). Passed to 'onExit' handler. +// NOTE: This is also used as the process return code code in shell environments +// but only when noExitRuntime is false. +var EXITSTATUS = 0; + +/** @type {function(*, string=)} */ +function assert(condition, text) { + if (!condition) { + abort('Assertion failed: ' + text); + } +} + +// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) +function getCFunc(ident) { + var func = Module['_' + ident]; // closure exported function + assert(func, 'Cannot call unknown function ' + ident + ', make sure it is exported'); + return func; +} + +// C calling interface. +/** @param {string|null=} returnType + @param {Array=} argTypes + @param {Arguments|Array=} args + @param {Object=} opts */ +function ccall(ident, returnType, argTypes, args, opts) { + // For fast lookup of conversion functions + var toC = { + 'string': function(str) { + var ret = 0; + if (str !== null && str !== undefined && str !== 0) { // null string + // at most 4 bytes per UTF-8 code point, +1 for the trailing '\0' + var len = (str.length << 2) + 1; + ret = stackAlloc(len); + stringToUTF8(str, ret, len); + } + return ret; + }, + 'array': function(arr) { + var ret = stackAlloc(arr.length); + writeArrayToMemory(arr, ret); + return ret; + } + }; + + function convertReturnValue(ret) { + if (returnType === 'string') return UTF8ToString(ret); + if (returnType === 'boolean') return Boolean(ret); + return ret; + } + + var func = getCFunc(ident); + var cArgs = []; + var stack = 0; + assert(returnType !== 'array', 'Return type should not be "array".'); + if (args) { + for (var i = 0; i < args.length; i++) { + var converter = toC[argTypes[i]]; + if (converter) { + if (stack === 0) stack = stackSave(); + cArgs[i] = converter(args[i]); + } else { + cArgs[i] = args[i]; + } + } + } + var ret = func.apply(null, cArgs); + + ret = convertReturnValue(ret); + if (stack !== 0) stackRestore(stack); + return ret; +} + +/** @param {string=} returnType + @param {Array=} argTypes + @param {Object=} opts */ +function cwrap(ident, returnType, argTypes, opts) { + return function() { + return ccall(ident, returnType, argTypes, arguments, opts); + } +} + +var ALLOC_NORMAL = 0; // Tries to use _malloc() +var ALLOC_STACK = 1; // Lives for the duration of the current function call +var ALLOC_DYNAMIC = 2; // Cannot be freed except through sbrk +var ALLOC_NONE = 3; // Do not allocate + +// allocate(): This is for internal use. You can use it yourself as well, but the interface +// is a little tricky (see docs right below). The reason is that it is optimized +// for multiple syntaxes to save space in generated code. So you should +// normally not use allocate(), and instead allocate memory using _malloc(), +// initialize it with setValue(), and so forth. +// @slab: An array of data, or a number. If a number, then the size of the block to allocate, +// in *bytes* (note that this is sometimes confusing: the next parameter does not +// affect this!) +// @types: Either an array of types, one for each byte (or 0 if no type at that position), +// or a single type which is used for the entire block. This only matters if there +// is initial data - if @slab is a number, then this does not matter at all and is +// ignored. +// @allocator: How to allocate memory, see ALLOC_* +/** @type {function((TypedArray|Array|number), string, number, number=)} */ +function allocate(slab, types, allocator, ptr) { + var zeroinit, size; + if (typeof slab === 'number') { + zeroinit = true; + size = slab; + } else { + zeroinit = false; + size = slab.length; + } + + var singleType = typeof types === 'string' ? types : null; + + var ret; + if (allocator == ALLOC_NONE) { + ret = ptr; + } else { + ret = [_malloc, + stackAlloc, + dynamicAlloc][allocator](Math.max(size, singleType ? 1 : types.length)); + } + + if (zeroinit) { + var stop; + ptr = ret; + assert((ret & 3) == 0); + stop = ret + (size & ~3); + for (; ptr < stop; ptr += 4) { + HEAP32[((ptr)>>2)]=0; + } + stop = ret + size; + while (ptr < stop) { + HEAP8[((ptr++)>>0)]=0; + } + return ret; + } + + if (singleType === 'i8') { + if (slab.subarray || slab.slice) { + HEAPU8.set(/** @type {!Uint8Array} */ (slab), ret); + } else { + HEAPU8.set(new Uint8Array(slab), ret); + } + return ret; + } + + var i = 0, type, typeSize, previousType; + while (i < size) { + var curr = slab[i]; + + type = singleType || types[i]; + if (type === 0) { + i++; + continue; + } + assert(type, 'Must know what type to store in allocate!'); + + if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later + + setValue(ret+i, curr, type); + + // no need to look up size unless type changes, so cache it + if (previousType !== type) { + typeSize = getNativeTypeSize(type); + previousType = type; + } + i += typeSize; + } + + return ret; +} + +// Allocate memory during any stage of startup - static memory early on, dynamic memory later, malloc when ready +function getMemory(size) { + if (!runtimeInitialized) return dynamicAlloc(size); + return _malloc(size); +} + + + + +// runtime_strings.js: Strings related runtime functions that are part of both MINIMAL_RUNTIME and regular runtime. + +// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the given array that contains uint8 values, returns +// a copy of that string as a Javascript String object. + +var UTF8Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined; + +/** + * @param {number} idx + * @param {number=} maxBytesToRead + * @return {string} + */ +function UTF8ArrayToString(heap, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself. + // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage. + // (As a tiny code save trick, compare endPtr against endIdx using a negation, so that undefined means Infinity) + while (heap[endPtr] && !(endPtr >= endIdx)) ++endPtr; + + if (endPtr - idx > 16 && heap.subarray && UTF8Decoder) { + return UTF8Decoder.decode(heap.subarray(idx, endPtr)); + } else { + var str = ''; + // If building with TextDecoder, we have already computed the string length above, so test loop end condition against that + while (idx < endPtr) { + // For UTF8 byte structure, see: + // http://en.wikipedia.org/wiki/UTF-8#Description + // https://www.ietf.org/rfc/rfc2279.txt + // https://tools.ietf.org/html/rfc3629 + var u0 = heap[idx++]; + if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; } + var u1 = heap[idx++] & 63; + if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; } + var u2 = heap[idx++] & 63; + if ((u0 & 0xF0) == 0xE0) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; + } else { + if ((u0 & 0xF8) != 0xF0) warnOnce('Invalid UTF-8 leading byte 0x' + u0.toString(16) + ' encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!'); + u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (heap[idx++] & 63); + } + + if (u0 < 0x10000) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } + } + } + return str; +} + +// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the emscripten HEAP, returns a +// copy of that string as a Javascript String object. +// maxBytesToRead: an optional length that specifies the maximum number of bytes to read. You can omit +// this parameter to scan the string until the first \0 byte. If maxBytesToRead is +// passed, and the string at [ptr, ptr+maxBytesToReadr[ contains a null byte in the +// middle, then the string will cut short at that byte index (i.e. maxBytesToRead will +// not produce a string of exact length [ptr, ptr+maxBytesToRead[) +// N.B. mixing frequent uses of UTF8ToString() with and without maxBytesToRead may +// throw JS JIT optimizations off, so it is worth to consider consistently using one +// style or the other. +/** + * @param {number} ptr + * @param {number=} maxBytesToRead + * @return {string} + */ +function UTF8ToString(ptr, maxBytesToRead) { + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ''; +} + +// Copies the given Javascript String object 'str' to the given byte array at address 'outIdx', +// encoded in UTF8 form and null-terminated. The copy will require at most str.length*4+1 bytes of space in the HEAP. +// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// heap: the array to copy to. Each index in this array is assumed to be one 8-byte element. +// outIdx: The starting offset in the array to begin the copying. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. +// This count should include the null terminator, +// i.e. if maxBytesToWrite=1, only the null terminator will be written and nothing else. +// maxBytesToWrite=0 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) // Parameter maxBytesToWrite is not optional. Negative values, 0, null, undefined and false each don't write out any bytes. + return 0; + + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator. + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629 + var u = str.charCodeAt(i); // possibly a lead surrogate + if (u >= 0xD800 && u <= 0xDFFF) { + var u1 = str.charCodeAt(++i); + u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); + } + if (u <= 0x7F) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 0x7FF) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 0xC0 | (u >> 6); + heap[outIdx++] = 0x80 | (u & 63); + } else if (u <= 0xFFFF) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 0xE0 | (u >> 12); + heap[outIdx++] = 0x80 | ((u >> 6) & 63); + heap[outIdx++] = 0x80 | (u & 63); + } else { + if (outIdx + 3 >= endIdx) break; + if (u >= 0x200000) warnOnce('Invalid Unicode code point 0x' + u.toString(16) + ' encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF).'); + heap[outIdx++] = 0xF0 | (u >> 18); + heap[outIdx++] = 0x80 | ((u >> 12) & 63); + heap[outIdx++] = 0x80 | ((u >> 6) & 63); + heap[outIdx++] = 0x80 | (u & 63); + } + } + // Null-terminate the pointer to the buffer. + heap[outIdx] = 0; + return outIdx - startIdx; +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF8 form. The copy will require at most str.length*4+1 bytes of space in the HEAP. +// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF8(str, outPtr, maxBytesToWrite) { + assert(typeof maxBytesToWrite == 'number', 'stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + return stringToUTF8Array(str, HEAPU8,outPtr, maxBytesToWrite); +} + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte. +function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var u = str.charCodeAt(i); // possibly a lead surrogate + if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF); + if (u <= 0x7F) ++len; + else if (u <= 0x7FF) len += 2; + else if (u <= 0xFFFF) len += 3; + else len += 4; + } + return len; +} + + + + + +// runtime_strings_extra.js: Strings related runtime functions that are available only in regular runtime. + +// Given a pointer 'ptr' to a null-terminated ASCII-encoded string in the emscripten HEAP, returns +// a copy of that string as a Javascript String object. + +function AsciiToString(ptr) { + var str = ''; + while (1) { + var ch = HEAPU8[((ptr++)>>0)]; + if (!ch) return str; + str += String.fromCharCode(ch); + } +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in ASCII form. The copy will require at most str.length+1 bytes of space in the HEAP. + +function stringToAscii(str, outPtr) { + return writeAsciiToMemory(str, outPtr, false); +} + +// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns +// a copy of that string as a Javascript String object. + +var UTF16Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-16le') : undefined; + +function UTF16ToString(ptr, maxBytesToRead) { + assert(ptr % 2 == 0, 'Pointer passed to UTF16ToString must be aligned to two bytes!'); + var endPtr = ptr; + // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself. + // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage. + var idx = endPtr >> 1; + var maxIdx = idx + maxBytesToRead / 2; + // If maxBytesToRead is not passed explicitly, it will be undefined, and this + // will always evaluate to true. This saves on code size. + while (!(idx >= maxIdx) && HEAPU16[idx]) ++idx; + endPtr = idx << 1; + + if (endPtr - ptr > 32 && UTF16Decoder) { + return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr)); + } else { + var i = 0; + + var str = ''; + while (1) { + var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; + if (codeUnit == 0 || i == maxBytesToRead / 2) return str; + ++i; + // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. + str += String.fromCharCode(codeUnit); + } + } +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF16 form. The copy will require at most str.length*4+2 bytes of space in the HEAP. +// Use the function lengthBytesUTF16() to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// outPtr: Byte address in Emscripten HEAP where to write the string to. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null +// terminator, i.e. if maxBytesToWrite=2, only the null terminator will be written and nothing else. +// maxBytesToWrite<2 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF16(str, outPtr, maxBytesToWrite) { + assert(outPtr % 2 == 0, 'Pointer passed to stringToUTF16 must be aligned to two bytes!'); + assert(typeof maxBytesToWrite == 'number', 'stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 0x7FFFFFFF; + } + if (maxBytesToWrite < 2) return 0; + maxBytesToWrite -= 2; // Null terminator. + var startPtr = outPtr; + var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length; + for (var i = 0; i < numCharsToWrite; ++i) { + // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. + var codeUnit = str.charCodeAt(i); // possibly a lead surrogate + HEAP16[((outPtr)>>1)]=codeUnit; + outPtr += 2; + } + // Null-terminate the pointer to the HEAP. + HEAP16[((outPtr)>>1)]=0; + return outPtr - startPtr; +} + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. + +function lengthBytesUTF16(str) { + return str.length*2; +} + +function UTF32ToString(ptr, maxBytesToRead) { + assert(ptr % 4 == 0, 'Pointer passed to UTF32ToString must be aligned to four bytes!'); + var i = 0; + + var str = ''; + // If maxBytesToRead is not passed explicitly, it will be undefined, and this + // will always evaluate to true. This saves on code size. + while (!(i >= maxBytesToRead / 4)) { + var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; + if (utf32 == 0) break; + ++i; + // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + if (utf32 >= 0x10000) { + var ch = utf32 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } else { + str += String.fromCharCode(utf32); + } + } + return str; +} + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF32 form. The copy will require at most str.length*4+4 bytes of space in the HEAP. +// Use the function lengthBytesUTF32() to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// outPtr: Byte address in Emscripten HEAP where to write the string to. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null +// terminator, i.e. if maxBytesToWrite=4, only the null terminator will be written and nothing else. +// maxBytesToWrite<4 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF32(str, outPtr, maxBytesToWrite) { + assert(outPtr % 4 == 0, 'Pointer passed to stringToUTF32 must be aligned to four bytes!'); + assert(typeof maxBytesToWrite == 'number', 'stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); + // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 0x7FFFFFFF; + } + if (maxBytesToWrite < 4) return 0; + var startPtr = outPtr; + var endPtr = startPtr + maxBytesToWrite - 4; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var codeUnit = str.charCodeAt(i); // possibly a lead surrogate + if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { + var trailSurrogate = str.charCodeAt(++i); + codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); + } + HEAP32[((outPtr)>>2)]=codeUnit; + outPtr += 4; + if (outPtr + 4 > endPtr) break; + } + // Null-terminate the pointer to the HEAP. + HEAP32[((outPtr)>>2)]=0; + return outPtr - startPtr; +} + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. + +function lengthBytesUTF32(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate. + len += 4; + } + + return len; +} + +// Allocate heap space for a JS string, and write it there. +// It is the responsibility of the caller to free() that memory. +function allocateUTF8(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = _malloc(size); + if (ret) stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +// Allocate stack space for a JS string, and write it there. +function allocateUTF8OnStack(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = stackAlloc(size); + stringToUTF8Array(str, HEAP8, ret, size); + return ret; +} + +// Deprecated: This function should not be called because it is unsafe and does not provide +// a maximum length limit of how many bytes it is allowed to write. Prefer calling the +// function stringToUTF8Array() instead, which takes in a maximum length that can be used +// to be secure from out of bounds writes. +/** @deprecated + @param {boolean=} dontAddNull */ +function writeStringToMemory(string, buffer, dontAddNull) { + warnOnce('writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!'); + + var /** @type {number} */ lastChar, /** @type {number} */ end; + if (dontAddNull) { + // stringToUTF8Array always appends null. If we don't want to do that, remember the + // character that existed at the location where the null will be placed, and restore + // that after the write (below). + end = buffer + lengthBytesUTF8(string); + lastChar = HEAP8[end]; + } + stringToUTF8(string, buffer, Infinity); + if (dontAddNull) HEAP8[end] = lastChar; // Restore the value under the null character. +} + +function writeArrayToMemory(array, buffer) { + assert(array.length >= 0, 'writeArrayToMemory array must have a length (should be an array or typed array)') + HEAP8.set(array, buffer); +} + +/** @param {boolean=} dontAddNull */ +function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; ++i) { + assert(str.charCodeAt(i) === str.charCodeAt(i)&0xff); + HEAP8[((buffer++)>>0)]=str.charCodeAt(i); + } + // Null-terminate the pointer to the HEAP. + if (!dontAddNull) HEAP8[((buffer)>>0)]=0; +} + + + +// Memory management + +var PAGE_SIZE = 16384; +var WASM_PAGE_SIZE = 65536; +var ASMJS_PAGE_SIZE = 16777216; + +function alignUp(x, multiple) { + if (x % multiple > 0) { + x += multiple - (x % multiple); + } + return x; +} + +var HEAP, +/** @type {ArrayBuffer} */ + buffer, +/** @type {Int8Array} */ + HEAP8, +/** @type {Uint8Array} */ + HEAPU8, +/** @type {Int16Array} */ + HEAP16, +/** @type {Uint16Array} */ + HEAPU16, +/** @type {Int32Array} */ + HEAP32, +/** @type {Uint32Array} */ + HEAPU32, +/** @type {Float32Array} */ + HEAPF32, +/** @type {Float64Array} */ + HEAPF64; + +function updateGlobalBufferAndViews(buf) { + buffer = buf; + Module['HEAP8'] = HEAP8 = new Int8Array(buf); + Module['HEAP16'] = HEAP16 = new Int16Array(buf); + Module['HEAP32'] = HEAP32 = new Int32Array(buf); + Module['HEAPU8'] = HEAPU8 = new Uint8Array(buf); + Module['HEAPU16'] = HEAPU16 = new Uint16Array(buf); + Module['HEAPU32'] = HEAPU32 = new Uint32Array(buf); + Module['HEAPF32'] = HEAPF32 = new Float32Array(buf); + Module['HEAPF64'] = HEAPF64 = new Float64Array(buf); +} + +var STATIC_BASE = 1024, + STACK_BASE = 5346016, + STACKTOP = STACK_BASE, + STACK_MAX = 103136, + DYNAMIC_BASE = 5346016, + DYNAMICTOP_PTR = 102976; + +assert(STACK_BASE % 16 === 0, 'stack must start aligned'); +assert(DYNAMIC_BASE % 16 === 0, 'heap must start aligned'); + + +var TOTAL_STACK = 5242880; +if (Module['TOTAL_STACK']) assert(TOTAL_STACK === Module['TOTAL_STACK'], 'the stack size can no longer be determined at runtime') + +var INITIAL_INITIAL_MEMORY = Module['INITIAL_MEMORY'] || 16777216;if (!Object.getOwnPropertyDescriptor(Module, 'INITIAL_MEMORY')) Object.defineProperty(Module, 'INITIAL_MEMORY', { configurable: true, get: function() { abort('Module.INITIAL_MEMORY has been replaced with plain INITIAL_INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); + +assert(INITIAL_INITIAL_MEMORY >= TOTAL_STACK, 'INITIAL_MEMORY should be larger than TOTAL_STACK, was ' + INITIAL_INITIAL_MEMORY + '! (TOTAL_STACK=' + TOTAL_STACK + ')'); + +// check for full engine support (use string 'subarray' to avoid closure compiler confusion) +assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && Int32Array.prototype.subarray !== undefined && Int32Array.prototype.set !== undefined, + 'JS engine does not provide full typed array support'); + + + + + + + + +// In non-standalone/normal mode, we create the memory here. + + + +// Create the main memory. (Note: this isn't used in STANDALONE_WASM mode since the wasm +// memory is created in the wasm, not in JS.) + + if (Module['wasmMemory']) { + wasmMemory = Module['wasmMemory']; + } else + { + wasmMemory = new WebAssembly.Memory({ + 'initial': INITIAL_INITIAL_MEMORY / WASM_PAGE_SIZE + , + 'maximum': 2147483648 / WASM_PAGE_SIZE + }); + } + + +if (wasmMemory) { + buffer = wasmMemory.buffer; +} + +// If the user provides an incorrect length, just use that length instead rather than providing the user to +// specifically provide the memory length with Module['INITIAL_MEMORY']. +INITIAL_INITIAL_MEMORY = buffer.byteLength; +assert(INITIAL_INITIAL_MEMORY % WASM_PAGE_SIZE === 0); +assert(65536 % WASM_PAGE_SIZE === 0); +updateGlobalBufferAndViews(buffer); + +HEAP32[DYNAMICTOP_PTR>>2] = DYNAMIC_BASE; + + + + + + +// Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode. +function writeStackCookie() { + assert((STACK_MAX & 3) == 0); + // The stack grows downwards + HEAPU32[(STACK_MAX >> 2)+1] = 0x2135467; + HEAPU32[(STACK_MAX >> 2)+2] = 0x89BACDFE; + // Also test the global address 0 for integrity. + // We don't do this with ASan because ASan does its own checks for this. + HEAP32[0] = 0x63736d65; /* 'emsc' */ +} + +function checkStackCookie() { + var cookie1 = HEAPU32[(STACK_MAX >> 2)+1]; + var cookie2 = HEAPU32[(STACK_MAX >> 2)+2]; + if (cookie1 != 0x2135467 || cookie2 != 0x89BACDFE) { + abort('Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x' + cookie2.toString(16) + ' ' + cookie1.toString(16)); + } + // Also test the global address 0 for integrity. + // We don't do this with ASan because ASan does its own checks for this. + if (HEAP32[0] !== 0x63736d65 /* 'emsc' */) abort('Runtime error: The application has corrupted its heap memory area (address zero)!'); +} + + + + + +// Endianness check (note: assumes compiler arch was little-endian) +(function() { + var h16 = new Int16Array(1); + var h8 = new Int8Array(h16.buffer); + h16[0] = 0x6373; + if (h8[0] !== 0x73 || h8[1] !== 0x63) throw 'Runtime error: expected the system to be little-endian!'; +})(); + +function abortFnPtrError(ptr, sig) { + abort("Invalid function pointer " + ptr + " called with signature '" + sig + "'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this). Build with ASSERTIONS=2 for more info."); +} + + + +function callRuntimeCallbacks(callbacks) { + while(callbacks.length > 0) { + var callback = callbacks.shift(); + if (typeof callback == 'function') { + callback(Module); // Pass the module as the first argument. + continue; + } + var func = callback.func; + if (typeof func === 'number') { + if (callback.arg === undefined) { + Module['dynCall_v'](func); + } else { + Module['dynCall_vi'](func, callback.arg); + } + } else { + func(callback.arg === undefined ? null : callback.arg); + } + } +} + +var __ATPRERUN__ = []; // functions called before the runtime is initialized +var __ATINIT__ = []; // functions called during startup +var __ATMAIN__ = []; // functions called when main() is to be run +var __ATEXIT__ = []; // functions called during shutdown +var __ATPOSTRUN__ = []; // functions called after the main() is called + +var runtimeInitialized = false; +var runtimeExited = false; + + +function preRun() { + + if (Module['preRun']) { + if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']]; + while (Module['preRun'].length) { + addOnPreRun(Module['preRun'].shift()); + } + } + + callRuntimeCallbacks(__ATPRERUN__); +} + +function initRuntime() { + checkStackCookie(); + assert(!runtimeInitialized); + runtimeInitialized = true; + if (!Module["noFSInit"] && !FS.init.initialized) FS.init(); +TTY.init(); + callRuntimeCallbacks(__ATINIT__); +} + +function preMain() { + checkStackCookie(); + FS.ignorePermissions = false; + callRuntimeCallbacks(__ATMAIN__); +} + +function exitRuntime() { + checkStackCookie(); + runtimeExited = true; +} + +function postRun() { + checkStackCookie(); + + if (Module['postRun']) { + if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']]; + while (Module['postRun'].length) { + addOnPostRun(Module['postRun'].shift()); + } + } + + callRuntimeCallbacks(__ATPOSTRUN__); +} + +function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); +} + +function addOnInit(cb) { + __ATINIT__.unshift(cb); +} + +function addOnPreMain(cb) { + __ATMAIN__.unshift(cb); +} + +function addOnExit(cb) { +} + +function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); +} + +/** @param {number|boolean=} ignore */ +function unSign(value, bits, ignore) { + if (value >= 0) { + return value; + } + return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts + : Math.pow(2, bits) + value; +} +/** @param {number|boolean=} ignore */ +function reSign(value, bits, ignore) { + if (value <= 0) { + return value; + } + var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 + : Math.pow(2, bits-1); + if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that + // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors + // TODO: In i64 mode 1, resign the two parts separately and safely + value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts + } + return value; +} + + + + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/fround + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32 + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc + +assert(Math.imul, 'This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); +assert(Math.fround, 'This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); +assert(Math.clz32, 'This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); +assert(Math.trunc, 'This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); + +var Math_abs = Math.abs; +var Math_cos = Math.cos; +var Math_sin = Math.sin; +var Math_tan = Math.tan; +var Math_acos = Math.acos; +var Math_asin = Math.asin; +var Math_atan = Math.atan; +var Math_atan2 = Math.atan2; +var Math_exp = Math.exp; +var Math_log = Math.log; +var Math_sqrt = Math.sqrt; +var Math_ceil = Math.ceil; +var Math_floor = Math.floor; +var Math_pow = Math.pow; +var Math_imul = Math.imul; +var Math_fround = Math.fround; +var Math_round = Math.round; +var Math_min = Math.min; +var Math_max = Math.max; +var Math_clz32 = Math.clz32; +var Math_trunc = Math.trunc; + + + +// A counter of dependencies for calling run(). If we need to +// do asynchronous work before running, increment this and +// decrement it. Incrementing must happen in a place like +// Module.preRun (used by emcc to add file preloading). +// Note that you can add dependencies in preRun, even though +// it happens right before run - run will be postponed until +// the dependencies are met. +var runDependencies = 0; +var runDependencyWatcher = null; +var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled +var runDependencyTracking = {}; + +function getUniqueRunDependency(id) { + var orig = id; + while (1) { + if (!runDependencyTracking[id]) return id; + id = orig + Math.random(); + } +} + +function addRunDependency(id) { + runDependencies++; + + if (Module['monitorRunDependencies']) { + Module['monitorRunDependencies'](runDependencies); + } + + if (id) { + assert(!runDependencyTracking[id]); + runDependencyTracking[id] = 1; + if (runDependencyWatcher === null && typeof setInterval !== 'undefined') { + // Check for missing dependencies every few seconds + runDependencyWatcher = setInterval(function() { + if (ABORT) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + return; + } + var shown = false; + for (var dep in runDependencyTracking) { + if (!shown) { + shown = true; + err('still waiting on run dependencies:'); + } + err('dependency: ' + dep); + } + if (shown) { + err('(end of list)'); + } + }, 10000); + } + } else { + err('warning: run dependency added without ID'); + } +} + +function removeRunDependency(id) { + runDependencies--; + + if (Module['monitorRunDependencies']) { + Module['monitorRunDependencies'](runDependencies); + } + + if (id) { + assert(runDependencyTracking[id]); + delete runDependencyTracking[id]; + } else { + err('warning: run dependency removed without ID'); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); // can add another dependenciesFulfilled + } + } +} + +Module["preloadedImages"] = {}; // maps url to image data +Module["preloadedAudios"] = {}; // maps url to audio data + +/** @param {string|number=} what */ +function abort(what) { + if (Module['onAbort']) { + Module['onAbort'](what); + } + + what += ''; + out(what); + err(what); + + ABORT = true; + EXITSTATUS = 1; + + var output = 'abort(' + what + ') at ' + stackTrace(); + what = output; + + // Throw a wasm runtime error, because a JS error might be seen as a foreign + // exception, which means we'd run destructors on it. We need the error to + // simply make the program stop. + throw new WebAssembly.RuntimeError(what); +} + + +var memoryInitializer = null; + + + + + + + + + + + + +function hasPrefix(str, prefix) { + return String.prototype.startsWith ? + str.startsWith(prefix) : + str.indexOf(prefix) === 0; +} + +// Prefix of data URIs emitted by SINGLE_FILE and related options. +var dataURIPrefix = 'data:application/octet-stream;base64,'; + +// Indicates whether filename is a base64 data URI. +function isDataURI(filename) { + return hasPrefix(filename, dataURIPrefix); +} + +var fileURIPrefix = "file://"; + +// Indicates whether filename is delivered via file protocol (as opposed to http/https) +function isFileURI(filename) { + return hasPrefix(filename, fileURIPrefix); +} + + + +function createExportWrapper(name, fixedasm) { + return function() { + var displayName = name; + var asm = fixedasm; + if (!fixedasm) { + asm = Module['asm']; + } + assert(runtimeInitialized, 'native function `' + displayName + '` called before runtime initialization'); + assert(!runtimeExited, 'native function `' + displayName + '` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); + if (!asm[name]) { + assert(asm[name], 'exported native function `' + displayName + '` not found'); + } + return asm[name].apply(null, arguments); + }; +} + +var wasmBinaryFile = 'sdfglyph.wasm'; +if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); +} + +function getBinary() { + try { + if (wasmBinary) { + return new Uint8Array(wasmBinary); + } + + if (readBinary) { + return readBinary(wasmBinaryFile); + } else { + throw "both async and sync fetching of the wasm failed"; + } + } + catch (err) { + abort(err); + } +} + +function getBinaryPromise() { + // If we don't have the binary yet, and have the Fetch api, use that; + // in some environments, like Electron's render process, Fetch api may be present, but have a different context than expected, let's only use it on the Web + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === 'function' + // Let's not use fetch to get objects over file:// as it's most likely Cordova which doesn't support fetch for file:// + && !isFileURI(wasmBinaryFile) + ) { + return fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function(response) { + if (!response['ok']) { + throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"; + } + return response['arrayBuffer'](); + }).catch(function () { + return getBinary(); + }); + } + // Otherwise, getBinary should be able to get it synchronously + return new Promise(function(resolve, reject) { + resolve(getBinary()); + }); +} + + + +// Create the wasm instance. +// Receives the wasm imports, returns the exports. +function createWasm() { + // prepare imports + var info = { + 'env': asmLibraryArg, + 'wasi_snapshot_preview1': asmLibraryArg + }; + // Load the wasm module and create an instance of using native support in the JS engine. + // handle a generated wasm instance, receiving its exports and + // performing other necessary setup + /** @param {WebAssembly.Module=} module*/ + function receiveInstance(instance, module) { + var exports = instance.exports; + Module['asm'] = exports; + removeRunDependency('wasm-instantiate'); + } + // we can't run yet (except in a pthread, where we have a custom sync instantiator) + addRunDependency('wasm-instantiate'); + + + // Async compilation can be confusing when an error on the page overwrites Module + // (for example, if the order of elements is wrong, and the one defining Module is + // later), so we save Module and check it later. + var trueModule = Module; + function receiveInstantiatedSource(output) { + // 'output' is a WebAssemblyInstantiatedSource object which has both the module and instance. + // receiveInstance() will swap in the exports (to Module.asm) so they can be called + assert(Module === trueModule, 'the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?'); + trueModule = null; + // TODO: Due to Closure regression https://github.com/google/closure-compiler/issues/3193, the above line no longer optimizes out down to the following line. + // When the regression is fixed, can restore the above USE_PTHREADS-enabled path. + receiveInstance(output['instance']); + } + + + function instantiateArrayBuffer(receiver) { + return getBinaryPromise().then(function(binary) { + return WebAssembly.instantiate(binary, info); + }).then(receiver, function(reason) { + err('failed to asynchronously prepare wasm: ' + reason); + abort(reason); + }); + } + + // Prefer streaming instantiation if available. + function instantiateAsync() { + if (!wasmBinary && + typeof WebAssembly.instantiateStreaming === 'function' && + !isDataURI(wasmBinaryFile) && + // Don't use streaming for file:// delivered objects in a webview, fetch them synchronously. + !isFileURI(wasmBinaryFile) && + typeof fetch === 'function') { + fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function (response) { + var result = WebAssembly.instantiateStreaming(response, info); + return result.then(receiveInstantiatedSource, function(reason) { + // We expect the most common failure cause to be a bad MIME type for the binary, + // in which case falling back to ArrayBuffer instantiation should work. + err('wasm streaming compile failed: ' + reason); + err('falling back to ArrayBuffer instantiation'); + return instantiateArrayBuffer(receiveInstantiatedSource); + }); + }); + } else { + return instantiateArrayBuffer(receiveInstantiatedSource); + } + } + // User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback + // to manually instantiate the Wasm module themselves. This allows pages to run the instantiation parallel + // to any other async startup actions they are performing. + if (Module['instantiateWasm']) { + try { + var exports = Module['instantiateWasm'](info, receiveInstance); + return exports; + } catch(e) { + err('Module.instantiateWasm callback failed with error: ' + e); + return false; + } + } + + instantiateAsync(); + return {}; // no exports yet; we'll fill them in later +} + + +// Globals used by JS i64 conversions +var tempDouble; +var tempI64; + +// === Body === + +var ASM_CONSTS = { + +}; + + + + +// STATICTOP = STATIC_BASE + 102112; +/* global initializers */ __ATINIT__.push({ func: function() { ___wasm_call_ctors() } }); + + + + +/* no memory initializer */ +// {{PRE_LIBRARY}} + + + function abortStackOverflow(allocSize) { + abort('Stack overflow! Attempted to allocate ' + allocSize + ' bytes on the stack, but stack has only ' + (STACK_MAX - stackSave() + allocSize) + ' bytes available!'); + } + + function demangle(func) { + warnOnce('warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling'); + return func; + } + + function demangleAll(text) { + var regex = + /\b_Z[\w\d_]+/g; + return text.replace(regex, + function(x) { + var y = demangle(x); + return x === y ? x : (y + ' [' + x + ']'); + }); + } + + function jsStackTrace() { + var err = new Error(); + if (!err.stack) { + // IE10+ special cases: It does have callstack info, but it is only populated if an Error object is thrown, + // so try that as a special-case. + try { + throw new Error(); + } catch(e) { + err = e; + } + if (!err.stack) { + return '(no stack trace available)'; + } + } + return err.stack.toString(); + } + + function stackTrace() { + var js = jsStackTrace(); + if (Module['extraStackTrace']) js += '\n' + Module['extraStackTrace'](); + return demangleAll(js); + } + + function ___assert_fail(condition, filename, line, func) { + abort('Assertion failed: ' + UTF8ToString(condition) + ', at: ' + [filename ? UTF8ToString(filename) : 'unknown filename', line, func ? UTF8ToString(func) : 'unknown function']); + } + + function ___cxa_allocate_exception(size) { + return _malloc(size); + } + + + var ___exception_infos={}; + + var ___exception_last=0; + + function __ZSt18uncaught_exceptionv() { // std::uncaught_exception() + return __ZSt18uncaught_exceptionv.uncaught_exceptions > 0; + }function ___cxa_throw(ptr, type, destructor) { + ___exception_infos[ptr] = { + ptr: ptr, + adjusted: [ptr], + type: type, + destructor: destructor, + refcount: 0, + caught: false, + rethrown: false + }; + ___exception_last = ptr; + if (!("uncaught_exception" in __ZSt18uncaught_exceptionv)) { + __ZSt18uncaught_exceptionv.uncaught_exceptions = 1; + } else { + __ZSt18uncaught_exceptionv.uncaught_exceptions++; + } + throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."; + } + + function ___handle_stack_overflow() { + abort('stack overflow') + } + + + function setErrNo(value) { + HEAP32[((___errno_location())>>2)]=value; + return value; + } + + + var PATH={splitPath:function(filename) { + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + return splitPathRe.exec(filename).slice(1); + },normalizeArray:function(parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up; up--) { + parts.unshift('..'); + } + } + return parts; + },normalize:function(path) { + var isAbsolute = path.charAt(0) === '/', + trailingSlash = path.substr(-1) === '/'; + // Normalize the path + path = PATH.normalizeArray(path.split('/').filter(function(p) { + return !!p; + }), !isAbsolute).join('/'); + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + return (isAbsolute ? '/' : '') + path; + },dirname:function(path) { + var result = PATH.splitPath(path), + root = result[0], + dir = result[1]; + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.substr(0, dir.length - 1); + } + return root + dir; + },basename:function(path) { + // EMSCRIPTEN return '/'' for '/', not an empty string + if (path === '/') return '/'; + var lastSlash = path.lastIndexOf('/'); + if (lastSlash === -1) return path; + return path.substr(lastSlash+1); + },extname:function(path) { + return PATH.splitPath(path)[3]; + },join:function() { + var paths = Array.prototype.slice.call(arguments, 0); + return PATH.normalize(paths.join('/')); + },join2:function(l, r) { + return PATH.normalize(l + '/' + r); + }}; + + + var PATH_FS={resolve:function() { + var resolvedPath = '', + resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : FS.cwd(); + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + return ''; // an invalid portion invalidates the whole thing + } + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; + },relative:function(from, to) { + from = PATH_FS.resolve(from).substr(1); + to = PATH_FS.resolve(to).substr(1); + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join('/'); + }}; + + var TTY={ttys:[],init:function () { + // https://github.com/emscripten-core/emscripten/pull/1555 + // if (ENVIRONMENT_IS_NODE) { + // // currently, FS.init does not distinguish if process.stdin is a file or TTY + // // device, it always assumes it's a TTY device. because of this, we're forcing + // // process.stdin to UTF8 encoding to at least make stdin reading compatible + // // with text files until FS.init can be refactored. + // process['stdin']['setEncoding']('utf8'); + // } + },shutdown:function() { + // https://github.com/emscripten-core/emscripten/pull/1555 + // if (ENVIRONMENT_IS_NODE) { + // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? + // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation + // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? + // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle + // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call + // process['stdin']['pause'](); + // } + },register:function(dev, ops) { + TTY.ttys[dev] = { input: [], output: [], ops: ops }; + FS.registerDevice(dev, TTY.stream_ops); + },stream_ops:{open:function(stream) { + var tty = TTY.ttys[stream.node.rdev]; + if (!tty) { + throw new FS.ErrnoError(43); + } + stream.tty = tty; + stream.seekable = false; + },close:function(stream) { + // flush any pending line data + stream.tty.ops.flush(stream.tty); + },flush:function(stream) { + stream.tty.ops.flush(stream.tty); + },read:function(stream, buffer, offset, length, pos /* ignored */) { + if (!stream.tty || !stream.tty.ops.get_char) { + throw new FS.ErrnoError(60); + } + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = stream.tty.ops.get_char(stream.tty); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset+i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + },write:function(stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.put_char) { + throw new FS.ErrnoError(60); + } + try { + for (var i = 0; i < length; i++) { + stream.tty.ops.put_char(stream.tty, buffer[offset+i]); + } + } catch (e) { + throw new FS.ErrnoError(29); + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + }},default_tty_ops:{get_char:function(tty) { + if (!tty.input.length) { + var result = null; + if (ENVIRONMENT_IS_NODE) { + // we will read data by chunks of BUFSIZE + var BUFSIZE = 256; + var buf = Buffer.alloc ? Buffer.alloc(BUFSIZE) : new Buffer(BUFSIZE); + var bytesRead = 0; + + try { + bytesRead = nodeFS.readSync(process.stdin.fd, buf, 0, BUFSIZE, null); + } catch(e) { + // Cross-platform differences: on Windows, reading EOF throws an exception, but on other OSes, + // reading EOF returns 0. Uniformize behavior by treating the EOF exception to return 0. + if (e.toString().indexOf('EOF') != -1) bytesRead = 0; + else throw e; + } + + if (bytesRead > 0) { + result = buf.slice(0, bytesRead).toString('utf-8'); + } else { + result = null; + } + } else + if (typeof window != 'undefined' && + typeof window.prompt == 'function') { + // Browser. + result = window.prompt('Input: '); // returns null on cancel + if (result !== null) { + result += '\n'; + } + } else if (typeof readline == 'function') { + // Command line. + result = readline(); + if (result !== null) { + result += '\n'; + } + } + if (!result) { + return null; + } + tty.input = intArrayFromString(result, true); + } + return tty.input.shift(); + },put_char:function(tty, val) { + if (val === null || val === 10) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); // val == 0 would cut text output off in the middle. + } + },flush:function(tty) { + if (tty.output && tty.output.length > 0) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + }},default_tty1_ops:{put_char:function(tty, val) { + if (val === null || val === 10) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + },flush:function(tty) { + if (tty.output && tty.output.length > 0) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + }}}; + + var MEMFS={ops_table:null,mount:function(mount) { + return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); + },createNode:function(parent, name, mode, dev) { + if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { + // no supported + throw new FS.ErrnoError(63); + } + if (!MEMFS.ops_table) { + MEMFS.ops_table = { + dir: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + lookup: MEMFS.node_ops.lookup, + mknod: MEMFS.node_ops.mknod, + rename: MEMFS.node_ops.rename, + unlink: MEMFS.node_ops.unlink, + rmdir: MEMFS.node_ops.rmdir, + readdir: MEMFS.node_ops.readdir, + symlink: MEMFS.node_ops.symlink + }, + stream: { + llseek: MEMFS.stream_ops.llseek + } + }, + file: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: { + llseek: MEMFS.stream_ops.llseek, + read: MEMFS.stream_ops.read, + write: MEMFS.stream_ops.write, + allocate: MEMFS.stream_ops.allocate, + mmap: MEMFS.stream_ops.mmap, + msync: MEMFS.stream_ops.msync + } + }, + link: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + readlink: MEMFS.node_ops.readlink + }, + stream: {} + }, + chrdev: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }, + stream: FS.chrdev_stream_ops + } + }; + } + var node = FS.createNode(parent, name, mode, dev); + if (FS.isDir(node.mode)) { + node.node_ops = MEMFS.ops_table.dir.node; + node.stream_ops = MEMFS.ops_table.dir.stream; + node.contents = {}; + } else if (FS.isFile(node.mode)) { + node.node_ops = MEMFS.ops_table.file.node; + node.stream_ops = MEMFS.ops_table.file.stream; + node.usedBytes = 0; // The actual number of bytes used in the typed array, as opposed to contents.length which gives the whole capacity. + // When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred + // for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size + // penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme. + node.contents = null; + } else if (FS.isLink(node.mode)) { + node.node_ops = MEMFS.ops_table.link.node; + node.stream_ops = MEMFS.ops_table.link.stream; + } else if (FS.isChrdev(node.mode)) { + node.node_ops = MEMFS.ops_table.chrdev.node; + node.stream_ops = MEMFS.ops_table.chrdev.stream; + } + node.timestamp = Date.now(); + // add the new node to the parent + if (parent) { + parent.contents[name] = node; + } + return node; + },getFileDataAsRegularArray:function(node) { + if (node.contents && node.contents.subarray) { + var arr = []; + for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]); + return arr; // Returns a copy of the original data. + } + return node.contents; // No-op, the file contents are already in a JS array. Return as-is. + },getFileDataAsTypedArray:function(node) { + if (!node.contents) return new Uint8Array(0); + if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes. + return new Uint8Array(node.contents); + },expandFileStorage:function(node, newCapacity) { + var prevCapacity = node.contents ? node.contents.length : 0; + if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough. + // Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity. + // For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to + // avoid overshooting the allocation cap by a very large margin. + var CAPACITY_DOUBLING_MAX = 1024 * 1024; + newCapacity = Math.max(newCapacity, (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) >>> 0); + if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding. + var oldContents = node.contents; + node.contents = new Uint8Array(newCapacity); // Allocate new storage. + if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage. + return; + },resizeFileStorage:function(node, newSize) { + if (node.usedBytes == newSize) return; + if (newSize == 0) { + node.contents = null; // Fully decommit when requesting a resize to zero. + node.usedBytes = 0; + return; + } + if (!node.contents || node.contents.subarray) { // Resize a typed array if that is being used as the backing store. + var oldContents = node.contents; + node.contents = new Uint8Array(newSize); // Allocate new storage. + if (oldContents) { + node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); // Copy old data over to the new storage. + } + node.usedBytes = newSize; + return; + } + // Backing with a JS array. + if (!node.contents) node.contents = []; + if (node.contents.length > newSize) node.contents.length = newSize; + else while (node.contents.length < newSize) node.contents.push(0); + node.usedBytes = newSize; + },node_ops:{getattr:function(node) { + var attr = {}; + // device numbers reuse inode numbers. + attr.dev = FS.isChrdev(node.mode) ? node.id : 1; + attr.ino = node.id; + attr.mode = node.mode; + attr.nlink = 1; + attr.uid = 0; + attr.gid = 0; + attr.rdev = node.rdev; + if (FS.isDir(node.mode)) { + attr.size = 4096; + } else if (FS.isFile(node.mode)) { + attr.size = node.usedBytes; + } else if (FS.isLink(node.mode)) { + attr.size = node.link.length; + } else { + attr.size = 0; + } + attr.atime = new Date(node.timestamp); + attr.mtime = new Date(node.timestamp); + attr.ctime = new Date(node.timestamp); + // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), + // but this is not required by the standard. + attr.blksize = 4096; + attr.blocks = Math.ceil(attr.size / attr.blksize); + return attr; + },setattr:function(node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + if (attr.size !== undefined) { + MEMFS.resizeFileStorage(node, attr.size); + } + },lookup:function(parent, name) { + throw FS.genericErrors[44]; + },mknod:function(parent, name, mode, dev) { + return MEMFS.createNode(parent, name, mode, dev); + },rename:function(old_node, new_dir, new_name) { + // if we're overwriting a directory at new_name, make sure it's empty. + if (FS.isDir(old_node.mode)) { + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) { + } + if (new_node) { + for (var i in new_node.contents) { + throw new FS.ErrnoError(55); + } + } + } + // do the internal rewiring + delete old_node.parent.contents[old_node.name]; + old_node.name = new_name; + new_dir.contents[new_name] = old_node; + old_node.parent = new_dir; + },unlink:function(parent, name) { + delete parent.contents[name]; + },rmdir:function(parent, name) { + var node = FS.lookupNode(parent, name); + for (var i in node.contents) { + throw new FS.ErrnoError(55); + } + delete parent.contents[name]; + },readdir:function(node) { + var entries = ['.', '..']; + for (var key in node.contents) { + if (!node.contents.hasOwnProperty(key)) { + continue; + } + entries.push(key); + } + return entries; + },symlink:function(parent, newname, oldpath) { + var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0); + node.link = oldpath; + return node; + },readlink:function(node) { + if (!FS.isLink(node.mode)) { + throw new FS.ErrnoError(28); + } + return node.link; + }},stream_ops:{read:function(stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= stream.node.usedBytes) return 0; + var size = Math.min(stream.node.usedBytes - position, length); + assert(size >= 0); + if (size > 8 && contents.subarray) { // non-trivial, and typed array + buffer.set(contents.subarray(position, position + size), offset); + } else { + for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]; + } + return size; + },write:function(stream, buffer, offset, length, position, canOwn) { + // The data buffer should be a typed array view + assert(!(buffer instanceof ArrayBuffer)); + // If the buffer is located in main memory (HEAP), and if + // memory can grow, we can't hold on to references of the + // memory buffer, as they may get invalidated. That means we + // need to do copy its contents. + if (buffer.buffer === HEAP8.buffer) { + // FIXME: this is inefficient as the file packager may have + // copied the data into memory already - we may want to + // integrate more there and let the file packager loading + // code be able to query if memory growth is on or off. + if (canOwn) { + warnOnce('file packager has copied file data into memory, but in memory growth we are forced to copy it again (see --no-heap-copy)'); + } + canOwn = false; + } + + if (!length) return 0; + var node = stream.node; + node.timestamp = Date.now(); + + if (buffer.subarray && (!node.contents || node.contents.subarray)) { // This write is from a typed array to a typed array? + if (canOwn) { + assert(position === 0, 'canOwn must imply no weird position inside the file'); + node.contents = buffer.subarray(offset, offset + length); + node.usedBytes = length; + return length; + } else if (node.usedBytes === 0 && position === 0) { // If this is a simple first write to an empty file, do a fast set since we don't need to care about old data. + node.contents = buffer.slice(offset, offset + length); + node.usedBytes = length; + return length; + } else if (position + length <= node.usedBytes) { // Writing to an already allocated and used subrange of the file? + node.contents.set(buffer.subarray(offset, offset + length), position); + return length; + } + } + + // Appending to an existing file and we need to reallocate, or source data did not come as a typed array. + MEMFS.expandFileStorage(node, position+length); + if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); // Use typed array write if available. + else { + for (var i = 0; i < length; i++) { + node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not. + } + } + node.usedBytes = Math.max(node.usedBytes, position + length); + return length; + },llseek:function(stream, offset, whence) { + var position = offset; + if (whence === 1) { + position += stream.position; + } else if (whence === 2) { + if (FS.isFile(stream.node.mode)) { + position += stream.node.usedBytes; + } + } + if (position < 0) { + throw new FS.ErrnoError(28); + } + return position; + },allocate:function(stream, offset, length) { + MEMFS.expandFileStorage(stream.node, offset + length); + stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); + },mmap:function(stream, address, length, position, prot, flags) { + // We don't currently support location hints for the address of the mapping + assert(address === 0); + + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + var ptr; + var allocated; + var contents = stream.node.contents; + // Only make a new copy when MAP_PRIVATE is specified. + if (!(flags & 2) && contents.buffer === buffer) { + // We can't emulate MAP_SHARED when the file is not backed by the buffer + // we're mapping to (e.g. the HEAP buffer). + allocated = false; + ptr = contents.byteOffset; + } else { + // Try to avoid unnecessary slices. + if (position > 0 || position + length < contents.length) { + if (contents.subarray) { + contents = contents.subarray(position, position + length); + } else { + contents = Array.prototype.slice.call(contents, position, position + length); + } + } + allocated = true; + ptr = _malloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + HEAP8.set(contents, ptr); + } + return { ptr: ptr, allocated: allocated }; + },msync:function(stream, buffer, offset, length, mmapFlags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (mmapFlags & 2) { + // MAP_PRIVATE calls need not to be synced back to underlying fs + return 0; + } + + var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); + // should we check if bytesWritten and length are the same? + return 0; + }}}; + + var ERRNO_MESSAGES={0:"Success",1:"Arg list too long",2:"Permission denied",3:"Address already in use",4:"Address not available",5:"Address family not supported by protocol family",6:"No more processes",7:"Socket already connected",8:"Bad file number",9:"Trying to read unreadable message",10:"Mount device busy",11:"Operation canceled",12:"No children",13:"Connection aborted",14:"Connection refused",15:"Connection reset by peer",16:"File locking deadlock error",17:"Destination address required",18:"Math arg out of domain of func",19:"Quota exceeded",20:"File exists",21:"Bad address",22:"File too large",23:"Host is unreachable",24:"Identifier removed",25:"Illegal byte sequence",26:"Connection already in progress",27:"Interrupted system call",28:"Invalid argument",29:"I/O error",30:"Socket is already connected",31:"Is a directory",32:"Too many symbolic links",33:"Too many open files",34:"Too many links",35:"Message too long",36:"Multihop attempted",37:"File or path name too long",38:"Network interface is not configured",39:"Connection reset by network",40:"Network is unreachable",41:"Too many open files in system",42:"No buffer space available",43:"No such device",44:"No such file or directory",45:"Exec format error",46:"No record locks available",47:"The link has been severed",48:"Not enough core",49:"No message of desired type",50:"Protocol not available",51:"No space left on device",52:"Function not implemented",53:"Socket is not connected",54:"Not a directory",55:"Directory not empty",56:"State not recoverable",57:"Socket operation on non-socket",59:"Not a typewriter",60:"No such device or address",61:"Value too large for defined data type",62:"Previous owner died",63:"Not super-user",64:"Broken pipe",65:"Protocol error",66:"Unknown protocol",67:"Protocol wrong type for socket",68:"Math result not representable",69:"Read only file system",70:"Illegal seek",71:"No such process",72:"Stale file handle",73:"Connection timed out",74:"Text file busy",75:"Cross-device link",100:"Device not a stream",101:"Bad font file fmt",102:"Invalid slot",103:"Invalid request code",104:"No anode",105:"Block device required",106:"Channel number out of range",107:"Level 3 halted",108:"Level 3 reset",109:"Link number out of range",110:"Protocol driver not attached",111:"No CSI structure available",112:"Level 2 halted",113:"Invalid exchange",114:"Invalid request descriptor",115:"Exchange full",116:"No data (for no delay io)",117:"Timer expired",118:"Out of streams resources",119:"Machine is not on the network",120:"Package not installed",121:"The object is remote",122:"Advertise error",123:"Srmount error",124:"Communication error on send",125:"Cross mount point (not really error)",126:"Given log. name not unique",127:"f.d. invalid for this operation",128:"Remote address changed",129:"Can access a needed shared lib",130:"Accessing a corrupted shared lib",131:".lib section in a.out corrupted",132:"Attempting to link in too many libs",133:"Attempting to exec a shared library",135:"Streams pipe error",136:"Too many users",137:"Socket type not supported",138:"Not supported",139:"Protocol family not supported",140:"Can't send after socket shutdown",141:"Too many references",142:"Host is down",148:"No medium (in tape drive)",156:"Level 2 not synchronized"}; + + var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function(e) { + if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace(); + return setErrNo(e.errno); + },lookupPath:function(path, opts) { + path = PATH_FS.resolve(FS.cwd(), path); + opts = opts || {}; + + if (!path) return { path: '', node: null }; + + var defaults = { + follow_mount: true, + recurse_count: 0 + }; + for (var key in defaults) { + if (opts[key] === undefined) { + opts[key] = defaults[key]; + } + } + + if (opts.recurse_count > 8) { // max recursive lookup of 8 + throw new FS.ErrnoError(32); + } + + // split the path + var parts = PATH.normalizeArray(path.split('/').filter(function(p) { + return !!p; + }), false); + + // start at the root + var current = FS.root; + var current_path = '/'; + + for (var i = 0; i < parts.length; i++) { + var islast = (i === parts.length-1); + if (islast && opts.parent) { + // stop resolving + break; + } + + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); + + // jump to the mount's root node if this is a mountpoint + if (FS.isMountpoint(current)) { + if (!islast || (islast && opts.follow_mount)) { + current = current.mounted.root; + } + } + + // by default, lookupPath will not follow a symlink if it is the final path component. + // setting opts.follow = true will override this behavior. + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH_FS.resolve(PATH.dirname(current_path), link); + + var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); + current = lookup.node; + + if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). + throw new FS.ErrnoError(32); + } + } + } + } + + return { path: current_path, node: current }; + },getPath:function(node) { + var path; + while (true) { + if (FS.isRoot(node)) { + var mount = node.mount.mountpoint; + if (!path) return mount; + return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; + } + path = path ? node.name + '/' + path : node.name; + node = node.parent; + } + },hashName:function(parentid, name) { + var hash = 0; + + + for (var i = 0; i < name.length; i++) { + hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; + } + return ((parentid + hash) >>> 0) % FS.nameTable.length; + },hashAddNode:function(node) { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; + FS.nameTable[hash] = node; + },hashRemoveNode:function(node) { + var hash = FS.hashName(node.parent.id, node.name); + if (FS.nameTable[hash] === node) { + FS.nameTable[hash] = node.name_next; + } else { + var current = FS.nameTable[hash]; + while (current) { + if (current.name_next === node) { + current.name_next = node.name_next; + break; + } + current = current.name_next; + } + } + },lookupNode:function(parent, name) { + var errCode = FS.mayLookup(parent); + if (errCode) { + throw new FS.ErrnoError(errCode, parent); + } + var hash = FS.hashName(parent.id, name); + for (var node = FS.nameTable[hash]; node; node = node.name_next) { + var nodeName = node.name; + if (node.parent.id === parent.id && nodeName === name) { + return node; + } + } + // if we failed to find it in the cache, call into the VFS + return FS.lookup(parent, name); + },createNode:function(parent, name, mode, rdev) { + var node = new FS.FSNode(parent, name, mode, rdev); + + FS.hashAddNode(node); + + return node; + },destroyNode:function(node) { + FS.hashRemoveNode(node); + },isRoot:function(node) { + return node === node.parent; + },isMountpoint:function(node) { + return !!node.mounted; + },isFile:function(mode) { + return (mode & 61440) === 32768; + },isDir:function(mode) { + return (mode & 61440) === 16384; + },isLink:function(mode) { + return (mode & 61440) === 40960; + },isChrdev:function(mode) { + return (mode & 61440) === 8192; + },isBlkdev:function(mode) { + return (mode & 61440) === 24576; + },isFIFO:function(mode) { + return (mode & 61440) === 4096; + },isSocket:function(mode) { + return (mode & 49152) === 49152; + },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(str) { + var flags = FS.flagModes[str]; + if (typeof flags === 'undefined') { + throw new Error('Unknown file open mode: ' + str); + } + return flags; + },flagsToPermissionString:function(flag) { + var perms = ['r', 'w', 'rw'][flag & 3]; + if ((flag & 512)) { + perms += 'w'; + } + return perms; + },nodePermissions:function(node, perms) { + if (FS.ignorePermissions) { + return 0; + } + // return 0 if any user, group or owner bits are set. + if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { + return 2; + } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { + return 2; + } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { + return 2; + } + return 0; + },mayLookup:function(dir) { + var errCode = FS.nodePermissions(dir, 'x'); + if (errCode) return errCode; + if (!dir.node_ops.lookup) return 2; + return 0; + },mayCreate:function(dir, name) { + try { + var node = FS.lookupNode(dir, name); + return 20; + } catch (e) { + } + return FS.nodePermissions(dir, 'wx'); + },mayDelete:function(dir, name, isdir) { + var node; + try { + node = FS.lookupNode(dir, name); + } catch (e) { + return e.errno; + } + var errCode = FS.nodePermissions(dir, 'wx'); + if (errCode) { + return errCode; + } + if (isdir) { + if (!FS.isDir(node.mode)) { + return 54; + } + if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { + return 10; + } + } else { + if (FS.isDir(node.mode)) { + return 31; + } + } + return 0; + },mayOpen:function(node, flags) { + if (!node) { + return 44; + } + if (FS.isLink(node.mode)) { + return 32; + } else if (FS.isDir(node.mode)) { + if (FS.flagsToPermissionString(flags) !== 'r' || // opening for write + (flags & 512)) { // TODO: check for O_SEARCH? (== search for dir only) + return 31; + } + } + return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); + },MAX_OPEN_FDS:4096,nextfd:function(fd_start, fd_end) { + fd_start = fd_start || 0; + fd_end = fd_end || FS.MAX_OPEN_FDS; + for (var fd = fd_start; fd <= fd_end; fd++) { + if (!FS.streams[fd]) { + return fd; + } + } + throw new FS.ErrnoError(33); + },getStream:function(fd) { + return FS.streams[fd]; + },createStream:function(stream, fd_start, fd_end) { + if (!FS.FSStream) { + FS.FSStream = /** @constructor */ function(){}; + FS.FSStream.prototype = { + object: { + get: function() { return this.node; }, + set: function(val) { this.node = val; } + }, + isRead: { + get: function() { return (this.flags & 2097155) !== 1; } + }, + isWrite: { + get: function() { return (this.flags & 2097155) !== 0; } + }, + isAppend: { + get: function() { return (this.flags & 1024); } + } + }; + } + // clone it, so we can return an instance of FSStream + var newStream = new FS.FSStream(); + for (var p in stream) { + newStream[p] = stream[p]; + } + stream = newStream; + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + FS.streams[fd] = stream; + return stream; + },closeStream:function(fd) { + FS.streams[fd] = null; + },chrdev_stream_ops:{open:function(stream) { + var device = FS.getDevice(stream.node.rdev); + // override node's stream ops with the device's + stream.stream_ops = device.stream_ops; + // forward the open call + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + },llseek:function() { + throw new FS.ErrnoError(70); + }},major:function(dev) { + return ((dev) >> 8); + },minor:function(dev) { + return ((dev) & 0xff); + },makedev:function(ma, mi) { + return ((ma) << 8 | (mi)); + },registerDevice:function(dev, ops) { + FS.devices[dev] = { stream_ops: ops }; + },getDevice:function(dev) { + return FS.devices[dev]; + },getMounts:function(mount) { + var mounts = []; + var check = [mount]; + + while (check.length) { + var m = check.pop(); + + mounts.push(m); + + check.push.apply(check, m.mounts); + } + + return mounts; + },syncfs:function(populate, callback) { + if (typeof(populate) === 'function') { + callback = populate; + populate = false; + } + + FS.syncFSRequests++; + + if (FS.syncFSRequests > 1) { + err('warning: ' + FS.syncFSRequests + ' FS.syncfs operations in flight at once, probably just doing extra work'); + } + + var mounts = FS.getMounts(FS.root.mount); + var completed = 0; + + function doCallback(errCode) { + assert(FS.syncFSRequests > 0); + FS.syncFSRequests--; + return callback(errCode); + } + + function done(errCode) { + if (errCode) { + if (!done.errored) { + done.errored = true; + return doCallback(errCode); + } + return; + } + if (++completed >= mounts.length) { + doCallback(null); + } + }; + + // sync all mounts + mounts.forEach(function (mount) { + if (!mount.type.syncfs) { + return done(null); + } + mount.type.syncfs(mount, populate, done); + }); + },mount:function(type, opts, mountpoint) { + if (typeof type === 'string') { + // The filesystem was not included, and instead we have an error + // message stored in the variable. + throw type; + } + var root = mountpoint === '/'; + var pseudo = !mountpoint; + var node; + + if (root && FS.root) { + throw new FS.ErrnoError(10); + } else if (!root && !pseudo) { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); + + mountpoint = lookup.path; // use the absolute path + node = lookup.node; + + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + + if (!FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + } + + var mount = { + type: type, + opts: opts, + mountpoint: mountpoint, + mounts: [] + }; + + // create a root node for the fs + var mountRoot = type.mount(mount); + mountRoot.mount = mount; + mount.root = mountRoot; + + if (root) { + FS.root = mountRoot; + } else if (node) { + // set as a mountpoint + node.mounted = mount; + + // add the new mount to the current mount's children + if (node.mount) { + node.mount.mounts.push(mount); + } + } + + return mountRoot; + },unmount:function (mountpoint) { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); + + if (!FS.isMountpoint(lookup.node)) { + throw new FS.ErrnoError(28); + } + + // destroy the nodes for this mount, and all its child mounts + var node = lookup.node; + var mount = node.mounted; + var mounts = FS.getMounts(mount); + + Object.keys(FS.nameTable).forEach(function (hash) { + var current = FS.nameTable[hash]; + + while (current) { + var next = current.name_next; + + if (mounts.indexOf(current.mount) !== -1) { + FS.destroyNode(current); + } + + current = next; + } + }); + + // no longer a mountpoint + node.mounted = null; + + // remove this mount from the child mounts + var idx = node.mount.mounts.indexOf(mount); + assert(idx !== -1); + node.mount.mounts.splice(idx, 1); + },lookup:function(parent, name) { + return parent.node_ops.lookup(parent, name); + },mknod:function(path, mode, dev) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + if (!name || name === '.' || name === '..') { + throw new FS.ErrnoError(28); + } + var errCode = FS.mayCreate(parent, name); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.mknod) { + throw new FS.ErrnoError(63); + } + return parent.node_ops.mknod(parent, name, mode, dev); + },create:function(path, mode) { + mode = mode !== undefined ? mode : 438 /* 0666 */; + mode &= 4095; + mode |= 32768; + return FS.mknod(path, mode, 0); + },mkdir:function(path, mode) { + mode = mode !== undefined ? mode : 511 /* 0777 */; + mode &= 511 | 512; + mode |= 16384; + return FS.mknod(path, mode, 0); + },mkdirTree:function(path, mode) { + var dirs = path.split('/'); + var d = ''; + for (var i = 0; i < dirs.length; ++i) { + if (!dirs[i]) continue; + d += '/' + dirs[i]; + try { + FS.mkdir(d, mode); + } catch(e) { + if (e.errno != 20) throw e; + } + } + },mkdev:function(path, mode, dev) { + if (typeof(dev) === 'undefined') { + dev = mode; + mode = 438 /* 0666 */; + } + mode |= 8192; + return FS.mknod(path, mode, dev); + },symlink:function(oldpath, newpath) { + if (!PATH_FS.resolve(oldpath)) { + throw new FS.ErrnoError(44); + } + var lookup = FS.lookupPath(newpath, { parent: true }); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(44); + } + var newname = PATH.basename(newpath); + var errCode = FS.mayCreate(parent, newname); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.symlink) { + throw new FS.ErrnoError(63); + } + return parent.node_ops.symlink(parent, newname, oldpath); + },rename:function(old_path, new_path) { + var old_dirname = PATH.dirname(old_path); + var new_dirname = PATH.dirname(new_path); + var old_name = PATH.basename(old_path); + var new_name = PATH.basename(new_path); + // parents must exist + var lookup, old_dir, new_dir; + try { + lookup = FS.lookupPath(old_path, { parent: true }); + old_dir = lookup.node; + lookup = FS.lookupPath(new_path, { parent: true }); + new_dir = lookup.node; + } catch (e) { + throw new FS.ErrnoError(10); + } + if (!old_dir || !new_dir) throw new FS.ErrnoError(44); + // need to be part of the same mount + if (old_dir.mount !== new_dir.mount) { + throw new FS.ErrnoError(75); + } + // source must exist + var old_node = FS.lookupNode(old_dir, old_name); + // old path should not be an ancestor of the new path + var relative = PATH_FS.relative(old_path, new_dirname); + if (relative.charAt(0) !== '.') { + throw new FS.ErrnoError(28); + } + // new path should not be an ancestor of the old path + relative = PATH_FS.relative(new_path, old_dirname); + if (relative.charAt(0) !== '.') { + throw new FS.ErrnoError(55); + } + // see if the new path already exists + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) { + // not fatal + } + // early out if nothing needs to change + if (old_node === new_node) { + return; + } + // we'll need to delete the old entry + var isdir = FS.isDir(old_node.mode); + var errCode = FS.mayDelete(old_dir, old_name, isdir); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + // need delete permissions if we'll be overwriting. + // need create permissions if new doesn't already exist. + errCode = new_node ? + FS.mayDelete(new_dir, new_name, isdir) : + FS.mayCreate(new_dir, new_name); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!old_dir.node_ops.rename) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { + throw new FS.ErrnoError(10); + } + // if we are going to change the parent, check write permissions + if (new_dir !== old_dir) { + errCode = FS.nodePermissions(old_dir, 'w'); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + } + try { + if (FS.trackingDelegate['willMovePath']) { + FS.trackingDelegate['willMovePath'](old_path, new_path); + } + } catch(e) { + err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message); + } + // remove the node from the lookup hash + FS.hashRemoveNode(old_node); + // do the underlying fs rename + try { + old_dir.node_ops.rename(old_node, new_dir, new_name); + } catch (e) { + throw e; + } finally { + // add the node back to the hash (in case node_ops.rename + // changed its name) + FS.hashAddNode(old_node); + } + try { + if (FS.trackingDelegate['onMovePath']) FS.trackingDelegate['onMovePath'](old_path, new_path); + } catch(e) { + err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message); + } + },rmdir:function(path) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, true); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.rmdir) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + try { + if (FS.trackingDelegate['willDeletePath']) { + FS.trackingDelegate['willDeletePath'](path); + } + } catch(e) { + err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message); + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); + try { + if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path); + } catch(e) { + err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message); + } + },readdir:function(path) { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + if (!node.node_ops.readdir) { + throw new FS.ErrnoError(54); + } + return node.node_ops.readdir(node); + },unlink:function(path) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, false); + if (errCode) { + // According to POSIX, we should map EISDIR to EPERM, but + // we instead do what Linux does (and we must, as we use + // the musl linux libc). + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.unlink) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + try { + if (FS.trackingDelegate['willDeletePath']) { + FS.trackingDelegate['willDeletePath'](path); + } + } catch(e) { + err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message); + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); + try { + if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path); + } catch(e) { + err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message); + } + },readlink:function(path) { + var lookup = FS.lookupPath(path); + var link = lookup.node; + if (!link) { + throw new FS.ErrnoError(44); + } + if (!link.node_ops.readlink) { + throw new FS.ErrnoError(28); + } + return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); + },stat:function(path, dontFollow) { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + var node = lookup.node; + if (!node) { + throw new FS.ErrnoError(44); + } + if (!node.node_ops.getattr) { + throw new FS.ErrnoError(63); + } + return node.node_ops.getattr(node); + },lstat:function(path) { + return FS.stat(path, true); + },chmod:function(path, mode, dontFollow) { + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + mode: (mode & 4095) | (node.mode & ~4095), + timestamp: Date.now() + }); + },lchmod:function(path, mode) { + FS.chmod(path, mode, true); + },fchmod:function(fd, mode) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chmod(stream.node, mode); + },chown:function(path, uid, gid, dontFollow) { + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + timestamp: Date.now() + // we ignore the uid / gid for now + }); + },lchown:function(path, uid, gid) { + FS.chown(path, uid, gid, true); + },fchown:function(fd, uid, gid) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chown(stream.node, uid, gid); + },truncate:function(path, len) { + if (len < 0) { + throw new FS.ErrnoError(28); + } + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: true }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + if (FS.isDir(node.mode)) { + throw new FS.ErrnoError(31); + } + if (!FS.isFile(node.mode)) { + throw new FS.ErrnoError(28); + } + var errCode = FS.nodePermissions(node, 'w'); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + node.node_ops.setattr(node, { + size: len, + timestamp: Date.now() + }); + },ftruncate:function(fd, len) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(28); + } + FS.truncate(stream.node, len); + },utime:function(path, atime, mtime) { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + node.node_ops.setattr(node, { + timestamp: Math.max(atime, mtime) + }); + },open:function(path, flags, mode, fd_start, fd_end) { + if (path === "") { + throw new FS.ErrnoError(44); + } + flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; + mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode; + if ((flags & 64)) { + mode = (mode & 4095) | 32768; + } else { + mode = 0; + } + var node; + if (typeof path === 'object') { + node = path; + } else { + path = PATH.normalize(path); + try { + var lookup = FS.lookupPath(path, { + follow: !(flags & 131072) + }); + node = lookup.node; + } catch (e) { + // ignore + } + } + // perhaps we need to create the node + var created = false; + if ((flags & 64)) { + if (node) { + // if O_CREAT and O_EXCL are set, error out if the node already exists + if ((flags & 128)) { + throw new FS.ErrnoError(20); + } + } else { + // node doesn't exist, try to create it + node = FS.mknod(path, mode, 0); + created = true; + } + } + if (!node) { + throw new FS.ErrnoError(44); + } + // can't truncate a device + if (FS.isChrdev(node.mode)) { + flags &= ~512; + } + // if asked only for a directory, then this must be one + if ((flags & 65536) && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + // check permissions, if this is not a file we just created now (it is ok to + // create and write to a file with read-only permissions; it is read-only + // for later use) + if (!created) { + var errCode = FS.mayOpen(node, flags); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + } + // do truncation if necessary + if ((flags & 512)) { + FS.truncate(node, 0); + } + // we've already handled these, don't pass down to the underlying vfs + flags &= ~(128 | 512 | 131072); + + // register the stream with the filesystem + var stream = FS.createStream({ + node: node, + path: FS.getPath(node), // we want the absolute path to the node + flags: flags, + seekable: true, + position: 0, + stream_ops: node.stream_ops, + // used by the file family libc calls (fopen, fwrite, ferror, etc.) + ungotten: [], + error: false + }, fd_start, fd_end); + // call the new stream's open function + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + if (Module['logReadFiles'] && !(flags & 1)) { + if (!FS.readFiles) FS.readFiles = {}; + if (!(path in FS.readFiles)) { + FS.readFiles[path] = 1; + err("FS.trackingDelegate error on read file: " + path); + } + } + try { + if (FS.trackingDelegate['onOpenFile']) { + var trackingFlags = 0; + if ((flags & 2097155) !== 1) { + trackingFlags |= FS.tracking.openFlags.READ; + } + if ((flags & 2097155) !== 0) { + trackingFlags |= FS.tracking.openFlags.WRITE; + } + FS.trackingDelegate['onOpenFile'](path, trackingFlags); + } + } catch(e) { + err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: " + e.message); + } + return stream; + },close:function(stream) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (stream.getdents) stream.getdents = null; // free readdir state + try { + if (stream.stream_ops.close) { + stream.stream_ops.close(stream); + } + } catch (e) { + throw e; + } finally { + FS.closeStream(stream.fd); + } + stream.fd = null; + },isClosed:function(stream) { + return stream.fd === null; + },llseek:function(stream, offset, whence) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (!stream.seekable || !stream.stream_ops.llseek) { + throw new FS.ErrnoError(70); + } + if (whence != 0 && whence != 1 && whence != 2) { + throw new FS.ErrnoError(28); + } + stream.position = stream.stream_ops.llseek(stream, offset, whence); + stream.ungotten = []; + return stream.position; + },read:function(stream, buffer, offset, length, position) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.read) { + throw new FS.ErrnoError(28); + } + var seeking = typeof position !== 'undefined'; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); + if (!seeking) stream.position += bytesRead; + return bytesRead; + },write:function(stream, buffer, offset, length, position, canOwn) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.write) { + throw new FS.ErrnoError(28); + } + if (stream.seekable && stream.flags & 1024) { + // seek to the end before writing in append mode + FS.llseek(stream, 0, 2); + } + var seeking = typeof position !== 'undefined'; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); + if (!seeking) stream.position += bytesWritten; + try { + if (stream.path && FS.trackingDelegate['onWriteToFile']) FS.trackingDelegate['onWriteToFile'](stream.path); + } catch(e) { + err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: " + e.message); + } + return bytesWritten; + },allocate:function(stream, offset, length) { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (offset < 0 || length <= 0) { + throw new FS.ErrnoError(28); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (!stream.stream_ops.allocate) { + throw new FS.ErrnoError(138); + } + stream.stream_ops.allocate(stream, offset, length); + },mmap:function(stream, address, length, position, prot, flags) { + // User requests writing to file (prot & PROT_WRITE != 0). + // Checking if we have permissions to write to the file unless + // MAP_PRIVATE flag is set. According to POSIX spec it is possible + // to write to file opened in read-only mode with MAP_PRIVATE flag, + // as all modifications will be visible only in the memory of + // the current process. + if ((prot & 2) !== 0 + && (flags & 2) === 0 + && (stream.flags & 2097155) !== 2) { + throw new FS.ErrnoError(2); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(2); + } + if (!stream.stream_ops.mmap) { + throw new FS.ErrnoError(43); + } + return stream.stream_ops.mmap(stream, address, length, position, prot, flags); + },msync:function(stream, buffer, offset, length, mmapFlags) { + if (!stream || !stream.stream_ops.msync) { + return 0; + } + return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); + },munmap:function(stream) { + return 0; + },ioctl:function(stream, cmd, arg) { + if (!stream.stream_ops.ioctl) { + throw new FS.ErrnoError(59); + } + return stream.stream_ops.ioctl(stream, cmd, arg); + },readFile:function(path, opts) { + opts = opts || {}; + opts.flags = opts.flags || 'r'; + opts.encoding = opts.encoding || 'binary'; + if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } + var ret; + var stream = FS.open(path, opts.flags); + var stat = FS.stat(path); + var length = stat.size; + var buf = new Uint8Array(length); + FS.read(stream, buf, 0, length, 0); + if (opts.encoding === 'utf8') { + ret = UTF8ArrayToString(buf, 0); + } else if (opts.encoding === 'binary') { + ret = buf; + } + FS.close(stream); + return ret; + },writeFile:function(path, data, opts) { + opts = opts || {}; + opts.flags = opts.flags || 'w'; + var stream = FS.open(path, opts.flags, opts.mode); + if (typeof data === 'string') { + var buf = new Uint8Array(lengthBytesUTF8(data)+1); + var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); + FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn); + } else if (ArrayBuffer.isView(data)) { + FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn); + } else { + throw new Error('Unsupported data type'); + } + FS.close(stream); + },cwd:function() { + return FS.currentPath; + },chdir:function(path) { + var lookup = FS.lookupPath(path, { follow: true }); + if (lookup.node === null) { + throw new FS.ErrnoError(44); + } + if (!FS.isDir(lookup.node.mode)) { + throw new FS.ErrnoError(54); + } + var errCode = FS.nodePermissions(lookup.node, 'x'); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + FS.currentPath = lookup.path; + },createDefaultDirectories:function() { + FS.mkdir('/tmp'); + FS.mkdir('/home'); + FS.mkdir('/home/web_user'); + },createDefaultDevices:function() { + // create /dev + FS.mkdir('/dev'); + // setup /dev/null + FS.registerDevice(FS.makedev(1, 3), { + read: function() { return 0; }, + write: function(stream, buffer, offset, length, pos) { return length; } + }); + FS.mkdev('/dev/null', FS.makedev(1, 3)); + // setup /dev/tty and /dev/tty1 + // stderr needs to print output using Module['printErr'] + // so we register a second tty just for it. + TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); + TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); + FS.mkdev('/dev/tty', FS.makedev(5, 0)); + FS.mkdev('/dev/tty1', FS.makedev(6, 0)); + // setup /dev/[u]random + var random_device; + if (typeof crypto === 'object' && typeof crypto['getRandomValues'] === 'function') { + // for modern web browsers + var randomBuffer = new Uint8Array(1); + random_device = function() { crypto.getRandomValues(randomBuffer); return randomBuffer[0]; }; + } else + if (ENVIRONMENT_IS_NODE) { + // for nodejs with or without crypto support included + try { + var crypto_module = require('crypto'); + // nodejs has crypto support + random_device = function() { return crypto_module['randomBytes'](1)[0]; }; + } catch (e) { + // nodejs doesn't have crypto support + } + } else + {} + if (!random_device) { + // we couldn't find a proper implementation, as Math.random() is not suitable for /dev/random, see emscripten-core/emscripten/pull/7096 + random_device = function() { abort("no cryptographic support found for random_device. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };"); }; + } + FS.createDevice('/dev', 'random', random_device); + FS.createDevice('/dev', 'urandom', random_device); + // we're not going to emulate the actual shm device, + // just create the tmp dirs that reside in it commonly + FS.mkdir('/dev/shm'); + FS.mkdir('/dev/shm/tmp'); + },createSpecialDirectories:function() { + // create /proc/self/fd which allows /proc/self/fd/6 => readlink gives the name of the stream for fd 6 (see test_unistd_ttyname) + FS.mkdir('/proc'); + FS.mkdir('/proc/self'); + FS.mkdir('/proc/self/fd'); + FS.mount({ + mount: function() { + var node = FS.createNode('/proc/self', 'fd', 16384 | 511 /* 0777 */, 73); + node.node_ops = { + lookup: function(parent, name) { + var fd = +name; + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + var ret = { + parent: null, + mount: { mountpoint: 'fake' }, + node_ops: { readlink: function() { return stream.path } } + }; + ret.parent = ret; // make it look like a simple root node + return ret; + } + }; + return node; + } + }, {}, '/proc/self/fd'); + },createStandardStreams:function() { + // TODO deprecate the old functionality of a single + // input / output callback and that utilizes FS.createDevice + // and instead require a unique set of stream ops + + // by default, we symlink the standard streams to the + // default tty devices. however, if the standard streams + // have been overwritten we create a unique device for + // them instead. + if (Module['stdin']) { + FS.createDevice('/dev', 'stdin', Module['stdin']); + } else { + FS.symlink('/dev/tty', '/dev/stdin'); + } + if (Module['stdout']) { + FS.createDevice('/dev', 'stdout', null, Module['stdout']); + } else { + FS.symlink('/dev/tty', '/dev/stdout'); + } + if (Module['stderr']) { + FS.createDevice('/dev', 'stderr', null, Module['stderr']); + } else { + FS.symlink('/dev/tty1', '/dev/stderr'); + } + + // open default streams for the stdin, stdout and stderr devices + var stdin = FS.open('/dev/stdin', 'r'); + var stdout = FS.open('/dev/stdout', 'w'); + var stderr = FS.open('/dev/stderr', 'w'); + assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); + assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); + assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); + },ensureErrnoError:function() { + if (FS.ErrnoError) return; + FS.ErrnoError = /** @this{Object} */ function ErrnoError(errno, node) { + this.node = node; + this.setErrno = /** @this{Object} */ function(errno) { + this.errno = errno; + for (var key in ERRNO_CODES) { + if (ERRNO_CODES[key] === errno) { + this.code = key; + break; + } + } + }; + this.setErrno(errno); + this.message = ERRNO_MESSAGES[errno]; + + // Try to get a maximally helpful stack trace. On Node.js, getting Error.stack + // now ensures it shows what we want. + if (this.stack) { + // Define the stack property for Node.js 4, which otherwise errors on the next line. + Object.defineProperty(this, "stack", { value: (new Error).stack, writable: true }); + this.stack = demangleAll(this.stack); + } + }; + FS.ErrnoError.prototype = new Error(); + FS.ErrnoError.prototype.constructor = FS.ErrnoError; + // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) + [44].forEach(function(code) { + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = ''; + }); + },staticInit:function() { + FS.ensureErrnoError(); + + FS.nameTable = new Array(4096); + + FS.mount(MEMFS, {}, '/'); + + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + FS.createSpecialDirectories(); + + FS.filesystems = { + 'MEMFS': MEMFS, + }; + },init:function(input, output, error) { + assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); + FS.init.initialized = true; + + FS.ensureErrnoError(); + + // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here + Module['stdin'] = input || Module['stdin']; + Module['stdout'] = output || Module['stdout']; + Module['stderr'] = error || Module['stderr']; + + FS.createStandardStreams(); + },quit:function() { + FS.init.initialized = false; + // force-flush all streams, so we get musl std streams printed out + var fflush = Module['_fflush']; + if (fflush) fflush(0); + // close all of our streams + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue; + } + FS.close(stream); + } + },getMode:function(canRead, canWrite) { + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; + return mode; + },joinPath:function(parts, forceRelative) { + var path = PATH.join.apply(null, parts); + if (forceRelative && path[0] == '/') path = path.substr(1); + return path; + },absolutePath:function(relative, base) { + return PATH_FS.resolve(base, relative); + },standardizePath:function(path) { + return PATH.normalize(path); + },findObject:function(path, dontResolveLastLink) { + var ret = FS.analyzePath(path, dontResolveLastLink); + if (ret.exists) { + return ret.object; + } else { + setErrNo(ret.error); + return null; + } + },analyzePath:function(path, dontResolveLastLink) { + // operate from within the context of the symlink's target + try { + var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); + path = lookup.path; + } catch (e) { + } + var ret = { + isRoot: false, exists: false, error: 0, name: null, path: null, object: null, + parentExists: false, parentPath: null, parentObject: null + }; + try { + var lookup = FS.lookupPath(path, { parent: true }); + ret.parentExists = true; + ret.parentPath = lookup.path; + ret.parentObject = lookup.node; + ret.name = PATH.basename(path); + lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); + ret.exists = true; + ret.path = lookup.path; + ret.object = lookup.node; + ret.name = lookup.node.name; + ret.isRoot = lookup.path === '/'; + } catch (e) { + ret.error = e.errno; + }; + return ret; + },createFolder:function(parent, name, canRead, canWrite) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.mkdir(path, mode); + },createPath:function(parent, path, canRead, canWrite) { + parent = typeof parent === 'string' ? parent : FS.getPath(parent); + var parts = path.split('/').reverse(); + while (parts.length) { + var part = parts.pop(); + if (!part) continue; + var current = PATH.join2(parent, part); + try { + FS.mkdir(current); + } catch (e) { + // ignore EEXIST + } + parent = current; + } + return current; + },createFile:function(parent, name, properties, canRead, canWrite) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.create(path, mode); + },createDataFile:function(parent, name, data, canRead, canWrite, canOwn) { + var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent; + var mode = FS.getMode(canRead, canWrite); + var node = FS.create(path, mode); + if (data) { + if (typeof data === 'string') { + var arr = new Array(data.length); + for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); + data = arr; + } + // make sure we can write to the file + FS.chmod(node, mode | 146); + var stream = FS.open(node, 'w'); + FS.write(stream, data, 0, data.length, 0, canOwn); + FS.close(stream); + FS.chmod(node, mode); + } + return node; + },createDevice:function(parent, name, input, output) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(!!input, !!output); + if (!FS.createDevice.major) FS.createDevice.major = 64; + var dev = FS.makedev(FS.createDevice.major++, 0); + // Create a fake device that a set of stream ops to emulate + // the old behavior. + FS.registerDevice(dev, { + open: function(stream) { + stream.seekable = false; + }, + close: function(stream) { + // flush any pending line data + if (output && output.buffer && output.buffer.length) { + output(10); + } + }, + read: function(stream, buffer, offset, length, pos /* ignored */) { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input(); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset+i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: function(stream, buffer, offset, length, pos) { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset+i]); + } catch (e) { + throw new FS.ErrnoError(29); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }); + return FS.mkdev(path, mode, dev); + },createLink:function(parent, name, target, canRead, canWrite) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + return FS.symlink(target, path); + },forceLoadFile:function(obj) { + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + var success = true; + if (typeof XMLHttpRequest !== 'undefined') { + throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); + } else if (read_) { + // Command-line. + try { + // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as + // read() will try to parse UTF8. + obj.contents = intArrayFromString(read_(obj.url), true); + obj.usedBytes = obj.contents.length; + } catch (e) { + success = false; + } + } else { + throw new Error('Cannot load without read() or XMLHttpRequest.'); + } + if (!success) setErrNo(29); + return success; + },createLazyFile:function(parent, name, url, canRead, canWrite) { + // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. + /** @constructor */ + function LazyUint8Array() { + this.lengthKnown = false; + this.chunks = []; // Loaded chunks. Index is the chunk number + } + LazyUint8Array.prototype.get = /** @this{Object} */ function LazyUint8Array_get(idx) { + if (idx > this.length-1 || idx < 0) { + return undefined; + } + var chunkOffset = idx % this.chunkSize; + var chunkNum = (idx / this.chunkSize)|0; + return this.getter(chunkNum)[chunkOffset]; + }; + LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { + this.getter = getter; + }; + LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { + // Find length + var xhr = new XMLHttpRequest(); + xhr.open('HEAD', url, false); + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + var datalength = Number(xhr.getResponseHeader("Content-length")); + var header; + var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; + var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; + + var chunkSize = 1024*1024; // Chunk size in bytes + + if (!hasByteServing) chunkSize = datalength; + + // Function to get a range from the remote URL. + var doXHR = (function(from, to) { + if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); + if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); + + // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); + + // Some hints to the browser that we want binary data. + if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer'; + if (xhr.overrideMimeType) { + xhr.overrideMimeType('text/plain; charset=x-user-defined'); + } + + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + if (xhr.response !== undefined) { + return new Uint8Array(/** @type{Array} */(xhr.response || [])); + } else { + return intArrayFromString(xhr.responseText || '', true); + } + }); + var lazyArray = this; + lazyArray.setDataGetter(function(chunkNum) { + var start = chunkNum * chunkSize; + var end = (chunkNum+1) * chunkSize - 1; // including this byte + end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block + if (typeof(lazyArray.chunks[chunkNum]) === "undefined") { + lazyArray.chunks[chunkNum] = doXHR(start, end); + } + if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!"); + return lazyArray.chunks[chunkNum]; + }); + + if (usesGzip || !datalength) { + // if the server uses gzip or doesn't supply the length, we have to download the whole file to get the (uncompressed) length + chunkSize = datalength = 1; // this will force getter(0)/doXHR do download the whole file + datalength = this.getter(0).length; + chunkSize = datalength; + out("LazyFiles on gzip forces download of the whole file when length is accessed"); + } + + this._length = datalength; + this._chunkSize = chunkSize; + this.lengthKnown = true; + }; + if (typeof XMLHttpRequest !== 'undefined') { + if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; + var lazyArray = new LazyUint8Array(); + Object.defineProperties(lazyArray, { + length: { + get: /** @this{Object} */ function() { + if(!this.lengthKnown) { + this.cacheLength(); + } + return this._length; + } + }, + chunkSize: { + get: /** @this{Object} */ function() { + if(!this.lengthKnown) { + this.cacheLength(); + } + return this._chunkSize; + } + } + }); + + var properties = { isDevice: false, contents: lazyArray }; + } else { + var properties = { isDevice: false, url: url }; + } + + var node = FS.createFile(parent, name, properties, canRead, canWrite); + // This is a total hack, but I want to get this lazy file code out of the + // core of MEMFS. If we want to keep this lazy file concept I feel it should + // be its own thin LAZYFS proxying calls to MEMFS. + if (properties.contents) { + node.contents = properties.contents; + } else if (properties.url) { + node.contents = null; + node.url = properties.url; + } + // Add a function that defers querying the file size until it is asked the first time. + Object.defineProperties(node, { + usedBytes: { + get: /** @this {FSNode} */ function() { return this.contents.length; } + } + }); + // override each stream op with one that tries to force load the lazy file first + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); + keys.forEach(function(key) { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(29); + } + return fn.apply(null, arguments); + }; + }); + // use a custom read function + stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(29); + } + var contents = stream.node.contents; + if (position >= contents.length) + return 0; + var size = Math.min(contents.length - position, length); + assert(size >= 0); + if (contents.slice) { // normal array + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } else { + for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR + buffer[offset + i] = contents.get(position + i); + } + } + return size; + }; + node.stream_ops = stream_ops; + return node; + },createPreloadedFile:function(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) { + Browser.init(); // XXX perhaps this method should move onto Browser? + // TODO we should allow people to just pass in a complete filename instead + // of parent and name being that we just join them anyways + var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; + var dep = getUniqueRunDependency('cp ' + fullname); // might have several active requests for the same fullname + function processData(byteArray) { + function finish(byteArray) { + if (preFinish) preFinish(); + if (!dontCreateFile) { + FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); + } + if (onload) onload(); + removeRunDependency(dep); + } + var handled = false; + Module['preloadPlugins'].forEach(function(plugin) { + if (handled) return; + if (plugin['canHandle'](fullname)) { + plugin['handle'](byteArray, fullname, finish, function() { + if (onerror) onerror(); + removeRunDependency(dep); + }); + handled = true; + } + }); + if (!handled) finish(byteArray); + } + addRunDependency(dep); + if (typeof url == 'string') { + Browser.asyncLoad(url, function(byteArray) { + processData(byteArray); + }, onerror); + } else { + processData(url); + } + },indexedDB:function() { + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + },DB_NAME:function() { + return 'EM_FS_' + window.location.pathname; + },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths, onload, onerror) { + onload = onload || function(){}; + onerror = onerror || function(){}; + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { + out('creating db'); + var db = openRequest.result; + db.createObjectStore(FS.DB_STORE_NAME); + }; + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(function(path) { + var putRequest = files.put(FS.analyzePath(path).object.contents, path); + putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; + putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + },loadFilesFromDB:function(paths, onload, onerror) { + onload = onload || function(){}; + onerror = onerror || function(){}; + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = onerror; // no database to load from + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + try { + var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); + } catch(e) { + onerror(e); + return; + } + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(function(path) { + var getRequest = files.get(path); + getRequest.onsuccess = function getRequest_onsuccess() { + if (FS.analyzePath(path).exists) { + FS.unlink(path); + } + FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); + ok++; + if (ok + fail == total) finish(); + }; + getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + }};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd, path) { + if (path[0] !== '/') { + // relative path + var dir; + if (dirfd === -100) { + dir = FS.cwd(); + } else { + var dirstream = FS.getStream(dirfd); + if (!dirstream) throw new FS.ErrnoError(8); + dir = dirstream.path; + } + path = PATH.join2(dir, path); + } + return path; + },doStat:function(func, path, buf) { + try { + var stat = func(path); + } catch (e) { + if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { + // an error occurred while trying to look up the path; we should just report ENOTDIR + return -54; + } + throw e; + } + HEAP32[((buf)>>2)]=stat.dev; + HEAP32[(((buf)+(4))>>2)]=0; + HEAP32[(((buf)+(8))>>2)]=stat.ino; + HEAP32[(((buf)+(12))>>2)]=stat.mode; + HEAP32[(((buf)+(16))>>2)]=stat.nlink; + HEAP32[(((buf)+(20))>>2)]=stat.uid; + HEAP32[(((buf)+(24))>>2)]=stat.gid; + HEAP32[(((buf)+(28))>>2)]=stat.rdev; + HEAP32[(((buf)+(32))>>2)]=0; + (tempI64 = [stat.size>>>0,(tempDouble=stat.size,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(40))>>2)]=tempI64[0],HEAP32[(((buf)+(44))>>2)]=tempI64[1]); + HEAP32[(((buf)+(48))>>2)]=4096; + HEAP32[(((buf)+(52))>>2)]=stat.blocks; + HEAP32[(((buf)+(56))>>2)]=(stat.atime.getTime() / 1000)|0; + HEAP32[(((buf)+(60))>>2)]=0; + HEAP32[(((buf)+(64))>>2)]=(stat.mtime.getTime() / 1000)|0; + HEAP32[(((buf)+(68))>>2)]=0; + HEAP32[(((buf)+(72))>>2)]=(stat.ctime.getTime() / 1000)|0; + HEAP32[(((buf)+(76))>>2)]=0; + (tempI64 = [stat.ino>>>0,(tempDouble=stat.ino,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(80))>>2)]=tempI64[0],HEAP32[(((buf)+(84))>>2)]=tempI64[1]); + return 0; + },doMsync:function(addr, stream, len, flags, offset) { + var buffer = HEAPU8.slice(addr, addr + len); + FS.msync(stream, buffer, offset, len, flags); + },doMkdir:function(path, mode) { + // remove a trailing slash, if one - /a/b/ has basename of '', but + // we want to create b in the context of this function + path = PATH.normalize(path); + if (path[path.length-1] === '/') path = path.substr(0, path.length-1); + FS.mkdir(path, mode, 0); + return 0; + },doMknod:function(path, mode, dev) { + // we don't want this in the JS API as it uses mknod to create all nodes. + switch (mode & 61440) { + case 32768: + case 8192: + case 24576: + case 4096: + case 49152: + break; + default: return -28; + } + FS.mknod(path, mode, dev); + return 0; + },doReadlink:function(path, buf, bufsize) { + if (bufsize <= 0) return -28; + var ret = FS.readlink(path); + + var len = Math.min(bufsize, lengthBytesUTF8(ret)); + var endChar = HEAP8[buf+len]; + stringToUTF8(ret, buf, bufsize+1); + // readlink is one of the rare functions that write out a C string, but does never append a null to the output buffer(!) + // stringToUTF8() always appends a null byte, so restore the character under the null byte after the write. + HEAP8[buf+len] = endChar; + + return len; + },doAccess:function(path, amode) { + if (amode & ~7) { + // need a valid mode + return -28; + } + var node; + var lookup = FS.lookupPath(path, { follow: true }); + node = lookup.node; + if (!node) { + return -44; + } + var perms = ''; + if (amode & 4) perms += 'r'; + if (amode & 2) perms += 'w'; + if (amode & 1) perms += 'x'; + if (perms /* otherwise, they've just passed F_OK */ && FS.nodePermissions(node, perms)) { + return -2; + } + return 0; + },doDup:function(path, flags, suggestFD) { + var suggest = FS.getStream(suggestFD); + if (suggest) FS.close(suggest); + return FS.open(path, flags, 0, suggestFD, suggestFD).fd; + },doReadv:function(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAP32[(((iov)+(i*8))>>2)]; + var len = HEAP32[(((iov)+(i*8 + 4))>>2)]; + var curr = FS.read(stream, HEAP8,ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + if (curr < len) break; // nothing more to read + } + return ret; + },doWritev:function(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAP32[(((iov)+(i*8))>>2)]; + var len = HEAP32[(((iov)+(i*8 + 4))>>2)]; + var curr = FS.write(stream, HEAP8,ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + } + return ret; + },varargs:undefined,get:function() { + assert(SYSCALLS.varargs != undefined); + SYSCALLS.varargs += 4; + var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)]; + return ret; + },getStr:function(ptr) { + var ret = UTF8ToString(ptr); + return ret; + },getStreamFromFD:function(fd) { + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + return stream; + },get64:function(low, high) { + if (low >= 0) assert(high === 0); + else assert(high === -1); + return low; + }};function ___sys_fcntl64(fd, cmd, varargs) {SYSCALLS.varargs = varargs; + try { + + var stream = SYSCALLS.getStreamFromFD(fd); + switch (cmd) { + case 0: { + var arg = SYSCALLS.get(); + if (arg < 0) { + return -28; + } + var newStream; + newStream = FS.open(stream.path, stream.flags, 0, arg); + return newStream.fd; + } + case 1: + case 2: + return 0; // FD_CLOEXEC makes no sense for a single process. + case 3: + return stream.flags; + case 4: { + var arg = SYSCALLS.get(); + stream.flags |= arg; + return 0; + } + case 12: + /* case 12: Currently in musl F_GETLK64 has same value as F_GETLK, so omitted to avoid duplicate case blocks. If that changes, uncomment this */ { + + var arg = SYSCALLS.get(); + var offset = 0; + // We're always unlocked. + HEAP16[(((arg)+(offset))>>1)]=2; + return 0; + } + case 13: + case 14: + /* case 13: Currently in musl F_SETLK64 has same value as F_SETLK, so omitted to avoid duplicate case blocks. If that changes, uncomment this */ + /* case 14: Currently in musl F_SETLKW64 has same value as F_SETLKW, so omitted to avoid duplicate case blocks. If that changes, uncomment this */ + + + return 0; // Pretend that the locking is successful. + case 16: + case 8: + return -28; // These are for sockets. We don't have them fully implemented yet. + case 9: + // musl trusts getown return values, due to a bug where they must be, as they overlap with errors. just return -1 here, so fnctl() returns that, and we set errno ourselves. + setErrNo(28); + return -1; + default: { + return -28; + } + } + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___sys_ioctl(fd, op, varargs) {SYSCALLS.varargs = varargs; + try { + + var stream = SYSCALLS.getStreamFromFD(fd); + switch (op) { + case 21509: + case 21505: { + if (!stream.tty) return -59; + return 0; + } + case 21510: + case 21511: + case 21512: + case 21506: + case 21507: + case 21508: { + if (!stream.tty) return -59; + return 0; // no-op, not actually adjusting terminal settings + } + case 21519: { + if (!stream.tty) return -59; + var argp = SYSCALLS.get(); + HEAP32[((argp)>>2)]=0; + return 0; + } + case 21520: { + if (!stream.tty) return -59; + return -28; // not supported + } + case 21531: { + var argp = SYSCALLS.get(); + return FS.ioctl(stream, op, argp); + } + case 21523: { + // TODO: in theory we should write to the winsize struct that gets + // passed in, but for now musl doesn't read anything on it + if (!stream.tty) return -59; + return 0; + } + case 21524: { + // TODO: technically, this ioctl call should change the window size. + // but, since emscripten doesn't have any concept of a terminal window + // yet, we'll just silently throw it away as we do TIOCGWINSZ + if (!stream.tty) return -59; + return 0; + } + default: abort('bad ioctl syscall ' + op); + } + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function ___sys_open(path, flags, varargs) {SYSCALLS.varargs = varargs; + try { + + var pathname = SYSCALLS.getStr(path); + var mode = SYSCALLS.get(); + var stream = FS.open(pathname, flags, mode); + return stream.fd; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return -e.errno; + } + } + + function _abort() { + abort(); + } + + function _emscripten_get_sbrk_ptr() { + return 102976; + } + + + function _longjmp(env, value) { + _setThrew(env, value || 1); + throw 'longjmp'; + }function _emscripten_longjmp(env, value) { + _longjmp(env, value); + } + + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num); + } + + + function _emscripten_get_heap_size() { + return HEAPU8.length; + } + + function emscripten_realloc_buffer(size) { + try { + // round size grow request up to wasm page size (fixed 64KB per spec) + wasmMemory.grow((size - buffer.byteLength + 65535) >>> 16); // .grow() takes a delta compared to the previous size + updateGlobalBufferAndViews(wasmMemory.buffer); + return 1 /*success*/; + } catch(e) { + console.error('emscripten_realloc_buffer: Attempted to grow heap from ' + buffer.byteLength + ' bytes to ' + size + ' bytes, but got error: ' + e); + } + }function _emscripten_resize_heap(requestedSize) { + requestedSize = requestedSize >>> 0; + var oldSize = _emscripten_get_heap_size(); + // With pthreads, races can happen (another thread might increase the size in between), so return a failure, and let the caller retry. + assert(requestedSize > oldSize); + + + var PAGE_MULTIPLE = 65536; + + // Memory resize rules: + // 1. When resizing, always produce a resized heap that is at least 16MB (to avoid tiny heap sizes receiving lots of repeated resizes at startup) + // 2. Always increase heap size to at least the requested size, rounded up to next page multiple. + // 3a. If MEMORY_GROWTH_LINEAR_STEP == -1, excessively resize the heap geometrically: increase the heap size according to + // MEMORY_GROWTH_GEOMETRIC_STEP factor (default +20%), + // At most overreserve by MEMORY_GROWTH_GEOMETRIC_CAP bytes (default 96MB). + // 3b. If MEMORY_GROWTH_LINEAR_STEP != -1, excessively resize the heap linearly: increase the heap size by at least MEMORY_GROWTH_LINEAR_STEP bytes. + // 4. Max size for the heap is capped at 2048MB-PAGE_MULTIPLE, or by MAXIMUM_MEMORY, or by ASAN limit, depending on which is smallest + // 5. If we were unable to allocate as much memory, it may be due to over-eager decision to excessively reserve due to (3) above. + // Hence if an allocation fails, cut down on the amount of excess growth, in an attempt to succeed to perform a smaller allocation. + + // A limit was set for how much we can grow. We should not exceed that + // (the wasm binary specifies it, so if we tried, we'd fail anyhow). + var maxHeapSize = 2147483648; + if (requestedSize > maxHeapSize) { + err('Cannot enlarge memory, asked to go up to ' + requestedSize + ' bytes, but the limit is ' + maxHeapSize + ' bytes!'); + return false; + } + + var minHeapSize = 16777216; + + // Loop through potential heap size increases. If we attempt a too eager reservation that fails, cut down on the + // attempted size and reserve a smaller bump instead. (max 3 times, chosen somewhat arbitrarily) + for(var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown); // ensure geometric growth + // but limit overreserving (default to capping at +96MB overgrowth at most) + overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296 ); + + + var newSize = Math.min(maxHeapSize, alignUp(Math.max(minHeapSize, requestedSize, overGrownHeapSize), PAGE_MULTIPLE)); + + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + + return true; + } + } + err('Failed to grow the heap from ' + oldSize + ' bytes to ' + newSize + ' bytes, not enough memory!'); + return false; + } + + function _fd_close(fd) {try { + + var stream = SYSCALLS.getStreamFromFD(fd); + FS.close(stream); + return 0; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } + } + + function _fd_read(fd, iov, iovcnt, pnum) {try { + + var stream = SYSCALLS.getStreamFromFD(fd); + var num = SYSCALLS.doReadv(stream, iov, iovcnt); + HEAP32[((pnum)>>2)]=num + return 0; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } + } + + function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {try { + + + var stream = SYSCALLS.getStreamFromFD(fd); + var HIGH_OFFSET = 0x100000000; // 2^32 + // use an unsigned operator on low and shift high by 32-bits + var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0); + + var DOUBLE_LIMIT = 0x20000000000000; // 2^53 + // we also check for equality since DOUBLE_LIMIT + 1 == DOUBLE_LIMIT + if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) { + return -61; + } + + FS.llseek(stream, offset, whence); + (tempI64 = [stream.position>>>0,(tempDouble=stream.position,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((newOffset)>>2)]=tempI64[0],HEAP32[(((newOffset)+(4))>>2)]=tempI64[1]); + if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state + return 0; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } + } + + function _fd_write(fd, iov, iovcnt, pnum) {try { + + var stream = SYSCALLS.getStreamFromFD(fd); + var num = SYSCALLS.doWritev(stream, iov, iovcnt); + HEAP32[((pnum)>>2)]=num + return 0; + } catch (e) { + if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } + } + + function _getTempRet0() { + return (getTempRet0() | 0); + } + + + function _round(d) { + d = +d; + return d >= +0 ? +Math_floor(d + +0.5) : +Math_ceil(d - +0.5); + } + + function _setTempRet0($i) { + setTempRet0(($i) | 0); + } +var FSNode = /** @constructor */ function(parent, name, mode, rdev) { + if (!parent) { + parent = this; // root node sets parent to itself + } + this.parent = parent; + this.mount = parent.mount; + this.mounted = null; + this.id = FS.nextInode++; + this.name = name; + this.mode = mode; + this.node_ops = {}; + this.stream_ops = {}; + this.rdev = rdev; + }; + var readMode = 292/*292*/ | 73/*73*/; + var writeMode = 146/*146*/; + Object.defineProperties(FSNode.prototype, { + read: { + get: /** @this{FSNode} */function() { + return (this.mode & readMode) === readMode; + }, + set: /** @this{FSNode} */function(val) { + val ? this.mode |= readMode : this.mode &= ~readMode; + } + }, + write: { + get: /** @this{FSNode} */function() { + return (this.mode & writeMode) === writeMode; + }, + set: /** @this{FSNode} */function(val) { + val ? this.mode |= writeMode : this.mode &= ~writeMode; + } + }, + isFolder: { + get: /** @this{FSNode} */function() { + return FS.isDir(this.mode); + } + }, + isDevice: { + get: /** @this{FSNode} */function() { + return FS.isChrdev(this.mode); + } + } + }); + FS.FSNode = FSNode; + FS.staticInit();; +var ASSERTIONS = true; + + + +/** @type {function(string, boolean=, number=)} */ +function intArrayFromString(stringy, dontAddNull, length) { + var len = length > 0 ? length : lengthBytesUTF8(stringy)+1; + var u8array = new Array(len); + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); + if (dontAddNull) u8array.length = numBytesWritten; + return u8array; +} + +function intArrayToString(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + var chr = array[i]; + if (chr > 0xFF) { + if (ASSERTIONS) { + assert(false, 'Character code ' + chr + ' (' + String.fromCharCode(chr) + ') at offset ' + i + ' not in 0x00-0xFF.'); + } + chr &= 0xFF; + } + ret.push(String.fromCharCode(chr)); + } + return ret.join(''); +} + + +// ASM_LIBRARY EXTERN PRIMITIVES: Math_floor,Math_ceil + +var asmGlobalArg = {}; +var asmLibraryArg = { "__assert_fail": ___assert_fail, "__cxa_allocate_exception": ___cxa_allocate_exception, "__cxa_throw": ___cxa_throw, "__handle_stack_overflow": ___handle_stack_overflow, "__sys_fcntl64": ___sys_fcntl64, "__sys_ioctl": ___sys_ioctl, "__sys_open": ___sys_open, "abort": _abort, "emscripten_get_sbrk_ptr": _emscripten_get_sbrk_ptr, "emscripten_longjmp": _emscripten_longjmp, "emscripten_memcpy_big": _emscripten_memcpy_big, "emscripten_resize_heap": _emscripten_resize_heap, "fd_close": _fd_close, "fd_read": _fd_read, "fd_seek": _fd_seek, "fd_write": _fd_write, "getTempRet0": _getTempRet0, "invoke_iii": invoke_iii, "invoke_iiii": invoke_iiii, "invoke_iiiii": invoke_iiiii, "invoke_vi": invoke_vi, "invoke_viiii": invoke_viiii, "memory": wasmMemory, "round": _round, "setTempRet0": _setTempRet0, "table": wasmTable }; +var asm = createWasm(); +/** @type {function(...*):?} */ +var ___wasm_call_ctors = Module["___wasm_call_ctors"] = createExportWrapper("__wasm_call_ctors"); + +/** @type {function(...*):?} */ +var _create_fontstack = Module["_create_fontstack"] = createExportWrapper("create_fontstack"); + +/** @type {function(...*):?} */ +var _malloc = Module["_malloc"] = createExportWrapper("malloc"); + +/** @type {function(...*):?} */ +var _fontstack_add_face = Module["_fontstack_add_face"] = createExportWrapper("fontstack_add_face"); + +/** @type {function(...*):?} */ +var _free_fontstack = Module["_free_fontstack"] = createExportWrapper("free_fontstack"); + +/** @type {function(...*):?} */ +var _free = Module["_free"] = createExportWrapper("free"); + +/** @type {function(...*):?} */ +var _fontstack_name = Module["_fontstack_name"] = createExportWrapper("fontstack_name"); + +/** @type {function(...*):?} */ +var _generate_glyph_buffer = Module["_generate_glyph_buffer"] = createExportWrapper("generate_glyph_buffer"); + +/** @type {function(...*):?} */ +var _glyph_buffer_data = Module["_glyph_buffer_data"] = createExportWrapper("glyph_buffer_data"); + +/** @type {function(...*):?} */ +var _glyph_buffer_size = Module["_glyph_buffer_size"] = createExportWrapper("glyph_buffer_size"); + +/** @type {function(...*):?} */ +var _free_glyph_buffer = Module["_free_glyph_buffer"] = createExportWrapper("free_glyph_buffer"); + +/** @type {function(...*):?} */ +var _realloc = Module["_realloc"] = createExportWrapper("realloc"); + +/** @type {function(...*):?} */ +var _testSetjmp = Module["_testSetjmp"] = createExportWrapper("testSetjmp"); + +/** @type {function(...*):?} */ +var _saveSetjmp = Module["_saveSetjmp"] = createExportWrapper("saveSetjmp"); + +/** @type {function(...*):?} */ +var ___errno_location = Module["___errno_location"] = createExportWrapper("__errno_location"); + +/** @type {function(...*):?} */ +var _fflush = Module["_fflush"] = createExportWrapper("fflush"); + +/** @type {function(...*):?} */ +var _setThrew = Module["_setThrew"] = createExportWrapper("setThrew"); + +/** @type {function(...*):?} */ +var stackSave = Module["stackSave"] = createExportWrapper("stackSave"); + +/** @type {function(...*):?} */ +var stackRestore = Module["stackRestore"] = createExportWrapper("stackRestore"); + +/** @type {function(...*):?} */ +var stackAlloc = Module["stackAlloc"] = createExportWrapper("stackAlloc"); + +/** @type {function(...*):?} */ +var dynCall_vi = Module["dynCall_vi"] = createExportWrapper("dynCall_vi"); + +/** @type {function(...*):?} */ +var dynCall_viiii = Module["dynCall_viiii"] = createExportWrapper("dynCall_viiii"); + +/** @type {function(...*):?} */ +var dynCall_iii = Module["dynCall_iii"] = createExportWrapper("dynCall_iii"); + +/** @type {function(...*):?} */ +var dynCall_iiii = Module["dynCall_iiii"] = createExportWrapper("dynCall_iiii"); + +/** @type {function(...*):?} */ +var dynCall_iiiii = Module["dynCall_iiiii"] = createExportWrapper("dynCall_iiiii"); + +/** @type {function(...*):?} */ +var ___set_stack_limit = Module["___set_stack_limit"] = createExportWrapper("__set_stack_limit"); + +/** @type {function(...*):?} */ +var __growWasmMemory = Module["__growWasmMemory"] = createExportWrapper("__growWasmMemory"); + +/** @type {function(...*):?} */ +var dynCall_ii = Module["dynCall_ii"] = createExportWrapper("dynCall_ii"); + +/** @type {function(...*):?} */ +var dynCall_v = Module["dynCall_v"] = createExportWrapper("dynCall_v"); + +/** @type {function(...*):?} */ +var dynCall_vii = Module["dynCall_vii"] = createExportWrapper("dynCall_vii"); + +/** @type {function(...*):?} */ +var dynCall_iiiiii = Module["dynCall_iiiiii"] = createExportWrapper("dynCall_iiiiii"); + +/** @type {function(...*):?} */ +var dynCall_viii = Module["dynCall_viii"] = createExportWrapper("dynCall_viii"); + +/** @type {function(...*):?} */ +var dynCall_viiiii = Module["dynCall_viiiii"] = createExportWrapper("dynCall_viiiii"); + +/** @type {function(...*):?} */ +var dynCall_iiiiiiiiii = Module["dynCall_iiiiiiiiii"] = createExportWrapper("dynCall_iiiiiiiiii"); + +/** @type {function(...*):?} */ +var dynCall_iiiiiii = Module["dynCall_iiiiiii"] = createExportWrapper("dynCall_iiiiiii"); + +/** @type {function(...*):?} */ +var dynCall_viiiiii = Module["dynCall_viiiiii"] = createExportWrapper("dynCall_viiiiii"); + +/** @type {function(...*):?} */ +var dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = createExportWrapper("dynCall_iiiiiiii"); + +/** @type {function(...*):?} */ +var dynCall_jiji = Module["dynCall_jiji"] = createExportWrapper("dynCall_jiji"); + + +function invoke_viiii(index,a1,a2,a3,a4) { + var sp = stackSave(); + try { + dynCall_viiii(index,a1,a2,a3,a4); + } catch(e) { + stackRestore(sp); + if (e !== e+0 && e !== 'longjmp') throw e; + _setThrew(1, 0); + } +} + +function invoke_iii(index,a1,a2) { + var sp = stackSave(); + try { + return dynCall_iii(index,a1,a2); + } catch(e) { + stackRestore(sp); + if (e !== e+0 && e !== 'longjmp') throw e; + _setThrew(1, 0); + } +} + +function invoke_iiiii(index,a1,a2,a3,a4) { + var sp = stackSave(); + try { + return dynCall_iiiii(index,a1,a2,a3,a4); + } catch(e) { + stackRestore(sp); + if (e !== e+0 && e !== 'longjmp') throw e; + _setThrew(1, 0); + } +} + +function invoke_iiii(index,a1,a2,a3) { + var sp = stackSave(); + try { + return dynCall_iiii(index,a1,a2,a3); + } catch(e) { + stackRestore(sp); + if (e !== e+0 && e !== 'longjmp') throw e; + _setThrew(1, 0); + } +} + +function invoke_vi(index,a1) { + var sp = stackSave(); + try { + dynCall_vi(index,a1); + } catch(e) { + stackRestore(sp); + if (e !== e+0 && e !== 'longjmp') throw e; + _setThrew(1, 0); + } +} + + + + +// === Auto-generated postamble setup entry stuff === + + +if (!Object.getOwnPropertyDescriptor(Module, "intArrayFromString")) Module["intArrayFromString"] = function() { abort("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "intArrayToString")) Module["intArrayToString"] = function() { abort("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +Module["ccall"] = ccall; +if (!Object.getOwnPropertyDescriptor(Module, "cwrap")) Module["cwrap"] = function() { abort("'cwrap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "setValue")) Module["setValue"] = function() { abort("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getValue")) Module["getValue"] = function() { abort("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "allocate")) Module["allocate"] = function() { abort("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getMemory")) Module["getMemory"] = function() { abort("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "UTF8ArrayToString")) Module["UTF8ArrayToString"] = function() { abort("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "UTF8ToString")) Module["UTF8ToString"] = function() { abort("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8Array")) Module["stringToUTF8Array"] = function() { abort("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8")) Module["stringToUTF8"] = function() { abort("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF8")) Module["lengthBytesUTF8"] = function() { abort("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stackTrace")) Module["stackTrace"] = function() { abort("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addOnPreRun")) Module["addOnPreRun"] = function() { abort("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addOnInit")) Module["addOnInit"] = function() { abort("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addOnPreMain")) Module["addOnPreMain"] = function() { abort("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addOnExit")) Module["addOnExit"] = function() { abort("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addOnPostRun")) Module["addOnPostRun"] = function() { abort("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "writeStringToMemory")) Module["writeStringToMemory"] = function() { abort("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "writeArrayToMemory")) Module["writeArrayToMemory"] = function() { abort("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "writeAsciiToMemory")) Module["writeAsciiToMemory"] = function() { abort("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addRunDependency")) Module["addRunDependency"] = function() { abort("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "removeRunDependency")) Module["removeRunDependency"] = function() { abort("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createFolder")) Module["FS_createFolder"] = function() { abort("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createPath")) Module["FS_createPath"] = function() { abort("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createDataFile")) Module["FS_createDataFile"] = function() { abort("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createPreloadedFile")) Module["FS_createPreloadedFile"] = function() { abort("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createLazyFile")) Module["FS_createLazyFile"] = function() { abort("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createLink")) Module["FS_createLink"] = function() { abort("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_createDevice")) Module["FS_createDevice"] = function() { abort("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS_unlink")) Module["FS_unlink"] = function() { abort("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; +if (!Object.getOwnPropertyDescriptor(Module, "dynamicAlloc")) Module["dynamicAlloc"] = function() { abort("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "loadDynamicLibrary")) Module["loadDynamicLibrary"] = function() { abort("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "loadWebAssemblyModule")) Module["loadWebAssemblyModule"] = function() { abort("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getLEB")) Module["getLEB"] = function() { abort("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getFunctionTables")) Module["getFunctionTables"] = function() { abort("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "alignFunctionTables")) Module["alignFunctionTables"] = function() { abort("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "registerFunctions")) Module["registerFunctions"] = function() { abort("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "addFunction")) Module["addFunction"] = function() { abort("'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "removeFunction")) Module["removeFunction"] = function() { abort("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getFuncWrapper")) Module["getFuncWrapper"] = function() { abort("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "prettyPrint")) Module["prettyPrint"] = function() { abort("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "makeBigInt")) Module["makeBigInt"] = function() { abort("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "dynCall")) Module["dynCall"] = function() { abort("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getCompilerSetting")) Module["getCompilerSetting"] = function() { abort("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "print")) Module["print"] = function() { abort("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "printErr")) Module["printErr"] = function() { abort("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getTempRet0")) Module["getTempRet0"] = function() { abort("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "setTempRet0")) Module["setTempRet0"] = function() { abort("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "callMain")) Module["callMain"] = function() { abort("'callMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "abort")) Module["abort"] = function() { abort("'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stringToNewUTF8")) Module["stringToNewUTF8"] = function() { abort("'stringToNewUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "emscripten_realloc_buffer")) Module["emscripten_realloc_buffer"] = function() { abort("'emscripten_realloc_buffer' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "ENV")) Module["ENV"] = function() { abort("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "ERRNO_CODES")) Module["ERRNO_CODES"] = function() { abort("'ERRNO_CODES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "ERRNO_MESSAGES")) Module["ERRNO_MESSAGES"] = function() { abort("'ERRNO_MESSAGES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "setErrNo")) Module["setErrNo"] = function() { abort("'setErrNo' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "DNS")) Module["DNS"] = function() { abort("'DNS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "GAI_ERRNO_MESSAGES")) Module["GAI_ERRNO_MESSAGES"] = function() { abort("'GAI_ERRNO_MESSAGES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "Protocols")) Module["Protocols"] = function() { abort("'Protocols' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "Sockets")) Module["Sockets"] = function() { abort("'Sockets' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "UNWIND_CACHE")) Module["UNWIND_CACHE"] = function() { abort("'UNWIND_CACHE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "readAsmConstArgs")) Module["readAsmConstArgs"] = function() { abort("'readAsmConstArgs' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "jstoi_q")) Module["jstoi_q"] = function() { abort("'jstoi_q' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "jstoi_s")) Module["jstoi_s"] = function() { abort("'jstoi_s' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "abortStackOverflow")) Module["abortStackOverflow"] = function() { abort("'abortStackOverflow' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "reallyNegative")) Module["reallyNegative"] = function() { abort("'reallyNegative' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "formatString")) Module["formatString"] = function() { abort("'formatString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "PATH")) Module["PATH"] = function() { abort("'PATH' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "PATH_FS")) Module["PATH_FS"] = function() { abort("'PATH_FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "SYSCALLS")) Module["SYSCALLS"] = function() { abort("'SYSCALLS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "syscallMmap2")) Module["syscallMmap2"] = function() { abort("'syscallMmap2' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "syscallMunmap")) Module["syscallMunmap"] = function() { abort("'syscallMunmap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "JSEvents")) Module["JSEvents"] = function() { abort("'JSEvents' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "specialHTMLTargets")) Module["specialHTMLTargets"] = function() { abort("'specialHTMLTargets' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "demangle")) Module["demangle"] = function() { abort("'demangle' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "demangleAll")) Module["demangleAll"] = function() { abort("'demangleAll' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "jsStackTrace")) Module["jsStackTrace"] = function() { abort("'jsStackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stackTrace")) Module["stackTrace"] = function() { abort("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "getEnvStrings")) Module["getEnvStrings"] = function() { abort("'getEnvStrings' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "checkWasiClock")) Module["checkWasiClock"] = function() { abort("'checkWasiClock' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToI64")) Module["writeI53ToI64"] = function() { abort("'writeI53ToI64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToI64Clamped")) Module["writeI53ToI64Clamped"] = function() { abort("'writeI53ToI64Clamped' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToI64Signaling")) Module["writeI53ToI64Signaling"] = function() { abort("'writeI53ToI64Signaling' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToU64Clamped")) Module["writeI53ToU64Clamped"] = function() { abort("'writeI53ToU64Clamped' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToU64Signaling")) Module["writeI53ToU64Signaling"] = function() { abort("'writeI53ToU64Signaling' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "readI53FromI64")) Module["readI53FromI64"] = function() { abort("'readI53FromI64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "readI53FromU64")) Module["readI53FromU64"] = function() { abort("'readI53FromU64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "convertI32PairToI53")) Module["convertI32PairToI53"] = function() { abort("'convertI32PairToI53' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "convertU32PairToI53")) Module["convertU32PairToI53"] = function() { abort("'convertU32PairToI53' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "Browser")) Module["Browser"] = function() { abort("'Browser' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "FS")) Module["FS"] = function() { abort("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "MEMFS")) Module["MEMFS"] = function() { abort("'MEMFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "TTY")) Module["TTY"] = function() { abort("'TTY' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "PIPEFS")) Module["PIPEFS"] = function() { abort("'PIPEFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "SOCKFS")) Module["SOCKFS"] = function() { abort("'SOCKFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "GL")) Module["GL"] = function() { abort("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGet")) Module["emscriptenWebGLGet"] = function() { abort("'emscriptenWebGLGet' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGetTexPixelData")) Module["emscriptenWebGLGetTexPixelData"] = function() { abort("'emscriptenWebGLGetTexPixelData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGetUniform")) Module["emscriptenWebGLGetUniform"] = function() { abort("'emscriptenWebGLGetUniform' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGetVertexAttrib")) Module["emscriptenWebGLGetVertexAttrib"] = function() { abort("'emscriptenWebGLGetVertexAttrib' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "AL")) Module["AL"] = function() { abort("'AL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "SDL_unicode")) Module["SDL_unicode"] = function() { abort("'SDL_unicode' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "SDL_ttfContext")) Module["SDL_ttfContext"] = function() { abort("'SDL_ttfContext' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "SDL_audio")) Module["SDL_audio"] = function() { abort("'SDL_audio' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "SDL")) Module["SDL"] = function() { abort("'SDL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "SDL_gfx")) Module["SDL_gfx"] = function() { abort("'SDL_gfx' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "GLUT")) Module["GLUT"] = function() { abort("'GLUT' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "EGL")) Module["EGL"] = function() { abort("'EGL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "GLFW_Window")) Module["GLFW_Window"] = function() { abort("'GLFW_Window' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "GLFW")) Module["GLFW"] = function() { abort("'GLFW' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "GLEW")) Module["GLEW"] = function() { abort("'GLEW' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "IDBStore")) Module["IDBStore"] = function() { abort("'IDBStore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "runAndAbortIfError")) Module["runAndAbortIfError"] = function() { abort("'runAndAbortIfError' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "warnOnce")) Module["warnOnce"] = function() { abort("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stackSave")) Module["stackSave"] = function() { abort("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stackRestore")) Module["stackRestore"] = function() { abort("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stackAlloc")) Module["stackAlloc"] = function() { abort("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "AsciiToString")) Module["AsciiToString"] = function() { abort("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stringToAscii")) Module["stringToAscii"] = function() { abort("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "UTF16ToString")) Module["UTF16ToString"] = function() { abort("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF16")) Module["stringToUTF16"] = function() { abort("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF16")) Module["lengthBytesUTF16"] = function() { abort("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "UTF32ToString")) Module["UTF32ToString"] = function() { abort("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF32")) Module["stringToUTF32"] = function() { abort("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF32")) Module["lengthBytesUTF32"] = function() { abort("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "allocateUTF8")) Module["allocateUTF8"] = function() { abort("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +if (!Object.getOwnPropertyDescriptor(Module, "allocateUTF8OnStack")) Module["allocateUTF8OnStack"] = function() { abort("'allocateUTF8OnStack' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; +Module["writeStackCookie"] = writeStackCookie; +Module["checkStackCookie"] = checkStackCookie;if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NORMAL")) Object.defineProperty(Module, "ALLOC_NORMAL", { configurable: true, get: function() { abort("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); +if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_STACK")) Object.defineProperty(Module, "ALLOC_STACK", { configurable: true, get: function() { abort("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); +if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_DYNAMIC")) Object.defineProperty(Module, "ALLOC_DYNAMIC", { configurable: true, get: function() { abort("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); +if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NONE")) Object.defineProperty(Module, "ALLOC_NONE", { configurable: true, get: function() { abort("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); + + + +var calledRun; + +/** + * @constructor + * @this {ExitStatus} + */ +function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; +} + +var calledMain = false; + + +dependenciesFulfilled = function runCaller() { + // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled +}; + + + + + +/** @type {function(Array=)} */ +function run(args) { + args = args || arguments_; + + if (runDependencies > 0) { + return; + } + + writeStackCookie(); + + preRun(); + + if (runDependencies > 0) return; // a preRun added a dependency, run will be called later + + function doRun() { + // run may have just been called through dependencies being fulfilled just in this very frame, + // or while the async setStatus time below was happening + if (calledRun) return; + calledRun = true; + Module['calledRun'] = true; + + if (ABORT) return; + + initRuntime(); + + preMain(); + + if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized'](); + + assert(!Module['_main'], 'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'); + + postRun(); + } + + if (Module['setStatus']) { + Module['setStatus']('Running...'); + setTimeout(function() { + setTimeout(function() { + Module['setStatus'](''); + }, 1); + doRun(); + }, 1); + } else + { + doRun(); + } + checkStackCookie(); +} +Module['run'] = run; + +function checkUnflushedContent() { + // Compiler settings do not allow exiting the runtime, so flushing + // the streams is not possible. but in ASSERTIONS mode we check + // if there was something to flush, and if so tell the user they + // should request that the runtime be exitable. + // Normally we would not even include flush() at all, but in ASSERTIONS + // builds we do so just for this check, and here we see if there is any + // content to flush, that is, we check if there would have been + // something a non-ASSERTIONS build would have not seen. + // How we flush the streams depends on whether we are in SYSCALLS_REQUIRE_FILESYSTEM=0 + // mode (which has its own special function for this; otherwise, all + // the code is inside libc) + var print = out; + var printErr = err; + var has = false; + out = err = function(x) { + has = true; + } + try { // it doesn't matter if it fails + var flush = Module['_fflush']; + if (flush) flush(0); + // also flush in the JS FS layer + ['stdout', 'stderr'].forEach(function(name) { + var info = FS.analyzePath('/dev/' + name); + if (!info) return; + var stream = info.object; + var rdev = stream.rdev; + var tty = TTY.ttys[rdev]; + if (tty && tty.output && tty.output.length) { + has = true; + } + }); + } catch(e) {} + out = print; + err = printErr; + if (has) { + warnOnce('stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.'); + } +} + +/** @param {boolean|number=} implicit */ +function exit(status, implicit) { + checkUnflushedContent(); + + // if this is just main exit-ing implicitly, and the status is 0, then we + // don't need to do anything here and can just leave. if the status is + // non-zero, though, then we need to report it. + // (we may have warned about this earlier, if a situation justifies doing so) + if (implicit && noExitRuntime && status === 0) { + return; + } + + if (noExitRuntime) { + // if exit() was called, we may warn the user if the runtime isn't actually being shut down + if (!implicit) { + var msg = 'program exited (with status: ' + status + '), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)'; + err(msg); + } + } else { + + ABORT = true; + EXITSTATUS = status; + + exitRuntime(); + + if (Module['onExit']) Module['onExit'](status); + } + + quit_(status, new ExitStatus(status)); +} + +if (Module['preInit']) { + if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; + while (Module['preInit'].length > 0) { + Module['preInit'].pop()(); + } +} + + + noExitRuntime = true; + +run(); + + + + + + +// {{MODULE_ADDITIONS}} + + + diff --git a/sdfglyph.wasm b/sdfglyph.wasm new file mode 100644 index 0000000000000000000000000000000000000000..9befced36392e39f17cf18cb9c796b1109e0af29 GIT binary patch literal 893164 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 z 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%0DerNzhFUXIjK*EGZzz9IX5)F^~ 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%0AqPllW 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 Tl)0Z_welDFOAY*aYv6wYKd!$+ literal 0 HcmV?d00001 diff --git a/worker.js b/worker.js new file mode 100644 index 0000000..d38c766 --- /dev/null +++ b/worker.js @@ -0,0 +1,85 @@ +importScripts("sdfglyph.js"); + +self.onmessage = function (message) { + const { stackId, buffers } = message.data; + const fontstack_ptr = Module.ccall("create_fontstack", "number", ["number"], [0]); + + const font_datas = []; + + for (let ab of buffers) { + let uint8Arr = new Uint8Array(ab); + const num_bytes = uint8Arr.length * uint8Arr.BYTES_PER_ELEMENT; + const data_ptr = Module._malloc(num_bytes); + font_datas.push(data_ptr); + const data_on_heap = new Uint8Array( + Module.HEAPU8.buffer, + data_ptr, + num_bytes + ); + data_on_heap.set(uint8Arr); + Module.ccall( + "fontstack_add_face", + null, + ["number", "number", "number"], + [fontstack_ptr, data_ptr, num_bytes] + ); + } + + const s = Module.ccall( + "fontstack_name", + "number", + ["number"], + [fontstack_ptr] + ); + + let stack_name = UTF8ToString(s); + + for (var i = 0; i < 65536; i += 256) { + const glyph_buffer_ptr = Module.ccall( + "generate_glyph_buffer", + "number", + ["number", "number"], + [fontstack_ptr, i] + ); + const glyph_buffer_data_ptr = Module.ccall( + "glyph_buffer_data", + "number", + ["number"], + [glyph_buffer_ptr] + ); + const glyph_buffer_size = Module.ccall( + "glyph_buffer_size", + "number", + ["number"], + [glyph_buffer_ptr] + ); + const dst = new ArrayBuffer(glyph_buffer_size); + let result = new Uint8Array(dst); + result.set( + new Uint8Array( + Module.HEAPU8.buffer, + glyph_buffer_data_ptr, + glyph_buffer_size + ) + ); + Module.ccall("free_glyph_buffer", null, ["number"], [glyph_buffer_ptr]); + self.postMessage( + { + stackId, + stackName: stack_name, + glyph: { + name: `${i}-${i + 255}.pbf`, + buffer: result, + }, + }, + [result.buffer] + ); + } + + for (let data_ptr of font_datas) { + Module._free(data_ptr); + } + + Module._free(s); + Module.ccall("free_fontstack", "number", ["number"], [fontstack_ptr]); +};