@panoramax/web-viewer 5.1.2-develop-2295c075 → 5.1.2-develop-100d0be1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -2054,7 +2054,7 @@ function*(e,t){if(void 0!==e){let i=0;for(const n of e)yield t(n,i++)}}(this._re
|
|
|
2054
2054
|
${"empty"===this._icon?Ir(vo):H}
|
|
2055
2055
|
${"warn"===this._icon?Ir(Ls):H}
|
|
2056
2056
|
</span>
|
|
2057
|
-
</div>`}}customElements.define("pnx-search-bar",Qx);class Zx extends EventTarget{constructor(e,t={}){if(super(),null==e||"string"!=typeof e){const e=new Error("endpoint parameter is empty or not a valid string");throw this.dispatchEvent(new CustomEvent("broken",{detail:{error:e}})),e}if(e.startsWith("/")&&(e=window.location.href.split("/").slice(0,3).join("/")+e),!Zx.isValidHttpUrl(e)){const t=new Error(`endpoint parameter is not a valid URL: ${e}`);throw this.dispatchEvent(new CustomEvent("broken",{detail:{error:t}})),t}this._endpoint=e,this._isReady=0,this._dataBbox=null,this._fetchOpts=t?.fetch||{},this._metadata={},this._configuration=null,t.skipReadLanding||(this._readLanding=fetch(e,this._getFetchOptions()).then(e=>e.json()).then(e=>this._parseLanding(e,t)).catch(e=>(this._isReady=-1,console.error(e),this.dispatchEvent(new CustomEvent("broken",{detail:{error:e}})),Promise.reject("Viewer failed to communicate with API"))).then(()=>(this._isReady=1,this.dispatchEvent(new Event("ready")),"API is ready")))}onceReady(){return-1===this._isReady?Promise.reject("Viewer failed to communicate with API"):1===this._isReady?Promise.resolve("API is ready"):this._readLanding}isReady(){return 1===this._isReady}getAvailableFeatures(){return Object.entries(this._endpoints).filter(e=>null!==e[1]).map(e=>e[0])}getUnavailableFeatures(){return Object.entries(this._endpoints).filter(e=>null===e[1]).map(e=>e[0])}_parseLanding(e,t){if(this._endpoints={collections:null,search:null,style:null,user_style:null,tiles:t?.tiles||null,user_tiles:null,user_search:null,collection_preview:null,item_preview:null,rss:null,report:null,queryables:null},!e||!e.links||!Array.isArray(e.links))throw new Error("API Landing page doesn't contain 'links' list");if(!e.stac_version.startsWith("1."))throw new Error(`API is not in a supported STAC version (Panoramax viewer supports only 1.x, API is ${e.stac_version})`);this._metadata.name=e.title||"Unnamed",this._metadata.stac_version=e.stac_version,this._metadata.geovisio_version=e.geovisio_version;const i=[],n=[];if([{rel:"search",type:"application/geo+json",endpointId:"search",mandatory:!0,missingIssue:"No direct access to pictures metadata."},{rel:"data",type:"application/json",endpointId:"collections",mandatory:!0,missingIssue:"No way for viewer to access sequences."},{rel:"data",type:"application/rss+xml",endpointId:"rss"},{rel:"xyz",type:"application/vnd.mapbox-vector-tile",endpointId:"tiles"},{rel:"xyz-style",type:"application/json",endpointId:"style"},{rel:"user-xyz-style",type:"application/json",endpointId:"user_style"},{rel:"user-xyz",type:"application/vnd.mapbox-vector-tile",endpointId:"user_tiles"},{rel:"user-search",type:"application/json",endpointId:"user_search",missingIssue:"Filter map data by user name will not be available."},{rel:"collection-preview",type:"image/jpeg",endpointId:"collection_preview",missingIssue:"Display of thumbnail could be slower."},{rel:"item-preview",type:"image/jpeg",endpointId:"item_preview",missingIssue:"Display of thumbnail could be slower."},{rel:"report",type:"application/json",endpointId:"report"},{rel:"http://www.opengis.net/def/rel/ogc/1.0/queryables",type:"application/schema+json",endpointId:"queryables",missingIssue:"Tags map overlay will not be available."}].forEach(t=>{const a=e.links.filter(e=>e.rel===t.rel&&e.type===t.type);if(0===a.length){if(!this._endpoints[t.endpointId]){let e=`API doesn't offer a '${t.rel}' (${t.type}) endpoint in its links`;t.missingIssue&&(e+=`\n${t.missingIssue}`),t.mandatory?i.push(e):t.missingIssue&&n.push(e)}}else{const e=1===a.length?a[0]:a.find(e=>e.title?.includes("v2"))||a[0];if(!Zx.isValidHttpUrl(e.href))throw new Error(`API endpoint '${e.rel}' (${e.type}) is not a valid URL: ${e.href}`);this._endpoints[t.endpointId]&&"xyz-style"!==t.endpointId||(this._endpoints[t.endpointId]=e.href)}}),this._endpoints.style||this._endpoints.tiles||n.push("API doesn't offer 'xyz' or 'xyz-style' endpoints in its links.\nMap widget will not be available."),this._endpoints.user_style||this._endpoints.user_tiles||n.push("API doesn't offer 'user-xyz' or 'user-xyz-style' endpoints in its links.\nFilter map data by user ID will not be available."),n.forEach(e=>console.warn(e)),i.length>0)throw new Error(i.join("\n"));const a=e?.extent?.spatial?.bbox;this._dataBbox=a&&Array.isArray(a)&&a.length>0&&Array.isArray(a[0])&&4===a[0].length?[[a[0][0],a[0][1]],[a[0][2],a[0][3]]]:null}_getFetchOptions(e=!1){const t=Object.assign({},this._fetchOpts);return e||(t.signal=AbortSignal.timeout(15e3)),t}_getMapRequestTransform(){const e=this._getFetchOptions();return delete e.signal,t=>{if(t.startsWith(this._endpoint)){if(Object.keys(e).length>0)return{url:t,...e}}else if(t.includes("data.geopf.fr")&&t.includes("@2x"))return{url:t.replace("@2x","")}}}_getPSVWithCredentials(){return"include"===this._getFetchOptions().credentials?e=>e.startsWith(this._endpoint):void 0}cleanResourceURL(e){if(!e)return;const t=new URL(this._endpoint);return e.startsWith("/")?t.protocol+"//"+t.host+e:e.startsWith("./")?this._endpoint+e.substring(1):e}async getSequenceItems(e,t=null,i=null,n=null){if(!this.isReady())throw new Error("API is not ready to use");try{return Zx.isIdValid(e),await fetch(t||`${this._endpoints.collections}/${e}/items${n?"?limit="+n:""}`,this._getFetchOptions(!0)).then(e=>e.json()).then(t=>{let a=t;i&&(a.features=i.features.concat(a.features));const r=t.links.find(e=>"next"===e.rel);return!n&&r?this.getSequenceItems(e,r.href,a):a})}catch(e){return await Promise.reject(e)}}getPicturesAroundCoordinatesUrl(e,t,i=5e-4,n=null,a=null){if(!this.isReady())throw new Error("API is not ready to use");if(isNaN(parseFloat(e))||isNaN(parseFloat(t)))throw new Error("lat and lon parameters should be valid numbers");const r=[t-i,e-i,t+i,e+i].map(e=>e.toFixed(7)).join(","),s=n?`&limit=${n}`:"",o=a?`&collections=${a}`:"";return`${this._endpoints.search}?bbox=${r}${s}${o}`}getPicturesAroundCoordinates(e,t,i,n,a){return fetch(this.getPicturesAroundCoordinatesUrl(e,t,i,n,a),this._getFetchOptions()).then(e=>e.json())}getPictureMetadataUrl(e,t){if(!this.isReady())throw new Error("API is not ready to use");if(Zx.isIdValid(e))return t?`${this._endpoints.collections}/${t}/items/${e}`:`${this._endpoints.search}?ids=${e}`}findThumbnailInPictureFeature(e){if(!this.isReady())throw new Error("API is not ready to use");if(!e||!e.assets)return null;let t=null;for(let i of Object.values(e.assets)){if(i.roles.includes("thumbnail")&&"image/jpeg"===i.type&&Zx.isValidHttpUrl(i.href))return this.cleanResourceURL(i.href);i.roles.includes("visual")&&"image/jpeg"===i.type&&Zx.isValidHttpUrl(i.href)&&(t=this.cleanResourceURL(i.href))}return t}getPictureThumbnailURLForSequence(e,t){if(!this.isReady())throw new Error("API is not ready to use");if(this._endpoints.collection_preview)return Promise.resolve(this._endpoints.collection_preview.replace("{id}",e));if(t&&Array.isArray(t.links)&&t.links.length>0){let e=t.links.find(e=>"preview"===e.rel&&"image/jpeg"===e.type);if(e&&Zx.isValidHttpUrl(e.href))return Promise.resolve(e.href)}const i=`${this._endpoints.search}?limit=1&collections=${e}`;return fetch(i,this._getFetchOptions()).then(e=>e.json()).then(e=>Array.isArray(e.features)&&0!==e.features.length?this.findThumbnailInPictureFeature(e.features.pop()):null)}getPictureThumbnailURL(e,t){if(!this.isReady())throw new Error("API is not ready to use");return e?this._endpoints.item_preview?Promise.resolve(this._endpoints.item_preview.replace("{id}",e)):e&&t?fetch(`${this._endpoints.collections}/${t}/items/${e}`,this._getFetchOptions()).then(e=>e.json()).then(e=>e?this.findThumbnailInPictureFeature(e):null):fetch(`${this._endpoints.search}?ids=${e}`,this._getFetchOptions()).then(e=>e.json()).then(e=>e&&Array.isArray(e.features)&&0!==e.features.length?this.findThumbnailInPictureFeature(e.features.pop()):null):Promise.resolve(null)}getRSSURL(e){if(!this.isReady())throw new Error("API is not ready to use");if(this._endpoints.rss){let t=this._endpoints.rss;return e&&(t+=t.includes("?")?"&":"?",t+="bbox="+[e.getWest(),e.getSouth(),e.getEast(),e.getNorth()].join(",")),t}return null}getSequenceMetadataUrl(e){if(!this.isReady())throw new Error("API is not ready to use");return`${this._endpoints.collections}/${e}`}getSequenceMetadata(e){if(!this.isReady())throw new Error("API is not ready to use");return fetch(this.getSequenceMetadataUrl(e),this._getFetchOptions()).then(e=>e.json())}getDataBbox(){if(!this.isReady())throw new Error("API is not ready to use");return this._dataBbox}searchUsers(e){if(!this.isReady())throw new Error("API is not ready to use");if(!this._endpoints.user_search)throw new Error("User search is not available");return fetch(`${this._endpoints.user_search}?q=${e}`,this._getFetchOptions()).then(e=>e.json()).then(e=>e?.features||null)}getUserName(e){if(!this.isReady())throw new Error("API is not ready to use");if(!this._endpoints.user_search)throw new Error("User search is not available");return fetch(this._endpoints.user_search.replace(/\/search$/,`/${e}`),this._getFetchOptions()).then(e=>e.json()).then(e=>e?.label||e?.name||null)}sendReport(e){if(!this.isReady())throw new Error("API is not ready to use");if(!this._endpoints.report)throw new Error("Report sending is not available");const t={...this._getFetchOptions(),method:"POST",body:JSON.stringify(e),headers:{"Content-Type":"application/json"}};return fetch(this._endpoints.report,t).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}deletePicture(e,t){if(!this.isReady())throw new Error("API is not ready to use");let i=`${this._endpoint}/collections/${e}/items/${t}`;const n={...this._getFetchOptions(),method:"DELETE"};return fetch(i,n).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return!0})}sendPictureSemantics(e,t){if(!this.isReady())throw new Error("API is not ready to use");if(!e?.sequence?.id||!e?.id)throw new Error("Missing IDs from picture");let i=this.getPictureMetadataUrl(e.id,e.sequence.id);e?.origInstance&&(i=`${e.origInstance.href}/api/collections/${e.sequence.id}/items/${e.id}`);const n={...this._getFetchOptions(),method:"PATCH",body:JSON.stringify({semantics:t}),headers:{"Content-Type":"application/json"}};return fetch(i,n).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}createPictureAnnotation(e,t,i){if(!this.isReady())throw new Error("API is not ready to use");if(!e?.sequence?.id||!e?.id)throw new Error("Missing IDs from picture");let n=this.getPictureMetadataUrl(e.id,e.sequence.id)+"/annotations";e?.origInstance&&(n=`${e.origInstance.href}/api/collections/${e.sequence.id}/items/${e.id}/annotations`);const a={...this._getFetchOptions(),method:"POST",body:JSON.stringify({semantics:i,shape:{type:"Polygon",coordinates:[t]}}),headers:{"Content-Type":"application/json"}};return fetch(n,a).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}editPictureAnnotation(e,t){if(!this.isReady())throw new Error("API is not ready to use");let i=`${this._endpoint}/annotations/${e}`;const n={...this._getFetchOptions(),method:"PATCH",body:JSON.stringify({semantics:t}),headers:{"Content-Type":"application/json"}};return fetch(i,n).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}deletePictureAnnotation(e){if(!this.isReady())throw new Error("API is not ready to use");let t=`${this._endpoint}/annotations/${e}`;const i={...this._getFetchOptions(),method:"DELETE"};return fetch(t,i).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return!0})}getAuthURL(){return this._configuration?Promise.resolve(!!this._configuration?.auth?.enabled&&`${this._endpoint}/auth/login?next_url=<CBURL>`):null===this._configuration?fetch(this._endpoint+"/configuration",this._getFetchOptions()).then(e=>e.json()).then(e=>(this._configuration=e,this.getAuthURL())).catch(()=>(this._configuration=!1,!1)):Promise.resolve(!1)}static isValidHttpUrl(e){let t;try{t=new URL(e)}catch(e){return!1}return"http:"===t.protocol||"https:"===t.protocol}static isIdValid(e){if(Yr(e))throw new Error("id should be a valid picture unique identifier");return!0}}var Yx={Space_Separator:/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},Jx={isSpaceSeparator:e=>"string"==typeof e&&Yx.Space_Separator.test(e),isIdStartChar:e=>"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||Yx.ID_Start.test(e)),isIdContinueChar:e=>"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||""===e||""===e||Yx.ID_Continue.test(e)),isDigit:e=>"string"==typeof e&&/[0-9]/.test(e),isHexDigit:e=>"string"==typeof e&&/[0-9A-Fa-f]/.test(e)};let $x,ew,tw,iw,nw,aw,rw,sw,ow;function lw(e,t,i){const n=e[t];if(null!=n&&"object"==typeof n)if(Array.isArray(n))for(let e=0;e<n.length;e++){const t=String(e),a=lw(n,t,i);void 0===a?delete n[t]:Object.defineProperty(n,t,{value:a,writable:!0,enumerable:!0,configurable:!0})}else for(const e in n){const t=lw(n,e,i);void 0===t?delete n[e]:Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}return i.call(e,t,n)}let cw,dw,uw,hw,pw;function Aw(){for(cw="default",dw="",uw=!1,hw=1;;){pw=mw();const e=fw[cw]();if(e)return e}}function mw(){if($x[iw])return String.fromCodePoint($x.codePointAt(iw))}function gw(){const e=mw();return"\n"===e?(nw++,aw=0):e?aw+=e.length:aw++,e&&(iw+=e.length),e}const fw={default(){switch(pw){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void gw();case"/":return gw(),void(cw="comment");case void 0:return gw(),_w("eof")}if(!Jx.isSpaceSeparator(pw))return fw[ew]();gw()},comment(){switch(pw){case"*":return gw(),void(cw="multiLineComment");case"/":return gw(),void(cw="singleLineComment")}throw xw(gw())},multiLineComment(){switch(pw){case"*":return gw(),void(cw="multiLineCommentAsterisk");case void 0:throw xw(gw())}gw()},multiLineCommentAsterisk(){switch(pw){case"*":return void gw();case"/":return gw(),void(cw="default");case void 0:throw xw(gw())}gw(),cw="multiLineComment"},singleLineComment(){switch(pw){case"\n":case"\r":case"\u2028":case"\u2029":return gw(),void(cw="default");case void 0:return gw(),_w("eof")}gw()},value(){switch(pw){case"{":case"[":return _w("punctuator",gw());case"n":return gw(),vw("ull"),_w("null",null);case"t":return gw(),vw("rue"),_w("boolean",!0);case"f":return gw(),vw("alse"),_w("boolean",!1);case"-":case"+":return"-"===gw()&&(hw=-1),void(cw="sign");case".":return dw=gw(),void(cw="decimalPointLeading");case"0":return dw=gw(),void(cw="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return dw=gw(),void(cw="decimalInteger");case"I":return gw(),vw("nfinity"),_w("numeric",1/0);case"N":return gw(),vw("aN"),_w("numeric",NaN);case'"':case"'":return uw='"'===gw(),dw="",void(cw="string")}throw xw(gw())},identifierNameStartEscape(){if("u"!==pw)throw xw(gw());gw();const e=Ew();switch(e){case"$":case"_":break;default:if(!Jx.isIdStartChar(e))throw Mw()}dw+=e,cw="identifierName"},identifierName(){switch(pw){case"$":case"_":case"":case"":return void(dw+=gw());case"\\":return gw(),void(cw="identifierNameEscape")}if(!Jx.isIdContinueChar(pw))return _w("identifier",dw);dw+=gw()},identifierNameEscape(){if("u"!==pw)throw xw(gw());gw();const e=Ew();switch(e){case"$":case"_":case"":case"":break;default:if(!Jx.isIdContinueChar(e))throw Mw()}dw+=e,cw="identifierName"},sign(){switch(pw){case".":return dw=gw(),void(cw="decimalPointLeading");case"0":return dw=gw(),void(cw="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return dw=gw(),void(cw="decimalInteger");case"I":return gw(),vw("nfinity"),_w("numeric",hw*(1/0));case"N":return gw(),vw("aN"),_w("numeric",NaN)}throw xw(gw())},zero(){switch(pw){case".":return dw+=gw(),void(cw="decimalPoint");case"e":case"E":return dw+=gw(),void(cw="decimalExponent");case"x":case"X":return dw+=gw(),void(cw="hexadecimal")}return _w("numeric",0*hw)},decimalInteger(){switch(pw){case".":return dw+=gw(),void(cw="decimalPoint");case"e":case"E":return dw+=gw(),void(cw="decimalExponent")}if(!Jx.isDigit(pw))return _w("numeric",hw*Number(dw));dw+=gw()},decimalPointLeading(){if(Jx.isDigit(pw))return dw+=gw(),void(cw="decimalFraction");throw xw(gw())},decimalPoint(){switch(pw){case"e":case"E":return dw+=gw(),void(cw="decimalExponent")}return Jx.isDigit(pw)?(dw+=gw(),void(cw="decimalFraction")):_w("numeric",hw*Number(dw))},decimalFraction(){switch(pw){case"e":case"E":return dw+=gw(),void(cw="decimalExponent")}if(!Jx.isDigit(pw))return _w("numeric",hw*Number(dw));dw+=gw()},decimalExponent(){switch(pw){case"+":case"-":return dw+=gw(),void(cw="decimalExponentSign")}if(Jx.isDigit(pw))return dw+=gw(),void(cw="decimalExponentInteger");throw xw(gw())},decimalExponentSign(){if(Jx.isDigit(pw))return dw+=gw(),void(cw="decimalExponentInteger");throw xw(gw())},decimalExponentInteger(){if(!Jx.isDigit(pw))return _w("numeric",hw*Number(dw));dw+=gw()},hexadecimal(){if(Jx.isHexDigit(pw))return dw+=gw(),void(cw="hexadecimalInteger");throw xw(gw())},hexadecimalInteger(){if(!Jx.isHexDigit(pw))return _w("numeric",hw*Number(dw));dw+=gw()},string(){switch(pw){case"\\":return gw(),void(dw+=function(){switch(mw()){case"b":return gw(),"\b";case"f":return gw(),"\f";case"n":return gw(),"\n";case"r":return gw(),"\r";case"t":return gw(),"\t";case"v":return gw(),"\v";case"0":if(gw(),Jx.isDigit(mw()))throw xw(gw());return"\0";case"x":return gw(),function(){let e="",t=mw();if(!Jx.isHexDigit(t))throw xw(gw());if(e+=gw(),t=mw(),!Jx.isHexDigit(t))throw xw(gw());return e+=gw(),String.fromCodePoint(parseInt(e,16))}();case"u":return gw(),Ew();case"\n":case"\u2028":case"\u2029":return gw(),"";case"\r":return gw(),"\n"===mw()&&gw(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw xw(gw())}return gw()}());case'"':return uw?(gw(),_w("string",dw)):void(dw+=gw());case"'":return uw?void(dw+=gw()):(gw(),_w("string",dw));case"\n":case"\r":throw xw(gw());case"\u2028":case"\u2029":!function(e){console.warn(`JSON5: '${Sw(e)}' in strings is not valid ECMAScript; consider escaping`)}(pw);break;case void 0:throw xw(gw())}dw+=gw()},start(){switch(pw){case"{":case"[":return _w("punctuator",gw())}cw="value"},beforePropertyName(){switch(pw){case"$":case"_":return dw=gw(),void(cw="identifierName");case"\\":return gw(),void(cw="identifierNameStartEscape");case"}":return _w("punctuator",gw());case'"':case"'":return uw='"'===gw(),void(cw="string")}if(Jx.isIdStartChar(pw))return dw+=gw(),void(cw="identifierName");throw xw(gw())},afterPropertyName(){if(":"===pw)return _w("punctuator",gw());throw xw(gw())},beforePropertyValue(){cw="value"},afterPropertyValue(){switch(pw){case",":case"}":return _w("punctuator",gw())}throw xw(gw())},beforeArrayValue(){if("]"===pw)return _w("punctuator",gw());cw="value"},afterArrayValue(){switch(pw){case",":case"]":return _w("punctuator",gw())}throw xw(gw())},end(){throw xw(gw())}};function _w(e,t){return{type:e,value:t,line:nw,column:aw}}function vw(e){for(const t of e){if(mw()!==t)throw xw(gw());gw()}}function Ew(){let e="",t=4;for(;t-- >0;){const t=mw();if(!Jx.isHexDigit(t))throw xw(gw());e+=gw()}return String.fromCodePoint(parseInt(e,16))}const bw={start(){if("eof"===rw.type)throw ww();yw()},beforePropertyName(){switch(rw.type){case"identifier":case"string":return sw=rw.value,void(ew="afterPropertyName");case"punctuator":return void kw();case"eof":throw ww()}},afterPropertyName(){if("eof"===rw.type)throw ww();ew="beforePropertyValue"},beforePropertyValue(){if("eof"===rw.type)throw ww();yw()},beforeArrayValue(){if("eof"===rw.type)throw ww();"punctuator"!==rw.type||"]"!==rw.value?yw():kw()},afterPropertyValue(){if("eof"===rw.type)throw ww();switch(rw.value){case",":return void(ew="beforePropertyName");case"}":kw()}},afterArrayValue(){if("eof"===rw.type)throw ww();switch(rw.value){case",":return void(ew="beforeArrayValue");case"]":kw()}},end(){}};function yw(){let e;switch(rw.type){case"punctuator":switch(rw.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=rw.value}if(void 0===ow)ow=e;else{const t=tw[tw.length-1];Array.isArray(t)?t.push(e):Object.defineProperty(t,sw,{value:e,writable:!0,enumerable:!0,configurable:!0})}if(null!==e&&"object"==typeof e)tw.push(e),ew=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{const e=tw[tw.length-1];ew=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}}function kw(){tw.pop();const e=tw[tw.length-1];ew=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function xw(e){return Cw(void 0===e?`JSON5: invalid end of input at ${nw}:${aw}`:`JSON5: invalid character '${Sw(e)}' at ${nw}:${aw}`)}function ww(){return Cw(`JSON5: invalid end of input at ${nw}:${aw}`)}function Mw(){return aw-=5,Cw(`JSON5: invalid identifier character at ${nw}:${aw}`)}function Sw(e){const t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){const t=e.charCodeAt(0).toString(16);return"\\x"+("00"+t).substring(t.length)}return e}function Cw(e){const t=new SyntaxError(e);return t.lineNumber=nw,t.columnNumber=aw,t}const Tw={parse:function(e,t){$x=String(e),ew="start",tw=[],iw=0,nw=1,aw=0,rw=void 0,sw=void 0,ow=void 0;do{rw=Aw(),bw[ew]()}while("eof"!==rw.type);return"function"==typeof t?lw({"":ow},"",t):ow},stringify:function(e,t,i){const n=[];let a,r,s,o="",l="";if(null==t||"object"!=typeof t||Array.isArray(t)||(i=t.space,s=t.quote,t=t.replacer),"function"==typeof t)r=t;else if(Array.isArray(t)){a=[];for(const e of t){let t;"string"==typeof e?t=e:("number"==typeof e||e instanceof String||e instanceof Number)&&(t=String(e)),void 0!==t&&a.indexOf(t)<0&&a.push(t)}}return i instanceof Number?i=Number(i):i instanceof String&&(i=String(i)),"number"==typeof i?i>0&&(i=Math.min(10,Math.floor(i)),l=" ".substr(0,i)):"string"==typeof i&&(l=i.substr(0,10)),c("",{"":e});function c(e,t){let i=t[e];switch(null!=i&&("function"==typeof i.toJSON5?i=i.toJSON5(e):"function"==typeof i.toJSON&&(i=i.toJSON(e))),r&&(i=r.call(t,e,i)),i instanceof Number?i=Number(i):i instanceof String?i=String(i):i instanceof Boolean&&(i=i.valueOf()),i){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof i?d(i):"number"==typeof i?String(i):"object"==typeof i?Array.isArray(i)?function(e){if(n.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");n.push(e);let t=o;o+=l;let i,a=[];for(let t=0;t<e.length;t++){const i=c(String(t),e);a.push(void 0!==i?i:"null")}if(0===a.length)i="[]";else if(""===l){i="["+a.join(",")+"]"}else{let e=",\n"+o,n=a.join(e);i="[\n"+o+n+",\n"+t+"]"}return n.pop(),o=t,i}(i):function(e){if(n.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");n.push(e);let t=o;o+=l;let i,r=a||Object.keys(e),s=[];for(const t of r){const i=c(t,e);if(void 0!==i){let e=u(t)+":";""!==l&&(e+=" "),e+=i,s.push(e)}}if(0===s.length)i="{}";else{let e;if(""===l)e=s.join(","),i="{"+e+"}";else{let n=",\n"+o;e=s.join(n),i="{\n"+o+e+",\n"+t+"}"}}return n.pop(),o=t,i}(i):void 0}function d(e){const t={"'":.1,'"':.2},i={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};let n="";for(let a=0;a<e.length;a++){const r=e[a];switch(r){case"'":case'"':t[r]++,n+=r;continue;case"\0":if(Jx.isDigit(e[a+1])){n+="\\x00";continue}}if(i[r])n+=i[r];else{if(r<" "){let e=r.charCodeAt(0).toString(16);n+="\\x"+("00"+e).substring(e.length);continue}n+=r}}const a=s||Object.keys(t).reduce((e,i)=>t[e]<t[i]?e:i);return n=n.replace(new RegExp(a,"g"),i[a]),a+n+a}function u(e){if(0===e.length)return d(e);const t=String.fromCodePoint(e.codePointAt(0));if(!Jx.isIdStartChar(t))return d(e);for(let i=t.length;i<e.length;i++)if(!Jx.isIdContinueChar(String.fromCodePoint(e.codePointAt(i))))return d(e);return e}}};var Dw=Tw;const Pw=new CSSStyleSheet;Pw.replaceSync("/* atkinson-hyperlegible-next-latin-ext-400-normal */\n@font-face {\n font-family: 'Atkinson Hyperlegible Next';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(https://cdn.jsdelivr.net/npm/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-ext-400-normal.woff2) format('woff2'), url(https://cdn.jsdelivr.net/npm/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-ext-400-normal.woff) format('woff');\n unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;\n}\n\n/* atkinson-hyperlegible-next-latin-400-normal */\n@font-face {\n font-family: 'Atkinson Hyperlegible Next';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(https://cdn.jsdelivr.net/npm/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-400-normal.woff2) format('woff2'), url(https://cdn.jsdelivr.net/npm/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-400-normal.woff) format('woff');\n unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;\n}");const Iw=new CSSStyleSheet;Iw.replaceSync('/* Colors */\n:root, :host {\n\t--white: #ffffff;\n\t--black: #181818;\n\t--black-pale: #1b1a17;\n\t--red: #f70000;\n\t--red-transparent: rgba(247, 0, 0, 0.3);\n\t--red-pale: #ff726f;\n\t--grey: #f5f5f5;\n\t--grey-pale: #cfd2cf;\n\t--grey-semi-dark: #808080;\n\t--grey-dark: #3e3e3e;\n\t--blue: #2954e9;\n\t--blue-dark: #0a1f69;\n\t--blue-semi: #d7dffc;\n\t--blue-pale: #f2f5ff;\n\t--blue-geovisio: #34495e;\n\t--beige: #f5f3ec;\n\t--yellow: #fec868;\n\t--orange: #ff6f00;\n\t--orange-transparent: rgba(255,111,0,0.3);\n\t--orange-pale: #fffafa;\n\t--green: #7ec636;\n\t--green-pale: #f0ffee;\n\t--widget-bg: var(--white);\n\t--widget-bg-hover: var(--grey);\n\t--widget-bg-active: var(--blue);\n\t--widget-bg-inactive: var(--grey-pale);\n\t--widget-bg-primary: var(--blue-semi);\n\t--widget-bg-primary-hover: #e0e7ff;\n\t--widget-bg-warn: #FFECB3;\n\t--widget-bg-danger: #FFCDD2;\n\t--widget-bg-success: #C8E6C9;\n\t--widget-border-div: var(--grey-pale);\n\t--widget-border-btn: var(--blue);\n\t--widget-font: var(--grey-dark);\n\t--widget-font-active: var(--white);\n\t--widget-font-direct: var(--blue);\n\t--widget-font-warn: #BF360C;\n\t--widget-font-danger: #B71C1C;\n\t--widget-font-success: #1B5E20;\n\t--font-family: "Atkinson Hyperlegible Next", sans-serif;\n\t--widget-option-left: #6A1B9A;\n\t--widget-option-right: #0D47A1;\n\toverscroll-behavior-y: contain;\n}\n\n.pnx-hidden { display: none !important; }\n\n/* Hidden elements on mobile */\n@container (max-width: 576px) {\n\t.pnx-mobile-hidden { display: none !important; }\n}\n\n/* Hidden elements on print */\n@media print {\n\t.pnx-print-hidden { display: none !important; }\n}\n'),document.adoptedStyleSheets.push(Pw),document.adoptedStyleSheets.push(Iw);class Lw extends le{static properties={picture:{type:String,reflect:!0},sequence:{type:String,reflect:!0},"fetch-options":{converter:Lw.GetJSONConverter()},lang:{type:String},endpoint:{type:String}};constructor(e=!1){super(),this.lang=this.getAttribute("lang")||null,this.endpoint=this.getAttribute("endpoint")||null,this.picture=this.getAttribute("picture")||null,this.sequence=this.getAttribute("sequence")||null,console.info(`📷 Panoramax ${this.getClassName()} - Version 5.1.2 (2295c07)\n\n🆘 Issues can be reported at https://gitlab.com/panoramax/clients/web-viewer/-/work_items`),e||(this._isInternetFast=null,ps().then(e=>this._isInternetFast=e))}connectedCallback(){super.connectedCallback(),this._t=Ax(this.lang),this.loader=zr("pnx-loader",{_parent:this,"no-label":us()}),this._loadsAPI&&this.endpoint&&this._loadsAPI===this.endpoint||this.api&&this.api._endpoint===this.endpoint||!this.endpoint||((this._loadsAPI||this.api)&&(delete this.api,delete this._loadsAPI),this._setupAPI()),Object.entries({map:"map-options",psv:"psv-options",fetchOptions:"fetch-options",mapstyle:"map-style"}).forEach(([e,t])=>{this.getAttribute(e)&&console.error(`Component attribute "${e}" has been renamed into "${t}". Old attribute "${e}" is ignored.`)}),us()&&this.classList.add("pnx-iframed")}_setupAPI(){if(this.loader=this.loader||zr("pnx-loader",{_parent:this}),!this.endpoint)return void console.warn("No endpoint is defined");this._loadsAPI=this.endpoint;let e=this.endpoint;try{this.api=new Zx(this.endpoint,{fetch:this["fetch-options"]}),this.api.onceReady().then(()=>{if(e!==this._loadsAPI||!this.api)return;let t=this.api.getUnavailableFeatures(),i=this.api.getAvailableFeatures();i=0===t.length?"✅ All features available":"✅ Available features: "+i.join(", "),t=0===t.length?"":"🚫 Unavailable features: "+t.join(", "),console.info(`🌐 Connected to API "${this.api._metadata.name}" (${this.api._endpoint})\nℹ️ API runs STAC ${this.api._metadata.stac_version} ${this.api._metadata.geovisio_version?"& GeoVisio "+this.api._metadata.geovisio_version:""}\n ${i}\n ${t}\n`.trim())}).catch(e=>this.loader?.dismiss?.(e,this._t?.pnx.error_api)).finally(()=>delete this._loadsAPI)}catch(e){delete this._loadsAPI,this.loader?.dismiss?this.loader.dismiss(e,this._t.pnx.error_api):console.error(e)}}onceReady(){throw new Error("You must override this method on sub-class")}onceAPIReady(){return this.api?this.api.onceReady():new Promise(e=>setTimeout(e,250)).then(this.onceAPIReady.bind(this))}createRenderRoot(){return this}attributeChangedCallback(e,t,i){if(super.attributeChangedCallback(e,t,i),"endpoint"===e&&(this._loadsAPI&&i&&this._loadsAPI===i||this.api&&this.api._endpoint===i||!i||((this._loadsAPI||this.api)&&(delete this.api,delete this._loadsAPI),this._setupAPI())),["picture","sequence"].includes(e)){let n,a,r,s;"picture"===e?(n=this.sequence,r=this.sequence,a=i,s=t):(n=i,r=t,a=this.picture,s=this.picture),this.dispatchEvent(new CustomEvent("select",{bubbles:!0,composed:!0,detail:{seqId:n,picId:a,prevSeqId:r,prevPicId:s}}))}}getClassName(){return"Basic"}select(e=null,t=null,i=!1){i&&(this.picture=null,this.sequence=null),this.picture=t,this.sequence=e}isWidthSmall(){return this?.offsetWidth<576}isWidthMedium(){return this?.offsetWidth>=576&&this?.offsetWidth<768}isHeightSmall(){return this?.offsetHeight<400}render(){return V`<p>Should not be used directly, use Viewer/CoverageMap/Editor instead</p>`}getSubComponentsNames(){return["loader","api"]}getAPI(){return this.api}addEventListener(e,t,i){let n=e.split(":").shift();if(n&&this.getSubComponentsNames().includes(n)){const a=e.substring(n.length+1);this[n]?.addEventListener?this[n].addEventListener(a,t,i):setTimeout(()=>this.addEventListener(e,t,i),50)}else super.addEventListener(e,t,i)}static GetJSONConverter(){return{fromAttribute:e=>null==e||""===e?null:"object"==typeof e||Array.isArray(e)?e:Dw.parse(e),toAttribute:e=>null==e||""===e?"":"string"==typeof e?e:Dw.stringify(e)}}}class zw extends le{static styles=[Po,s`
|
|
2057
|
+
</div>`}}customElements.define("pnx-search-bar",Qx);class Zx extends EventTarget{constructor(e,t={}){if(super(),null==e||"string"!=typeof e){const e=new Error("endpoint parameter is empty or not a valid string");throw this.dispatchEvent(new CustomEvent("broken",{detail:{error:e}})),e}if(e.startsWith("/")&&(e=window.location.href.split("/").slice(0,3).join("/")+e),!Zx.isValidHttpUrl(e)){const t=new Error(`endpoint parameter is not a valid URL: ${e}`);throw this.dispatchEvent(new CustomEvent("broken",{detail:{error:t}})),t}this._endpoint=e,this._isReady=0,this._dataBbox=null,this._fetchOpts=t?.fetch||{},this._metadata={},this._configuration=null,t.skipReadLanding||(this._readLanding=fetch(e,this._getFetchOptions()).then(e=>e.json()).then(e=>this._parseLanding(e,t)).catch(e=>(this._isReady=-1,console.error(e),this.dispatchEvent(new CustomEvent("broken",{detail:{error:e}})),Promise.reject("Viewer failed to communicate with API"))).then(()=>(this._isReady=1,this.dispatchEvent(new Event("ready")),"API is ready")))}onceReady(){return-1===this._isReady?Promise.reject("Viewer failed to communicate with API"):1===this._isReady?Promise.resolve("API is ready"):this._readLanding}isReady(){return 1===this._isReady}getAvailableFeatures(){return Object.entries(this._endpoints).filter(e=>null!==e[1]).map(e=>e[0])}getUnavailableFeatures(){return Object.entries(this._endpoints).filter(e=>null===e[1]).map(e=>e[0])}_parseLanding(e,t){if(this._endpoints={collections:null,search:null,style:null,user_style:null,tiles:t?.tiles||null,user_tiles:null,user_search:null,collection_preview:null,item_preview:null,rss:null,report:null,queryables:null},!e||!e.links||!Array.isArray(e.links))throw new Error("API Landing page doesn't contain 'links' list");if(!e.stac_version.startsWith("1."))throw new Error(`API is not in a supported STAC version (Panoramax viewer supports only 1.x, API is ${e.stac_version})`);this._metadata.name=e.title||"Unnamed",this._metadata.stac_version=e.stac_version,this._metadata.geovisio_version=e.geovisio_version;const i=[],n=[];if([{rel:"search",type:"application/geo+json",endpointId:"search",mandatory:!0,missingIssue:"No direct access to pictures metadata."},{rel:"data",type:"application/json",endpointId:"collections",mandatory:!0,missingIssue:"No way for viewer to access sequences."},{rel:"data",type:"application/rss+xml",endpointId:"rss"},{rel:"xyz",type:"application/vnd.mapbox-vector-tile",endpointId:"tiles"},{rel:"xyz-style",type:"application/json",endpointId:"style"},{rel:"user-xyz-style",type:"application/json",endpointId:"user_style"},{rel:"user-xyz",type:"application/vnd.mapbox-vector-tile",endpointId:"user_tiles"},{rel:"user-search",type:"application/json",endpointId:"user_search",missingIssue:"Filter map data by user name will not be available."},{rel:"collection-preview",type:"image/jpeg",endpointId:"collection_preview",missingIssue:"Display of thumbnail could be slower."},{rel:"item-preview",type:"image/jpeg",endpointId:"item_preview",missingIssue:"Display of thumbnail could be slower."},{rel:"report",type:"application/json",endpointId:"report"},{rel:"http://www.opengis.net/def/rel/ogc/1.0/queryables",type:"application/schema+json",endpointId:"queryables",missingIssue:"Tags map overlay will not be available."}].forEach(t=>{const a=e.links.filter(e=>e.rel===t.rel&&e.type===t.type);if(0===a.length){if(!this._endpoints[t.endpointId]){let e=`API doesn't offer a '${t.rel}' (${t.type}) endpoint in its links`;t.missingIssue&&(e+=`\n${t.missingIssue}`),t.mandatory?i.push(e):t.missingIssue&&n.push(e)}}else{const e=1===a.length?a[0]:a.find(e=>e.title?.includes("v2"))||a[0];if(!Zx.isValidHttpUrl(e.href))throw new Error(`API endpoint '${e.rel}' (${e.type}) is not a valid URL: ${e.href}`);this._endpoints[t.endpointId]&&"xyz-style"!==t.endpointId||(this._endpoints[t.endpointId]=e.href)}}),this._endpoints.style||this._endpoints.tiles||n.push("API doesn't offer 'xyz' or 'xyz-style' endpoints in its links.\nMap widget will not be available."),this._endpoints.user_style||this._endpoints.user_tiles||n.push("API doesn't offer 'user-xyz' or 'user-xyz-style' endpoints in its links.\nFilter map data by user ID will not be available."),n.forEach(e=>console.warn(e)),i.length>0)throw new Error(i.join("\n"));const a=e?.extent?.spatial?.bbox;this._dataBbox=a&&Array.isArray(a)&&a.length>0&&Array.isArray(a[0])&&4===a[0].length?[[a[0][0],a[0][1]],[a[0][2],a[0][3]]]:null}_getFetchOptions(e=!1){const t=Object.assign({},this._fetchOpts);return e||(t.signal=AbortSignal.timeout(15e3)),t}_getMapRequestTransform(){const e=this._getFetchOptions();return delete e.signal,t=>{if(t.startsWith(this._endpoint)){if(Object.keys(e).length>0)return{url:t,...e}}else if(t.includes("data.geopf.fr")&&t.includes("@2x"))return{url:t.replace("@2x","")}}}_getPSVWithCredentials(){return"include"===this._getFetchOptions().credentials?e=>e.startsWith(this._endpoint):void 0}cleanResourceURL(e){if(!e)return;const t=new URL(this._endpoint);return e.startsWith("/")?t.protocol+"//"+t.host+e:e.startsWith("./")?this._endpoint+e.substring(1):e}async getSequenceItems(e,t=null,i=null,n=null){if(!this.isReady())throw new Error("API is not ready to use");try{return Zx.isIdValid(e),await fetch(t||`${this._endpoints.collections}/${e}/items${n?"?limit="+n:""}`,this._getFetchOptions(!0)).then(e=>e.json()).then(t=>{let a=t;i&&(a.features=i.features.concat(a.features));const r=t.links.find(e=>"next"===e.rel);return!n&&r?this.getSequenceItems(e,r.href,a):a})}catch(e){return await Promise.reject(e)}}getPicturesAroundCoordinatesUrl(e,t,i=5e-4,n=null,a=null){if(!this.isReady())throw new Error("API is not ready to use");if(isNaN(parseFloat(e))||isNaN(parseFloat(t)))throw new Error("lat and lon parameters should be valid numbers");const r=[t-i,e-i,t+i,e+i].map(e=>e.toFixed(7)).join(","),s=n?`&limit=${n}`:"",o=a?`&collections=${a}`:"";return`${this._endpoints.search}?bbox=${r}${s}${o}`}getPicturesAroundCoordinates(e,t,i,n,a){return fetch(this.getPicturesAroundCoordinatesUrl(e,t,i,n,a),this._getFetchOptions()).then(e=>e.json())}getPictureMetadataUrl(e,t){if(!this.isReady())throw new Error("API is not ready to use");if(Zx.isIdValid(e))return t?`${this._endpoints.collections}/${t}/items/${e}`:`${this._endpoints.search}?ids=${e}`}findThumbnailInPictureFeature(e){if(!this.isReady())throw new Error("API is not ready to use");if(!e||!e.assets)return null;let t=null;for(let i of Object.values(e.assets)){if(i.roles.includes("thumbnail")&&"image/jpeg"===i.type&&Zx.isValidHttpUrl(i.href))return this.cleanResourceURL(i.href);i.roles.includes("visual")&&"image/jpeg"===i.type&&Zx.isValidHttpUrl(i.href)&&(t=this.cleanResourceURL(i.href))}return t}getPictureThumbnailURLForSequence(e,t){if(!this.isReady())throw new Error("API is not ready to use");if(this._endpoints.collection_preview)return Promise.resolve(this._endpoints.collection_preview.replace("{id}",e));if(t&&Array.isArray(t.links)&&t.links.length>0){let e=t.links.find(e=>"preview"===e.rel&&"image/jpeg"===e.type);if(e&&Zx.isValidHttpUrl(e.href))return Promise.resolve(e.href)}const i=`${this._endpoints.search}?limit=1&collections=${e}`;return fetch(i,this._getFetchOptions()).then(e=>e.json()).then(e=>Array.isArray(e.features)&&0!==e.features.length?this.findThumbnailInPictureFeature(e.features.pop()):null)}getPictureThumbnailURL(e,t){if(!this.isReady())throw new Error("API is not ready to use");return e?this._endpoints.item_preview?Promise.resolve(this._endpoints.item_preview.replace("{id}",e)):e&&t?fetch(`${this._endpoints.collections}/${t}/items/${e}`,this._getFetchOptions()).then(e=>e.json()).then(e=>e?this.findThumbnailInPictureFeature(e):null):fetch(`${this._endpoints.search}?ids=${e}`,this._getFetchOptions()).then(e=>e.json()).then(e=>e&&Array.isArray(e.features)&&0!==e.features.length?this.findThumbnailInPictureFeature(e.features.pop()):null):Promise.resolve(null)}getRSSURL(e){if(!this.isReady())throw new Error("API is not ready to use");if(this._endpoints.rss){let t=this._endpoints.rss;return e&&(t+=t.includes("?")?"&":"?",t+="bbox="+[e.getWest(),e.getSouth(),e.getEast(),e.getNorth()].join(",")),t}return null}getSequenceMetadataUrl(e){if(!this.isReady())throw new Error("API is not ready to use");return`${this._endpoints.collections}/${e}`}getSequenceMetadata(e){if(!this.isReady())throw new Error("API is not ready to use");return fetch(this.getSequenceMetadataUrl(e),this._getFetchOptions()).then(e=>e.json())}getDataBbox(){if(!this.isReady())throw new Error("API is not ready to use");return this._dataBbox}searchUsers(e){if(!this.isReady())throw new Error("API is not ready to use");if(!this._endpoints.user_search)throw new Error("User search is not available");return fetch(`${this._endpoints.user_search}?q=${e}`,this._getFetchOptions()).then(e=>e.json()).then(e=>e?.features||null)}getUserName(e){if(!this.isReady())throw new Error("API is not ready to use");if(!this._endpoints.user_search)throw new Error("User search is not available");return fetch(this._endpoints.user_search.replace(/\/search$/,`/${e}`),this._getFetchOptions()).then(e=>e.json()).then(e=>e?.label||e?.name||null)}sendReport(e){if(!this.isReady())throw new Error("API is not ready to use");if(!this._endpoints.report)throw new Error("Report sending is not available");const t={...this._getFetchOptions(),method:"POST",body:JSON.stringify(e),headers:{"Content-Type":"application/json"}};return fetch(this._endpoints.report,t).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}deletePicture(e,t){if(!this.isReady())throw new Error("API is not ready to use");let i=`${this._endpoint}/collections/${e}/items/${t}`;const n={...this._getFetchOptions(),method:"DELETE"};return fetch(i,n).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return!0})}sendPictureSemantics(e,t){if(!this.isReady())throw new Error("API is not ready to use");if(!e?.sequence?.id||!e?.id)throw new Error("Missing IDs from picture");let i=this.getPictureMetadataUrl(e.id,e.sequence.id);e?.origInstance&&(i=`${e.origInstance.href}/api/collections/${e.sequence.id}/items/${e.id}`);const n={...this._getFetchOptions(),method:"PATCH",body:JSON.stringify({semantics:t}),headers:{"Content-Type":"application/json"}};return fetch(i,n).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}createPictureAnnotation(e,t,i){if(!this.isReady())throw new Error("API is not ready to use");if(!e?.sequence?.id||!e?.id)throw new Error("Missing IDs from picture");let n=this.getPictureMetadataUrl(e.id,e.sequence.id)+"/annotations";e?.origInstance&&(n=`${e.origInstance.href}/api/collections/${e.sequence.id}/items/${e.id}/annotations`);const a={...this._getFetchOptions(),method:"POST",body:JSON.stringify({semantics:i,shape:{type:"Polygon",coordinates:[t]}}),headers:{"Content-Type":"application/json"}};return fetch(n,a).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}editPictureAnnotation(e,t){if(!this.isReady())throw new Error("API is not ready to use");let i=`${this._endpoint}/annotations/${e}`;const n={...this._getFetchOptions(),method:"PATCH",body:JSON.stringify({semantics:t}),headers:{"Content-Type":"application/json"}};return fetch(i,n).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return e.json()})}deletePictureAnnotation(e){if(!this.isReady())throw new Error("API is not ready to use");let t=`${this._endpoint}/annotations/${e}`;const i={...this._getFetchOptions(),method:"DELETE"};return fetch(t,i).then(async e=>{if(e.status>=400){let t=await e.text();try{t=JSON.parse(t).message}catch(e){}return Promise.reject(t)}return!0})}getAuthURL(){return this._configuration?Promise.resolve(!!this._configuration?.auth?.enabled&&`${this._endpoint}/auth/login?next_url=<CBURL>`):null===this._configuration?fetch(this._endpoint+"/configuration",this._getFetchOptions()).then(e=>e.json()).then(e=>(this._configuration=e,this.getAuthURL())).catch(()=>(this._configuration=!1,!1)):Promise.resolve(!1)}static isValidHttpUrl(e){let t;try{t=new URL(e)}catch(e){return!1}return"http:"===t.protocol||"https:"===t.protocol}static isIdValid(e){if(Yr(e))throw new Error("id should be a valid picture unique identifier");return!0}}var Yx={Space_Separator:/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},Jx={isSpaceSeparator:e=>"string"==typeof e&&Yx.Space_Separator.test(e),isIdStartChar:e=>"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||Yx.ID_Start.test(e)),isIdContinueChar:e=>"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"$"===e||"_"===e||""===e||""===e||Yx.ID_Continue.test(e)),isDigit:e=>"string"==typeof e&&/[0-9]/.test(e),isHexDigit:e=>"string"==typeof e&&/[0-9A-Fa-f]/.test(e)};let $x,ew,tw,iw,nw,aw,rw,sw,ow;function lw(e,t,i){const n=e[t];if(null!=n&&"object"==typeof n)if(Array.isArray(n))for(let e=0;e<n.length;e++){const t=String(e),a=lw(n,t,i);void 0===a?delete n[t]:Object.defineProperty(n,t,{value:a,writable:!0,enumerable:!0,configurable:!0})}else for(const e in n){const t=lw(n,e,i);void 0===t?delete n[e]:Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}return i.call(e,t,n)}let cw,dw,uw,hw,pw;function Aw(){for(cw="default",dw="",uw=!1,hw=1;;){pw=mw();const e=fw[cw]();if(e)return e}}function mw(){if($x[iw])return String.fromCodePoint($x.codePointAt(iw))}function gw(){const e=mw();return"\n"===e?(nw++,aw=0):e?aw+=e.length:aw++,e&&(iw+=e.length),e}const fw={default(){switch(pw){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void gw();case"/":return gw(),void(cw="comment");case void 0:return gw(),_w("eof")}if(!Jx.isSpaceSeparator(pw))return fw[ew]();gw()},comment(){switch(pw){case"*":return gw(),void(cw="multiLineComment");case"/":return gw(),void(cw="singleLineComment")}throw xw(gw())},multiLineComment(){switch(pw){case"*":return gw(),void(cw="multiLineCommentAsterisk");case void 0:throw xw(gw())}gw()},multiLineCommentAsterisk(){switch(pw){case"*":return void gw();case"/":return gw(),void(cw="default");case void 0:throw xw(gw())}gw(),cw="multiLineComment"},singleLineComment(){switch(pw){case"\n":case"\r":case"\u2028":case"\u2029":return gw(),void(cw="default");case void 0:return gw(),_w("eof")}gw()},value(){switch(pw){case"{":case"[":return _w("punctuator",gw());case"n":return gw(),vw("ull"),_w("null",null);case"t":return gw(),vw("rue"),_w("boolean",!0);case"f":return gw(),vw("alse"),_w("boolean",!1);case"-":case"+":return"-"===gw()&&(hw=-1),void(cw="sign");case".":return dw=gw(),void(cw="decimalPointLeading");case"0":return dw=gw(),void(cw="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return dw=gw(),void(cw="decimalInteger");case"I":return gw(),vw("nfinity"),_w("numeric",1/0);case"N":return gw(),vw("aN"),_w("numeric",NaN);case'"':case"'":return uw='"'===gw(),dw="",void(cw="string")}throw xw(gw())},identifierNameStartEscape(){if("u"!==pw)throw xw(gw());gw();const e=Ew();switch(e){case"$":case"_":break;default:if(!Jx.isIdStartChar(e))throw Mw()}dw+=e,cw="identifierName"},identifierName(){switch(pw){case"$":case"_":case"":case"":return void(dw+=gw());case"\\":return gw(),void(cw="identifierNameEscape")}if(!Jx.isIdContinueChar(pw))return _w("identifier",dw);dw+=gw()},identifierNameEscape(){if("u"!==pw)throw xw(gw());gw();const e=Ew();switch(e){case"$":case"_":case"":case"":break;default:if(!Jx.isIdContinueChar(e))throw Mw()}dw+=e,cw="identifierName"},sign(){switch(pw){case".":return dw=gw(),void(cw="decimalPointLeading");case"0":return dw=gw(),void(cw="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return dw=gw(),void(cw="decimalInteger");case"I":return gw(),vw("nfinity"),_w("numeric",hw*(1/0));case"N":return gw(),vw("aN"),_w("numeric",NaN)}throw xw(gw())},zero(){switch(pw){case".":return dw+=gw(),void(cw="decimalPoint");case"e":case"E":return dw+=gw(),void(cw="decimalExponent");case"x":case"X":return dw+=gw(),void(cw="hexadecimal")}return _w("numeric",0*hw)},decimalInteger(){switch(pw){case".":return dw+=gw(),void(cw="decimalPoint");case"e":case"E":return dw+=gw(),void(cw="decimalExponent")}if(!Jx.isDigit(pw))return _w("numeric",hw*Number(dw));dw+=gw()},decimalPointLeading(){if(Jx.isDigit(pw))return dw+=gw(),void(cw="decimalFraction");throw xw(gw())},decimalPoint(){switch(pw){case"e":case"E":return dw+=gw(),void(cw="decimalExponent")}return Jx.isDigit(pw)?(dw+=gw(),void(cw="decimalFraction")):_w("numeric",hw*Number(dw))},decimalFraction(){switch(pw){case"e":case"E":return dw+=gw(),void(cw="decimalExponent")}if(!Jx.isDigit(pw))return _w("numeric",hw*Number(dw));dw+=gw()},decimalExponent(){switch(pw){case"+":case"-":return dw+=gw(),void(cw="decimalExponentSign")}if(Jx.isDigit(pw))return dw+=gw(),void(cw="decimalExponentInteger");throw xw(gw())},decimalExponentSign(){if(Jx.isDigit(pw))return dw+=gw(),void(cw="decimalExponentInteger");throw xw(gw())},decimalExponentInteger(){if(!Jx.isDigit(pw))return _w("numeric",hw*Number(dw));dw+=gw()},hexadecimal(){if(Jx.isHexDigit(pw))return dw+=gw(),void(cw="hexadecimalInteger");throw xw(gw())},hexadecimalInteger(){if(!Jx.isHexDigit(pw))return _w("numeric",hw*Number(dw));dw+=gw()},string(){switch(pw){case"\\":return gw(),void(dw+=function(){switch(mw()){case"b":return gw(),"\b";case"f":return gw(),"\f";case"n":return gw(),"\n";case"r":return gw(),"\r";case"t":return gw(),"\t";case"v":return gw(),"\v";case"0":if(gw(),Jx.isDigit(mw()))throw xw(gw());return"\0";case"x":return gw(),function(){let e="",t=mw();if(!Jx.isHexDigit(t))throw xw(gw());if(e+=gw(),t=mw(),!Jx.isHexDigit(t))throw xw(gw());return e+=gw(),String.fromCodePoint(parseInt(e,16))}();case"u":return gw(),Ew();case"\n":case"\u2028":case"\u2029":return gw(),"";case"\r":return gw(),"\n"===mw()&&gw(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw xw(gw())}return gw()}());case'"':return uw?(gw(),_w("string",dw)):void(dw+=gw());case"'":return uw?void(dw+=gw()):(gw(),_w("string",dw));case"\n":case"\r":throw xw(gw());case"\u2028":case"\u2029":!function(e){console.warn(`JSON5: '${Sw(e)}' in strings is not valid ECMAScript; consider escaping`)}(pw);break;case void 0:throw xw(gw())}dw+=gw()},start(){switch(pw){case"{":case"[":return _w("punctuator",gw())}cw="value"},beforePropertyName(){switch(pw){case"$":case"_":return dw=gw(),void(cw="identifierName");case"\\":return gw(),void(cw="identifierNameStartEscape");case"}":return _w("punctuator",gw());case'"':case"'":return uw='"'===gw(),void(cw="string")}if(Jx.isIdStartChar(pw))return dw+=gw(),void(cw="identifierName");throw xw(gw())},afterPropertyName(){if(":"===pw)return _w("punctuator",gw());throw xw(gw())},beforePropertyValue(){cw="value"},afterPropertyValue(){switch(pw){case",":case"}":return _w("punctuator",gw())}throw xw(gw())},beforeArrayValue(){if("]"===pw)return _w("punctuator",gw());cw="value"},afterArrayValue(){switch(pw){case",":case"]":return _w("punctuator",gw())}throw xw(gw())},end(){throw xw(gw())}};function _w(e,t){return{type:e,value:t,line:nw,column:aw}}function vw(e){for(const t of e){if(mw()!==t)throw xw(gw());gw()}}function Ew(){let e="",t=4;for(;t-- >0;){const t=mw();if(!Jx.isHexDigit(t))throw xw(gw());e+=gw()}return String.fromCodePoint(parseInt(e,16))}const bw={start(){if("eof"===rw.type)throw ww();yw()},beforePropertyName(){switch(rw.type){case"identifier":case"string":return sw=rw.value,void(ew="afterPropertyName");case"punctuator":return void kw();case"eof":throw ww()}},afterPropertyName(){if("eof"===rw.type)throw ww();ew="beforePropertyValue"},beforePropertyValue(){if("eof"===rw.type)throw ww();yw()},beforeArrayValue(){if("eof"===rw.type)throw ww();"punctuator"!==rw.type||"]"!==rw.value?yw():kw()},afterPropertyValue(){if("eof"===rw.type)throw ww();switch(rw.value){case",":return void(ew="beforePropertyName");case"}":kw()}},afterArrayValue(){if("eof"===rw.type)throw ww();switch(rw.value){case",":return void(ew="beforeArrayValue");case"]":kw()}},end(){}};function yw(){let e;switch(rw.type){case"punctuator":switch(rw.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=rw.value}if(void 0===ow)ow=e;else{const t=tw[tw.length-1];Array.isArray(t)?t.push(e):Object.defineProperty(t,sw,{value:e,writable:!0,enumerable:!0,configurable:!0})}if(null!==e&&"object"==typeof e)tw.push(e),ew=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{const e=tw[tw.length-1];ew=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}}function kw(){tw.pop();const e=tw[tw.length-1];ew=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function xw(e){return Cw(void 0===e?`JSON5: invalid end of input at ${nw}:${aw}`:`JSON5: invalid character '${Sw(e)}' at ${nw}:${aw}`)}function ww(){return Cw(`JSON5: invalid end of input at ${nw}:${aw}`)}function Mw(){return aw-=5,Cw(`JSON5: invalid identifier character at ${nw}:${aw}`)}function Sw(e){const t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(t[e])return t[e];if(e<" "){const t=e.charCodeAt(0).toString(16);return"\\x"+("00"+t).substring(t.length)}return e}function Cw(e){const t=new SyntaxError(e);return t.lineNumber=nw,t.columnNumber=aw,t}const Tw={parse:function(e,t){$x=String(e),ew="start",tw=[],iw=0,nw=1,aw=0,rw=void 0,sw=void 0,ow=void 0;do{rw=Aw(),bw[ew]()}while("eof"!==rw.type);return"function"==typeof t?lw({"":ow},"",t):ow},stringify:function(e,t,i){const n=[];let a,r,s,o="",l="";if(null==t||"object"!=typeof t||Array.isArray(t)||(i=t.space,s=t.quote,t=t.replacer),"function"==typeof t)r=t;else if(Array.isArray(t)){a=[];for(const e of t){let t;"string"==typeof e?t=e:("number"==typeof e||e instanceof String||e instanceof Number)&&(t=String(e)),void 0!==t&&a.indexOf(t)<0&&a.push(t)}}return i instanceof Number?i=Number(i):i instanceof String&&(i=String(i)),"number"==typeof i?i>0&&(i=Math.min(10,Math.floor(i)),l=" ".substr(0,i)):"string"==typeof i&&(l=i.substr(0,10)),c("",{"":e});function c(e,t){let i=t[e];switch(null!=i&&("function"==typeof i.toJSON5?i=i.toJSON5(e):"function"==typeof i.toJSON&&(i=i.toJSON(e))),r&&(i=r.call(t,e,i)),i instanceof Number?i=Number(i):i instanceof String?i=String(i):i instanceof Boolean&&(i=i.valueOf()),i){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof i?d(i):"number"==typeof i?String(i):"object"==typeof i?Array.isArray(i)?function(e){if(n.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");n.push(e);let t=o;o+=l;let i,a=[];for(let t=0;t<e.length;t++){const i=c(String(t),e);a.push(void 0!==i?i:"null")}if(0===a.length)i="[]";else if(""===l){i="["+a.join(",")+"]"}else{let e=",\n"+o,n=a.join(e);i="[\n"+o+n+",\n"+t+"]"}return n.pop(),o=t,i}(i):function(e){if(n.indexOf(e)>=0)throw TypeError("Converting circular structure to JSON5");n.push(e);let t=o;o+=l;let i,r=a||Object.keys(e),s=[];for(const t of r){const i=c(t,e);if(void 0!==i){let e=u(t)+":";""!==l&&(e+=" "),e+=i,s.push(e)}}if(0===s.length)i="{}";else{let e;if(""===l)e=s.join(","),i="{"+e+"}";else{let n=",\n"+o;e=s.join(n),i="{\n"+o+e+",\n"+t+"}"}}return n.pop(),o=t,i}(i):void 0}function d(e){const t={"'":.1,'"':.2},i={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};let n="";for(let a=0;a<e.length;a++){const r=e[a];switch(r){case"'":case'"':t[r]++,n+=r;continue;case"\0":if(Jx.isDigit(e[a+1])){n+="\\x00";continue}}if(i[r])n+=i[r];else{if(r<" "){let e=r.charCodeAt(0).toString(16);n+="\\x"+("00"+e).substring(e.length);continue}n+=r}}const a=s||Object.keys(t).reduce((e,i)=>t[e]<t[i]?e:i);return n=n.replace(new RegExp(a,"g"),i[a]),a+n+a}function u(e){if(0===e.length)return d(e);const t=String.fromCodePoint(e.codePointAt(0));if(!Jx.isIdStartChar(t))return d(e);for(let i=t.length;i<e.length;i++)if(!Jx.isIdContinueChar(String.fromCodePoint(e.codePointAt(i))))return d(e);return e}}};var Dw=Tw;const Pw=new CSSStyleSheet;Pw.replaceSync("/* atkinson-hyperlegible-next-latin-ext-400-normal */\n@font-face {\n font-family: 'Atkinson Hyperlegible Next';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(https://cdn.jsdelivr.net/npm/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-ext-400-normal.woff2) format('woff2'), url(https://cdn.jsdelivr.net/npm/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-ext-400-normal.woff) format('woff');\n unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;\n}\n\n/* atkinson-hyperlegible-next-latin-400-normal */\n@font-face {\n font-family: 'Atkinson Hyperlegible Next';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url(https://cdn.jsdelivr.net/npm/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-400-normal.woff2) format('woff2'), url(https://cdn.jsdelivr.net/npm/@fontsource/atkinson-hyperlegible-next/files/atkinson-hyperlegible-next-latin-400-normal.woff) format('woff');\n unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;\n}");const Iw=new CSSStyleSheet;Iw.replaceSync('/* Colors */\n:root, :host {\n\t--white: #ffffff;\n\t--black: #181818;\n\t--black-pale: #1b1a17;\n\t--red: #f70000;\n\t--red-transparent: rgba(247, 0, 0, 0.3);\n\t--red-pale: #ff726f;\n\t--grey: #f5f5f5;\n\t--grey-pale: #cfd2cf;\n\t--grey-semi-dark: #808080;\n\t--grey-dark: #3e3e3e;\n\t--blue: #2954e9;\n\t--blue-dark: #0a1f69;\n\t--blue-semi: #d7dffc;\n\t--blue-pale: #f2f5ff;\n\t--blue-geovisio: #34495e;\n\t--beige: #f5f3ec;\n\t--yellow: #fec868;\n\t--orange: #ff6f00;\n\t--orange-transparent: rgba(255,111,0,0.3);\n\t--orange-pale: #fffafa;\n\t--green: #7ec636;\n\t--green-pale: #f0ffee;\n\t--widget-bg: var(--white);\n\t--widget-bg-hover: var(--grey);\n\t--widget-bg-active: var(--blue);\n\t--widget-bg-inactive: var(--grey-pale);\n\t--widget-bg-primary: var(--blue-semi);\n\t--widget-bg-primary-hover: #e0e7ff;\n\t--widget-bg-warn: #FFECB3;\n\t--widget-bg-danger: #FFCDD2;\n\t--widget-bg-success: #C8E6C9;\n\t--widget-border-div: var(--grey-pale);\n\t--widget-border-btn: var(--blue);\n\t--widget-font: var(--grey-dark);\n\t--widget-font-active: var(--white);\n\t--widget-font-direct: var(--blue);\n\t--widget-font-warn: #BF360C;\n\t--widget-font-danger: #B71C1C;\n\t--widget-font-success: #1B5E20;\n\t--font-family: "Atkinson Hyperlegible Next", sans-serif;\n\t--widget-option-left: #6A1B9A;\n\t--widget-option-right: #0D47A1;\n\toverscroll-behavior-y: contain;\n}\n\n.pnx-hidden { display: none !important; }\n\n/* Hidden elements on mobile */\n@container (max-width: 576px) {\n\t.pnx-mobile-hidden { display: none !important; }\n}\n\n/* Hidden elements on print */\n@media print {\n\t.pnx-print-hidden { display: none !important; }\n}\n'),document.adoptedStyleSheets.push(Pw),document.adoptedStyleSheets.push(Iw);class Lw extends le{static properties={picture:{type:String,reflect:!0},sequence:{type:String,reflect:!0},"fetch-options":{converter:Lw.GetJSONConverter()},lang:{type:String},endpoint:{type:String}};constructor(e=!1){super(),this.lang=this.getAttribute("lang")||null,this.endpoint=this.getAttribute("endpoint")||null,this.picture=this.getAttribute("picture")||null,this.sequence=this.getAttribute("sequence")||null,console.info(`📷 Panoramax ${this.getClassName()} - Version 5.2.0 (100d0be)\n\n🆘 Issues can be reported at https://gitlab.com/panoramax/clients/web-viewer/-/work_items`),e||(this._isInternetFast=null,ps().then(e=>this._isInternetFast=e))}connectedCallback(){super.connectedCallback(),this._t=Ax(this.lang),this.loader=zr("pnx-loader",{_parent:this,"no-label":us()}),this._loadsAPI&&this.endpoint&&this._loadsAPI===this.endpoint||this.api&&this.api._endpoint===this.endpoint||!this.endpoint||((this._loadsAPI||this.api)&&(delete this.api,delete this._loadsAPI),this._setupAPI()),Object.entries({map:"map-options",psv:"psv-options",fetchOptions:"fetch-options",mapstyle:"map-style"}).forEach(([e,t])=>{this.getAttribute(e)&&console.error(`Component attribute "${e}" has been renamed into "${t}". Old attribute "${e}" is ignored.`)}),us()&&this.classList.add("pnx-iframed")}_setupAPI(){if(this.loader=this.loader||zr("pnx-loader",{_parent:this}),!this.endpoint)return void console.warn("No endpoint is defined");this._loadsAPI=this.endpoint;let e=this.endpoint;try{this.api=new Zx(this.endpoint,{fetch:this["fetch-options"]}),this.api.onceReady().then(()=>{if(e!==this._loadsAPI||!this.api)return;let t=this.api.getUnavailableFeatures(),i=this.api.getAvailableFeatures();i=0===t.length?"✅ All features available":"✅ Available features: "+i.join(", "),t=0===t.length?"":"🚫 Unavailable features: "+t.join(", "),console.info(`🌐 Connected to API "${this.api._metadata.name}" (${this.api._endpoint})\nℹ️ API runs STAC ${this.api._metadata.stac_version} ${this.api._metadata.geovisio_version?"& GeoVisio "+this.api._metadata.geovisio_version:""}\n ${i}\n ${t}\n`.trim())}).catch(e=>this.loader?.dismiss?.(e,this._t?.pnx.error_api)).finally(()=>delete this._loadsAPI)}catch(e){delete this._loadsAPI,this.loader?.dismiss?this.loader.dismiss(e,this._t.pnx.error_api):console.error(e)}}onceReady(){throw new Error("You must override this method on sub-class")}onceAPIReady(){return this.api?this.api.onceReady():new Promise(e=>setTimeout(e,250)).then(this.onceAPIReady.bind(this))}createRenderRoot(){return this}attributeChangedCallback(e,t,i){if(super.attributeChangedCallback(e,t,i),"endpoint"===e&&(this._loadsAPI&&i&&this._loadsAPI===i||this.api&&this.api._endpoint===i||!i||((this._loadsAPI||this.api)&&(delete this.api,delete this._loadsAPI),this._setupAPI())),["picture","sequence"].includes(e)){let n,a,r,s;"picture"===e?(n=this.sequence,r=this.sequence,a=i,s=t):(n=i,r=t,a=this.picture,s=this.picture),this.dispatchEvent(new CustomEvent("select",{bubbles:!0,composed:!0,detail:{seqId:n,picId:a,prevSeqId:r,prevPicId:s}}))}}getClassName(){return"Basic"}select(e=null,t=null,i=!1){i&&(this.picture=null,this.sequence=null),this.picture=t,this.sequence=e}isWidthSmall(){return this?.offsetWidth<576}isWidthMedium(){return this?.offsetWidth>=576&&this?.offsetWidth<768}isHeightSmall(){return this?.offsetHeight<400}render(){return V`<p>Should not be used directly, use Viewer/CoverageMap/Editor instead</p>`}getSubComponentsNames(){return["loader","api"]}getAPI(){return this.api}addEventListener(e,t,i){let n=e.split(":").shift();if(n&&this.getSubComponentsNames().includes(n)){const a=e.substring(n.length+1);this[n]?.addEventListener?this[n].addEventListener(a,t,i):setTimeout(()=>this.addEventListener(e,t,i),50)}else super.addEventListener(e,t,i)}static GetJSONConverter(){return{fromAttribute:e=>null==e||""===e?null:"object"==typeof e||Array.isArray(e)?e:Dw.parse(e),toAttribute:e=>null==e||""===e?"":"string"==typeof e?e:Dw.stringify(e)}}}class zw extends le{static styles=[Po,s`
|
|
2058
2058
|
textarea:invalid {
|
|
2059
2059
|
border: 2px solid var(--red);
|
|
2060
2060
|
background-color:var(--beige);
|
|
@@ -9,8 +9,8 @@ import BasicStyles from "./Basic.css" with { type: "css" };
|
|
|
9
9
|
document.adoptedStyleSheets.push(AtkinsonStyles);
|
|
10
10
|
document.adoptedStyleSheets.push(BasicStyles);
|
|
11
11
|
|
|
12
|
-
const __COMMIT_HASH__ = "
|
|
13
|
-
const __PACKAGE_VERSION__ = "5.
|
|
12
|
+
const __COMMIT_HASH__ = "100d0be";
|
|
13
|
+
const __PACKAGE_VERSION__ = "5.2.0";
|
|
14
14
|
const __PACKAGE_ISSUES_URL__ = "https://gitlab.com/panoramax/clients/web-viewer/-/work_items";
|
|
15
15
|
|
|
16
16
|
/**
|
package/package.json
CHANGED