@panoramax/web-viewer 5.0.0-develop-1f5f0b87 → 5.0.0-develop-ce6422f8
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.
|
@@ -2094,7 +2094,7 @@ function*(e,t){if(void 0!==e){let i=0;for(const n of e)yield t(n,i++)}}(this._re
|
|
|
2094
2094
|
`)}
|
|
2095
2095
|
</div>
|
|
2096
2096
|
`:q}
|
|
2097
|
-
</div>`}}customElements.define("pnx-search-bar",tk);class ik 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),!ik.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.find(e=>e.rel===t.rel&&e.type===t.type);if(a){if(!ik.isValidHttpUrl(a.href))throw new Error(`API endpoint '${a.rel}' (${a.type}) is not a valid URL: ${a.href}`);this._endpoints[t.endpointId]||(this._endpoints[t.endpointId]=a.href)}else 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)}}),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 ik.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(ik.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&&ik.isValidHttpUrl(i.href))return this.cleanResourceURL(i.href);i.roles.includes("visual")&&"image/jpeg"===i.type&&ik.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&&ik.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()})}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(Zr(e))throw new Error("id should be a valid picture unique identifier");return!0}}var nk={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]/},ak={isSpaceSeparator:e=>"string"==typeof e&&nk.Space_Separator.test(e),isIdStartChar:e=>"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||nk.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||nk.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 rk,sk,ok,lk,ck,dk,uk,hk,pk;function Ak(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=Ak(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=Ak(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 mk,gk,fk,_k,vk;function Ek(){for(mk="default",gk="",fk=!1,_k=1;;){vk=bk();const e=xk[mk]();if(e)return e}}function bk(){if(rk[lk])return String.fromCodePoint(rk.codePointAt(lk))}function yk(){const e=bk();return"\n"===e?(ck++,dk=0):e?dk+=e.length:dk++,e&&(lk+=e.length),e}const xk={default(){switch(vk){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void yk();case"/":return yk(),void(mk="comment");case void 0:return yk(),kk("eof")}if(!ak.isSpaceSeparator(vk))return xk[sk]();yk()},comment(){switch(vk){case"*":return yk(),void(mk="multiLineComment");case"/":return yk(),void(mk="singleLineComment")}throw Dk(yk())},multiLineComment(){switch(vk){case"*":return yk(),void(mk="multiLineCommentAsterisk");case void 0:throw Dk(yk())}yk()},multiLineCommentAsterisk(){switch(vk){case"*":return void yk();case"/":return yk(),void(mk="default");case void 0:throw Dk(yk())}yk(),mk="multiLineComment"},singleLineComment(){switch(vk){case"\n":case"\r":case"\u2028":case"\u2029":return yk(),void(mk="default");case void 0:return yk(),kk("eof")}yk()},value(){switch(vk){case"{":case"[":return kk("punctuator",yk());case"n":return yk(),wk("ull"),kk("null",null);case"t":return yk(),wk("rue"),kk("boolean",!0);case"f":return yk(),wk("alse"),kk("boolean",!1);case"-":case"+":return"-"===yk()&&(_k=-1),void(mk="sign");case".":return gk=yk(),void(mk="decimalPointLeading");case"0":return gk=yk(),void(mk="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return gk=yk(),void(mk="decimalInteger");case"I":return yk(),wk("nfinity"),kk("numeric",1/0);case"N":return yk(),wk("aN"),kk("numeric",NaN);case'"':case"'":return fk='"'===yk(),gk="",void(mk="string")}throw Dk(yk())},identifierNameStartEscape(){if("u"!==vk)throw Dk(yk());yk();const e=Mk();switch(e){case"$":case"_":break;default:if(!ak.isIdStartChar(e))throw Ik()}gk+=e,mk="identifierName"},identifierName(){switch(vk){case"$":case"_":case"":case"":return void(gk+=yk());case"\\":return yk(),void(mk="identifierNameEscape")}if(!ak.isIdContinueChar(vk))return kk("identifier",gk);gk+=yk()},identifierNameEscape(){if("u"!==vk)throw Dk(yk());yk();const e=Mk();switch(e){case"$":case"_":case"":case"":break;default:if(!ak.isIdContinueChar(e))throw Ik()}gk+=e,mk="identifierName"},sign(){switch(vk){case".":return gk=yk(),void(mk="decimalPointLeading");case"0":return gk=yk(),void(mk="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return gk=yk(),void(mk="decimalInteger");case"I":return yk(),wk("nfinity"),kk("numeric",_k*(1/0));case"N":return yk(),wk("aN"),kk("numeric",NaN)}throw Dk(yk())},zero(){switch(vk){case".":return gk+=yk(),void(mk="decimalPoint");case"e":case"E":return gk+=yk(),void(mk="decimalExponent");case"x":case"X":return gk+=yk(),void(mk="hexadecimal")}return kk("numeric",0*_k)},decimalInteger(){switch(vk){case".":return gk+=yk(),void(mk="decimalPoint");case"e":case"E":return gk+=yk(),void(mk="decimalExponent")}if(!ak.isDigit(vk))return kk("numeric",_k*Number(gk));gk+=yk()},decimalPointLeading(){if(ak.isDigit(vk))return gk+=yk(),void(mk="decimalFraction");throw Dk(yk())},decimalPoint(){switch(vk){case"e":case"E":return gk+=yk(),void(mk="decimalExponent")}return ak.isDigit(vk)?(gk+=yk(),void(mk="decimalFraction")):kk("numeric",_k*Number(gk))},decimalFraction(){switch(vk){case"e":case"E":return gk+=yk(),void(mk="decimalExponent")}if(!ak.isDigit(vk))return kk("numeric",_k*Number(gk));gk+=yk()},decimalExponent(){switch(vk){case"+":case"-":return gk+=yk(),void(mk="decimalExponentSign")}if(ak.isDigit(vk))return gk+=yk(),void(mk="decimalExponentInteger");throw Dk(yk())},decimalExponentSign(){if(ak.isDigit(vk))return gk+=yk(),void(mk="decimalExponentInteger");throw Dk(yk())},decimalExponentInteger(){if(!ak.isDigit(vk))return kk("numeric",_k*Number(gk));gk+=yk()},hexadecimal(){if(ak.isHexDigit(vk))return gk+=yk(),void(mk="hexadecimalInteger");throw Dk(yk())},hexadecimalInteger(){if(!ak.isHexDigit(vk))return kk("numeric",_k*Number(gk));gk+=yk()},string(){switch(vk){case"\\":return yk(),void(gk+=function(){switch(bk()){case"b":return yk(),"\b";case"f":return yk(),"\f";case"n":return yk(),"\n";case"r":return yk(),"\r";case"t":return yk(),"\t";case"v":return yk(),"\v";case"0":if(yk(),ak.isDigit(bk()))throw Dk(yk());return"\0";case"x":return yk(),function(){let e="",t=bk();if(!ak.isHexDigit(t))throw Dk(yk());if(e+=yk(),t=bk(),!ak.isHexDigit(t))throw Dk(yk());return e+=yk(),String.fromCodePoint(parseInt(e,16))}();case"u":return yk(),Mk();case"\n":case"\u2028":case"\u2029":return yk(),"";case"\r":return yk(),"\n"===bk()&&yk(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw Dk(yk())}return yk()}());case'"':return fk?(yk(),kk("string",gk)):void(gk+=yk());case"'":return fk?void(gk+=yk()):(yk(),kk("string",gk));case"\n":case"\r":throw Dk(yk());case"\u2028":case"\u2029":!function(e){console.warn(`JSON5: '${Lk(e)}' in strings is not valid ECMAScript; consider escaping`)}(vk);break;case void 0:throw Dk(yk())}gk+=yk()},start(){switch(vk){case"{":case"[":return kk("punctuator",yk())}mk="value"},beforePropertyName(){switch(vk){case"$":case"_":return gk=yk(),void(mk="identifierName");case"\\":return yk(),void(mk="identifierNameStartEscape");case"}":return kk("punctuator",yk());case'"':case"'":return fk='"'===yk(),void(mk="string")}if(ak.isIdStartChar(vk))return gk+=yk(),void(mk="identifierName");throw Dk(yk())},afterPropertyName(){if(":"===vk)return kk("punctuator",yk());throw Dk(yk())},beforePropertyValue(){mk="value"},afterPropertyValue(){switch(vk){case",":case"}":return kk("punctuator",yk())}throw Dk(yk())},beforeArrayValue(){if("]"===vk)return kk("punctuator",yk());mk="value"},afterArrayValue(){switch(vk){case",":case"]":return kk("punctuator",yk())}throw Dk(yk())},end(){throw Dk(yk())}};function kk(e,t){return{type:e,value:t,line:ck,column:dk}}function wk(e){for(const t of e){if(bk()!==t)throw Dk(yk());yk()}}function Mk(){let e="",t=4;for(;t-- >0;){const t=bk();if(!ak.isHexDigit(t))throw Dk(yk());e+=yk()}return String.fromCodePoint(parseInt(e,16))}const Sk={start(){if("eof"===uk.type)throw Pk();Ck()},beforePropertyName(){switch(uk.type){case"identifier":case"string":return hk=uk.value,void(sk="afterPropertyName");case"punctuator":return void Tk();case"eof":throw Pk()}},afterPropertyName(){if("eof"===uk.type)throw Pk();sk="beforePropertyValue"},beforePropertyValue(){if("eof"===uk.type)throw Pk();Ck()},beforeArrayValue(){if("eof"===uk.type)throw Pk();"punctuator"!==uk.type||"]"!==uk.value?Ck():Tk()},afterPropertyValue(){if("eof"===uk.type)throw Pk();switch(uk.value){case",":return void(sk="beforePropertyName");case"}":Tk()}},afterArrayValue(){if("eof"===uk.type)throw Pk();switch(uk.value){case",":return void(sk="beforeArrayValue");case"]":Tk()}},end(){}};function Ck(){let e;switch(uk.type){case"punctuator":switch(uk.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=uk.value}if(void 0===pk)pk=e;else{const t=ok[ok.length-1];Array.isArray(t)?t.push(e):Object.defineProperty(t,hk,{value:e,writable:!0,enumerable:!0,configurable:!0})}if(null!==e&&"object"==typeof e)ok.push(e),sk=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{const e=ok[ok.length-1];sk=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}}function Tk(){ok.pop();const e=ok[ok.length-1];sk=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function Dk(e){return Rk(void 0===e?`JSON5: invalid end of input at ${ck}:${dk}`:`JSON5: invalid character '${Lk(e)}' at ${ck}:${dk}`)}function Pk(){return Rk(`JSON5: invalid end of input at ${ck}:${dk}`)}function Ik(){return dk-=5,Rk(`JSON5: invalid identifier character at ${ck}:${dk}`)}function Lk(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 Rk(e){const t=new SyntaxError(e);return t.lineNumber=ck,t.columnNumber=dk,t}const Fk={parse:function(e,t){rk=String(e),sk="start",ok=[],lk=0,ck=1,dk=0,uk=void 0,hk=void 0,pk=void 0;do{uk=Ek(),Sk[sk]()}while("eof"!==uk.type);return"function"==typeof t?Ak({"":pk},"",t):pk},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(ak.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(!ak.isIdStartChar(t))return d(e);for(let i=t.length;i<e.length;i++)if(!ak.isIdContinueChar(String.fromCodePoint(e.codePointAt(i))))return d(e);return e}}};var zk=Fk;const Uk=new CSSStyleSheet;Uk.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 Bk=new CSSStyleSheet;Bk.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-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-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(Uk),document.adoptedStyleSheets.push(Bk);class Nk extends oe{static properties={picture:{type:String,reflect:!0},sequence:{type:String,reflect:!0},"fetch-options":{converter:Nk.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.0.0 (1f5f0b8)\n\n🆘 Issues can be reported at https://gitlab.com/panoramax/clients/web-viewer/-/work_items`),e||(this._isInternetFast=null,hs().then(e=>this._isInternetFast=e))}connectedCallback(){super.connectedCallback(),this._t=Ex(this.lang),this.loader=Lr("pnx-loader",{_parent:this,"no-label":ds()}),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.`)}),ds()&&this.classList.add("pnx-iframed")}_setupAPI(){if(this.loader=this.loader||Lr("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 ik(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 H`<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:zk.parse(e),toAttribute:e=>null==e||""===e?"":"string"==typeof e?e:zk.stringify(e)}}}class Ok extends oe{static styles=[Do,s`
|
|
2097
|
+
</div>`}}customElements.define("pnx-search-bar",tk);class ik 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),!ik.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.find(e=>e.rel===t.rel&&e.type===t.type);if(a){if(!ik.isValidHttpUrl(a.href))throw new Error(`API endpoint '${a.rel}' (${a.type}) is not a valid URL: ${a.href}`);this._endpoints[t.endpointId]||(this._endpoints[t.endpointId]=a.href)}else 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)}}),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 ik.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(ik.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&&ik.isValidHttpUrl(i.href))return this.cleanResourceURL(i.href);i.roles.includes("visual")&&"image/jpeg"===i.type&&ik.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&&ik.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()})}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(Zr(e))throw new Error("id should be a valid picture unique identifier");return!0}}var nk={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]/},ak={isSpaceSeparator:e=>"string"==typeof e&&nk.Space_Separator.test(e),isIdStartChar:e=>"string"==typeof e&&(e>="a"&&e<="z"||e>="A"&&e<="Z"||"$"===e||"_"===e||nk.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||nk.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 rk,sk,ok,lk,ck,dk,uk,hk,pk;function Ak(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=Ak(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=Ak(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 mk,gk,fk,_k,vk;function Ek(){for(mk="default",gk="",fk=!1,_k=1;;){vk=bk();const e=xk[mk]();if(e)return e}}function bk(){if(rk[lk])return String.fromCodePoint(rk.codePointAt(lk))}function yk(){const e=bk();return"\n"===e?(ck++,dk=0):e?dk+=e.length:dk++,e&&(lk+=e.length),e}const xk={default(){switch(vk){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void yk();case"/":return yk(),void(mk="comment");case void 0:return yk(),kk("eof")}if(!ak.isSpaceSeparator(vk))return xk[sk]();yk()},comment(){switch(vk){case"*":return yk(),void(mk="multiLineComment");case"/":return yk(),void(mk="singleLineComment")}throw Dk(yk())},multiLineComment(){switch(vk){case"*":return yk(),void(mk="multiLineCommentAsterisk");case void 0:throw Dk(yk())}yk()},multiLineCommentAsterisk(){switch(vk){case"*":return void yk();case"/":return yk(),void(mk="default");case void 0:throw Dk(yk())}yk(),mk="multiLineComment"},singleLineComment(){switch(vk){case"\n":case"\r":case"\u2028":case"\u2029":return yk(),void(mk="default");case void 0:return yk(),kk("eof")}yk()},value(){switch(vk){case"{":case"[":return kk("punctuator",yk());case"n":return yk(),wk("ull"),kk("null",null);case"t":return yk(),wk("rue"),kk("boolean",!0);case"f":return yk(),wk("alse"),kk("boolean",!1);case"-":case"+":return"-"===yk()&&(_k=-1),void(mk="sign");case".":return gk=yk(),void(mk="decimalPointLeading");case"0":return gk=yk(),void(mk="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return gk=yk(),void(mk="decimalInteger");case"I":return yk(),wk("nfinity"),kk("numeric",1/0);case"N":return yk(),wk("aN"),kk("numeric",NaN);case'"':case"'":return fk='"'===yk(),gk="",void(mk="string")}throw Dk(yk())},identifierNameStartEscape(){if("u"!==vk)throw Dk(yk());yk();const e=Mk();switch(e){case"$":case"_":break;default:if(!ak.isIdStartChar(e))throw Ik()}gk+=e,mk="identifierName"},identifierName(){switch(vk){case"$":case"_":case"":case"":return void(gk+=yk());case"\\":return yk(),void(mk="identifierNameEscape")}if(!ak.isIdContinueChar(vk))return kk("identifier",gk);gk+=yk()},identifierNameEscape(){if("u"!==vk)throw Dk(yk());yk();const e=Mk();switch(e){case"$":case"_":case"":case"":break;default:if(!ak.isIdContinueChar(e))throw Ik()}gk+=e,mk="identifierName"},sign(){switch(vk){case".":return gk=yk(),void(mk="decimalPointLeading");case"0":return gk=yk(),void(mk="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return gk=yk(),void(mk="decimalInteger");case"I":return yk(),wk("nfinity"),kk("numeric",_k*(1/0));case"N":return yk(),wk("aN"),kk("numeric",NaN)}throw Dk(yk())},zero(){switch(vk){case".":return gk+=yk(),void(mk="decimalPoint");case"e":case"E":return gk+=yk(),void(mk="decimalExponent");case"x":case"X":return gk+=yk(),void(mk="hexadecimal")}return kk("numeric",0*_k)},decimalInteger(){switch(vk){case".":return gk+=yk(),void(mk="decimalPoint");case"e":case"E":return gk+=yk(),void(mk="decimalExponent")}if(!ak.isDigit(vk))return kk("numeric",_k*Number(gk));gk+=yk()},decimalPointLeading(){if(ak.isDigit(vk))return gk+=yk(),void(mk="decimalFraction");throw Dk(yk())},decimalPoint(){switch(vk){case"e":case"E":return gk+=yk(),void(mk="decimalExponent")}return ak.isDigit(vk)?(gk+=yk(),void(mk="decimalFraction")):kk("numeric",_k*Number(gk))},decimalFraction(){switch(vk){case"e":case"E":return gk+=yk(),void(mk="decimalExponent")}if(!ak.isDigit(vk))return kk("numeric",_k*Number(gk));gk+=yk()},decimalExponent(){switch(vk){case"+":case"-":return gk+=yk(),void(mk="decimalExponentSign")}if(ak.isDigit(vk))return gk+=yk(),void(mk="decimalExponentInteger");throw Dk(yk())},decimalExponentSign(){if(ak.isDigit(vk))return gk+=yk(),void(mk="decimalExponentInteger");throw Dk(yk())},decimalExponentInteger(){if(!ak.isDigit(vk))return kk("numeric",_k*Number(gk));gk+=yk()},hexadecimal(){if(ak.isHexDigit(vk))return gk+=yk(),void(mk="hexadecimalInteger");throw Dk(yk())},hexadecimalInteger(){if(!ak.isHexDigit(vk))return kk("numeric",_k*Number(gk));gk+=yk()},string(){switch(vk){case"\\":return yk(),void(gk+=function(){switch(bk()){case"b":return yk(),"\b";case"f":return yk(),"\f";case"n":return yk(),"\n";case"r":return yk(),"\r";case"t":return yk(),"\t";case"v":return yk(),"\v";case"0":if(yk(),ak.isDigit(bk()))throw Dk(yk());return"\0";case"x":return yk(),function(){let e="",t=bk();if(!ak.isHexDigit(t))throw Dk(yk());if(e+=yk(),t=bk(),!ak.isHexDigit(t))throw Dk(yk());return e+=yk(),String.fromCodePoint(parseInt(e,16))}();case"u":return yk(),Mk();case"\n":case"\u2028":case"\u2029":return yk(),"";case"\r":return yk(),"\n"===bk()&&yk(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw Dk(yk())}return yk()}());case'"':return fk?(yk(),kk("string",gk)):void(gk+=yk());case"'":return fk?void(gk+=yk()):(yk(),kk("string",gk));case"\n":case"\r":throw Dk(yk());case"\u2028":case"\u2029":!function(e){console.warn(`JSON5: '${Lk(e)}' in strings is not valid ECMAScript; consider escaping`)}(vk);break;case void 0:throw Dk(yk())}gk+=yk()},start(){switch(vk){case"{":case"[":return kk("punctuator",yk())}mk="value"},beforePropertyName(){switch(vk){case"$":case"_":return gk=yk(),void(mk="identifierName");case"\\":return yk(),void(mk="identifierNameStartEscape");case"}":return kk("punctuator",yk());case'"':case"'":return fk='"'===yk(),void(mk="string")}if(ak.isIdStartChar(vk))return gk+=yk(),void(mk="identifierName");throw Dk(yk())},afterPropertyName(){if(":"===vk)return kk("punctuator",yk());throw Dk(yk())},beforePropertyValue(){mk="value"},afterPropertyValue(){switch(vk){case",":case"}":return kk("punctuator",yk())}throw Dk(yk())},beforeArrayValue(){if("]"===vk)return kk("punctuator",yk());mk="value"},afterArrayValue(){switch(vk){case",":case"]":return kk("punctuator",yk())}throw Dk(yk())},end(){throw Dk(yk())}};function kk(e,t){return{type:e,value:t,line:ck,column:dk}}function wk(e){for(const t of e){if(bk()!==t)throw Dk(yk());yk()}}function Mk(){let e="",t=4;for(;t-- >0;){const t=bk();if(!ak.isHexDigit(t))throw Dk(yk());e+=yk()}return String.fromCodePoint(parseInt(e,16))}const Sk={start(){if("eof"===uk.type)throw Pk();Ck()},beforePropertyName(){switch(uk.type){case"identifier":case"string":return hk=uk.value,void(sk="afterPropertyName");case"punctuator":return void Tk();case"eof":throw Pk()}},afterPropertyName(){if("eof"===uk.type)throw Pk();sk="beforePropertyValue"},beforePropertyValue(){if("eof"===uk.type)throw Pk();Ck()},beforeArrayValue(){if("eof"===uk.type)throw Pk();"punctuator"!==uk.type||"]"!==uk.value?Ck():Tk()},afterPropertyValue(){if("eof"===uk.type)throw Pk();switch(uk.value){case",":return void(sk="beforePropertyName");case"}":Tk()}},afterArrayValue(){if("eof"===uk.type)throw Pk();switch(uk.value){case",":return void(sk="beforeArrayValue");case"]":Tk()}},end(){}};function Ck(){let e;switch(uk.type){case"punctuator":switch(uk.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=uk.value}if(void 0===pk)pk=e;else{const t=ok[ok.length-1];Array.isArray(t)?t.push(e):Object.defineProperty(t,hk,{value:e,writable:!0,enumerable:!0,configurable:!0})}if(null!==e&&"object"==typeof e)ok.push(e),sk=Array.isArray(e)?"beforeArrayValue":"beforePropertyName";else{const e=ok[ok.length-1];sk=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}}function Tk(){ok.pop();const e=ok[ok.length-1];sk=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function Dk(e){return Rk(void 0===e?`JSON5: invalid end of input at ${ck}:${dk}`:`JSON5: invalid character '${Lk(e)}' at ${ck}:${dk}`)}function Pk(){return Rk(`JSON5: invalid end of input at ${ck}:${dk}`)}function Ik(){return dk-=5,Rk(`JSON5: invalid identifier character at ${ck}:${dk}`)}function Lk(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 Rk(e){const t=new SyntaxError(e);return t.lineNumber=ck,t.columnNumber=dk,t}const Fk={parse:function(e,t){rk=String(e),sk="start",ok=[],lk=0,ck=1,dk=0,uk=void 0,hk=void 0,pk=void 0;do{uk=Ek(),Sk[sk]()}while("eof"!==uk.type);return"function"==typeof t?Ak({"":pk},"",t):pk},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(ak.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(!ak.isIdStartChar(t))return d(e);for(let i=t.length;i<e.length;i++)if(!ak.isIdContinueChar(String.fromCodePoint(e.codePointAt(i))))return d(e);return e}}};var zk=Fk;const Uk=new CSSStyleSheet;Uk.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 Bk=new CSSStyleSheet;Bk.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-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-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(Uk),document.adoptedStyleSheets.push(Bk);class Nk extends oe{static properties={picture:{type:String,reflect:!0},sequence:{type:String,reflect:!0},"fetch-options":{converter:Nk.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.0.0 (ce6422f)\n\n🆘 Issues can be reported at https://gitlab.com/panoramax/clients/web-viewer/-/work_items`),e||(this._isInternetFast=null,hs().then(e=>this._isInternetFast=e))}connectedCallback(){super.connectedCallback(),this._t=Ex(this.lang),this.loader=Lr("pnx-loader",{_parent:this,"no-label":ds()}),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.`)}),ds()&&this.classList.add("pnx-iframed")}_setupAPI(){if(this.loader=this.loader||Lr("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 ik(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 H`<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:zk.parse(e),toAttribute:e=>null==e||""===e?"":"string"==typeof e?e:zk.stringify(e)}}}class Ok extends oe{static styles=[Do,s`
|
|
2098
2098
|
textarea:invalid {
|
|
2099
2099
|
border: 2px solid var(--red);
|
|
2100
2100
|
background-color:var(--beige);
|
|
@@ -9,7 +9,7 @@ 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__ = "
|
|
12
|
+
const __COMMIT_HASH__ = "ce6422f";
|
|
13
13
|
const __PACKAGE_VERSION__ = "5.0.0";
|
|
14
14
|
const __PACKAGE_ISSUES_URL__ = "https://gitlab.com/panoramax/clients/web-viewer/-/work_items";
|
|
15
15
|
|
|
@@ -1 +1,53 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"pnx": {
|
|
3
|
+
"sequence_next": "Επόμενη εικόνα στην ακολουθία",
|
|
4
|
+
"zoom": "Εστίαση",
|
|
5
|
+
"zoomOut": "Σμίκρυνση",
|
|
6
|
+
"zoomIn": "Μεγέθυνση",
|
|
7
|
+
"moveLeft": "Μετακίνηση αριστερά",
|
|
8
|
+
"moveRight": "Μετακίνηση δεξιά",
|
|
9
|
+
"expand": "Επέκταση",
|
|
10
|
+
"show_psv": "Εμφάνιση του προβολέα φωτογραφιών",
|
|
11
|
+
"show_map": "Εμφάνιση του χάρτη",
|
|
12
|
+
"minimize_short": "Απόκρυψη",
|
|
13
|
+
"options": "Επιλογές",
|
|
14
|
+
"search": "Αναζήτηση",
|
|
15
|
+
"search_empty": "Δεν βρέθηκαν αποτελέσματα",
|
|
16
|
+
"search_user": "Αναζητήστε ένα όνομα χρήστη…",
|
|
17
|
+
"share": "Διαμοιρασμός",
|
|
18
|
+
"share_image": "HD Εικόνα",
|
|
19
|
+
"share_rss": "RSS ροή",
|
|
20
|
+
"share_embed": "Ενσωμάτωση στον ιστότοπό σας",
|
|
21
|
+
"share_print": "Εκτύπωση",
|
|
22
|
+
"panoramax": "Panoramax",
|
|
23
|
+
"copy": "Αντιγραφή",
|
|
24
|
+
"copied": "Αντιγράφηκε",
|
|
25
|
+
"error": "Έχουμε ένα πρόβλημα…",
|
|
26
|
+
"error_click": "Συνέχεια",
|
|
27
|
+
"error_retry": "Παρακαλούμε δοκιμάστε ξανά αργότερα",
|
|
28
|
+
"sequence_pause": "Παύση ακολουθίας",
|
|
29
|
+
"sequence_prev": "Προηγούμενη εικόνα στην ακολουθία",
|
|
30
|
+
"sequence_more": "Περισσότερες επιλογές αναπαραγωγής",
|
|
31
|
+
"legend_license": "Άδεια: {l}",
|
|
32
|
+
"legend_title": "Εμφάνιση λεπτομερειών εικόνας",
|
|
33
|
+
"id": "iD",
|
|
34
|
+
"sequence_play": "Αναπαραγωγή αυτής της ακολουθίας",
|
|
35
|
+
"geo_uri": "Εξωτερική εφαρμογή",
|
|
36
|
+
"josm": "JOSM",
|
|
37
|
+
"report_wait": "Γίνεται αποστολή της αναφοράς…",
|
|
38
|
+
"moveUp": "Μετακίνηση πάνω",
|
|
39
|
+
"search_address": "Αναζητήστε μια διεύθυνση, πόλη…",
|
|
40
|
+
"share_links": "Σύνδεσμοι",
|
|
41
|
+
"report_success": "Η αναφορά απεστάλει με επιτυχία. Θα ελεγχεί το συντομότερο δυνατόν.",
|
|
42
|
+
"moveDown": "Μετακίνηση κάτω",
|
|
43
|
+
"filters": "Φίλτρα",
|
|
44
|
+
"layers": "Επίπεδα",
|
|
45
|
+
"share_page": "Σύνδεσμος προς αυτήν την εικόνα",
|
|
46
|
+
"share_embed_docs": "Διαβάστε περισσότερα για την διαμόρφωση της ενσωμάτωσης",
|
|
47
|
+
"sequence_speed": "Ταχύτητα αναπαραγωγής",
|
|
48
|
+
"report_submit": "Υποβολή"
|
|
49
|
+
},
|
|
50
|
+
"maplibre": {
|
|
51
|
+
"GeolocateControl.LocationNotAvailable": "Τοποθεσία μη διαθέσιμη"
|
|
52
|
+
}
|
|
53
|
+
}
|
package/package.json
CHANGED