From c7889eaa2c1deaf1bef202a0e44b8fc9f0f2b76d Mon Sep 17 00:00:00 2001 From: Matt Walsh Date: Tue, 8 Oct 2024 09:52:04 -0500 Subject: [PATCH 1/3] hazards only on first run through after load/refresh sorting of hazards based on type tornado, hurricane, etc 5.13.0 --- dist/index.html | 2 +- dist/resources/ws.min.js | 2 +- package-lock.json | 1544 ++++++++++++++-------------- package.json | 4 +- server/scripts/modules/hazards.mjs | 32 +- server/scripts/modules/icons.mjs | 450 ++++---- 6 files changed, 1057 insertions(+), 977 deletions(-) diff --git a/dist/index.html b/dist/index.html index 79d8554..89c4895 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1 +1 @@ -WeatherStar 4000+
WeatherStar 4000+
v5.11.7
Enter your location above to continue
WeatherStar
4000+ v5.11.7
Current Conditions
Hourly Forecast
TEMP
WIND
Hourly Graph
Temperature
Cloud %
Precip %
75
65
55
12a
6a
12p
6p
12a
Travel Forecast
For
LOW
HIGH
Current
Conditions
Wind:
Humidity:
Dewpoint:
Ceiling:
Visibility:
Pressure:
Local
Forecast
Latest
Observations
°F
°C
Weather
Wind
Regional
Observations
Almanac
Monday
Tuesday
Sunrise:
6:24 am
6:25 am
Sunset:
6:24 am
6:25 am
Moon Data:
Extended
Forecast
Lo
Hi
Local
Radar
PRECIP
Light
Heavy

More information
Selected displays
Settings
Sharing
Copy Permalink Link copied to clipboard!
Forecast Information
Location:
Station Id:
Radar Id:
Zone Id:
Last Update: (None)
\ No newline at end of file +WeatherStar 4000+
WeatherStar 4000+
v5.13.0
Enter your location above to continue
WeatherStar
4000+ v5.13.0
Current Conditions
Hourly Forecast
TEMP
WIND
Hourly Graph
Temperature
Cloud %
Precip %
75
65
55
12a
6a
12p
6p
12a
Travel Forecast
For
LOW
HIGH
Current
Conditions
Wind:
Humidity:
Dewpoint:
Ceiling:
Visibility:
Pressure:
Local
Forecast
Latest
Observations
°F
°C
Weather
Wind
Regional
Observations
Almanac
Monday
Tuesday
Sunrise:
6:24 am
6:25 am
Sunset:
6:24 am
6:25 am
Moon Data:
Extended
Forecast
Lo
Hi
Local
Radar
PRECIP
Light
Heavy

More information
Selected displays
Settings
Sharing
Copy Permalink Link copied to clipboard!
Forecast Information
Location:
Station Id:
Radar Id:
Zone Id:
Last Update: (None)
\ No newline at end of file diff --git a/dist/resources/ws.min.js b/dist/resources/ws.min.js index bd65f46..62cd426 100644 --- a/dist/resources/ws.min.js +++ b/dist/resources/ws.min.js @@ -1 +1 @@ -(()=>{"use strict";var e={652:(e,t,n)=>{var s=n(440),r=n(430),a=n(211),i=n(413),o=n(999),l=n(302);document.addEventListener("DOMContentLoaded",(()=>{m()}));const c=["Land Features","Bay","Channel","Cove","Dam","Delta","Gulf","Lagoon","Lake","Ocean","Reef","Reservoir","Sea","Sound","Strait","Waterfall","Wharf","Amusement Park","Historical Monument","Landmark","Tourist Attraction","Zoo","College","Beach","Campground","Golf Course","Harbor","Nature Reserve","Other Parks and Outdoors","Park","Racetrack","Scenic Overlook","Ski Resort","Sports Center","Sports Field","Wildlife Reserve","Airport","Ferry","Marina","Pier","Port","Resort","Postal","Populated Place"].join(","),u="#txtAddress",d="#ToggleFullScreen",h="#btnGetGps",m=()=>{document.querySelector(u).addEventListener("focus",(e=>{e.target.select()})),(0,a.Fx)(b),document.querySelector("#NavigateMenu").addEventListener("click",S),document.querySelector("#NavigateRefresh").addEventListener("click",C),document.querySelector("#NavigateNext").addEventListener("click",T),document.querySelector("#NavigatePrevious").addEventListener("click",D),document.querySelector("#NavigatePlay").addEventListener("click",I),document.querySelector(d).addEventListener("click",y);const e=document.querySelector(h);e.addEventListener("click",O),navigator.geolocation||(e.style.display="none"),document.querySelector("#divTwc").addEventListener("mousemove",(()=>{document.fullscreenElement&&x()})),window.addEventListener("resize",E),E.wasFull=!1,document.querySelector(u).addEventListener("keydown",(e=>{"Enter"===e.code&&t()})),document.querySelector("#btnGetLatLng").addEventListener("click",(()=>t())),document.addEventListener("keydown",M),document.addEventListener("touchmove",(e=>{document.fullscreenElement&&e.preventDefault()})),$(u).devbridgeAutocomplete({serviceUrl:"https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/suggest",deferRequestBy:300,paramName:"text",params:{f:"json",countryCode:"USA",category:c,maxSuggestions:10},dataType:"json",transformResult:e=>({suggestions:e.suggestions.map((e=>({value:e.text,data:e.magicKey})))}),minChars:3,showNoSuggestionNotice:!0,noSuggestionNotice:"No results found. Please try a different search string.",onSelect(e){f(e,this)},width:490});const t=()=>{const e=$(u).devbridgeAutocomplete();return e.suggestions[0]&&$(e.suggestionsContainer.children[0]).trigger("click"),!1},n=(0,o.J)(),s=n.latLonQuery&&n.latLon,r=n.latLonQuery??localStorage.getItem("latLonQuery"),i=n.latLon??localStorage.getItem("latLon"),m=localStorage.getItem("latLonFromGPS")&&!s;if(r&&i&&!m){document.querySelector(u).value=r,b(JSON.parse(i))}m&&O(),l.A.kiosk.value="true"===n["settings-kiosk-checkbox"];const g=n["settings-kiosk-checkbox"]??localStorage.getItem("play");null!==g&&"true"!==g||N("navButton","play"),document.querySelector("#btnClearQuery").addEventListener("click",(()=>{document.querySelector("#spanCity").innerHTML="",document.querySelector("#spanState").innerHTML="",document.querySelector("#spanStationId").innerHTML="",document.querySelector("#spanRadarId").innerHTML="",document.querySelector("#spanZoneId").innerHTML="",document.querySelector("#chkAutoRefresh").checked=!0,localStorage.removeItem("autoRefresh"),localStorage.removeItem("play"),N("navButton","play"),localStorage.removeItem("latLonQuery"),localStorage.removeItem("latLon"),localStorage.removeItem("latLonFromGPS"),document.querySelector(h).classList.remove("active")})),document.querySelector("#container").addEventListener("swiped-left",(()=>k("left"))),document.querySelector("#container").addEventListener("swiped-right",(()=>k("right")))},f=async(e,t)=>{if(t.previousSuggestionValue===e.value)return;const n=(await(0,s.Pq)("https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/find",{data:{text:e.value,magicKey:e.data,f:"json"}})).locations[0];n?(localStorage.removeItem("latLonFromGPS"),document.querySelector(h).classList.remove("active"),g(n.feature.geometry)):console.error("An unexpected error occurred. Please try a different search string.")},g=(e,t)=>{const n={lat:(0,i.X4)(e.y,4),lon:(0,i.X4)(e.x,4)};localStorage.setItem("latLonQuery",document.querySelector(u).value),localStorage.setItem("latLon",JSON.stringify(n)),b(n,t)},y=()=>(document.fullscreenElement?w():p(),(0,a.F4)()?(0,r.A)(!0):(0,r.A)(!1),x(),!1),p=()=>{const e=document.querySelector("#divTwc"),t=e.requestFullScreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullscreen;t?t.call(e,{navigationUI:"hide"}):window.scrollTo(0,0),(0,a.XR)(),x();const n=document.querySelector(d);n.src="images/nav/ic_fullscreen_exit_white_24dp_2x.png",n.title="Exit fullscreen"},w=()=>{document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen(),(0,a.XR)(),v()},v=()=>{const e=document.querySelector(d);e.src="images/nav/ic_fullscreen_white_24dp_2x.png",e.title="Enter fullscreen",document.querySelector("#divTwc").classList.remove("no-cursor");const t=document.querySelector("#divTwcBottom");t.classList.remove("hidden"),t.classList.add("visible")},S=()=>(N("navButton","menu"),!1),b=(e,t)=>{e&&(b.latLon=e);const{latLon:n}=b;n&&(document.querySelector(u).blur(),(0,a.K$)(),(0,a.u6)(n,t))},k=e=>{if("left"===e)T();else D()},C=()=>((0,a.kY)(),b(),!1),T=()=>(N("navButton","next"),!1),D=()=>(N("navButton","previous"),!1);let L=null;const x=()=>{document.activeElement.blur();const e=document.querySelector("#divTwcBottom");e.classList.remove("hidden"),e.classList.add("visible"),document.querySelector("#divTwc").classList.remove("no-cursor"),L&&(clearTimeout(L),L=null),L=setTimeout((()=>{document.fullscreenElement&&(e.classList.remove("visible"),e.classList.add("hidden"),document.querySelector("#divTwc").classList.add("no-cursor"))}),2e3)},M=e=>{const{key:t}=e;if(document.fullscreenElement||document.activeElement===document.body)switch(t){case" ":return e.preventDefault(),I(),!1;case"ArrowRight":case"PageDown":return e.preventDefault(),T(),!1;case"ArrowLeft":case"PageUp":return e.preventDefault(),D(),!1;case"ArrowUp":return e.preventDefault(),S(),!1;case"0":return C(),!1;case"F":case"f":return y(),!1}return!1},I=()=>(N("navButton","playToggle"),!1),N=(e,t={})=>{(0,a.iU)({type:e,message:t})},O=async()=>{if(!navigator.geolocation)return;const e=document.querySelector(h);if(e.classList.contains("active"))return e.classList.remove("active"),void localStorage.removeItem("latLonFromGPS");e.classList.add("active");const t=await(async()=>new Promise((e=>{navigator.geolocation.getCurrentPosition(e)})))(),{latitude:n,longitude:s}=t.coords,r=document.querySelector(u);r.value=`${(0,i.X4)(n,4)}, ${(0,i.X4)(s,4)}`,g({y:n,x:s},(e=>{const t=e.properties.relativeLocation.properties,a=`${t.city}, ${t.state}`;localStorage.setItem("latLon",JSON.stringify({lat:n,lon:s})),localStorage.setItem("latLonQuery",a),localStorage.setItem("latLonFromGPS",!0),r.value=`${t.city}, ${t.state}`}))},E=()=>{E.wasFull&&!document.fullscreenElement&&v(),!E.wasFull&&document.fullscreenElement,E.wasFull=!!document.fullscreenElement}},247:(e,t,n)=>{n.d(t,{A:()=>d});var s=n(47),r=n(125),a=n(592),i=n(24),o=n(211);class l extends i.A{constructor(e,t){super(e,t,"Almanac",!0),this.backgroundImage0=(0,s.u)("images/BackGround3_1.png"),(0,s.b)("images/2/Full-Moon.gif"),(0,s.b)("images/2/Last-Quarter.gif"),(0,s.b)("images/2/New-Moon.gif"),(0,s.b)("images/2/First-Quarter.gif"),this.timing.totalScreens=1}async getData(e){const t=super.getData(e),n=e??this.weatherParameters,{sun:s,moon:r}=this.calcSunMoonData(n);this.data={sun:s,moon:r},this.getDataCallback(),t&&this.setStatus(a.Ay.loaded)}calcSunMoonData(e){const t=[SunCalc.getTimes(new Date,e.latitude,e.longitude),SunCalc.getTimes(r.c9.local().plus({days:1}).toJSDate(),e.latitude,e.longitude)],n=[];let s=r.c9.local().minus({days:1}),{phase:a}=SunCalc.getMoonIllumination(s.toJSDate()),i=0;do{const e=a;s=s.plus({days:1}),a=SunCalc.getMoonIllumination(s.toJSDate()).phase,e<.25&&a>=.25&&n.push(this.getMoonTransition(.25,"First",s)),e<.5&&a>=.5&&n.push(this.getMoonTransition(.5,"Full",s)),e<.75&&a>=.75&&n.push(this.getMoonTransition(.75,"Last",s)),e>a&&n.push(this.getMoonTransition(0,"New",s)),i+=1}while(i<=30&&n.length<4);return{sun:t,moon:n}}getMoonTransition(e,t,n,s=0){let r=n,{phase:a}=SunCalc.getMoonIllumination(r.toJSDate()),i=0;const o={hours:0===s?-1:0,minutes:1===s?1:0,seconds:2===s?-1:0,milliseconds:3===s?1:0};let l=(t,n)=>t=e;s%2==0&&(l=(t,n)=>t>e&&n<=e);do{const n=a;if(r=r.plus(o),a=SunCalc.getMoonIllumination(r.toJSDate()).phase,a>.9&&(a-=1),l(n,a)){if(s>=3)break;return this.getMoonTransition(e,t,r,s+1)}i+=1}while(i<1e3);return{phase:t,date:r}}async drawCanvas(){super.drawCanvas();const e=this.data,t=r.c9.local(),n=t.plus({days:1});this.elem.querySelector(".day-1").innerHTML=t.toLocaleString({weekday:"long"}),this.elem.querySelector(".day-2").innerHTML=n.toLocaleString({weekday:"long"}),this.elem.querySelector(".rise-1").innerHTML=r.c9.fromJSDate(e.sun[0].sunrise).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".rise-2").innerHTML=r.c9.fromJSDate(e.sun[1].sunrise).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".set-1").innerHTML=r.c9.fromJSDate(e.sun[0].sunset).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".set-2").innerHTML=r.c9.fromJSDate(e.sun[1].sunset).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase();const s=e.moon.map((e=>{const t={},n=e.date.toLocaleString({month:"short",day:"numeric"});return t.date=n,t.type=e.phase,t.icon={type:"img",src:c(e.phase)},this.fillTemplate("day",t)})),a=this.elem.querySelector(".moon .days");a.innerHTML="",a.append(...s),this.finishDraw()}async getSun(){return new Promise((e=>{this.data&&e(this.data),this.getDataCallbacks.push(e)}))}}const c=e=>{switch(e){case"Full":return"images/2/Full-Moon.gif";case"Last":return"images/2/Last-Quarter.gif";case"New":return"images/2/New-Moon.gif";default:return"images/2/First-Quarter.gif"}},u=new l(9,"almanac");(0,o.Kb)(u);const d=u.getSun.bind(u)},423:(e,t,n)=>{n.d(t,{A:()=>p});var s=n(592),r=n(47),a=n(440),i=n(519),o=n(891),l=n(716),c=n(24),u=n(211),d=n(413);const h=["U","C","H","W","Y","T","S","M","O","L","A","F","B","N","V","R","D","E","I","G","J"];class m extends c.A{constructor(e,t){super(e,t,"Current Conditions",!0),this.backgroundImage=(0,r.u)("images/BackGround1_1.png")}async getData(e){const t=super.getData(e),n=(e??this.weatherParameters).stations.filter((e=>4===e?.properties?.stationIdentifier?.length&&!h.includes(e.properties.stationIdentifier.slice(0,1))));let i,o,c=0;for(;!i&&cthis.stillWaiting()}),null===i.features[0].properties.temperature.value||null===i.features[0].properties.windSpeed.value||null===i.features[0].properties.textDescription||""===i.features[0].properties.textDescription||null===i.features[0].properties.icon)throw i=void 0,new Error(`Unable to get observations: ${o.properties.stationIdentifier}, trying next station`)}catch(e){console.error(e)}}if(!i)return console.error("All current weather stations exhausted"),this.isEnabled&&this.setStatus(s.Ay.failed),void this.getDataCallback(void 0);this.data=g({...i,station:o}),this.getDataCallback(),t&&((0,r.b)((0,l.XV)(i.features[0].properties.icon)),this.setStatus(s.Ay.loaded))}async drawCanvas(){super.drawCanvas();let e=this.data.observations.textDescription;e.length>15&&(e=f(e));const t={temp:this.data.Temperature+String.fromCharCode(176),condition:e,wind:this.data.WindDirection.padEnd(3,"")+this.data.WindSpeed.toString().padStart(3," "),location:(0,o.C)(this.data.station.properties.name).substr(0,20),humidity:`${this.data.Humidity}%`,dewpoint:this.data.DewPoint+String.fromCharCode(176),ceiling:0===this.data.Ceiling?"Unlimited":this.data.Ceiling+this.data.CeilingUnit,visibility:this.data.Visibility+this.data.VisibilityUnit,pressure:`${this.data.Pressure} ${this.data.PressureDirection}`,icon:{type:"img",src:this.data.Icon}};this.data.WindGust&&(t["wind-gusts"]=`Gusts to ${this.data.WindGust}`),this.data.observations.heatIndex.value&&this.data.HeatIndex!==this.data.Temperature?(t["heat-index-label"]="Heat Index:",t["heat-index"]=this.data.HeatIndex+String.fromCharCode(176)):this.data.observations.windChill.value&&""!==this.data.WindChill&&this.data.WindChill{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}}const f=e=>{let t=e;return t=t.replace(/Light/g,"L"),t=t.replace(/Heavy/g,"H"),t=t.replace(/Partly/g,"P"),t=t.replace(/Mostly/g,"M"),t=t.replace(/Few/g,"F"),t=t.replace(/Thunderstorm/g,"T'storm"),t=t.replace(/ in /g,""),t=t.replace(/Vicinity/g,""),t=t.replace(/ and /g," "),t=t.replace(/Freezing Rain/g,"Frz Rn"),t=t.replace(/Freezing/g,"Frz"),t=t.replace(/Unknown Precip/g,""),t=t.replace(/L Snow Fog/g,"L Snw/Fog"),t=t.replace(/ with /g,"/"),t},g=e=>{const t=e.features[0].properties;e.observations=t,e.Temperature=Math.round(t.temperature.value),e.TemperatureUnit="C",e.DewPoint=Math.round(t.dewpoint.value),e.Ceiling=Math.round(t.cloudLayers[0]?.base?.value??0),e.CeilingUnit="m.",e.Visibility=Math.round(t.visibility.value/1e3),e.VisibilityUnit=" km.",e.WindSpeed=Math.round(t.windSpeed.value),e.WindDirection=(0,i.Up)(t.windDirection.value),e.Pressure=Math.round(t.barometricPressure.value),e.HeatIndex=Math.round(t.heatIndex.value),e.WindChill=Math.round(t.windChill.value),e.WindGust=Math.round(t.windGust.value),e.WindUnit="KPH",e.Humidity=Math.round(t.relativeHumidity.value),e.Icon=(0,l.XV)(t.icon),e.PressureDirection="",e.TextConditions=t.textDescription;const n=t.barometricPressure.value-e.features[1].properties.barometricPressure.value;return n>150&&(e.PressureDirection="R"),n<-150&&(e.PressureDirection="F"),e.Temperature=(0,d.sz)(e.Temperature),e.TemperatureUnit="F",e.DewPoint=(0,d.sz)(e.DewPoint),e.Ceiling=100*Math.round((0,d.Q8)(e.Ceiling)/100),e.CeilingUnit="ft.",e.Visibility=(0,d.lt)(t.visibility.value/1e3),e.VisibilityUnit=" mi.",e.WindSpeed=(0,d.Yy)(e.WindSpeed),e.WindUnit="MPH",e.Pressure=(0,d.yX)(e.Pressure).toFixed(2),e.HeatIndex=(0,d.sz)(e.HeatIndex),e.WindChill=(0,d.sz)(e.WindChill),e.WindGust=(0,d.Yy)(e.WindGust),e},y=new m(1,"current-weather");(0,u.Kb)(y);const p=y.getCurrentWeather.bind(y)},516:(e,t,n)=>{var s=n(891);var r=n(423),a=n(211);const i=String.fromCharCode(176);let o,l=0;const c=()=>{const e=(0,a.q)();e?.okToDrawCurrentConditions?(l=(l+1)%d.length,u()):"progress"===e?.elemId&&(l=0)},u=async()=>{const e=await(0,r.A)();e&&h(d[l](e))},d=[e=>`Conditions at ${(0,s.C)(e.station.properties.name).substr(0,20)}`,e=>{let t=`Temp: ${e.Temperature}${i}${e.TemperatureUnit}`;return e.observations.heatIndex.value?t+=` Heat Index: ${e.HeatIndex}${i}${e.TemperatureUnit}`:e.observations.windChill.value&&(t+=` Wind Chill: ${e.WindChill}${i}${e.TemperatureUnit}`),t},e=>`Humidity: ${e.Humidity}% Dewpoint: ${e.DewPoint}${i}${e.TemperatureUnit}`,e=>`Barometric Pressure: ${e.Pressure} ${e.PressureDirection}`,e=>{let t=e.WindSpeed>0?`Wind: ${e.WindDirection} ${e.WindSpeed} ${e.WindUnit}`:"Wind: Calm";return e.WindGust>0&&(t+=` Gusts to ${e.WindGust}`),t},e=>{const t=`${e.Ceiling} ${e.CeilingUnit}`;return`Visib: ${e.Visibility} ${e.VisibilityUnit} Ceiling: ${0===e.Ceiling?"Unlimited":t}`}],h=e=>{var t,n;t=".weather-display .scroll .fixed",n=t=>{t.innerHTML=e},[...document.querySelectorAll(t)].forEach(n)};document.addEventListener("DOMContentLoaded",(()=>{o||(o=setInterval(c,4e3)),u()}))},498:(e,t,n)=>{var s=n(592),r=n(440),a=n(125),i=n(716),o=n(47),l=n(24),c=n(211);class u extends l.A{constructor(e,t){super(e,t,"Extended Forecast",!0),this.timing.totalScreens=2}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;let n;try{n=await(0,r.Pq)(t.forecast,{data:{units:"us"},retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(e){return console.error("Unable to get extended forecast"),console.error(e.status,e.responseJSON),void this.setStatus(s.Ay.failed)}this.data=d(n.properties.periods),this.screenIndex=0,this.setStatus(s.Ay.loaded)}async drawCanvas(){super.drawCanvas();const e=this.data.slice(0+3*this.screenIndex,3+3*this.screenIndex).map((e=>{const t={icon:{type:"img",src:e.icon},condition:e.text,date:e.dayName},{low:n}=e;void 0!==n&&(t["value-lo"]=Math.round(n));const{high:s}=e;return t["value-hi"]=Math.round(s),this.fillTemplate("day",t)})),t=this.elem.querySelector(".day-container");t.innerHTML="",t.append(...e),this.finishDraw()}}const d=e=>{const t=[0,1,2,3,4,5,6].map((e=>a.c9.local().startOf("day").plus({days:e}).toLocaleString({weekday:"short"})));let n=0;const s=[];return e.forEach((e=>{s[n]||s.push({dayName:"",low:void 0,high:void 0,text:void 0,icon:void 0});const r=s[n];r.icon=(0,i.XV)(e.icon),r.text=h(e.shortForecast),r.dayName=t[n],(0,o.b)(r.icon),e.isDaytime?(r.high=e.temperature,n+=1):r.low=e.temperature})),s},h=e=>{const t=[[/ and /gi," "],[/slight /gi,""],[/chance /gi,""],[/very /gi,""],[/patchy /gi,""],[/areas /gi,""],[/dense /gi,""],[/Thunderstorm/g,"T'Storm"]].reduce(((e,[t,n])=>e.replace(t,n)),e);let n=t.split(" ");-1!==t.indexOf("then")&&(n=t.split(" then "),n=n[1].split(" "));let s=n[0].substr(0,10),r="";n[1]&&(s.endsWith(".")?s=s.replace(/\./,""):r=n[1].substr(0,10),"Blowing"===r&&(r=""));let a=s;return""!==r&&(a+=` ${r}`),a};(0,c.Kb)(new u(8,"extended-forecast"))},749:(e,t,n)=>{var s=n(592),r=n(440),a=n(24),i=n(211);const o={Extreme:10,Severe:5};class l extends a.A{constructor(e,t,n){super(e,t,"Hazards",n),this.showOnProgress=!1,this.timing.totalScreens=0}async getData(e){const t=super.getData(e),n=this.checkbox.querySelector(".alert");n.classList.remove("show");try{const e=new URL("https://api.weather.gov/alerts/active");e.searchParams.append("point",`${this.weatherParameters.latitude},${this.weatherParameters.longitude}`),e.searchParams.append("limit",5);const t=(await(0,r.Pq)(e,{retryCount:3,stillWaiting:()=>this.stillWaiting()})).features??[],s=t.sort(((e,t)=>(o[t.properties.severity]??0)-(o[e.properties.severity]??0))).filter((e=>"Unknown"!==e.properties.severity));this.data=s,this.data.length>0&&n.classList.add("show")}catch(e){return console.error("Get hourly forecast failed"),console.error(e.status,e.responseJSON),this.isEnabled&&this.setStatus(s.Ay.failed),void this.getDataCallback(void 0)}this.getDataCallback(),t?this.drawLongCanvas():this.setStatus(s.Ay.loaded)}async drawLongCanvas(){const e=this.elem.querySelector(".hazard-lines");e.innerHTML="";const t=this.data.map((e=>{const t={};return t["hazard-text"]=`${e.properties.event}

${e.properties.description.replaceAll("\n\n","

").replaceAll("\n"," ")}`,this.fillTemplate("hazard",t)}));if(e.append(...t),0===t.length)return this.setStatus(s.Ay.loaded),this.timing.totalScreens=0,void this.setStatus(s.Ay.loaded);this.timing.baseDelay=20;const n=Math.max(Math.ceil(e.scrollHeight/400)-3,1);this.timing.delay=[550];for(let e=0;e{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}}(0,i.Kb)(new l(0,"hazards",!0))},2:(e,t,n)=>{var s=n(592),r=n(73),a=n(24),i=n(211),o=n(125);class l extends a.A{constructor(e,t,n){super(e,t,"Hourly Graph",n),document.addEventListener("DOMContentLoaded",(()=>{this.moveHeader()}))}moveHeader(){const e=this.fillTemplate("top-right",{});this.elem.querySelector(".header .right").append(e)}async getData(){if(!super.getData())return;const e=await(0,r.A)((()=>this.stillWaiting()));if(void 0===e)return void this.setStatus(s.Ay.failed);const t=e.map((e=>e.temperature)),n=e.map((e=>e.probabilityOfPrecipitation)),a=e.map((e=>e.skyCover));this.data={skyCover:a,temperature:t,probabilityOfPrecipitation:n},this.setStatus(s.Ay.loaded)}drawCanvas(){this.image||(this.image=this.elem.querySelector(".chart img"));const e=285;this.image.width=532,this.image.height=e;const t=document.createElement("canvas");t.width=532,t.height=e;const n=t.getContext("2d");n.imageSmoothingEnabled=!1;const s=c(0,5,this.data.temperature.length-1,532),r=o.c9.now().startOf("hour");document.querySelector(".x-axis .l-1").innerHTML=h(r),document.querySelector(".x-axis .l-2").innerHTML=h(r.plus({hour:6})),document.querySelector(".x-axis .l-3").innerHTML=h(r.plus({hour:12})),document.querySelector(".x-axis .l-4").innerHTML=h(r.plus({hour:18})),document.querySelector(".x-axis .l-5").innerHTML=h(r.plus({hour:24}));const a=c(0,275,100,10),i=u(this.data.skyCover,s,a);d(i,n,{strokeStyle:"lightgrey",lineWidth:3});const l=u(this.data.probabilityOfPrecipitation,s,a);d(l,n,{strokeStyle:"aqua",lineWidth:3});const m=Math.min(...this.data.temperature),f=Math.max(...this.data.temperature),g=Math.round((m+f)/2),y=c(m,275,f,10),p=u(this.data.temperature,s,y);d(p,n,{strokeStyle:"red",lineWidth:3});const w=String.fromCharCode(176);this.elem.querySelector(".y-axis .l-1").innerHTML=(f+w).substring(0,3),this.elem.querySelector(".y-axis .l-2").innerHTML=(g+w).substring(0,3),this.elem.querySelector(".y-axis .l-3").innerHTML=(m+w).substring(0,3),this.image.src=t.toDataURL(),super.drawCanvas(),this.finishDraw()}}const c=(e,t,n,s)=>{const r=(s-t)/(n-e),a=t-r*e;return e=>r*e+a},u=(e,t,n)=>e.map(((e,s)=>[t(s),n(e)])),d=(e,t,n)=>{t.beginPath(),t.strokeStyle="black",t.lineWidth=(n?.lineWidth??2)+2,t.moveTo(e[0][0],e[0][1]),e.slice(1).forEach((e=>t.lineTo(e[0],e[1]+2))),t.stroke(),t.beginPath(),t.strokeStyle=n?.strokeStyle??"red",t.lineWidth=n?.lineWidth??2,t.moveTo(e[0][0],e[0][1]),e.slice(1).forEach((e=>t.lineTo(e[0],e[1]))),t.stroke()},h=e=>e.toFormat("ha").slice(0,-1);(0,i.Kb)(new l(4,"hourly-graph"))},73:(e,t,n)=>{n.d(t,{A:()=>p});var s=n(592),r=n(125),a=n(440),i=n(413),o=n(716),l=n(519),c=n(24),u=n(211),d=n(247);class h extends c.A{constructor(e,t,n){super(e,t,"Hourly Forecast",n),this.timing.baseDelay=20;this.timing.delay=[450];for(let e=0;e<4;e+=1)this.timing.delay.push(300);this.timing.delay.push(150)}async getData(e){const t=super.getData(e);let n;try{n=await(0,a.Pq)(e.forecastGridData,{retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(e){return console.error("Get hourly forecast failed"),console.error(e.status,e.responseJSON),this.isEnabled&&this.setStatus(s.Ay.failed),void this.getDataCallback(void 0)}this.data=await m(n.properties),this.getDataCallback(),t&&(this.setStatus(s.Ay.loaded),this.drawLongCanvas())}async drawLongCanvas(){const e=this.elem.querySelector(".hourly-lines");e.innerHTML="";const t=r.c9.local(),n=this.data.map(((e,n)=>{const s={},r=t.plus({hours:n}).toLocaleString({weekday:"short",hour:"numeric"});s.hour=r;const a=Math.round(e.temperature).toString().padStart(3),i=Math.round(e.apparentTemperature).toString().padStart(3);s.temp=a,a!==i&&(s.like=i);let o="Calm";if(e.windSpeed>0){const t=Math.round(e.windSpeed).toString();o=e.windDirection+Array(6-e.windDirection.length-t.length).join(" ")+t}return s.wind=o,s.icon={type:"img",src:e.icon},this.fillTemplate("hourly-row",s)}));e.append(...n)}drawCanvas(){super.drawCanvas(),this.finishDraw()}showCanvas(){this.drawCanvas(),super.showCanvas()}screenIndexChange(){this.baseCountChange(this.navBaseCount)}baseCountChange(e){let t=Math.min(this.elem.querySelector(".hourly-lines").getBoundingClientRect().height-289,e-150);t<0&&(t=0),this.elem.querySelector(".main").scrollTo(0,t)}async getCurrentData(e){return e&&this.stillWaitingCallbacks.push(e),new Promise((e=>{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}}const m=async e=>{const t=g(e.temperature.values),n=g(e.apparentTemperature.values),s=g(e.windSpeed.values),r=g(e.windDirection.values),a=g(e.skyCover.values),o=g(e.weather.values),c=g(e.iceAccumulation.values),u=g(e.probabilityOfPrecipitation.values),d=g(e.snowfallAmount.values),h=await f(a,o,c,u,d,s);return t.map(((e,o)=>({temperature:(0,i.sz)(t[o]),apparentTemperature:(0,i.sz)(n[o]),windSpeed:(0,i.lt)(s[o]),windDirection:(0,l.Up)(r[o]),probabilityOfPrecipitation:u[o],skyCover:a[o],icon:h[o]})))},f=async(e,t,n,s,a,i)=>{const l=r.c9.local().startOf("hour"),c=(await(0,d.A)()).sun,u=r.IX.fromDateTimes(r.c9.fromJSDate(c[0].sunset),r.c9.fromJSDate(c[1].sunrise)),h=r.c9.fromJSDate(c[1].sunset);return e.map(((r,c)=>{const d=l.plus({hours:c}),m=u.contains(d)||d>h;return(0,o.ZJ)(e[c],t[c],n[c],s[c],a[c],i[c],m)}))},g=e=>{const t=r.c9.utc().startOf("hour").toMillis(),n=[];return e.forEach((e=>{let s=Date.parse(e.validTime.substr(0,e.validTime.indexOf("/")));const a=s+r.dw.fromISO(e.validTime.substr(e.validTime.indexOf("/")+1)).shiftTo("milliseconds").values.milliseconds;do{s>=t&&n.length<24&&n.push(e.value),s+=36e5}while(s{n.d(t,{Wu:()=>s,XV:()=>r,ZJ:()=>a});const s=(e,t)=>{const n=t??e.indexOf("/night/")>=0,s=e=>`images/r/${e}`;let r=e.toLowerCase().match(/[^/]+$/)[0].match(/(.*?)[&,.?]/)[1];const a=+(e.match(/,(\d{2,3})/)??[0,100])[1];if("dualimage"===r){const t=e.match(/&j=(.*)&/);[,r]=t}switch(r+(n?"-n":"")){case"skc":case"hot":case"haze":return s("Sunny.gif");case"skc-n":case"nskc":case"nskc-n":case"cold-n":return s("Clear-1992.gif");case"bkn":return s("Mostly-Cloudy-1994-2.gif");case"bkn-n":case"few-n":case"nfew-n":case"nfew":return s("Partly-Clear-1994-2.gif");case"sct":case"few":return s("Partly-Cloudy.gif");case"sct-n":case"nsct":case"nsct-n":return s("Mostly-Clear.gif");case"ovc":case"ovc-n":return s("Cloudy.gif");case"fog":case"fog-n":return s("Fog.gif");case"rain_sleet":case"sleet":case"sleet-n":return s("Sleet.gif");case"rain_showers":case"rain_showers_high":return s("Scattered-Showers-1994-2.gif");case"rain_showers-n":case"rain_showers_high-n":return s("Scattered-Showers-Night-1994-2.gif");case"rain":case"rain-n":return s("Rain-1992.gif");case"snow":case"snow-n":return s(a>50?"Heavy-Snow-1994-2.gif":"Light-Snow.gif");case"rain_snow":case"rain_snow-n":return s("Rain-Snow-1992.gif");case"snow_fzra":case"snow_fzra-n":return s("Freezing-Rain-Snow-1992.gif");case"fzra":case"fzra-n":case"rain_fzra":case"rain_fzra-n":return s("Freezing-Rain-1992.gif");case"snow_sleet":case"snow_sleet-n":return s("Snow and Sleet.gif");case"tsra_sct":case"tsra":return s("Scattered-Tstorms-1994-2.gif");case"tsra_sct-n":case"tsra-n":return s("Scattered-Tstorms-Night-1994-2.gif");case"tsra_hi":case"tsra_hi-n":case"hurricane":case"tropical_storm":return s("Thunderstorm.gif");case"wind":case"wind_few":case"wind_sct":case"wind_bkn":case"wind_ovc":case"wind-n":case"wind_few-n":case"wind_bkn-n":case"wind_ovc-n":return s("Wind.gif");case"wind_skc":return s("Sunny-Wind-1994.gif");case"wind_skc-n":case"wind_sct-n":return s("Clear-Wind-1994.gif");case"blizzard":case"blizzard-n":return s("Blowing Snow.gif");case"cold":return s("cold.gif");default:return console.log(`Unable to locate regional icon for ${r} ${e} ${n}`),!1}},r=(e,t)=>{if(!e)return!1;const n=e=>`images/${e}`,s=t??e.indexOf("/night/")>=0;let r=e.toLowerCase().match(/[^/]+$/)[0].match(/(.*?)[&,.?]/)[1];const a=+(e.match(/,(\d{2,3})/)??[0,100])[1];if("dualimage"===r){const t=e.match(/&j=(.*)&/);[,r]=t}switch(r+(s?"-n":"")){case"skc":case"hot":case"haze":case"cold":return n("CC_Clear1.gif");case"skc-n":case"nskc":case"nskc-n":case"cold-n":return n("CC_Clear0.gif");case"sct":case"few":case"bkn":return n("CC_PartlyCloudy1.gif");case"bkn-n":case"few-n":case"nfew-n":case"nfew":case"sct-n":case"nsct":case"nsct-n":return n("CC_PartlyCloudy0.gif");case"ovc":case"novc":case"ovc-n":return n("CC_Cloudy.gif");case"fog":case"fog-n":return n("CC_Fog.gif");case"rain_sleet":case"rain_sleet-n":case"sleet":case"sleet-n":return n("Sleet.gif");case"rain_showers":case"rain_showers_high":case"rain_showers-n":case"rain_showers_high-n":return n("CC_Showers.gif");case"rain":case"rain-n":return n("CC_Rain.gif");case"snow":case"snow-n":return n(a>50?"CC_Snow.gif":"CC_SnowShowers.gif");case"rain_snow":return n("CC_RainSnow.gif");case"snow_fzra":case"snow_fzra-n":case"fzra":case"fzra-n":case"rain_fzra":case"rain_fzra-n":return n("CC_FreezingRain.gif");case"snow_sleet":return n("Snow-Sleet.gif");case"tsra_sct":case"tsra":return n("EF_ScatTstorms.gif");case"tsra_sct-n":case"tsra-n":case"tsra_hi":case"tsra_hi-n":case"hurricane":case"tropical_storm":return n("CC_TStorm.gif");case"wind_few":case"wind_sct":case"wind_bkn":case"wind_ovc":case"wind_skc":case"wind_few-n":case"wind_bkn-n":case"wind_ovc-n":case"wind_skc-n":case"wind_sct-n":return n("CC_Windy.gif");case"blizzard":case"blizzard-n":return n("Blowing-Snow.gif");default:return console.log(`Unable to locate icon for ${r} ${e} ${s}`),!1}},a=(e,t,n,s,r,a,i=!1)=>{const o=e=>`images/r/${e}`;let l=!1,c=!1,u=!1,d=!1,h=!1;return t.forEach((e=>{e.weather&&(e.weather.toLowerCase().includes("thunder")&&(l=!0),e.weather.toLowerCase().includes("snow")&&(c=!0),e.weather.toLowerCase().includes("ice")&&(u=!0),e.weather.toLowerCase().includes("fog")&&(d=!0),e.weather.toLowerCase().includes("wind")&&(h=!0))})),o(n>0||u?"Freezing-Rain-1992.gif":r>10?a>30||h?"Blowing Snow.gif":"Heavy-Snow-1994.gif":(r>0||c)&&l?"ThunderSnow.gif":r>0||c?"Light-Snow.gif":l?"Thunderstorm.gif":s>70?"Rain-1992.gif":s>50?"Shower.gif":s>30?i?"Scattered-Showers-Night.gif":"Scattered-Showers-1994.gif":d?"Fog.gif":e>70?"Cloudy.gif":e>50?i?"Partly-Clear-1994.gif":"Mostly-Cloudy-1994.gif":e>30?i?"Mostly-Clear.gif":"Partly-Cloudy.gif":i?"Clear-1992.gif":"Sunny.gif")}},94:(e,t,n)=>{var s=n(519),r=n(440),a=n(592),i=n(891),o=n(413),l=n(24),c=n(211);class u extends l.A{constructor(e,t){super(e,t,"Latest Observations",!0),this.MaximumRegionalStations=7}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters,n=Object.keys(StationInfo).map((e=>{const n=StationInfo[e],r=(0,s.Io)(n.lat,n.lon,t.latitude,t.longitude);return{...n,distance:r}})).sort(((e,t)=>e.distance-t.distance)).slice(0,30),r=[];let i=Math.min(n.length,7),o=0;for(;r.length<7&&i<=n.length;){const e=await h(n.slice(o,i));r.push(...e),o+=i,i=Math.min(n.length+1,o+7-r.length)}this.data=r.slice(0,this.MaximumRegionalStations),0!==this.data.length?this.setStatus(a.Ay.loaded):this.setStatus(a.Ay.noData)}async drawCanvas(){super.drawCanvas();const e=this.data.sort(((e,t)=>e.Name{const t=(0,s.Up)(e.windDirection.value),n=Math.round((0,o.sz)(e.temperature.value)),r=Math.round((0,o.Yy)(e.windSpeed.value)),a={location:(0,i.C)(e.city).substr(0,14),temp:n,weather:d(e.textDescription).substr(0,9)};return a.wind=r>0?t+Array(6-t.length-r.toString().length).join(" ")+r.toString():"NA"===r?"NA":"Calm",this.fillTemplate("observation-row",a)})),n=this.elem.querySelector(".observation-lines");n.innerHTML="",n.append(...t),this.finishDraw()}}const d=e=>{let t=e;return t=t.replace(/Light/,"L"),t=t.replace(/Heavy/,"H"),t=t.replace(/Partly/,"P"),t=t.replace(/Mostly/,"M"),t=t.replace(/Few/,"F"),t=t.replace(/Thunderstorm/,"T'storm"),t=t.replace(/ in /,""),t=t.replace(/Vicinity/,""),t=t.replace(/ and /," "),t=t.replace(/Freezing Rain/,"Frz Rn"),t=t.replace(/Freezing/,"Frz"),t=t.replace(/Unknown Precip/,""),t=t.replace(/L Snow Fog/,"L Snw/Fog"),t=t.replace(/ with /,"/"),t},h=async e=>(await Promise.all(e.map((async e=>{try{const t=await(0,r.Pq)(`https://api.weather.gov/stations/${e.id}/observations/latest`,{retryCount:1,stillWaiting:()=>(void 0).stillWaiting()});return null!==t.properties.temperature.value&&""!==t.properties.textDescription&&null!==t.properties.windSpeed.value&&{...t.properties,StationId:e.id,city:e.city}}catch(t){return console.log(`Unable to get latest observations for ${e.id}`),!1}})))).filter((e=>e));(0,c.Kb)(new u(2,"latest-observations"))},704:(e,t,n)=>{var s=n(592),r=n(440),a=n(24),i=n(211);class o extends a.A{constructor(e,t){super(e,t,"Local Forecast",!0),this.timing.baseDelay=5e3}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters,n=await this.getRawData(t);if(!n)return void this.setStatus(s.Ay.failed);const r=l(n);this.screenTexts=r.map((e=>{let t=`${e.DayName.toUpperCase()}...`;return t+=e.Text.toUpperCase().replace("..."," "),t}));const a=this.screenTexts.map((e=>this.fillTemplate("forecast",{text:e}))),i=this.elem.querySelector(".forecasts");i.innerHTML="",i.append(...a),this.pageHeight=i.parentNode.scrollHeight,a.forEach((e=>{const t=Math.ceil(e.scrollHeight/this.pageHeight)*this.pageHeight;e.style.height=`${t}px`})),this.timing.totalScreens=i.scrollHeight/this.pageHeight,this.calcNavTiming(),this.setStatus(s.Ay.loaded)}async getRawData(e){try{return await(0,r.Pq)(e.forecast,{data:{units:"us"},retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(t){return console.error(`GetWeatherForecast failed: ${e.forecast}`),console.error(t.status,t.responseJSON),this.setStatus(s.Ay.failed),!1}}async drawCanvas(){super.drawCanvas();const e=-this.screenIndex*this.pageHeight;this.elem.querySelector(".forecasts").style.top=`${e}px`,this.finishDraw()}}const l=e=>e.properties.periods.slice(0,6).map((e=>({DayName:e.name.toUpperCase(),Text:e.detailedForecast})));(0,i.Kb)(new o(7,"local-forecast"))},211:(e,t,n)=>{n.d(t,{F4:()=>k,Fx:()=>U,Ju:()=>T,K$:()=>z,Kb:()=>F,Lg:()=>W,XR:()=>E,ab:()=>C,eB:()=>j,iU:()=>w,kY:()=>$,pv:()=>O,q:()=>M,u6:()=>P,yB:()=>v});var s=n(430),r=n(592),a=n(519),i=n(440),o=n(348),l=n(302);document.addEventListener("DOMContentLoaded",(()=>{p()}));const c=[];let u,d=!1;const h={},m=6e5,f="#chkAutoRefresh";let g=null,y=0;const p=async()=>{window.addEventListener("resize",E),E();const e=localStorage.getItem("autoRefresh");document.querySelector(f).checked=!e||"true"===e,document.querySelector(f).addEventListener("change",V),q()},w=e=>!!e.type&&("navButton"===e.type?N(e.message):console.error(`Unknown event ${e.type}`)),v=e=>{if(e.id<0)return;if(!u)return;if(u.drawCanvas(c,S()),c[0].status===r.Ay.loading)return;const t=c.findIndex((e=>e.enabled&&e.timing.totalScreens>0));0!==e.id||e.status!==r.Ay.failed&&e.status!==r.Ay.retrying||(e.id=t,e.status=c[t].status),0===e.id&&e.status===r.Ay.loaded&&0===c[0].timing.totalScreens&&(e.id=t,e.status=c[t].status),k()&&e.id===t&&e.status===r.Ay.loaded&&D(C.command.firstFrame),S()c.reduce(((e,t)=>t.status!==r.Ay.loading?e+1:e),0),b=()=>{c.forEach((e=>e.hideCanvas()))},k=()=>d,C={response:{previous:Symbol("previous"),inProgress:Symbol("inProgress"),next:Symbol("next")},command:{firstFrame:Symbol("firstFrame"),previousFrame:Symbol("previousFrame"),nextFrame:Symbol("nextFrame"),lastFrame:Symbol("lastFrame")}},T=e=>{e.type===C.response.previous&&L(-1),e.type===C.response.next&&L(1)},D=e=>{const t=M();if(u.hideCanvas(),!t){let e,t=0;do{c[t].status===r.Ay.loaded&&c[t].timing.totalScreens>0&&(e=c[t]),t+=1}while(!e&&t{const t=c.length,n=x();let s;for(let i=0;i0));i+=1);if(s<=n&&Z())return;const i=c[s];b(),e<0&&i.showCanvas(C.command.lastFrame),e>0&&i.showCanvas(C.command.firstFrame)},x=()=>c.findIndex((e=>e.active)),M=()=>c[x()],I=e=>{d=e;const t=document.querySelector("#NavigatePlay");localStorage.setItem("play",d),d?((0,s.A)(!0),t.title="Pause",t.src="images/nav/ic_pause_white_24dp_2x.png"):((0,s.A)(!1),t.title="Play",t.src="images/nav/ic_play_arrow_white_24dp_2x.png"),u&&d&&!M()&&D(C.command.firstFrame)},N=e=>{switch(e){case"play":I(!0);break;case"playToggle":I(!d);break;case"stop":I(!1);break;case"next":I(!1),D(C.command.nextFrame);break;case"previous":I(!1),D(C.command.previousFrame);break;case"menu":I(!1),u.showCanvas(),b();break;default:console.error(`Unknown navButton ${e}`)}},O=e=>c[e],E=()=>{const e=l.A.wide.value?854:640,t=document.querySelector("#divTwcBottom").getBoundingClientRect().width/e,n=window.innerHeight/480,s=Math.min(t,n);s<1||document.fullscreenElement||l.A.kiosk?document.querySelector("#container").style.transform=`scale(${s})`:document.querySelector("#container").style.transform="unset"},$=()=>{c.forEach((e=>{e.status=r.Ay.loading}))},F=e=>{c[e.navId]=e,q()},q=()=>{const e=document.querySelector("#enabledDisplays");if(!e)return;const t=c.map((e=>e.generateCheckbox(e.defaultEnabled))).filter((e=>e));e.innerHTML="",e.append(...t)},W=e=>{u=e},A=e=>{document.querySelector("#spanCity").innerHTML=`${e.city}, `,document.querySelector("#spanState").innerHTML=e.state,document.querySelector("#spanStationId").innerHTML=e.stationId,document.querySelector("#spanRadarId").innerHTML=e.radarId,document.querySelector("#spanZoneId").innerHTML=e.zoneId},V=e=>{const{checked:t}=e.target;t?H():z(),localStorage.setItem("autoRefresh",t)},_=e=>{e?(document.querySelector("#spanLastRefresh").innerHTML=e.toLocaleString("en-US",{weekday:"short",month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short"}),document.querySelector(f).checked&&H()):document.querySelector("#spanLastRefresh").innerHTML="(none)"},P=(e,t)=>{(async(e,t)=>{const n=await(0,o.f)(e.lat,e.lon);"function"==typeof t&&t(n);const s=await(0,i.Pq)(n.properties.observationStations),r=s.features[0].properties.stationIdentifier;let{city:a}=n.properties.relativeLocation.properties;const{state:l}=n.properties.relativeLocation.properties;r in StationInfo&&(a=StationInfo[r].city,[a]=a.split("/"),a=a.replace(/\s+$/,"")),h.latitude=e.lat,h.longitude=e.lon,h.zoneId=n.properties.forecastZone.substr(-6),h.radarId=n.properties.radarStation.substr(-3),h.stationId=r,h.weatherOffice=n.properties.cwa,h.city=a,h.state=l,h.timeZone=n.properties.timeZone,h.forecast=n.properties.forecast,h.forecastGridData=n.properties.forecastGridData,h.stations=s.features,A(h),b(),document.querySelector("#loading").style.display="none",u&&(await u.drawCanvas(),u.showCanvas()),c.forEach((e=>e.getData(h)))})(e,t),_(null)},H=()=>{if(g)return;y=0;const e=()=>{y+=500;let e=m-y;e<0&&(e=0);const t=new Date(e);document.querySelector("#spanRefreshCountDown").innerHTML=`${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}`,y>=m&&!k()&&R()};g=window.setInterval(e,500),e()},z=()=>{g&&(window.clearInterval(g),document.querySelector("#spanRefreshCountDown").innerHTML="--:--",g=null)},Z=()=>!!(y>=m&&k())&&(R(),!0),R=()=>{R.callback&&R.callback()},U=e=>{R.callback=e},j=()=>h.timeZone},951:(e,t,n)=>{var s=n(47),r=n(592),a=n(24),i=n(211);class o extends a.A{constructor(e,t){super(e,t,"",!1),this.backgroundImage=(0,s.u)("images/BackGround1_1.png"),this.timing=!1,document.addEventListener("DOMContentLoaded",(()=>{this.version=document.querySelector("#version").innerHTML,this.elem.querySelector(".container").addEventListener("click",this.lineClick.bind(this))})),this.okToDrawCurrentConditions=!1}async drawCanvas(e,t){if(!this.elem)return;if(super.drawCanvas(),this.progressCover||(this.progressCover=this.elem.querySelector(".scroll .cover")),!e)return;const n=e.map(((e,t)=>{if(!1===e.showOnProgress)return!1;const n={name:e.name},s=(0,r.qx)(e.status),a=this.fillTemplate("item",n);if(!a)return!1;const i=a.querySelector(".links");return i.classList.remove(...r.LR),i.classList.add(s),i.dataset.index=t,a})).filter((e=>e)),s=this.elem.querySelector(".container");s.innerHTML="",s.append(...n),this.finishDraw();const a=t/e.length;this.progressCover.style.width=100*(1-a)+"%",a<1?this.progressCover.parentNode.classList.add("show"):setTimeout((()=>this.progressCover.parentNode.classList.remove("show")),1e3)}lineClick(e){const t=e.target?.parentNode?.dataset?.index;if(void 0===t)return;const n=+t;(0,i.iU)("navButton");const s=(0,i.pv)(n);s&&s.status===r.Ay.loaded&&(s.showCanvas(i.ab.command.firstFrame),this.elem.classList.remove("show"))}}const l=new o(-1,"progress");(0,i.Lg)(l)},503:(e,t,n)=>{var s=n(592),r=n(125),a=n(47),i=n(440),o=n(147),l=n(24),c=n(211);class u extends l.A{constructor(e,t){super(e,t,"Local Radar",!0),this.okToDrawCurrentConditions=!1,this.okToDrawCurrentDateTime=!1,this.dopplerRadarImageMax=6,this.timing.baseDelay=350,this.timing.delay=[{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:12,si:5}]}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;if("AK"===t.state||"HI"===t.state)return void this.setStatus(s.Ay.noData);let n="images/4000RadarMap2.jpg";"HI"===t.State&&(n="images/HawaiiRadarMap2.png"),this.baseMap=await(0,a.u)(n);const l=[];let u=r.c9.utc().minus({days:1}).startOf("day");for(;u<=r.c9.utc().startOf("day");)l.push(`https://mesonet.agron.iastate.edu/archive/data/${u.toFormat("yyyy/LL/dd")}/GIS/uscomp/`),u=u.plus({days:1});const d=(await Promise.all(l.map((async e=>{try{return(0,i.Qq)(e,{cors:!0})}catch(e){return console.log("Unable to get list of radars"),console.error(e),this.setStatus(s.Ay.failed),!1}})))).filter((e=>e)).flatMap(((e,t)=>{const n=(new DOMParser).parseFromString(e,"text/html"),s=n.createElement("base");s.href=l[t],n.head.append(s);const r=n.querySelectorAll("a"),a=[];return Array.from(r).forEach((e=>{e.innerHTML?.match(/n0r_\d{12}\.png/)&&a.push(e.href)})),a})),h=/_(\d{12})\.png/,m=d.sort(((e,t)=>e.match(h)[1]{let s=0,r=0;return s=55.2*(51.75-e.latitude),s-=n,s>3200-2*n?s=3200-2*n:s<0&&(s=0),r=41.775*(-130.37-e.longitude)*-1,r-=t,r>5100-2*t?r=5100-2*t:r<0&&(r=0),{x:2*r,y:2*s}})(t,240,138),w=document.createElement("canvas");w.width=y,w.height=1600;const v=w.getContext("2d");v.imageSmoothingEnabled=!1;const S=((e,t,n)=>{let s=0,r=0;return s=61.4481*(51-e.latitude),s-=n,s>6e3-2*n?s=6e3-2*n:s<0&&(s=0),r=42.1768*(-129.138-e.longitude)*-1,r-=t,r>2800-2*t?r=2800-2*t:r<0&&(r=0),{x:2*r,y:2*s}})(t,240,138),b=S.x/2,k=S.y/2,C=await Promise.all(m.map((async e=>{const t=document.createElement("canvas");t.width=640,t.height=367;const n=t.getContext("2d");n.imageSmoothingEnabled=!1;const s=await fetch((0,o.O)(e));if(!s.ok)throw new Error(`Unable to fetch radar error ${s.status} ${s.statusText} from ${s.url}`);const i=await s.blob(),l=e.match(/_(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)\./);let u;if(l){const[,e,t,n,s,a]=l;u=r.c9.fromObject({year:e,month:t,day:n,hour:s,minute:a},{zone:"UTC"}).setZone()}else u=r.c9.fromHTTP(s.headers.get("last-modified")).setZone((0,c.eB)());const d=await(0,a.u)(i);v.clearRect(0,0,y,1600),v.drawImage(d,0,0,y,1600),n.drawImage(await this.baseMap,p.x,p.y,480,276,0,0,640,367);const h=document.createElement("canvas");h.width=640,h.height=367;const m=h.getContext("2d",{willReadFrequently:!0});m.imageSmoothingEnabled=!1,m.drawImage(w,b,k,240,163.1,0,0,640,367),(e=>{const t=e.getImageData(0,0,e.canvas.width,e.canvas.height);for(let e=0;e{const n=e.getImageData(0,0,e.canvas.width,e.canvas.height),s=t.getImageData(0,0,t.canvas.width,t.canvas.height);for(let e=0;ee.elem))),this.timing.totalScreens=C.length,this.data=C.map((e=>e.canvas)),this.times=C.map((e=>e.time)),this.setStatus(s.Ay.loaded)}async drawCanvas(){super.drawCanvas();const e=this.times[this.screenIndex].toLocaleString(r.c9.TIME_SIMPLE),t=e.length>=8?e:` ${e}`;this.elem.querySelector(".header .right .time").innerHTML=t;const n=this.elem.querySelector(".frame").scrollHeight;this.elem.querySelector(".scroll-area").style.top=-this.screenIndex*n+"px",this.finishDraw()}}(0,c.Kb)(new u(10,"radar"))},187:(e,t,n)=>{var s=n(592),r=n(519),a=n(440),i=n(413),o=n(716),l=n(47),c=n(125),u=n(24),d=n(211);const h=(e,t,n)=>({daytime:e.isDaytime,temperature:e.temperature||0,name:v(t.city),icon:e.icon,x:n.x,y:n.y,time:e.startTime}),m=(e,t,n,s)=>{let r=0,a=0;return r=56*(73-e),r-=s,r>1142-2*s?r=1142-2*s:r<0&&(r=0),a=25*(-175-t)*-1,a-=n,a>1200-2*n?a=1200-2*n:a<0&&(a=0),{x:a,y:r}},f=(e,t,n,s)=>{let r=0,a=0;return r=55.2*(25-e),r-=s,r>571-2*s?r=571-2*s:r<0&&(r=0),a=41.775*(-164.5-t)*-1,a-=n,a>600-2*n?a=600-2*n:a<0&&(a=0),{x:a,y:r}},g=(e,t,n,s)=>({minLat:-1*((t+2*s)/56-73),maxLat:-1*(t/56-73),minLon:-1*(-1*e/25+175),maxLon:-1*(-1*(e+2*n)/25+175)}),y=(e,t,n,s)=>({minLat:-1*((t+2*s)/55.2-25),maxLat:-1*(t/55.2-25),minLon:-1*(-1*e/41.775+164.5),maxLon:-1*(-1*(e+2*n)/41.775+164.5)}),p=(e,t,n)=>{let s=37*(e.lon-n),r=70*(t-e.lat);return r<30&&(r=30),r>282&&(r=282),s<40&&(s=40),s>580&&(s=580),{x:s,y:r}},w=(e,t,n)=>{let s=57*(e.lon-n),r=70*(t-e.lat);return r<30&&(r=30),r>282&&(r=282),s<40&&(s=40),s>580&&(s=580),{x:s,y:r}},v=e=>e.match(/[^,/;\\-]*/)[0].substr(0,12);var S=n(348);class b extends u.A{constructor(e,t){super(e,t,"Regional Forecast",!0),this.timing.totalScreens=3}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;let n="images/Basemap2.png";"HI"===t.state?n="images/HawaiiRadarMap4.png":"AK"===t.state&&(n="images/AlaskaRadarMap6.png"),this.elem.querySelector(".map img").src=n;const c={x:240,y:117},u=((e,t,n,s,r)=>{if("AK"===r)return m(e,t,n,s);if("HI"===r)return f(e,t,n,s);let a=0,i=0;return a=55.2*(50.5-e),a-=s,a>1600-2*s?a=1600-2*s:a<0&&(a=0),i=41.775*(-127.5-t)*-1,i-=n,i>2550-2*n?i=2550-2*n:i<0&&(i=0),{x:i,y:a}})(t.latitude,t.longitude,c.x,c.y,t.state),d=(S=u.x,b=u.y,C=c.x,T=c.y,"AK"===(D=t.state)?g(S,b,C,T):"HI"===D?y(S,b,C,T):{minLat:-1*((b+2*T)/55.2-50.5),maxLat:-1*(b/55.2-50.5),minLon:-1*(-1*S/41.775+127.5),maxLon:-1*(-1*(S+2*C)/41.775+127.5)});var S,b,C,T,D;let L=2.5;"HI"===t.state&&(L=1);const x=Object.values(StationInfo).map((e=>({...e,targetDistance:L}))),M=[...RegionalCities,...x],I=[];M.forEach((e=>{if(e.lat>d.minLat&&e.latd.minLon&&e.lon{const a=(0,r.Io)(e.lon,e.lat,s.lon,s.lat);return n&&a>=t}),!0)&&I.push(e)}}));const N=await Promise.all(I.map((async e=>{try{const n=e?.point??await k(e.lat,e.lon);if(!n)throw new Error("No pre-loaded point");const s=(async(e,t)=>{try{const t=(await(0,a.Pq)(`https://api.weather.gov/gridpoints/${e.wfo}/${e.x},${e.y}/stations`)).features[0].id,n=await(0,a.Pq)(`${t}/observations/latest`);if(!n.properties.icon)return!1;const s=(0,o.Wu)(n.properties.icon,!n.properties.daytime);return!!s&&((0,l.b)(s),n.properties)}catch(e){return console.log(`Unable to get regional observations for ${t.Name??t.city}`),console.error(e.status,e.responseJSON),!1}})(n,e),r=await(0,a.Pq)(`https://api.weather.gov/gridpoints/${n.wfo}/${n.x},${n.y}/forecast`),c=((e,t,n,s)=>{"AK"===s&&p(e,t,n),"HI"===s&&w(e,t,n);let r=57*(e.lon-n),a=70*(t-e.lat);return a<30&&(a=30),a>282&&(a=282),r<40&&(r=40),r>580&&(r=580),{x:r,y:a}})(e,d.maxLat,d.minLon,t.state),u=await s;if(!u)return!1;const m={daytime:!!/\/day\//.test(u.icon),temperature:(0,i.sz)(u.temperature.value),name:v(e.city),icon:u.icon,x:c.x,y:c.y};return(0,l.b)((0,o.Wu)(m.icon,!m.daytime)),[m,h(r.properties.periods[1],e,c),h(r.properties.periods[2],e,c)]}catch(t){return console.log(`No regional forecast data for '${e.name??e.city}'`),console.log(t),!1}}))),O=N.filter((e=>e));0!==O.length?(this.data={regionalData:O,offsetXY:c,sourceXY:u},this.setStatus(s.Ay.loaded)):this.setStatus(s.Ay.noData)}drawCanvas(){super.drawCanvas();const{regionalData:e,sourceXY:t,offsetXY:n}=this.data,s=this.elem.querySelector(".title.dual .top"),r=this.elem.querySelector(".title.dual .bottom");if(0===this.screenIndex)s.innerHTML="Regional",r.innerHTML="Observations";else{const t=c.c9.fromISO(e[0][this.screenIndex].time).toLocaleString({weekday:"long"});s.innerHTML="Forecast for",r.innerHTML=e[0][this.screenIndex].daytime?t:`${t} Night`}const a=640/(2*n.x);this.elem.querySelector(".map").style.transform=`scale(${a}) translate(-${t.x}px, -${t.y}px)`;const i=e.map((e=>{const t={},n=e[this.screenIndex];t.icon={type:"img",src:(0,o.Wu)(n.icon,!n.daytime)},t.city=n.name;const{temperature:s}=n;t.temp=s;const{x:r,y:a}=n,i=this.fillTemplate("location",t);return i.style.left=`${r}px`,i.style.top=`${a}px`,i})),l=this.elem.querySelector(".location-container");l.innerHTML="",l.append(...i),this.finishDraw()}}const k=async(e,t)=>{const n=await(0,S.f)(e,t);return{x:n.properties.gridX,y:n.properties.gridY,wfo:n.properties.gridId}};(0,d.Kb)(new b(6,"regional-forecast"))},302:(e,t,n)=>{n.d(t,{A:()=>u});var s=n(999);const r="Settings";const a=class{constructor(e,t,n,r,a,i){this.shortName=e,this.name=t,this.defaultValue=r,this.myValue=r,this.type=n,this.sticky=i,this.changeAction=a??(()=>{});const o=(0,s.J)()?.[`settings-${e}-checkbox`];let l;void 0!==o&&(l="true"===o);const c=l??this.getFromLocalStorage();i&&null!==c&&(this.myValue=c),this.checkboxChange({target:{checked:this.myValue}})}generateCheckbox(){const e=document.createElement("label");e.for=`settings-${this.shortName}-checkbox`,e.id=`settings-${this.shortName}-label`;const t=document.createElement("input");t.type="checkbox",t.value=!0,t.id=`settings-${this.shortName}-checkbox`,t.name=`settings-${this.shortName}-checkbox`,t.checked=this.myValue,t.addEventListener("change",(e=>this.checkboxChange(e)));const n=document.createElement("span");return n.innerHTML=this.name,e.append(t,n),this.checkbox=e,e}checkboxChange(e){this.myValue=e.target.checked,this.storeToLocalStorage(this.myValue),this.changeAction(this.myValue)}storeToLocalStorage(e){if(!this.sticky)return;const t=localStorage?.getItem(r)??"{}",n=JSON.parse(t);n[this.shortName]=e,localStorage?.setItem(r,JSON.stringify(n))}getFromLocalStorage(){const e=localStorage?.getItem(r);try{if(e){const t=JSON.parse(e)?.[this.shortName];if(void 0!==t)switch(this.type){case"boolean":case"int":return t;default:return null}}}catch{return null}return null}get value(){return this.myValue}set value(e){this.myValue=e,this.checkbox.checked=e,this.storeToLocalStorage(this.myValue),this.changeAction(this.myValue)}};document.addEventListener("DOMContentLoaded",(()=>{o()}));const i={},o=()=>{i.wide=new a("wide","Widescreen","boolean",!1,l,!0),i.kiosk=new a("kiosk","Kiosk","boolean",!1,c,!1);const e=Object.values(i).map((e=>e.generateCheckbox())),t=document.querySelector("#settings");t.innerHTML="",t.append(...e)},l=e=>{const t=document.querySelector("#divTwc");e?t.classList.add("wide"):t.classList.remove("wide")},c=e=>{const t=document.querySelector("body");e?(t.classList.add("kiosk"),window.dispatchEvent(new Event("resize"))):t.classList.remove("kiosk")},u=i},999:(e,t,n)=>{n.d(t,{J:()=>l}),document.addEventListener("DOMContentLoaded",(()=>r()));const s={kiosk:"settings-kiosk-checkbox"},r=()=>{const e=document.querySelector("#share-link");e.addEventListener("click",a),navigator?.clipboard||(e.textContent="Get Permalink")},a=async e=>{e.preventDefault();const t=document.querySelectorAll("input[type=checkbox]"),n={};[...t].forEach((e=>{e?.id&&(n[e.id]=e?.checked??!1)})),n.latLonQuery=localStorage.getItem("latLonQuery"),n.latLon=localStorage.getItem("latLon");const s=new URLSearchParams(n).toString(),r=new URL(`?${s}`,document.location.href);navigator?.clipboard?i(r):o(r)},i=async e=>{try{await navigator.clipboard.writeText(e.toString());const t=document.querySelector("#share-link-copied");t.style.display="inline",setTimeout((()=>{t.style.display="none"}),5e3)}catch(e){console.error(e)}},o=e=>{const t=document.querySelector("#share-link-instructions"),n=t.querySelector("#share-link-url");n.value=e,t.style.display="inline",n.focus(),n.select()},l=()=>{if(l.params)return l.params;const e=[...new URLSearchParams(window.location.search)];return e.forEach((t=>{const n=s[t[0]];n&&e.push([n,t[1]])})),l.params=Object.fromEntries(e),l.params}},592:(e,t,n)=>{n.d(t,{Ay:()=>i,LR:()=>a,qx:()=>r});const s={loading:Symbol("loading"),loaded:Symbol("loaded"),failed:Symbol("failed"),noData:Symbol("noData"),disabled:Symbol("disabled"),retrying:Symbol("retrying")},r=e=>{switch(e){case s.loading:return"loading";case s.loaded:return"press-here";case s.failed:return"failed";case s.noData:return"no-data";case s.disabled:return"disabled";case s.retrying:return"retrying";default:return""}},a=["loading","press-here","failed","no-data","disabled","retrying"],i=s},709:(e,t,n)=>{var s=n(592),r=n(440),a=n(716),i=n(125),o=n(24),l=n(211);class c extends o.A{constructor(e,t,n){super(e,t,"Travel Forecast",n),this.timing.baseDelay=20;const s=TravelCities.length/4,r=Math.floor(s)-2,a=r%1;this.timing.delay=[450];for(let e=0;e{try{if(!e.point)throw new Error("No pre-loaded point");const t=await(0,r.Pq)(`https://api.weather.gov/gridpoints/${e.point.wfo}/${e.point.x},${e.point.y}/forecast`),n=t.properties.periods[0].isDaytime?0:1;return{today:0===n,high:t.properties.periods[n].temperature,low:t.properties.periods[n+1].temperature,name:e.Name,icon:(0,a.Wu)(t.properties.periods[n].icon)}}catch(t){return console.error(`GetTravelWeather for ${e.Name} failed`),console.error(t.status,t.responseJSON),{name:e.Name,error:!0}}})),t=await Promise.all(e);this.data=t;this.data.some((e=>e.high))?(this.setStatus(s.Ay.loaded),this.drawLongCanvas()):this.setStatus(s.Ay.noData)}async drawLongCanvas(){const e=this.elem.querySelector(".travel-lines");e.innerHTML="";const t=this.data.map((e=>{if(e.error)return!1;const t={city:e};if(e.icon){t.city=e.name;const{low:n,high:s}=e,r=Math.round(n).toString(),a=Math.round(s).toString();t.low=r,t.high=a;const{icon:i}=e;t.icon={type:"img",src:i}}else t.error="NO TRAVEL DATA AVAILABLE";return this.fillTemplate("travel-row",t)})).filter((e=>e));e.append(...t)}async drawCanvas(){super.drawCanvas();const e=this.data;this.elem.querySelector(".header .title.dual .bottom").innerHTML=`For ${u(e)}`,this.finishDraw()}async showCanvas(){await this.drawCanvas(),super.showCanvas()}screenIndexChange(){this.baseCountChange(this.navBaseCount)}baseCountChange(e){let t=Math.min(this.elem.querySelector(".travel-lines").getBoundingClientRect().height-289,e-150);t<0&&(t=0),this.elem.querySelector(".main").scrollTo(0,t)}getLongCanvas(){return this.longCanvas}}const u=e=>e.reduce(((e,t)=>{if(t&&""===e){return i.c9.local().plus({days:t.today?0:1}).toLocaleString({weekday:"long"})}return e}),"");(0,l.Kb)(new c(5,"travel",!1))},519:(e,t,n)=>{n.d(t,{Io:()=>r,LV:()=>a,Up:()=>s});const s=e=>["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"][Math.floor(e/22.5+.5)%16],r=(e,t,n,s)=>Math.sqrt((n-e)**2+(s-t)**2),a=(e,t)=>(e%t+t)%t},147:(e,t,n)=>{n.d(t,{O:()=>s});const s=e=>{let t=e;return t=t.replace("https://api.weather.gov/",`${window.location.protocol}//${window.location.host}/`),t=t.replace("https://www.cpc.ncep.noaa.gov/",`${window.location.protocol}//${window.location.host}/`),t}},440:(e,t,n)=>{n.d(t,{Pq:()=>r,Qq:()=>a,av:()=>i});var s=n(147);const r=(e,t)=>o(e,"json",t),a=(e,t)=>o(e,"text",t),i=(e,t)=>o(e,"blob",t),o=async(e,t,n={})=>{const r={method:"GET",mode:"cors",type:"GET",retryCount:0,...n};r.originalRetries=r.retryCount;let a=e;!0===r.cors&&(a=(0,s.O)(e));const i=new URL(a,`${window.location.origin}/`);r.data&&Object.keys(r.data).forEach((e=>{const t=r.data[e];i.searchParams.append(e,t)}));const o=await l(i,r);if(!o.ok)throw new Error(`Fetch error ${o.status} ${o.statusText} while fetching ${o.url}`);switch(t){case"json":return o.json();case"text":return o.text();case"blob":return o.blob();default:return o}},l=(e,t)=>new Promise(((n,s)=>{fetch(e,t).then((s=>{if(t.retryCount>0){if(s.status>=500&&s.status<=599&&t.retryCount>0){"function"==typeof t.stillWaiting&&t.retryCount===t.originalRetries&&t.stillWaiting();const s={...t,retryCount:t.retryCount-1};return n(c(u(t.originalRetries-s.retryCount),l,e,s))}return n(s)}return n(s)})).catch((e=>s(e)))})),c=(e,t,...n)=>new Promise((s=>{setTimeout((()=>{s(t(...n))}),e)})),u=e=>{switch(e){case 1:return 1e3;case 2:return 2e3;case 3:return 5e3;case 4:return 1e4;default:return 3e4}}},47:(e,t,n)=>{n.d(t,{b:()=>o,u:()=>a});var s=n(440),r=n(147);const a=(e,t=!1)=>new Promise((n=>{const s=new Image;if(s.onload=e=>{n(e.target)},e instanceof Blob)s.src=window.URL.createObjectURL(e);else{let n=e;t&&(n=(0,r.O)(e)),s.src=n}})),i=[],o=e=>!i.includes(e)&&((0,s.av)(e),i.push(e),!0)},430:(e,t,n)=>{n.d(t,{A:()=>a});let s=!1;const r=(e=!1)=>(r.controller||(r.controller=new NoSleep),s!==e&&(s=e,e?r.controller.enable():r.controller.disable())),a=r},891:(e,t,n)=>{n.d(t,{C:()=>s});const s=e=>[/^[ A-Za-z]+ \/ /,/^[ A-Za-z]+\//,/^[ A-Za-z]+, /].reduce(((e,t)=>e.replace(t,"")),e)},413:(e,t,n)=>{n.d(t,{Q8:()=>o,X4:()=>s,Yy:()=>r,lt:()=>i,sz:()=>a,yX:()=>l});const s=(e,t)=>Math.trunc(e*10**t)/10**t,r=e=>Math.round(e/1.60934),a=e=>Math.round(9*e/5+32),i=e=>Math.round(e/1.60934),o=e=>Math.round(e/.3048),l=e=>s(2953e-7*e,2)},348:(e,t,n)=>{n.d(t,{f:()=>r});var s=n(440);const r=async(e,t)=>{try{return await(0,s.Pq)(`https://api.weather.gov/points/${e},${t}`)}catch(n){return console.log(`Unable to get point ${e}, ${t}`),console.error(n),!1}}},24:(e,t,n)=>{n.d(t,{A:()=>o});var s=n(592),r=n(125),a=n(211),i=n(999);const o=class{constructor(e,t,n,r){this.navId=e,this.elemId=void 0,this.data=void 0,this.loadingStatus=s.Ay.loading,this.name=n??t,this.getDataCallbacks=[],this.stillWaitingCallbacks=[],this.defaultEnabled=r,this.okToDrawCurrentConditions=!0,this.okToDrawCurrentDateTime=!0,this.showOnProgress=!0,this.timing={totalScreens:1,baseDelay:9e3,delay:1},this.navBaseCount=0,this.screenIndex=-1,this.storeElemId(t),this.isEnabled?this.setStatus(s.Ay.loading):this.setStatus(s.Ay.disabled),this.startNavCount(),document.addEventListener("DOMContentLoaded",(()=>{this.loadTemplates()}))}generateCheckbox(e=!0){if("progress"===this.elemId)return!1;const t=(0,i.J)()?.[`${this.elemId}-checkbox`];let n;void 0!==t&&(n="true"===t);let s=n??window.localStorage.getItem(`display-enabled: ${this.elemId}`);null===s&&(s=e),this.isEnabled=!("true"!==s&&!0!==s),window.localStorage.setItem(`display-enabled: ${this.elemId}`,this.isEnabled);const r=document.createElement("label");r.for=`${this.elemId}-checkbox`,r.id=`${this.elemId}-label`;const a=document.createElement("input");a.type="checkbox",a.value=!0,a.id=`${this.elemId}-checkbox`,a.name=`${this.elemId}-checkbox`,a.checked=this.isEnabled,a.addEventListener("change",(e=>this.checkboxChange(e)));const o=document.createElement("span");o.innerHTML=this.name;const l=document.createElement("span");return l.innerHTML="!!!",l.classList.add("alert"),r.append(a,o,l),this.checkbox=r,r}checkboxChange(e){this.isEnabled=e.target.checked,window.localStorage.setItem(`display-enabled: ${this.elemId}`,this.isEnabled),this.getData()}setStatus(e){this.status=e,(0,a.yB)({id:this.navId,status:this.status}),this.checkbox&&(this.checkbox.classList.remove(...s.LR),this.checkbox.classList.add((0,s.qx)(e)))}get status(){return this.loadingStatus}set status(e){this.loadingStatus=e}storeElemId(e){this.elemId||(this.elemId=e)}getData(e){return this.data=void 0,e&&(this.weatherParameters=e),this.isEnabled?(this.setStatus(s.Ay.loading),this.calcNavTiming(),!0):(this.setStatus(s.Ay.disabled),!1)}getDataCallback(){this.getDataCallbacks.forEach((e=>e(this.data))),this.getDataCallbacks=[]}drawCanvas(){this.screenIndex<0&&(this.screenIndex=0),this.okToDrawCurrentDateTime&&this.drawCurrentDateTime()}finishDraw(){this.okToDrawCurrentDateTime&&(this.drawCurrentDateTime(),this.dateTimeInterval||(this.dateTimeInterval=setInterval((()=>this.active&&this.drawCurrentDateTime()),100)))}drawCurrentDateTime(){const e=r.c9.local().setZone((0,a.eB)()),t=e.toLocaleString(r.c9.TIME_WITH_SECONDS).padStart(11," "),n=e.toFormat(" ccc LLL ")+e.day.toString().padStart(2," "),s=this.elem.querySelector(".date-time.date"),i=this.elem.querySelector(".date-time.time");i&&this.lastTime!==t&&(i.innerHTML=t.toUpperCase()),this.lastTime=t,s&&this.lastDate!==n&&(s.innerHTML=n.toUpperCase()),this.lastDate=n}showCanvas(e){e===a.ab.command.firstFrame&&this.navNext(e),e===a.ab.command.lastFrame&&this.navPrev(e),this.startNavCount(),this.elem.classList.add("show"),document.querySelector("#divTwc").classList.add(this.elemId)}hideCanvas(){this.resetNavBaseCount(),this.elem.classList.remove("show"),document.querySelector("#divTwc").classList.remove(this.elemId)}get active(){return 0!==this.elem.offsetHeight}get enabled(){return this.isEnabled}navBaseTime(){(0,a.F4)()&&this.active&&(this.navBaseCount+=1,this.baseCountChange&&this.baseCountChange(this.navBaseCount),this.updateScreenFromBaseCount())}async updateScreenFromBaseCount(){const e=this.screenIndexFromBaseCount();!1!==e?e!==this.screenIndex&&(this.screenIndex=-1===e?0:e,this.screenIndexChange?this.screenIndexChange(this.screenIndex):await this.drawCanvas(),this.showCanvas()):this.sendNavDisplayMessage(a.ab.response.next)}calcNavTiming(){if(!1===this.timing)return;Array.isArray(this.timing.delay)&&(this.timing.totalScreens=this.timing.delay.length);let e=[];if("number"==typeof this.timing.delay)for(let t=0;t"object"==typeof e?e.time:e));let t=0;if(this.timing.fullDelay=e.map((e=>{const n=t+e;return t+=e,n})),Array.isArray(this.timing.delay)&&"object"==typeof this.timing.delay[0])this.timing.screenIndexes=this.timing.delay.map((e=>e.si));else{this.timing.screenIndexes=[];for(let e=0;ee>this.navBaseCount));this.navBaseCount=e}this.updateScreenFromBaseCount()}navPrev(e){if(e===a.ab.command.lastFrame)this.navBaseCount=this.timing.fullDelay[this.timing.totalScreens-1]-1;else{const e=this.timing.fullDelay.reduce(((e,t)=>te>this.navBaseCount));return-1!==e&&this.timing.screenIndexes[e]}startNavCount(){this.navInterval||(this.navInterval=setInterval((()=>this.navBaseTime()),this.timing.baseDelay))}resetNavBaseCount(){this.navBaseCount=0,this.screenIndex=-1,this.navInterval&&(clearInterval(this.navInterval),this.navInterval=void 0)}sendNavDisplayMessage(e){(0,a.Ju)({id:this.navId,type:e})}loadTemplates(){if(this.templates={},this.elem=document.querySelector(`#${this.elemId}-html`),!this.elem)return;this.elem.querySelectorAll(".template").forEach((e=>{const t=e.classList[0],n=e.cloneNode(!0);n.classList.remove("template"),this.templates[t]=n,e.remove()}))}fillTemplate(e,t){const n=this.templates[e];if(!n)return!1;const s=n.cloneNode(!0);return Object.entries(t).forEach((([e,t])=>{const n=s.querySelector(`.${e}`);n&&("string"==typeof t||"number"==typeof t?n.innerHTML=t:"img"===t?.type&&(n.querySelector("img").src=t.src))})),s}stillWaiting(){this.isEnabled&&this.setStatus(s.Ay.retrying),this.stillWaitingCallbacks.forEach((e=>e())),this.stillWaitingCallbacks=[]}}},125:(e,t,n)=>{n.d(t,{IX:()=>Sn,c9:()=>hs,dw:()=>wn});class s extends Error{}class r extends s{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class a extends s{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class i extends s{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class o extends s{}class l extends s{constructor(e){super(`Invalid unit ${e}`)}}class c extends s{}class u extends s{constructor(){super("Zone is an abstract class")}}const d="numeric",h="short",m="long",f={year:d,month:d,day:d},g={year:d,month:h,day:d},y={year:d,month:h,day:d,weekday:h},p={year:d,month:m,day:d},w={year:d,month:m,day:d,weekday:m},v={hour:d,minute:d},S={hour:d,minute:d,second:d},b={hour:d,minute:d,second:d,timeZoneName:h},k={hour:d,minute:d,second:d,timeZoneName:m},C={hour:d,minute:d,hourCycle:"h23"},T={hour:d,minute:d,second:d,hourCycle:"h23"},D={hour:d,minute:d,second:d,hourCycle:"h23",timeZoneName:h},L={hour:d,minute:d,second:d,hourCycle:"h23",timeZoneName:m},x={year:d,month:d,day:d,hour:d,minute:d},M={year:d,month:d,day:d,hour:d,minute:d,second:d},I={year:d,month:h,day:d,hour:d,minute:d},N={year:d,month:h,day:d,hour:d,minute:d,second:d},O={year:d,month:h,day:d,weekday:h,hour:d,minute:d},E={year:d,month:m,day:d,hour:d,minute:d,timeZoneName:h},$={year:d,month:m,day:d,hour:d,minute:d,second:d,timeZoneName:h},F={year:d,month:m,day:d,weekday:m,hour:d,minute:d,timeZoneName:m},q={year:d,month:m,day:d,weekday:m,hour:d,minute:d,second:d,timeZoneName:m};class W{get type(){throw new u}get name(){throw new u}get ianaName(){return this.name}get isUniversal(){throw new u}offsetName(e,t){throw new u}formatOffset(e,t){throw new u}offset(e){throw new u}equals(e){throw new u}get isValid(){throw new u}}let A=null;class V extends W{static get instance(){return null===A&&(A=new V),A}get type(){return"system"}get name(){return(new Intl.DateTimeFormat).resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return Ke(e,t,n)}formatOffset(e,t){return tt(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return"system"===e.type}get isValid(){return!0}}let _={};const P={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};let H={};class z extends W{static create(e){return H[e]||(H[e]=new z(e)),H[e]}static resetCache(){H={},_={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch(e){return!1}}constructor(e){super(),this.zoneName=e,this.valid=z.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return Ke(e,t,n,this.name)}formatOffset(e,t){return tt(this.offset(e),t)}offset(e){const t=new Date(e);if(isNaN(t))return NaN;const n=(s=this.name,_[s]||(_[s]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:s,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),_[s]);var s;let[r,a,i,o,l,c,u]=n.formatToParts?function(e,t){const n=e.formatToParts(t),s=[];for(let e=0;e=0?h:1e3+h,(Be({year:r,month:a,day:i,hour:24===l?0:l,minute:c,second:u,millisecond:0})-d)/6e4}equals(e){return"iana"===e.type&&e.name===this.name}get isValid(){return this.valid}}let Z={};let R={};function U(e,t={}){const n=JSON.stringify([e,t]);let s=R[n];return s||(s=new Intl.DateTimeFormat(e,t),R[n]=s),s}let j={};let B={};let J=null;let G={};function Y(e,t,n,s){const r=e.listingMode();return"error"===r?null:"en"===r?n(t):s(t)}class K{constructor(e,t,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;const{padTo:s,floor:r,...a}=n;if(!t||Object.keys(a).length>0){const t={useGrouping:!1,...n};n.padTo>0&&(t.minimumIntegerDigits=n.padTo),this.inf=function(e,t={}){const n=JSON.stringify([e,t]);let s=j[n];return s||(s=new Intl.NumberFormat(e,t),j[n]=s),s}(e,t)}}format(e){if(this.inf){const t=this.floor?Math.floor(e):e;return this.inf.format(t)}return _e(this.floor?Math.floor(e):Ze(e,3),this.padTo)}}class Q{constructor(e,t,n){let s;if(this.opts=n,this.originalZone=void 0,this.opts.timeZone)this.dt=e;else if("fixed"===e.zone.type){const t=e.offset/60*-1,n=t>=0?`Etc/GMT+${t}`:`Etc/GMT${t}`;0!==e.offset&&z.create(n).valid?(s=n,this.dt=e):(s="UTC",this.dt=0===e.offset?e:e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone)}else"system"===e.zone.type?this.dt=e:"iana"===e.zone.type?(this.dt=e,s=e.zone.name):(s="UTC",this.dt=e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone);const r={...this.opts};r.timeZone=r.timeZone||s,this.dtf=U(t,r)}format(){return this.originalZone?this.formatToParts().map((({value:e})=>e)).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){const e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map((e=>{if("timeZoneName"===e.type){const t=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...e,value:t}}return e})):e}resolvedOptions(){return this.dtf.resolvedOptions()}}class X{constructor(e,t,n){this.opts={style:"long",...n},!t&&$e()&&(this.rtf=function(e,t={}){const{base:n,...s}=t,r=JSON.stringify([e,s]);let a=B[r];return a||(a=new Intl.RelativeTimeFormat(e,t),B[r]=a),a}(e,n))}format(e,t){return this.rtf?this.rtf.format(e,t):function(e,t,n="always",s=!1){const r={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},a=-1===["hours","minutes","seconds"].indexOf(e);if("auto"===n&&a){const n="days"===e;switch(t){case 1:return n?"tomorrow":`next ${r[e][0]}`;case-1:return n?"yesterday":`last ${r[e][0]}`;case 0:return n?"today":`this ${r[e][0]}`}}const i=Object.is(t,-0)||t<0,o=Math.abs(t),l=1===o,c=r[e],u=s?l?c[1]:c[2]||c[1]:l?r[e][0]:e;return i?`${o} ${u} ago`:`in ${o} ${u}`}(t,e,this.opts.numeric,"long"!==this.opts.style)}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}}const ee={firstDay:1,minimalDays:4,weekend:[6,7]};class te{static fromOpts(e){return te.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,t,n,s,r=!1){const a=e||fe.defaultLocale,i=a||(r?"en-US":J||(J=(new Intl.DateTimeFormat).resolvedOptions().locale,J)),o=t||fe.defaultNumberingSystem,l=n||fe.defaultOutputCalendar,c=Ae(s)||fe.defaultWeekSettings;return new te(i,o,l,c,a)}static resetCache(){J=null,R={},j={},B={}}static fromObject({locale:e,numberingSystem:t,outputCalendar:n,weekSettings:s}={}){return te.create(e,t,n,s)}constructor(e,t,n,s,r){const[a,i,o]=function(e){const t=e.indexOf("-x-");-1!==t&&(e=e.substring(0,t));const n=e.indexOf("-u-");if(-1===n)return[e];{let t,s;try{t=U(e).resolvedOptions(),s=e}catch(r){const a=e.substring(0,n);t=U(a).resolvedOptions(),s=a}const{numberingSystem:r,calendar:a}=t;return[s,r,a]}}(e);this.locale=a,this.numberingSystem=t||i||null,this.outputCalendar=n||o||null,this.weekSettings=s,this.intl=function(e,t,n){return n||t?(e.includes("-u-")||(e+="-u"),n&&(e+=`-ca-${n}`),t&&(e+=`-nu-${t}`),e):e}(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=r,this.fastNumbersCached=null}get fastNumbers(){var e;return null==this.fastNumbersCached&&(this.fastNumbersCached=(!(e=this).numberingSystem||"latn"===e.numberingSystem)&&("latn"===e.numberingSystem||!e.locale||e.locale.startsWith("en")||"latn"===new Intl.DateTimeFormat(e.intl).resolvedOptions().numberingSystem)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),t=!(null!==this.numberingSystem&&"latn"!==this.numberingSystem||null!==this.outputCalendar&&"gregory"!==this.outputCalendar);return e&&t?"en":"intl"}clone(e){return e&&0!==Object.getOwnPropertyNames(e).length?te.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,Ae(e.weekSettings)||this.weekSettings,e.defaultToEN||!1):this}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,t=!1){return Y(this,e,it,(()=>{const n=t?{month:e,day:"numeric"}:{month:e},s=t?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=function(e){const t=[];for(let n=1;n<=12;n++){const s=hs.utc(2009,n,1);t.push(e(s))}return t}((e=>this.extract(e,n,"month")))),this.monthsCache[s][e]}))}weekdays(e,t=!1){return Y(this,e,ut,(()=>{const n=t?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},s=t?"format":"standalone";return this.weekdaysCache[s][e]||(this.weekdaysCache[s][e]=function(e){const t=[];for(let n=1;n<=7;n++){const s=hs.utc(2016,11,13+n);t.push(e(s))}return t}((e=>this.extract(e,n,"weekday")))),this.weekdaysCache[s][e]}))}meridiems(){return Y(this,void 0,(()=>dt),(()=>{if(!this.meridiemCache){const e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[hs.utc(2016,11,13,9),hs.utc(2016,11,13,19)].map((t=>this.extract(t,e,"dayperiod")))}return this.meridiemCache}))}eras(e){return Y(this,e,gt,(()=>{const t={era:e};return this.eraCache[e]||(this.eraCache[e]=[hs.utc(-40,1,1),hs.utc(2017,1,1)].map((e=>this.extract(e,t,"era")))),this.eraCache[e]}))}extract(e,t,n){const s=this.dtFormatter(e,t).formatToParts().find((e=>e.type.toLowerCase()===n));return s?s.value:null}numberFormatter(e={}){return new K(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new Q(e,this.intl,t)}relFormatter(e={}){return new X(this.intl,this.isEnglish(),e)}listFormatter(e={}){return function(e,t={}){const n=JSON.stringify([e,t]);let s=Z[n];return s||(s=new Intl.ListFormat(e,t),Z[n]=s),s}(this.intl,e)}isEnglish(){return"en"===this.locale||"en-us"===this.locale.toLowerCase()||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:Fe()?function(e){let t=G[e];if(!t){const n=new Intl.Locale(e);t="getWeekInfo"in n?n.getWeekInfo():n.weekInfo,G[e]=t}return t}(this.locale):ee}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}}let ne=null;class se extends W{static get utcInstance(){return null===ne&&(ne=new se(0)),ne}static instance(e){return 0===e?se.utcInstance:new se(e)}static parseSpecifier(e){if(e){const t=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(t)return new se(Qe(t[1],t[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return 0===this.fixed?"UTC":`UTC${tt(this.fixed,"narrow")}`}get ianaName(){return 0===this.fixed?"Etc/UTC":`Etc/GMT${tt(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,t){return tt(this.fixed,t)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return"fixed"===e.type&&e.fixed===this.fixed}get isValid(){return!0}}class re extends W{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function ae(e,t){if(Ne(e)||null===e)return t;if(e instanceof W)return e;if("string"==typeof e){const n=e.toLowerCase();return"default"===n?t:"local"===n||"system"===n?V.instance:"utc"===n||"gmt"===n?se.utcInstance:se.parseSpecifier(n)||z.create(e)}return Oe(e)?se.instance(e):"object"==typeof e&&"offset"in e&&"function"==typeof e.offset?e:new re(e)}let ie,oe=()=>Date.now(),le="system",ce=null,ue=null,de=null,he=60,me=null;class fe{static get now(){return oe}static set now(e){oe=e}static set defaultZone(e){le=e}static get defaultZone(){return ae(le,V.instance)}static get defaultLocale(){return ce}static set defaultLocale(e){ce=e}static get defaultNumberingSystem(){return ue}static set defaultNumberingSystem(e){ue=e}static get defaultOutputCalendar(){return de}static set defaultOutputCalendar(e){de=e}static get defaultWeekSettings(){return me}static set defaultWeekSettings(e){me=Ae(e)}static get twoDigitCutoffYear(){return he}static set twoDigitCutoffYear(e){he=e%100}static get throwOnInvalid(){return ie}static set throwOnInvalid(e){ie=e}static resetCaches(){te.resetCache(),z.resetCache()}}class ge{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}const ye=[0,31,59,90,120,151,181,212,243,273,304,334],pe=[0,31,60,91,121,152,182,213,244,274,305,335];function we(e,t){return new ge("unit out of range",`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function ve(e,t,n){const s=new Date(Date.UTC(e,t-1,n));e<100&&e>=0&&s.setUTCFullYear(s.getUTCFullYear()-1900);const r=s.getUTCDay();return 0===r?7:r}function Se(e,t,n){return n+(Re(e)?pe:ye)[t-1]}function be(e,t){const n=Re(e)?pe:ye,s=n.findIndex((e=>eGe(s,t,n)?(l=s+1,c=1):l=s,{weekYear:l,weekNumber:c,weekday:o,...nt(e)}}function Te(e,t=4,n=1){const{weekYear:s,weekNumber:r,weekday:a}=e,i=ke(ve(s,1,t),n),o=Ue(s);let l,c=7*r+a-i-7+t;c<1?(l=s-1,c+=Ue(l)):c>o?(l=s+1,c-=Ue(s)):l=s;const{month:u,day:d}=be(l,c);return{year:l,month:u,day:d,...nt(e)}}function De(e){const{year:t,month:n,day:s}=e;return{year:t,ordinal:Se(t,n,s),...nt(e)}}function Le(e){const{year:t,ordinal:n}=e,{month:s,day:r}=be(t,n);return{year:t,month:s,day:r,...nt(e)}}function xe(e,t){if(!Ne(e.localWeekday)||!Ne(e.localWeekNumber)||!Ne(e.localWeekYear)){if(!Ne(e.weekday)||!Ne(e.weekNumber)||!Ne(e.weekYear))throw new o("Cannot mix locale-based week fields with ISO-based week fields");return Ne(e.localWeekday)||(e.weekday=e.localWeekday),Ne(e.localWeekNumber)||(e.weekNumber=e.localWeekNumber),Ne(e.localWeekYear)||(e.weekYear=e.localWeekYear),delete e.localWeekday,delete e.localWeekNumber,delete e.localWeekYear,{minDaysInFirstWeek:t.getMinDaysInFirstWeek(),startOfWeek:t.getStartOfWeek()}}return{minDaysInFirstWeek:4,startOfWeek:1}}function Me(e){const t=Ee(e.year),n=Ve(e.month,1,12),s=Ve(e.day,1,je(e.year,e.month));return t?n?!s&&we("day",e.day):we("month",e.month):we("year",e.year)}function Ie(e){const{hour:t,minute:n,second:s,millisecond:r}=e,a=Ve(t,0,23)||24===t&&0===n&&0===s&&0===r,i=Ve(n,0,59),o=Ve(s,0,59),l=Ve(r,0,999);return a?i?o?!l&&we("millisecond",r):we("second",s):we("minute",n):we("hour",t)}function Ne(e){return void 0===e}function Oe(e){return"number"==typeof e}function Ee(e){return"number"==typeof e&&e%1==0}function $e(){try{return"undefined"!=typeof Intl&&!!Intl.RelativeTimeFormat}catch(e){return!1}}function Fe(){try{return"undefined"!=typeof Intl&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch(e){return!1}}function qe(e,t,n){if(0!==e.length)return e.reduce(((e,s)=>{const r=[t(s),s];return e&&n(e[0],r[0])===e[0]?e:r}),null)[1]}function We(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Ae(e){if(null==e)return null;if("object"!=typeof e)throw new c("Week settings must be an object");if(!Ve(e.firstDay,1,7)||!Ve(e.minimalDays,1,7)||!Array.isArray(e.weekend)||e.weekend.some((e=>!Ve(e,1,7))))throw new c("Invalid week settings");return{firstDay:e.firstDay,minimalDays:e.minimalDays,weekend:Array.from(e.weekend)}}function Ve(e,t,n){return Ee(e)&&e>=t&&e<=n}function _e(e,t=2){let n;return n=e<0?"-"+(""+-e).padStart(t,"0"):(""+e).padStart(t,"0"),n}function Pe(e){return Ne(e)||null===e||""===e?void 0:parseInt(e,10)}function He(e){return Ne(e)||null===e||""===e?void 0:parseFloat(e)}function ze(e){if(!Ne(e)&&null!==e&&""!==e){const t=1e3*parseFloat("0."+e);return Math.floor(t)}}function Ze(e,t,n=!1){const s=10**t;return(n?Math.trunc:Math.round)(e*s)/s}function Re(e){return e%4==0&&(e%100!=0||e%400==0)}function Ue(e){return Re(e)?366:365}function je(e,t){const n=function(e,t){return e-t*Math.floor(e/t)}(t-1,12)+1;return 2===n?Re(e+(t-n)/12)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function Be(e){let t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&e.year>=0&&(t=new Date(t),t.setUTCFullYear(e.year,e.month-1,e.day)),+t}function Je(e,t,n){return-ke(ve(e,1,t),n)+t-1}function Ge(e,t=4,n=1){const s=Je(e,t,n),r=Je(e+1,t,n);return(Ue(e)-s+r)/7}function Ye(e){return e>99?e:e>fe.twoDigitCutoffYear?1900+e:2e3+e}function Ke(e,t,n,s=null){const r=new Date(e),a={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};s&&(a.timeZone=s);const i={timeZoneName:t,...a},o=new Intl.DateTimeFormat(n,i).formatToParts(r).find((e=>"timezonename"===e.type.toLowerCase()));return o?o.value:null}function Qe(e,t){let n=parseInt(e,10);Number.isNaN(n)&&(n=0);const s=parseInt(t,10)||0;return 60*n+(n<0||Object.is(n,-0)?-s:s)}function Xe(e){const t=Number(e);if("boolean"==typeof e||""===e||Number.isNaN(t))throw new c(`Invalid unit value ${e}`);return t}function et(e,t){const n={};for(const s in e)if(We(e,s)){const r=e[s];if(null==r)continue;n[t(s)]=Xe(r)}return n}function tt(e,t){const n=Math.trunc(Math.abs(e/60)),s=Math.trunc(Math.abs(e%60)),r=e>=0?"+":"-";switch(t){case"short":return`${r}${_e(n,2)}:${_e(s,2)}`;case"narrow":return`${r}${n}${s>0?`:${s}`:""}`;case"techie":return`${r}${_e(n,2)}${_e(s,2)}`;default:throw new RangeError(`Value format ${t} is out of range for property format`)}}function nt(e){return function(e,t){return t.reduce(((t,n)=>(t[n]=e[n],t)),{})}(e,["hour","minute","second","millisecond"])}const st=["January","February","March","April","May","June","July","August","September","October","November","December"],rt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],at=["J","F","M","A","M","J","J","A","S","O","N","D"];function it(e){switch(e){case"narrow":return[...at];case"short":return[...rt];case"long":return[...st];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const ot=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],lt=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],ct=["M","T","W","T","F","S","S"];function ut(e){switch(e){case"narrow":return[...ct];case"short":return[...lt];case"long":return[...ot];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const dt=["AM","PM"],ht=["Before Christ","Anno Domini"],mt=["BC","AD"],ft=["B","A"];function gt(e){switch(e){case"narrow":return[...ft];case"short":return[...mt];case"long":return[...ht];default:return null}}function yt(e,t){let n="";for(const s of e)s.literal?n+=s.val:n+=t(s.val);return n}const pt={D:f,DD:g,DDD:p,DDDD:w,t:v,tt:S,ttt:b,tttt:k,T:C,TT:T,TTT:D,TTTT:L,f:x,ff:I,fff:E,ffff:F,F:M,FF:N,FFF:$,FFFF:q};class wt{static create(e,t={}){return new wt(e,t)}static parseFormat(e){let t=null,n="",s=!1;const r=[];for(let a=0;a0&&r.push({literal:s||/^\s+$/.test(n),val:n}),t=null,n="",s=!s):s||i===t?n+=i:(n.length>0&&r.push({literal:/^\s+$/.test(n),val:n}),n=i,t=i)}return n.length>0&&r.push({literal:s||/^\s+$/.test(n),val:n}),r}static macroTokenToFormatOpts(e){return pt[e]}constructor(e,t){this.opts=t,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,t){null===this.systemLoc&&(this.systemLoc=this.loc.redefaultToSystem());return this.systemLoc.dtFormatter(e,{...this.opts,...t}).format()}dtFormatter(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t})}formatDateTime(e,t){return this.dtFormatter(e,t).format()}formatDateTimeParts(e,t){return this.dtFormatter(e,t).formatToParts()}formatInterval(e,t){return this.dtFormatter(e.start,t).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,t){return this.dtFormatter(e,t).resolvedOptions()}num(e,t=0){if(this.opts.forceSimple)return _e(e,t);const n={...this.opts};return t>0&&(n.padTo=t),this.loc.numberFormatter(n).format(e)}formatDateTimeFromString(e,t){const n="en"===this.loc.listingMode(),s=this.loc.outputCalendar&&"gregory"!==this.loc.outputCalendar,r=(t,n)=>this.loc.extract(e,t,n),a=t=>e.isOffsetFixed&&0===e.offset&&t.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,t.format):"",i=()=>n?function(e){return dt[e.hour<12?0:1]}(e):r({hour:"numeric",hourCycle:"h12"},"dayperiod"),o=(t,s)=>n?function(e,t){return it(t)[e.month-1]}(e,t):r(s?{month:t}:{month:t,day:"numeric"},"month"),l=(t,s)=>n?function(e,t){return ut(t)[e.weekday-1]}(e,t):r(s?{weekday:t}:{weekday:t,month:"long",day:"numeric"},"weekday"),c=t=>{const n=wt.macroTokenToFormatOpts(t);return n?this.formatWithSystemDefault(e,n):t},u=t=>n?function(e,t){return gt(t)[e.year<0?0:1]}(e,t):r({era:t},"era");return yt(wt.parseFormat(t),(t=>{switch(t){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12==0?12:e.hour%12);case"hh":return this.num(e.hour%12==0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return a({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return a({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return a({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return i();case"d":return s?r({day:"numeric"},"day"):this.num(e.day);case"dd":return s?r({day:"2-digit"},"day"):this.num(e.day,2);case"c":case"E":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return s?r({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return s?r({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return o("short",!0);case"LLLL":return o("long",!0);case"LLLLL":return o("narrow",!0);case"M":return s?r({month:"numeric"},"month"):this.num(e.month);case"MM":return s?r({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return o("short",!1);case"MMMM":return o("long",!1);case"MMMMM":return o("narrow",!1);case"y":return s?r({year:"numeric"},"year"):this.num(e.year);case"yy":return s?r({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return s?r({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return s?r({year:"numeric"},"year"):this.num(e.year,6);case"G":return u("short");case"GG":return u("long");case"GGGGG":return u("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"n":return this.num(e.localWeekNumber);case"nn":return this.num(e.localWeekNumber,2);case"ii":return this.num(e.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(e.localWeekYear,4);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return c(t)}}))}formatDurationFromString(e,t){const n=e=>{switch(e[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},s=wt.parseFormat(t),r=s.reduce(((e,{literal:t,val:n})=>t?e:e.concat(n)),[]);return yt(s,(e=>t=>{const s=n(t);return s?this.num(e.get(s),t.length):t})(e.shiftTo(...r.map(n).filter((e=>e)))))}}const vt=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function St(...e){const t=e.reduce(((e,t)=>e+t.source),"");return RegExp(`^${t}$`)}function bt(...e){return t=>e.reduce((([e,n,s],r)=>{const[a,i,o]=r(t,s);return[{...e,...a},i||n,o]}),[{},null,1]).slice(0,2)}function kt(e,...t){if(null==e)return[null,null];for(const[n,s]of t){const t=n.exec(e);if(t)return s(t)}return[null,null]}function Ct(...e){return(t,n)=>{const s={};let r;for(r=0;rvoid 0!==e&&(t||e&&u)?-e:e;return[{years:h(He(n)),months:h(He(s)),weeks:h(He(r)),days:h(He(a)),hours:h(He(i)),minutes:h(He(o)),seconds:h(He(l),"-0"===l),milliseconds:h(ze(c),d)}]}const _t={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Pt(e,t,n,s,r,a,i){const o={year:2===t.length?Ye(Pe(t)):Pe(t),month:rt.indexOf(n)+1,day:Pe(s),hour:Pe(r),minute:Pe(a)};return i&&(o.second=Pe(i)),e&&(o.weekday=e.length>3?ot.indexOf(e)+1:lt.indexOf(e)+1),o}const Ht=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function zt(e){const[,t,n,s,r,a,i,o,l,c,u,d]=e,h=Pt(t,r,s,n,a,i,o);let m;return m=l?_t[l]:c?0:Qe(u,d),[h,new se(m)]}const Zt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,Rt=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,Ut=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function jt(e){const[,t,n,s,r,a,i,o]=e;return[Pt(t,r,s,n,a,i,o),se.utcInstance]}function Bt(e){const[,t,n,s,r,a,i,o]=e;return[Pt(t,o,n,s,r,a,i),se.utcInstance]}const Jt=St(/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,xt),Gt=St(/(\d{4})-?W(\d\d)(?:-?(\d))?/,xt),Yt=St(/(\d{4})-?(\d{3})/,xt),Kt=St(Lt),Qt=bt((function(e,t){return[{year:Et(e,t),month:Et(e,t+1,1),day:Et(e,t+2,1)},null,t+3]}),$t,Ft,qt),Xt=bt(Mt,$t,Ft,qt),en=bt(It,$t,Ft,qt),tn=bt($t,Ft,qt);const nn=bt($t);const sn=St(/(\d{4})-(\d\d)-(\d\d)/,Ot),rn=St(Nt),an=bt($t,Ft,qt);const on="Invalid Duration",ln={weeks:{days:7,hours:168,minutes:10080,seconds:604800,milliseconds:6048e5},days:{hours:24,minutes:1440,seconds:86400,milliseconds:864e5},hours:{minutes:60,seconds:3600,milliseconds:36e5},minutes:{seconds:60,milliseconds:6e4},seconds:{milliseconds:1e3}},cn={years:{quarters:4,months:12,weeks:52,days:365,hours:8760,minutes:525600,seconds:31536e3,milliseconds:31536e6},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:131040,seconds:7862400,milliseconds:78624e5},months:{weeks:4,days:30,hours:720,minutes:43200,seconds:2592e3,milliseconds:2592e6},...ln},un=365.2425,dn=30.436875,hn={years:{quarters:4,months:12,weeks:52.1775,days:un,hours:8765.82,minutes:525949.2,seconds:525949.2*60,milliseconds:525949.2*60*1e3},quarters:{months:3,weeks:13.044375,days:91.310625,hours:2191.455,minutes:131487.3,seconds:525949.2*60/4,milliseconds:7889237999.999999},months:{weeks:4.3481250000000005,days:dn,hours:730.485,minutes:43829.1,seconds:2629746,milliseconds:2629746e3},...ln},mn=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],fn=mn.slice(0).reverse();function gn(e,t,n=!1){const s={values:n?t.values:{...e.values,...t.values||{}},loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy,matrix:t.matrix||e.matrix};return new wn(s)}function yn(e,t){let n=t.milliseconds??0;for(const s of fn.slice(1))t[s]&&(n+=t[s]*e[s].milliseconds);return n}function pn(e,t){const n=yn(e,t)<0?-1:1;mn.reduceRight(((s,r)=>{if(Ne(t[r]))return s;if(s){const a=t[s]*n,i=e[r][s],o=Math.floor(a/i);t[r]+=o*n,t[s]-=o*i*n}return r}),null),mn.reduce(((n,s)=>{if(Ne(t[s]))return n;if(n){const r=t[n]%1;t[n]-=r,t[s]+=r*e[n][s]}return s}),null)}class wn{constructor(e){const t="longterm"===e.conversionAccuracy||!1;let n=t?hn:cn;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||te.create(),this.conversionAccuracy=t?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(e,t){return wn.fromObject({milliseconds:e},t)}static fromObject(e,t={}){if(null==e||"object"!=typeof e)throw new c("Duration.fromObject: argument expected to be an object, got "+(null===e?"null":typeof e));return new wn({values:et(e,wn.normalizeUnit),loc:te.fromObject(t),conversionAccuracy:t.conversionAccuracy,matrix:t.matrix})}static fromDurationLike(e){if(Oe(e))return wn.fromMillis(e);if(wn.isDuration(e))return e;if("object"==typeof e)return wn.fromObject(e);throw new c(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,t){const[n]=function(e){return kt(e,[At,Vt])}(e);return n?wn.fromObject(n,t):wn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,t){const[n]=function(e){return kt(e,[Wt,nn])}(e);return n?wn.fromObject(n,t):wn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the Duration is invalid");const n=e instanceof ge?e:new ge(e,t);if(fe.throwOnInvalid)throw new i(n);return new wn({invalid:n})}static normalizeUnit(e){const t={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e?e.toLowerCase():e];if(!t)throw new l(e);return t}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,t={}){const n={...t,floor:!1!==t.round&&!1!==t.floor};return this.isValid?wt.create(this.loc,n).formatDurationFromString(this,e):on}toHuman(e={}){if(!this.isValid)return on;const t=mn.map((t=>{const n=this.values[t];return Ne(n)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:t.slice(0,-1)}).format(n)})).filter((e=>e));return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(t)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return 0!==this.years&&(e+=this.years+"Y"),0===this.months&&0===this.quarters||(e+=this.months+3*this.quarters+"M"),0!==this.weeks&&(e+=this.weeks+"W"),0!==this.days&&(e+=this.days+"D"),0===this.hours&&0===this.minutes&&0===this.seconds&&0===this.milliseconds||(e+="T"),0!==this.hours&&(e+=this.hours+"H"),0!==this.minutes&&(e+=this.minutes+"M"),0===this.seconds&&0===this.milliseconds||(e+=Ze(this.seconds+this.milliseconds/1e3,3)+"S"),"P"===e&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const t=this.toMillis();if(t<0||t>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1};return hs.fromMillis(t,{zone:"UTC"}).toISOTime(e)}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?yn(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const t=wn.fromDurationLike(e),n={};for(const e of mn)(We(t.values,e)||We(this.values,e))&&(n[e]=t.get(e)+this.get(e));return gn(this,{values:n},!0)}minus(e){if(!this.isValid)return this;const t=wn.fromDurationLike(e);return this.plus(t.negate())}mapUnits(e){if(!this.isValid)return this;const t={};for(const n of Object.keys(this.values))t[n]=Xe(e(this.values[n],n));return gn(this,{values:t},!0)}get(e){return this[wn.normalizeUnit(e)]}set(e){if(!this.isValid)return this;return gn(this,{values:{...this.values,...et(e,wn.normalizeUnit)}})}reconfigure({locale:e,numberingSystem:t,conversionAccuracy:n,matrix:s}={}){return gn(this,{loc:this.loc.clone({locale:e,numberingSystem:t}),matrix:s,conversionAccuracy:n})}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return pn(this.matrix,e),gn(this,{values:e},!0)}rescale(){if(!this.isValid)return this;return gn(this,{values:function(e){const t={};for(const[n,s]of Object.entries(e))0!==s&&(t[n]=s);return t}(this.normalize().shiftToAll().toObject())},!0)}shiftTo(...e){if(!this.isValid)return this;if(0===e.length)return this;e=e.map((e=>wn.normalizeUnit(e)));const t={},n={},s=this.toObject();let r;for(const a of mn)if(e.indexOf(a)>=0){r=a;let e=0;for(const t in n)e+=this.matrix[t][a]*n[t],n[t]=0;Oe(s[a])&&(e+=s[a]);const i=Math.trunc(e);t[a]=i,n[a]=(1e3*e-1e3*i)/1e3}else Oe(s[a])&&(n[a]=s[a]);for(const e in n)0!==n[e]&&(t[r]+=e===r?n[e]:n[e]/this.matrix[r][e]);return pn(this.matrix,t),gn(this,{values:t},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;const e={};for(const t of Object.keys(this.values))e[t]=0===this.values[t]?0:-this.values[t];return gn(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return null===this.invalid}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid)return!1;if(!this.loc.equals(e.loc))return!1;for(const s of mn)if(t=this.values[s],n=e.values[s],!(void 0===t||0===t?void 0===n||0===n:t===n))return!1;var t,n;return!0}}const vn="Invalid Interval";class Sn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the Interval is invalid");const n=e instanceof ge?e:new ge(e,t);if(fe.throwOnInvalid)throw new a(n);return new Sn({invalid:n})}static fromDateTimes(e,t){const n=ms(e),s=ms(t),r=function(e,t){return e&&e.isValid?t&&t.isValid?te}isBefore(e){return!!this.isValid&&this.e<=e}contains(e){return!!this.isValid&&(this.s<=e&&this.e>e)}set({start:e,end:t}={}){return this.isValid?Sn.fromDateTimes(e||this.s,t||this.e):this}splitAt(...e){if(!this.isValid)return[];const t=e.map(ms).filter((e=>this.contains(e))).sort(((e,t)=>e.toMillis()-t.toMillis())),n=[];let{s}=this,r=0;for(;s+this.e?this.e:e;n.push(Sn.fromDateTimes(s,a)),s=a,r+=1}return n}splitBy(e){const t=wn.fromDurationLike(e);if(!this.isValid||!t.isValid||0===t.as("milliseconds"))return[];let n,{s}=this,r=1;const a=[];for(;se*r)));n=+e>+this.e?this.e:e,a.push(Sn.fromDateTimes(s,n)),s=n,r+=1}return a}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s=e.e)}equals(e){return!(!this.isValid||!e.isValid)&&(this.s.equals(e.s)&&this.e.equals(e.e))}intersection(e){if(!this.isValid)return this;const t=this.s>e.s?this.s:e.s,n=this.e=n?null:Sn.fromDateTimes(t,n)}union(e){if(!this.isValid)return this;const t=this.se.e?this.e:e.e;return Sn.fromDateTimes(t,n)}static merge(e){const[t,n]=e.sort(((e,t)=>e.s-t.s)).reduce((([e,t],n)=>t?t.overlaps(n)||t.abutsStart(n)?[e,t.union(n)]:[e.concat([t]),n]:[e,n]),[[],null]);return n&&t.push(n),t}static xor(e){let t=null,n=0;const s=[],r=e.map((e=>[{time:e.s,type:"s"},{time:e.e,type:"e"}])),a=Array.prototype.concat(...r).sort(((e,t)=>e.time-t.time));for(const e of a)n+="s"===e.type?1:-1,1===n?t=e.time:(t&&+t!=+e.time&&s.push(Sn.fromDateTimes(t,e.time)),t=null);return Sn.merge(s)}difference(...e){return Sn.xor([this].concat(e)).map((e=>this.intersection(e))).filter((e=>e&&!e.isEmpty()))}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:vn}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=f,t={}){return this.isValid?wt.create(this.s.loc.clone(t),e).formatInterval(this):vn}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:vn}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:vn}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:vn}toFormat(e,{separator:t=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:vn}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):wn.invalid(this.invalidReason)}mapEndpoints(e){return Sn.fromDateTimes(e(this.s),e(this.e))}}class bn{static hasDST(e=fe.defaultZone){const t=hs.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return z.isValidZone(e)}static normalizeZone(e){return ae(e,fe.defaultZone)}static getStartOfWeek({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getWeekendDays().slice()}static months(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null,outputCalendar:r="gregory"}={}){return(s||te.create(t,n,r)).months(e)}static monthsFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null,outputCalendar:r="gregory"}={}){return(s||te.create(t,n,r)).months(e,!0)}static weekdays(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null}={}){return(s||te.create(t,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null}={}){return(s||te.create(t,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return te.create(e).meridiems()}static eras(e="short",{locale:t=null}={}){return te.create(t,null,"gregory").eras(e)}static features(){return{relative:$e(),localeWeek:Fe()}}}function kn(e,t){const n=e=>e.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),s=n(t)-n(e);return Math.floor(wn.fromMillis(s).as("days"))}function Cn(e,t,n,s){let[r,a,i,o]=function(e,t,n){const s=[["years",(e,t)=>t.year-e.year],["quarters",(e,t)=>t.quarter-e.quarter+4*(t.year-e.year)],["months",(e,t)=>t.month-e.month+12*(t.year-e.year)],["weeks",(e,t)=>{const n=kn(e,t);return(n-n%7)/7}],["days",kn]],r={},a=e;let i,o;for(const[l,c]of s)n.indexOf(l)>=0&&(i=l,r[l]=c(e,t),o=a.plus(r),o>t?(r[l]--,(e=a.plus(r))>t&&(o=e,r[l]--,e=a.plus(r))):e=o);return[e,r,o,i]}(e,t,n);const l=t-r,c=n.filter((e=>["hours","minutes","seconds","milliseconds"].indexOf(e)>=0));0===c.length&&(i0?wn.fromMillis(l,s).shiftTo(...c).plus(u):u}const Tn={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},Dn={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},Ln=Tn.hanidec.replace(/[\[|\]]/g,"").split("");function xn({numberingSystem:e},t=""){return new RegExp(`${Tn[e||"latn"]}${t}`)}const Mn="missing Intl.DateTimeFormat.formatToParts support";function In(e,t=(e=>e)){return{regex:e,deser:([e])=>t(function(e){let t=parseInt(e,10);if(isNaN(t)){t="";for(let n=0;n=n&&s<=r&&(t+=s-n)}}return parseInt(t,10)}return t}(e))}}const Nn=`[ ${String.fromCharCode(160)}]`,On=new RegExp(Nn,"g");function En(e){return e.replace(/\./g,"\\.?").replace(On,Nn)}function $n(e){return e.replace(/\./g,"").replace(On," ").toLowerCase()}function Fn(e,t){return null===e?null:{regex:RegExp(e.map(En).join("|")),deser:([n])=>e.findIndex((e=>$n(n)===$n(e)))+t}}function qn(e,t){return{regex:e,deser:([,e,t])=>Qe(e,t),groups:t}}function Wn(e){return{regex:e,deser:([e])=>e}}const An={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};let Vn=null;function _n(e,t){return Array.prototype.concat(...e.map((e=>function(e,t){if(e.literal)return e;const n=Hn(wt.macroTokenToFormatOpts(e.val),t);return null==n||n.includes(void 0)?e:n}(e,t))))}function Pn(e,t,n){const s=_n(wt.parseFormat(n),e),r=s.map((t=>function(e,t){const n=xn(t),s=xn(t,"{2}"),r=xn(t,"{3}"),a=xn(t,"{4}"),i=xn(t,"{6}"),o=xn(t,"{1,2}"),l=xn(t,"{1,3}"),c=xn(t,"{1,6}"),u=xn(t,"{1,9}"),d=xn(t,"{2,4}"),h=xn(t,"{4,6}"),m=e=>{return{regex:RegExp((t=e.val,t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"))),deser:([e])=>e,literal:!0};var t},f=(f=>{if(e.literal)return m(f);switch(f.val){case"G":return Fn(t.eras("short"),0);case"GG":return Fn(t.eras("long"),0);case"y":return In(c);case"yy":case"kk":return In(d,Ye);case"yyyy":case"kkkk":return In(a);case"yyyyy":return In(h);case"yyyyyy":return In(i);case"M":case"L":case"d":case"H":case"h":case"m":case"q":case"s":case"W":return In(o);case"MM":case"LL":case"dd":case"HH":case"hh":case"mm":case"qq":case"ss":case"WW":return In(s);case"MMM":return Fn(t.months("short",!0),1);case"MMMM":return Fn(t.months("long",!0),1);case"LLL":return Fn(t.months("short",!1),1);case"LLLL":return Fn(t.months("long",!1),1);case"o":case"S":return In(l);case"ooo":case"SSS":return In(r);case"u":return Wn(u);case"uu":return Wn(o);case"uuu":case"E":case"c":return In(n);case"a":return Fn(t.meridiems(),0);case"EEE":return Fn(t.weekdays("short",!1),1);case"EEEE":return Fn(t.weekdays("long",!1),1);case"ccc":return Fn(t.weekdays("short",!0),1);case"cccc":return Fn(t.weekdays("long",!0),1);case"Z":case"ZZ":return qn(new RegExp(`([+-]${o.source})(?::(${s.source}))?`),2);case"ZZZ":return qn(new RegExp(`([+-]${o.source})(${s.source})?`),2);case"z":return Wn(/[a-z_+-/]{1,256}?/i);case" ":return Wn(/[^\S\n\r]/);default:return m(f)}})(e)||{invalidReason:Mn};return f.token=e,f}(t,e))),a=r.find((e=>e.invalidReason));if(a)return{input:t,tokens:s,invalidReason:a.invalidReason};{const[e,n]=function(e){return[`^${e.map((e=>e.regex)).reduce(((e,t)=>`${e}(${t.source})`),"")}$`,e]}(r),a=RegExp(e,"i"),[i,l]=function(e,t,n){const s=e.match(t);if(s){const e={};let t=1;for(const r in n)if(We(n,r)){const a=n[r],i=a.groups?a.groups+1:1;!a.literal&&a.token&&(e[a.token.val[0]]=a.deser(s.slice(t,t+i))),t+=i}return[s,e]}return[s,{}]}(t,a,n),[c,u,d]=l?function(e){let t,n=null;return Ne(e.z)||(n=z.create(e.z)),Ne(e.Z)||(n||(n=new se(e.Z)),t=e.Z),Ne(e.q)||(e.M=3*(e.q-1)+1),Ne(e.h)||(e.h<12&&1===e.a?e.h+=12:12===e.h&&0===e.a&&(e.h=0)),0===e.G&&e.y&&(e.y=-e.y),Ne(e.u)||(e.S=ze(e.u)),[Object.keys(e).reduce(((t,n)=>{const s=(e=>{switch(e){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}})(n);return s&&(t[s]=e[n]),t}),{}),n,t]}(l):[null,null,void 0];if(We(l,"a")&&We(l,"H"))throw new o("Can't include meridiem when specifying 24-hour format");return{input:t,tokens:s,regex:a,rawMatches:i,matches:l,result:c,zone:u,specificOffset:d}}}function Hn(e,t){if(!e)return null;const n=wt.create(t,e).dtFormatter((Vn||(Vn=hs.fromMillis(1555555555555)),Vn)),s=n.formatToParts(),r=n.resolvedOptions();return s.map((t=>function(e,t,n){const{type:s,value:r}=e;if("literal"===s){const e=/^\s+$/.test(r);return{literal:!e,val:e?" ":r}}const a=t[s];let i=s;"hour"===s&&(i=null!=t.hour12?t.hour12?"hour12":"hour24":null!=t.hourCycle?"h11"===t.hourCycle||"h12"===t.hourCycle?"hour12":"hour24":n.hour12?"hour12":"hour24");let o=An[i];if("object"==typeof o&&(o=o[a]),o)return{literal:!1,val:o}}(t,e,r)))}const zn="Invalid DateTime",Zn=864e13;function Rn(e){return new ge("unsupported zone",`the zone "${e.name}" is not supported`)}function Un(e){return null===e.weekData&&(e.weekData=Ce(e.c)),e.weekData}function jn(e){return null===e.localWeekData&&(e.localWeekData=Ce(e.c,e.loc.getMinDaysInFirstWeek(),e.loc.getStartOfWeek())),e.localWeekData}function Bn(e,t){const n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new hs({...n,...t,old:n})}function Jn(e,t,n){let s=e-60*t*1e3;const r=n.offset(s);if(t===r)return[s,t];s-=60*(r-t)*1e3;const a=n.offset(s);return r===a?[s,r]:[e-60*Math.min(r,a)*1e3,Math.max(r,a)]}function Gn(e,t){const n=new Date(e+=60*t*1e3);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function Yn(e,t,n){return Jn(Be(e),t,n)}function Kn(e,t){const n=e.o,s=e.c.year+Math.trunc(t.years),r=e.c.month+Math.trunc(t.months)+3*Math.trunc(t.quarters),a={...e.c,year:s,month:r,day:Math.min(e.c.day,je(s,r))+Math.trunc(t.days)+7*Math.trunc(t.weeks)},i=wn.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as("milliseconds"),o=Be(a);let[l,c]=Jn(o,n,e.zone);return 0!==i&&(l+=i,c=e.zone.offset(l)),{ts:l,o:c}}function Qn(e,t,n,s,r,a){const{setZone:i,zone:o}=n;if(e&&0!==Object.keys(e).length||t){const s=t||o,r=hs.fromObject(e,{...n,zone:s,specificOffset:a});return i?r:r.setZone(o)}return hs.invalid(new ge("unparsable",`the input "${r}" can't be parsed as ${s}`))}function Xn(e,t,n=!0){return e.isValid?wt.create(te.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function es(e,t){const n=e.c.year>9999||e.c.year<0;let s="";return n&&e.c.year>=0&&(s+="+"),s+=_e(e.c.year,n?6:4),t?(s+="-",s+=_e(e.c.month),s+="-",s+=_e(e.c.day)):(s+=_e(e.c.month),s+=_e(e.c.day)),s}function ts(e,t,n,s,r,a){let i=_e(e.c.hour);return t?(i+=":",i+=_e(e.c.minute),0===e.c.millisecond&&0===e.c.second&&n||(i+=":")):i+=_e(e.c.minute),0===e.c.millisecond&&0===e.c.second&&n||(i+=_e(e.c.second),0===e.c.millisecond&&s||(i+=".",i+=_e(e.c.millisecond,3))),r&&(e.isOffsetFixed&&0===e.offset&&!a?i+="Z":e.o<0?(i+="-",i+=_e(Math.trunc(-e.o/60)),i+=":",i+=_e(Math.trunc(-e.o%60))):(i+="+",i+=_e(Math.trunc(e.o/60)),i+=":",i+=_e(Math.trunc(e.o%60)))),a&&(i+="["+e.zone.ianaName+"]"),i}const ns={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},ss={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},rs={ordinal:1,hour:0,minute:0,second:0,millisecond:0},as=["year","month","day","hour","minute","second","millisecond"],is=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],os=["year","ordinal","hour","minute","second","millisecond"];function ls(e){switch(e.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return function(e){const t={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[e.toLowerCase()];if(!t)throw new l(e);return t}(e)}}function cs(e,t){const n=ae(t.zone,fe.defaultZone),s=te.fromObject(t),r=fe.now();let a,i;if(Ne(e.year))a=r;else{for(const t of as)Ne(e[t])&&(e[t]=ns[t]);const t=Me(e)||Ie(e);if(t)return hs.invalid(t);const s=n.offset(r);[a,i]=Yn(e,s,n)}return new hs({ts:a,zone:n,loc:s,o:i})}function us(e,t,n){const s=!!Ne(n.round)||n.round,r=(e,r)=>{e=Ze(e,s||n.calendary?0:2,!0);return t.loc.clone(n).relFormatter(n).format(e,r)},a=s=>n.calendary?t.hasSame(e,s)?0:t.startOf(s).diff(e.startOf(s),s).get(s):t.diff(e,s).get(s);if(n.unit)return r(a(n.unit),n.unit);for(const e of n.units){const t=a(e);if(Math.abs(t)>=1)return r(t,e)}return r(e>t?-0:0,n.units[n.units.length-1])}function ds(e){let t,n={};return e.length>0&&"object"==typeof e[e.length-1]?(n=e[e.length-1],t=Array.from(e).slice(0,e.length-1)):t=Array.from(e),[n,t]}class hs{constructor(e){const t=e.zone||fe.defaultZone;let n=e.invalid||(Number.isNaN(e.ts)?new ge("invalid input"):null)||(t.isValid?null:Rn(t));this.ts=Ne(e.ts)?fe.now():e.ts;let s=null,r=null;if(!n){if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t))[s,r]=[e.old.c,e.old.o];else{const e=t.offset(this.ts);s=Gn(this.ts,e),n=Number.isNaN(s.year)?new ge("invalid input"):null,s=n?null:s,r=n?null:e}}this._zone=t,this.loc=e.loc||te.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=s,this.o=r,this.isLuxonDateTime=!0}static now(){return new hs({})}static local(){const[e,t]=ds(arguments),[n,s,r,a,i,o,l]=t;return cs({year:n,month:s,day:r,hour:a,minute:i,second:o,millisecond:l},e)}static utc(){const[e,t]=ds(arguments),[n,s,r,a,i,o,l]=t;return e.zone=se.utcInstance,cs({year:n,month:s,day:r,hour:a,minute:i,second:o,millisecond:l},e)}static fromJSDate(e,t={}){const n=(s=e,"[object Date]"===Object.prototype.toString.call(s)?e.valueOf():NaN);var s;if(Number.isNaN(n))return hs.invalid("invalid input");const r=ae(t.zone,fe.defaultZone);return r.isValid?new hs({ts:n,zone:r,loc:te.fromObject(t)}):hs.invalid(Rn(r))}static fromMillis(e,t={}){if(Oe(e))return e<-Zn||e>Zn?hs.invalid("Timestamp out of range"):new hs({ts:e,zone:ae(t.zone,fe.defaultZone),loc:te.fromObject(t)});throw new c(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,t={}){if(Oe(e))return new hs({ts:1e3*e,zone:ae(t.zone,fe.defaultZone),loc:te.fromObject(t)});throw new c("fromSeconds requires a numerical input")}static fromObject(e,t={}){e=e||{};const n=ae(t.zone,fe.defaultZone);if(!n.isValid)return hs.invalid(Rn(n));const s=te.fromObject(t),r=et(e,ls),{minDaysInFirstWeek:a,startOfWeek:i}=xe(r,s),l=fe.now(),c=Ne(t.specificOffset)?n.offset(l):t.specificOffset,u=!Ne(r.ordinal),d=!Ne(r.year),h=!Ne(r.month)||!Ne(r.day),m=d||h,f=r.weekYear||r.weekNumber;if((m||u)&&f)throw new o("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(h&&u)throw new o("Can't mix ordinal dates with month/day");const g=f||r.weekday&&!m;let y,p,w=Gn(l,c);g?(y=is,p=ss,w=Ce(w,a,i)):u?(y=os,p=rs,w=De(w)):(y=as,p=ns);let v=!1;for(const e of y){Ne(r[e])?r[e]=v?p[e]:w[e]:v=!0}const S=g?function(e,t=4,n=1){const s=Ee(e.weekYear),r=Ve(e.weekNumber,1,Ge(e.weekYear,t,n)),a=Ve(e.weekday,1,7);return s?r?!a&&we("weekday",e.weekday):we("week",e.weekNumber):we("weekYear",e.weekYear)}(r,a,i):u?function(e){const t=Ee(e.year),n=Ve(e.ordinal,1,Ue(e.year));return t?!n&&we("ordinal",e.ordinal):we("year",e.year)}(r):Me(r),b=S||Ie(r);if(b)return hs.invalid(b);const k=g?Te(r,a,i):u?Le(r):r,[C,T]=Yn(k,c,n),D=new hs({ts:C,zone:n,o:T,loc:s});return r.weekday&&m&&e.weekday!==D.weekday?hs.invalid("mismatched weekday",`you can't specify both a weekday of ${r.weekday} and a date of ${D.toISO()}`):D}static fromISO(e,t={}){const[n,s]=function(e){return kt(e,[Jt,Qt],[Gt,Xt],[Yt,en],[Kt,tn])}(e);return Qn(n,s,t,"ISO 8601",e)}static fromRFC2822(e,t={}){const[n,s]=function(e){return kt(function(e){return e.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}(e),[Ht,zt])}(e);return Qn(n,s,t,"RFC 2822",e)}static fromHTTP(e,t={}){const[n,s]=function(e){return kt(e,[Zt,jt],[Rt,jt],[Ut,Bt])}(e);return Qn(n,s,t,"HTTP",t)}static fromFormat(e,t,n={}){if(Ne(e)||Ne(t))throw new c("fromFormat requires an input string and a format");const{locale:s=null,numberingSystem:r=null}=n,a=te.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0}),[i,o,l,u]=function(e,t,n){const{result:s,zone:r,specificOffset:a,invalidReason:i}=Pn(e,t,n);return[s,r,a,i]}(a,e,t);return u?hs.invalid(u):Qn(i,o,n,`format ${t}`,e,l)}static fromString(e,t,n={}){return hs.fromFormat(e,t,n)}static fromSQL(e,t={}){const[n,s]=function(e){return kt(e,[sn,Qt],[rn,an])}(e);return Qn(n,s,t,"SQL",e)}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the DateTime is invalid");const n=e instanceof ge?e:new ge(e,t);if(fe.throwOnInvalid)throw new r(n);return new hs({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,t={}){const n=Hn(e,te.fromObject(t));return n?n.map((e=>e?e.val:null)).join(""):null}static expandFormat(e,t={}){return _n(wt.parseFormat(e),te.fromObject(t)).map((e=>e.val)).join("")}get(e){return this[e]}get isValid(){return null===this.invalid}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?Un(this).weekYear:NaN}get weekNumber(){return this.isValid?Un(this).weekNumber:NaN}get weekday(){return this.isValid?Un(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?jn(this).weekday:NaN}get localWeekNumber(){return this.isValid?jn(this).weekNumber:NaN}get localWeekYear(){return this.isValid?jn(this).weekYear:NaN}get ordinal(){return this.isValid?De(this.c).ordinal:NaN}get monthShort(){return this.isValid?bn.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?bn.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?bn.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?bn.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return!this.isOffsetFixed&&(this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset)}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];const e=864e5,t=6e4,n=Be(this.c),s=this.zone.offset(n-e),r=this.zone.offset(n+e),a=this.zone.offset(n-s*t),i=this.zone.offset(n-r*t);if(a===i)return[this];const o=n-a*t,l=n-i*t,c=Gn(o,a),u=Gn(l,i);return c.hour===u.hour&&c.minute===u.minute&&c.second===u.second&&c.millisecond===u.millisecond?[Bn(this,{ts:o}),Bn(this,{ts:l})]:[this]}get isInLeapYear(){return Re(this.year)}get daysInMonth(){return je(this.year,this.month)}get daysInYear(){return this.isValid?Ue(this.year):NaN}get weeksInWeekYear(){return this.isValid?Ge(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?Ge(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){const{locale:t,numberingSystem:n,calendar:s}=wt.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:n,outputCalendar:s}}toUTC(e=0,t={}){return this.setZone(se.instance(e),t)}toLocal(){return this.setZone(fe.defaultZone)}setZone(e,{keepLocalTime:t=!1,keepCalendarTime:n=!1}={}){if((e=ae(e,fe.defaultZone)).equals(this.zone))return this;if(e.isValid){let s=this.ts;if(t||n){const t=e.offset(this.ts),n=this.toObject();[s]=Yn(n,t,e)}return Bn(this,{ts:s,zone:e})}return hs.invalid(Rn(e))}reconfigure({locale:e,numberingSystem:t,outputCalendar:n}={}){return Bn(this,{loc:this.loc.clone({locale:e,numberingSystem:t,outputCalendar:n})})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const t=et(e,ls),{minDaysInFirstWeek:n,startOfWeek:s}=xe(t,this.loc),r=!Ne(t.weekYear)||!Ne(t.weekNumber)||!Ne(t.weekday),a=!Ne(t.ordinal),i=!Ne(t.year),l=!Ne(t.month)||!Ne(t.day),c=i||l,u=t.weekYear||t.weekNumber;if((c||a)&&u)throw new o("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&a)throw new o("Can't mix ordinal dates with month/day");let d;r?d=Te({...Ce(this.c,n,s),...t},n,s):Ne(t.ordinal)?(d={...this.toObject(),...t},Ne(t.day)&&(d.day=Math.min(je(d.year,d.month),d.day))):d=Le({...De(this.c),...t});const[h,m]=Yn(d,this.o,this.zone);return Bn(this,{ts:h,o:m})}plus(e){if(!this.isValid)return this;return Bn(this,Kn(this,wn.fromDurationLike(e)))}minus(e){if(!this.isValid)return this;return Bn(this,Kn(this,wn.fromDurationLike(e).negate()))}startOf(e,{useLocaleWeeks:t=!1}={}){if(!this.isValid)return this;const n={},s=wn.normalizeUnit(e);switch(s){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0}if("weeks"===s)if(t){const e=this.loc.getStartOfWeek(),{weekday:t}=this;tthis.valueOf(),i=Cn(a?this:e,a?e:this,r,s);var o;return a?i.negate():i}diffNow(e="milliseconds",t={}){return this.diff(hs.now(),e,t)}until(e){return this.isValid?Sn.fromDateTimes(this,e):this}hasSame(e,t,n){if(!this.isValid)return!1;const s=e.valueOf(),r=this.setZone(e.zone,{keepLocalTime:!0});return r.startOf(t,n)<=s&&s<=r.endOf(t,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const t=e.base||hs.fromObject({},{zone:this.zone}),n=e.padding?thise.valueOf()),Math.min)}static max(...e){if(!e.every(hs.isDateTime))throw new c("max requires all arguments be DateTimes");return qe(e,(e=>e.valueOf()),Math.max)}static fromFormatExplain(e,t,n={}){const{locale:s=null,numberingSystem:r=null}=n;return Pn(te.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0}),e,t)}static fromStringExplain(e,t,n={}){return hs.fromFormatExplain(e,t,n)}static get DATE_SHORT(){return f}static get DATE_MED(){return g}static get DATE_MED_WITH_WEEKDAY(){return y}static get DATE_FULL(){return p}static get DATE_HUGE(){return w}static get TIME_SIMPLE(){return v}static get TIME_WITH_SECONDS(){return S}static get TIME_WITH_SHORT_OFFSET(){return b}static get TIME_WITH_LONG_OFFSET(){return k}static get TIME_24_SIMPLE(){return C}static get TIME_24_WITH_SECONDS(){return T}static get TIME_24_WITH_SHORT_OFFSET(){return D}static get TIME_24_WITH_LONG_OFFSET(){return L}static get DATETIME_SHORT(){return x}static get DATETIME_SHORT_WITH_SECONDS(){return M}static get DATETIME_MED(){return I}static get DATETIME_MED_WITH_SECONDS(){return N}static get DATETIME_MED_WITH_WEEKDAY(){return O}static get DATETIME_FULL(){return E}static get DATETIME_FULL_WITH_SECONDS(){return $}static get DATETIME_HUGE(){return F}static get DATETIME_HUGE_WITH_SECONDS(){return q}}function ms(e){if(hs.isDateTime(e))return e;if(e&&e.valueOf&&Oe(e.valueOf()))return hs.fromJSDate(e);if(e&&"object"==typeof e)return hs.fromObject(e);throw new c(`Unknown datetime argument: ${e}, of type ${typeof e}`)}}},t={};function n(s){var r=t[s];if(void 0!==r)return r.exports;var a=t[s]={exports:{}};return e[s](a,a.exports,n),a.exports}n.d=(e,t)=>{for(var s in t)n.o(t,s)&&!n.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n(516),n(749),n(423),n(247),n(716),n(498),n(73),n(2),n(94),n(704),n(503),n(187),n(709),n(951);n(652)})(); \ No newline at end of file +(()=>{"use strict";var e={652:(e,t,n)=>{var s=n(440),r=n(430),a=n(211),i=n(413),o=n(999),l=n(302);document.addEventListener("DOMContentLoaded",(()=>{m()}));const c=["Land Features","Bay","Channel","Cove","Dam","Delta","Gulf","Lagoon","Lake","Ocean","Reef","Reservoir","Sea","Sound","Strait","Waterfall","Wharf","Amusement Park","Historical Monument","Landmark","Tourist Attraction","Zoo","College","Beach","Campground","Golf Course","Harbor","Nature Reserve","Other Parks and Outdoors","Park","Racetrack","Scenic Overlook","Ski Resort","Sports Center","Sports Field","Wildlife Reserve","Airport","Ferry","Marina","Pier","Port","Resort","Postal","Populated Place"].join(","),u="#txtAddress",d="#ToggleFullScreen",h="#btnGetGps",m=()=>{document.querySelector(u).addEventListener("focus",(e=>{e.target.select()})),(0,a.Fx)(b),document.querySelector("#NavigateMenu").addEventListener("click",S),document.querySelector("#NavigateRefresh").addEventListener("click",C),document.querySelector("#NavigateNext").addEventListener("click",T),document.querySelector("#NavigatePrevious").addEventListener("click",x),document.querySelector("#NavigatePlay").addEventListener("click",I),document.querySelector(d).addEventListener("click",y);const e=document.querySelector(h);e.addEventListener("click",O),navigator.geolocation||(e.style.display="none"),document.querySelector("#divTwc").addEventListener("mousemove",(()=>{document.fullscreenElement&&D()})),window.addEventListener("resize",E),E.wasFull=!1,document.querySelector(u).addEventListener("keydown",(e=>{"Enter"===e.code&&t()})),document.querySelector("#btnGetLatLng").addEventListener("click",(()=>t())),document.addEventListener("keydown",M),document.addEventListener("touchmove",(e=>{document.fullscreenElement&&e.preventDefault()})),$(u).devbridgeAutocomplete({serviceUrl:"https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/suggest",deferRequestBy:300,paramName:"text",params:{f:"json",countryCode:"USA",category:c,maxSuggestions:10},dataType:"json",transformResult:e=>({suggestions:e.suggestions.map((e=>({value:e.text,data:e.magicKey})))}),minChars:3,showNoSuggestionNotice:!0,noSuggestionNotice:"No results found. Please try a different search string.",onSelect(e){f(e,this)},width:490});const t=()=>{const e=$(u).devbridgeAutocomplete();return e.suggestions[0]&&$(e.suggestionsContainer.children[0]).trigger("click"),!1},n=(0,o.J)(),s=n.latLonQuery&&n.latLon,r=n.latLonQuery??localStorage.getItem("latLonQuery"),i=n.latLon??localStorage.getItem("latLon"),m=localStorage.getItem("latLonFromGPS")&&!s;if(r&&i&&!m){document.querySelector(u).value=r,b(JSON.parse(i))}m&&O(),l.A.kiosk.value="true"===n["settings-kiosk-checkbox"];const g=n["settings-kiosk-checkbox"]??localStorage.getItem("play");null!==g&&"true"!==g||N("navButton","play"),document.querySelector("#btnClearQuery").addEventListener("click",(()=>{document.querySelector("#spanCity").innerHTML="",document.querySelector("#spanState").innerHTML="",document.querySelector("#spanStationId").innerHTML="",document.querySelector("#spanRadarId").innerHTML="",document.querySelector("#spanZoneId").innerHTML="",document.querySelector("#chkAutoRefresh").checked=!0,localStorage.removeItem("autoRefresh"),localStorage.removeItem("play"),N("navButton","play"),localStorage.removeItem("latLonQuery"),localStorage.removeItem("latLon"),localStorage.removeItem("latLonFromGPS"),document.querySelector(h).classList.remove("active")})),document.querySelector("#container").addEventListener("swiped-left",(()=>k("left"))),document.querySelector("#container").addEventListener("swiped-right",(()=>k("right")))},f=async(e,t)=>{if(t.previousSuggestionValue===e.value)return;const n=(await(0,s.Pq)("https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/find",{data:{text:e.value,magicKey:e.data,f:"json"}})).locations[0];n?(localStorage.removeItem("latLonFromGPS"),document.querySelector(h).classList.remove("active"),g(n.feature.geometry)):console.error("An unexpected error occurred. Please try a different search string.")},g=(e,t)=>{const n={lat:(0,i.X4)(e.y,4),lon:(0,i.X4)(e.x,4)};localStorage.setItem("latLonQuery",document.querySelector(u).value),localStorage.setItem("latLon",JSON.stringify(n)),b(n,t)},y=()=>(document.fullscreenElement?w():p(),(0,a.F4)()?(0,r.A)(!0):(0,r.A)(!1),D(),!1),p=()=>{const e=document.querySelector("#divTwc"),t=e.requestFullScreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullscreen;t?t.call(e,{navigationUI:"hide"}):window.scrollTo(0,0),(0,a.XR)(),D();const n=document.querySelector(d);n.src="images/nav/ic_fullscreen_exit_white_24dp_2x.png",n.title="Exit fullscreen"},w=()=>{document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen(),(0,a.XR)(),v()},v=()=>{const e=document.querySelector(d);e.src="images/nav/ic_fullscreen_white_24dp_2x.png",e.title="Enter fullscreen",document.querySelector("#divTwc").classList.remove("no-cursor");const t=document.querySelector("#divTwcBottom");t.classList.remove("hidden"),t.classList.add("visible")},S=()=>(N("navButton","menu"),!1),b=(e,t)=>{e&&(b.latLon=e);const{latLon:n}=b;n&&(document.querySelector(u).blur(),(0,a.K$)(),(0,a.u6)(n,t))},k=e=>{if("left"===e)T();else x()},C=()=>((0,a.kY)(),b(),!1),T=()=>(N("navButton","next"),!1),x=()=>(N("navButton","previous"),!1);let L=null;const D=()=>{document.activeElement.blur();const e=document.querySelector("#divTwcBottom");e.classList.remove("hidden"),e.classList.add("visible"),document.querySelector("#divTwc").classList.remove("no-cursor"),L&&(clearTimeout(L),L=null),L=setTimeout((()=>{document.fullscreenElement&&(e.classList.remove("visible"),e.classList.add("hidden"),document.querySelector("#divTwc").classList.add("no-cursor"))}),2e3)},M=e=>{const{key:t}=e;if(document.fullscreenElement||document.activeElement===document.body)switch(t){case" ":return e.preventDefault(),I(),!1;case"ArrowRight":case"PageDown":return e.preventDefault(),T(),!1;case"ArrowLeft":case"PageUp":return e.preventDefault(),x(),!1;case"ArrowUp":return e.preventDefault(),S(),!1;case"0":return C(),!1;case"F":case"f":return y(),!1}return!1},I=()=>(N("navButton","playToggle"),!1),N=(e,t={})=>{(0,a.iU)({type:e,message:t})},O=async()=>{if(!navigator.geolocation)return;const e=document.querySelector(h);if(e.classList.contains("active"))return e.classList.remove("active"),void localStorage.removeItem("latLonFromGPS");e.classList.add("active");const t=await(async()=>new Promise((e=>{navigator.geolocation.getCurrentPosition(e)})))(),{latitude:n,longitude:s}=t.coords,r=document.querySelector(u);r.value=`${(0,i.X4)(n,4)}, ${(0,i.X4)(s,4)}`,g({y:n,x:s},(e=>{const t=e.properties.relativeLocation.properties,a=`${t.city}, ${t.state}`;localStorage.setItem("latLon",JSON.stringify({lat:n,lon:s})),localStorage.setItem("latLonQuery",a),localStorage.setItem("latLonFromGPS",!0),r.value=`${t.city}, ${t.state}`}))},E=()=>{E.wasFull&&!document.fullscreenElement&&v(),!E.wasFull&&document.fullscreenElement,E.wasFull=!!document.fullscreenElement}},247:(e,t,n)=>{n.d(t,{A:()=>d});var s=n(47),r=n(125),a=n(592),i=n(24),o=n(211);class l extends i.A{constructor(e,t){super(e,t,"Almanac",!0),this.backgroundImage0=(0,s.u)("images/BackGround3_1.png"),(0,s.b)("images/2/Full-Moon.gif"),(0,s.b)("images/2/Last-Quarter.gif"),(0,s.b)("images/2/New-Moon.gif"),(0,s.b)("images/2/First-Quarter.gif"),this.timing.totalScreens=1}async getData(e){const t=super.getData(e),n=e??this.weatherParameters,{sun:s,moon:r}=this.calcSunMoonData(n);this.data={sun:s,moon:r},this.getDataCallback(),t&&this.setStatus(a.Ay.loaded)}calcSunMoonData(e){const t=[SunCalc.getTimes(new Date,e.latitude,e.longitude),SunCalc.getTimes(r.c9.local().plus({days:1}).toJSDate(),e.latitude,e.longitude)],n=[];let s=r.c9.local().minus({days:1}),{phase:a}=SunCalc.getMoonIllumination(s.toJSDate()),i=0;do{const e=a;s=s.plus({days:1}),a=SunCalc.getMoonIllumination(s.toJSDate()).phase,e<.25&&a>=.25&&n.push(this.getMoonTransition(.25,"First",s)),e<.5&&a>=.5&&n.push(this.getMoonTransition(.5,"Full",s)),e<.75&&a>=.75&&n.push(this.getMoonTransition(.75,"Last",s)),e>a&&n.push(this.getMoonTransition(0,"New",s)),i+=1}while(i<=30&&n.length<4);return{sun:t,moon:n}}getMoonTransition(e,t,n,s=0){let r=n,{phase:a}=SunCalc.getMoonIllumination(r.toJSDate()),i=0;const o={hours:0===s?-1:0,minutes:1===s?1:0,seconds:2===s?-1:0,milliseconds:3===s?1:0};let l=(t,n)=>t=e;s%2==0&&(l=(t,n)=>t>e&&n<=e);do{const n=a;if(r=r.plus(o),a=SunCalc.getMoonIllumination(r.toJSDate()).phase,a>.9&&(a-=1),l(n,a)){if(s>=3)break;return this.getMoonTransition(e,t,r,s+1)}i+=1}while(i<1e3);return{phase:t,date:r}}async drawCanvas(){super.drawCanvas();const e=this.data,t=r.c9.local(),n=t.plus({days:1});this.elem.querySelector(".day-1").innerHTML=t.toLocaleString({weekday:"long"}),this.elem.querySelector(".day-2").innerHTML=n.toLocaleString({weekday:"long"}),this.elem.querySelector(".rise-1").innerHTML=r.c9.fromJSDate(e.sun[0].sunrise).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".rise-2").innerHTML=r.c9.fromJSDate(e.sun[1].sunrise).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".set-1").innerHTML=r.c9.fromJSDate(e.sun[0].sunset).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".set-2").innerHTML=r.c9.fromJSDate(e.sun[1].sunset).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase();const s=e.moon.map((e=>{const t={},n=e.date.toLocaleString({month:"short",day:"numeric"});return t.date=n,t.type=e.phase,t.icon={type:"img",src:c(e.phase)},this.fillTemplate("day",t)})),a=this.elem.querySelector(".moon .days");a.innerHTML="",a.append(...s),this.finishDraw()}async getSun(){return new Promise((e=>{this.data&&e(this.data),this.getDataCallbacks.push(e)}))}}const c=e=>{switch(e){case"Full":return"images/2/Full-Moon.gif";case"Last":return"images/2/Last-Quarter.gif";case"New":return"images/2/New-Moon.gif";default:return"images/2/First-Quarter.gif"}},u=new l(9,"almanac");(0,o.Kb)(u);const d=u.getSun.bind(u)},423:(e,t,n)=>{n.d(t,{A:()=>p});var s=n(592),r=n(47),a=n(440),i=n(519),o=n(891),l=n(716),c=n(24),u=n(211),d=n(413);const h=["U","C","H","W","Y","T","S","M","O","L","A","F","B","N","V","R","D","E","I","G","J"];class m extends c.A{constructor(e,t){super(e,t,"Current Conditions",!0),this.backgroundImage=(0,r.u)("images/BackGround1_1.png")}async getData(e){const t=super.getData(e),n=(e??this.weatherParameters).stations.filter((e=>4===e?.properties?.stationIdentifier?.length&&!h.includes(e.properties.stationIdentifier.slice(0,1))));let i,o,c=0;for(;!i&&cthis.stillWaiting()}),null===i.features[0].properties.temperature.value||null===i.features[0].properties.windSpeed.value||null===i.features[0].properties.textDescription||""===i.features[0].properties.textDescription||null===i.features[0].properties.icon)throw i=void 0,new Error(`Unable to get observations: ${o.properties.stationIdentifier}, trying next station`)}catch(e){console.error(e)}}if(!i)return console.error("All current weather stations exhausted"),this.isEnabled&&this.setStatus(s.Ay.failed),void this.getDataCallback(void 0);this.data=g({...i,station:o}),this.getDataCallback(),t&&((0,r.b)((0,l.XV)(i.features[0].properties.icon)),this.setStatus(s.Ay.loaded))}async drawCanvas(){super.drawCanvas();let e=this.data.observations.textDescription;e.length>15&&(e=f(e));const t={temp:this.data.Temperature+String.fromCharCode(176),condition:e,wind:this.data.WindDirection.padEnd(3,"")+this.data.WindSpeed.toString().padStart(3," "),location:(0,o.C)(this.data.station.properties.name).substr(0,20),humidity:`${this.data.Humidity}%`,dewpoint:this.data.DewPoint+String.fromCharCode(176),ceiling:0===this.data.Ceiling?"Unlimited":this.data.Ceiling+this.data.CeilingUnit,visibility:this.data.Visibility+this.data.VisibilityUnit,pressure:`${this.data.Pressure} ${this.data.PressureDirection}`,icon:{type:"img",src:this.data.Icon}};this.data.WindGust&&(t["wind-gusts"]=`Gusts to ${this.data.WindGust}`),this.data.observations.heatIndex.value&&this.data.HeatIndex!==this.data.Temperature?(t["heat-index-label"]="Heat Index:",t["heat-index"]=this.data.HeatIndex+String.fromCharCode(176)):this.data.observations.windChill.value&&""!==this.data.WindChill&&this.data.WindChill{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}}const f=e=>{let t=e;return t=t.replace(/Light/g,"L"),t=t.replace(/Heavy/g,"H"),t=t.replace(/Partly/g,"P"),t=t.replace(/Mostly/g,"M"),t=t.replace(/Few/g,"F"),t=t.replace(/Thunderstorm/g,"T'storm"),t=t.replace(/ in /g,""),t=t.replace(/Vicinity/g,""),t=t.replace(/ and /g," "),t=t.replace(/Freezing Rain/g,"Frz Rn"),t=t.replace(/Freezing/g,"Frz"),t=t.replace(/Unknown Precip/g,""),t=t.replace(/L Snow Fog/g,"L Snw/Fog"),t=t.replace(/ with /g,"/"),t},g=e=>{const t=e.features[0].properties;e.observations=t,e.Temperature=Math.round(t.temperature.value),e.TemperatureUnit="C",e.DewPoint=Math.round(t.dewpoint.value),e.Ceiling=Math.round(t.cloudLayers[0]?.base?.value??0),e.CeilingUnit="m.",e.Visibility=Math.round(t.visibility.value/1e3),e.VisibilityUnit=" km.",e.WindSpeed=Math.round(t.windSpeed.value),e.WindDirection=(0,i.Up)(t.windDirection.value),e.Pressure=Math.round(t.barometricPressure.value),e.HeatIndex=Math.round(t.heatIndex.value),e.WindChill=Math.round(t.windChill.value),e.WindGust=Math.round(t.windGust.value),e.WindUnit="KPH",e.Humidity=Math.round(t.relativeHumidity.value),e.Icon=(0,l.XV)(t.icon),e.PressureDirection="",e.TextConditions=t.textDescription;const n=t.barometricPressure.value-e.features[1].properties.barometricPressure.value;return n>150&&(e.PressureDirection="R"),n<-150&&(e.PressureDirection="F"),e.Temperature=(0,d.sz)(e.Temperature),e.TemperatureUnit="F",e.DewPoint=(0,d.sz)(e.DewPoint),e.Ceiling=100*Math.round((0,d.Q8)(e.Ceiling)/100),e.CeilingUnit="ft.",e.Visibility=(0,d.lt)(t.visibility.value/1e3),e.VisibilityUnit=" mi.",e.WindSpeed=(0,d.Yy)(e.WindSpeed),e.WindUnit="MPH",e.Pressure=(0,d.yX)(e.Pressure).toFixed(2),e.HeatIndex=(0,d.sz)(e.HeatIndex),e.WindChill=(0,d.sz)(e.WindChill),e.WindGust=(0,d.Yy)(e.WindGust),e},y=new m(1,"current-weather");(0,u.Kb)(y);const p=y.getCurrentWeather.bind(y)},516:(e,t,n)=>{var s=n(891);var r=n(423),a=n(211);const i=String.fromCharCode(176);let o,l=0;const c=()=>{const e=(0,a.q)();e?.okToDrawCurrentConditions?(l=(l+1)%d.length,u()):"progress"===e?.elemId&&(l=0)},u=async()=>{const e=await(0,r.A)();e&&h(d[l](e))},d=[e=>`Conditions at ${(0,s.C)(e.station.properties.name).substr(0,20)}`,e=>{let t=`Temp: ${e.Temperature}${i}${e.TemperatureUnit}`;return e.observations.heatIndex.value?t+=` Heat Index: ${e.HeatIndex}${i}${e.TemperatureUnit}`:e.observations.windChill.value&&(t+=` Wind Chill: ${e.WindChill}${i}${e.TemperatureUnit}`),t},e=>`Humidity: ${e.Humidity}% Dewpoint: ${e.DewPoint}${i}${e.TemperatureUnit}`,e=>`Barometric Pressure: ${e.Pressure} ${e.PressureDirection}`,e=>{let t=e.WindSpeed>0?`Wind: ${e.WindDirection} ${e.WindSpeed} ${e.WindUnit}`:"Wind: Calm";return e.WindGust>0&&(t+=` Gusts to ${e.WindGust}`),t},e=>{const t=`${e.Ceiling} ${e.CeilingUnit}`;return`Visib: ${e.Visibility} ${e.VisibilityUnit} Ceiling: ${0===e.Ceiling?"Unlimited":t}`}],h=e=>{var t,n;t=".weather-display .scroll .fixed",n=t=>{t.innerHTML=e},[...document.querySelectorAll(t)].forEach(n)};document.addEventListener("DOMContentLoaded",(()=>{o||(o=setInterval(c,4e3)),u()}))},498:(e,t,n)=>{var s=n(592),r=n(440),a=n(125),i=n(716),o=n(47),l=n(24),c=n(211);class u extends l.A{constructor(e,t){super(e,t,"Extended Forecast",!0),this.timing.totalScreens=2}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;let n;try{n=await(0,r.Pq)(t.forecast,{data:{units:"us"},retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(e){return console.error("Unable to get extended forecast"),console.error(e.status,e.responseJSON),void this.setStatus(s.Ay.failed)}this.data=d(n.properties.periods),this.screenIndex=0,this.setStatus(s.Ay.loaded)}async drawCanvas(){super.drawCanvas();const e=this.data.slice(0+3*this.screenIndex,3+3*this.screenIndex).map((e=>{const t={icon:{type:"img",src:e.icon},condition:e.text,date:e.dayName},{low:n}=e;void 0!==n&&(t["value-lo"]=Math.round(n));const{high:s}=e;return t["value-hi"]=Math.round(s),this.fillTemplate("day",t)})),t=this.elem.querySelector(".day-container");t.innerHTML="",t.append(...e),this.finishDraw()}}const d=e=>{const t=[0,1,2,3,4,5,6].map((e=>a.c9.local().startOf("day").plus({days:e}).toLocaleString({weekday:"short"})));let n=0;const s=[];return e.forEach((e=>{s[n]||s.push({dayName:"",low:void 0,high:void 0,text:void 0,icon:void 0});const r=s[n];r.icon=(0,i.XV)(e.icon),r.text=h(e.shortForecast),r.dayName=t[n],(0,o.b)(r.icon),e.isDaytime?(r.high=e.temperature,n+=1):r.low=e.temperature})),s},h=e=>{const t=[[/ and /gi," "],[/slight /gi,""],[/chance /gi,""],[/very /gi,""],[/patchy /gi,""],[/areas /gi,""],[/dense /gi,""],[/Thunderstorm/g,"T'Storm"]].reduce(((e,[t,n])=>e.replace(t,n)),e);let n=t.split(" ");-1!==t.indexOf("then")&&(n=t.split(" then "),n=n[1].split(" "));let s=n[0].substr(0,10),r="";n[1]&&(s.endsWith(".")?s=s.replace(/\./,""):r=n[1].substr(0,10),"Blowing"===r&&(r=""));let a=s;return""!==r&&(a+=` ${r}`),a};(0,c.Kb)(new u(8,"extended-forecast"))},749:(e,t,n)=>{var s=n(592),r=n(440),a=n(24),i=n(211);const o={Extreme:10,Severe:5},l={"Hurricane Warning":2,"Tornado Warning":3,"Severe Thunderstorm Warning":1};class c extends a.A{constructor(e,t,n){super(e,t,"Hazards",n),this.showOnProgress=!1,this.timing.totalScreens=0}async getData(e){const t=super.getData(e),n=this.checkbox.querySelector(".alert");n.classList.remove("show");try{const e=new URL("https://api.weather.gov/alerts/active");e.searchParams.append("point",`${this.weatherParameters.latitude},${this.weatherParameters.longitude}`),e.searchParams.append("limit",5);const t=(await(0,r.Pq)(e,{retryCount:3,stillWaiting:()=>this.stillWaiting()})).features??[],s=t.reduce(((e,t)=>e||"Immediate"===t.properties.urgency),!1),a=t.sort(((e,t)=>u(t.properties.severity,t.properties.event)-u(e.properties.severity,e.properties.event))).filter((e=>"Unknown"!==e.properties.severity&&(!s||"Immediate"===e.properties.urgency)));this.data=a,this.data.length>0&&n.classList.add("show")}catch(e){return console.error("Get hourly forecast failed"),console.error(e.status,e.responseJSON),this.isEnabled&&this.setStatus(s.Ay.failed),void this.getDataCallback(void 0)}this.getDataCallback(),t?this.drawLongCanvas():this.setStatus(s.Ay.loaded)}async drawLongCanvas(){const e=this.elem.querySelector(".hazard-lines");e.innerHTML="";const t=this.data.map((e=>{const t={};return t["hazard-text"]=`${e.properties.event}

${e.properties.description.replaceAll("\n\n","

").replaceAll("\n"," ")}`,this.fillTemplate("hazard",t)}));if(e.append(...t),0===t.length)return this.setStatus(s.Ay.loaded),this.timing.totalScreens=0,void this.setStatus(s.Ay.loaded);this.timing.baseDelay=20;const n=Math.max(Math.ceil(e.scrollHeight/400)-3,1);this.timing.delay=[550];for(let e=0;e{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}screenIndexFromBaseCount(){const e=super.screenIndexFromBaseCount();return!1===e&&(this.timing.totalScreens=0),e}}const u=(e,t)=>(o[e]??0)+(l[t]??0);(0,i.Kb)(new c(0,"hazards",!0))},2:(e,t,n)=>{var s=n(592),r=n(73),a=n(24),i=n(211),o=n(125);class l extends a.A{constructor(e,t,n){super(e,t,"Hourly Graph",n),document.addEventListener("DOMContentLoaded",(()=>{this.moveHeader()}))}moveHeader(){const e=this.fillTemplate("top-right",{});this.elem.querySelector(".header .right").append(e)}async getData(){if(!super.getData())return;const e=await(0,r.A)((()=>this.stillWaiting()));if(void 0===e)return void this.setStatus(s.Ay.failed);const t=e.map((e=>e.temperature)),n=e.map((e=>e.probabilityOfPrecipitation)),a=e.map((e=>e.skyCover));this.data={skyCover:a,temperature:t,probabilityOfPrecipitation:n},this.setStatus(s.Ay.loaded)}drawCanvas(){this.image||(this.image=this.elem.querySelector(".chart img"));const e=285;this.image.width=532,this.image.height=e;const t=document.createElement("canvas");t.width=532,t.height=e;const n=t.getContext("2d");n.imageSmoothingEnabled=!1;const s=c(0,5,this.data.temperature.length-1,532),r=o.c9.now().startOf("hour");document.querySelector(".x-axis .l-1").innerHTML=h(r),document.querySelector(".x-axis .l-2").innerHTML=h(r.plus({hour:6})),document.querySelector(".x-axis .l-3").innerHTML=h(r.plus({hour:12})),document.querySelector(".x-axis .l-4").innerHTML=h(r.plus({hour:18})),document.querySelector(".x-axis .l-5").innerHTML=h(r.plus({hour:24}));const a=c(0,275,100,10),i=u(this.data.skyCover,s,a);d(i,n,{strokeStyle:"lightgrey",lineWidth:3});const l=u(this.data.probabilityOfPrecipitation,s,a);d(l,n,{strokeStyle:"aqua",lineWidth:3});const m=Math.min(...this.data.temperature),f=Math.max(...this.data.temperature),g=Math.round((m+f)/2),y=c(m,275,f,10),p=u(this.data.temperature,s,y);d(p,n,{strokeStyle:"red",lineWidth:3});const w=String.fromCharCode(176);this.elem.querySelector(".y-axis .l-1").innerHTML=(f+w).substring(0,3),this.elem.querySelector(".y-axis .l-2").innerHTML=(g+w).substring(0,3),this.elem.querySelector(".y-axis .l-3").innerHTML=(m+w).substring(0,3),this.image.src=t.toDataURL(),super.drawCanvas(),this.finishDraw()}}const c=(e,t,n,s)=>{const r=(s-t)/(n-e),a=t-r*e;return e=>r*e+a},u=(e,t,n)=>e.map(((e,s)=>[t(s),n(e)])),d=(e,t,n)=>{t.beginPath(),t.strokeStyle="black",t.lineWidth=(n?.lineWidth??2)+2,t.moveTo(e[0][0],e[0][1]),e.slice(1).forEach((e=>t.lineTo(e[0],e[1]+2))),t.stroke(),t.beginPath(),t.strokeStyle=n?.strokeStyle??"red",t.lineWidth=n?.lineWidth??2,t.moveTo(e[0][0],e[0][1]),e.slice(1).forEach((e=>t.lineTo(e[0],e[1]))),t.stroke()},h=e=>e.toFormat("ha").slice(0,-1);(0,i.Kb)(new l(4,"hourly-graph"))},73:(e,t,n)=>{n.d(t,{A:()=>p});var s=n(592),r=n(125),a=n(440),i=n(413),o=n(716),l=n(519),c=n(24),u=n(211),d=n(247);class h extends c.A{constructor(e,t,n){super(e,t,"Hourly Forecast",n),this.timing.baseDelay=20;this.timing.delay=[450];for(let e=0;e<4;e+=1)this.timing.delay.push(300);this.timing.delay.push(150)}async getData(e){const t=super.getData(e);let n;try{n=await(0,a.Pq)(e.forecastGridData,{retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(e){return console.error("Get hourly forecast failed"),console.error(e.status,e.responseJSON),this.isEnabled&&this.setStatus(s.Ay.failed),void this.getDataCallback(void 0)}this.data=await m(n.properties),this.getDataCallback(),t&&(this.setStatus(s.Ay.loaded),this.drawLongCanvas())}async drawLongCanvas(){const e=this.elem.querySelector(".hourly-lines");e.innerHTML="";const t=r.c9.local(),n=this.data.map(((e,n)=>{const s={},r=t.plus({hours:n}).toLocaleString({weekday:"short",hour:"numeric"});s.hour=r;const a=Math.round(e.temperature).toString().padStart(3),i=Math.round(e.apparentTemperature).toString().padStart(3);s.temp=a,a!==i&&(s.like=i);let o="Calm";if(e.windSpeed>0){const t=Math.round(e.windSpeed).toString();o=e.windDirection+Array(6-e.windDirection.length-t.length).join(" ")+t}return s.wind=o,s.icon={type:"img",src:e.icon},this.fillTemplate("hourly-row",s)}));e.append(...n)}drawCanvas(){super.drawCanvas(),this.finishDraw()}showCanvas(){this.drawCanvas(),super.showCanvas()}screenIndexChange(){this.baseCountChange(this.navBaseCount)}baseCountChange(e){let t=Math.min(this.elem.querySelector(".hourly-lines").getBoundingClientRect().height-289,e-150);t<0&&(t=0),this.elem.querySelector(".main").scrollTo(0,t)}async getCurrentData(e){return e&&this.stillWaitingCallbacks.push(e),new Promise((e=>{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}}const m=async e=>{const t=g(e.temperature.values),n=g(e.apparentTemperature.values),s=g(e.windSpeed.values),r=g(e.windDirection.values),a=g(e.skyCover.values),o=g(e.weather.values),c=g(e.iceAccumulation.values),u=g(e.probabilityOfPrecipitation.values),d=g(e.snowfallAmount.values),h=await f(a,o,c,u,d,s);return t.map(((e,o)=>({temperature:(0,i.sz)(t[o]),apparentTemperature:(0,i.sz)(n[o]),windSpeed:(0,i.lt)(s[o]),windDirection:(0,l.Up)(r[o]),probabilityOfPrecipitation:u[o],skyCover:a[o],icon:h[o]})))},f=async(e,t,n,s,a,i)=>{const l=r.c9.local().startOf("hour"),c=(await(0,d.A)()).sun,u=r.IX.fromDateTimes(r.c9.fromJSDate(c[0].sunset),r.c9.fromJSDate(c[1].sunrise)),h=r.c9.fromJSDate(c[1].sunset);return e.map(((r,c)=>{const d=l.plus({hours:c}),m=u.contains(d)||d>h;return(0,o.ZJ)(e[c],t[c],n[c],s[c],a[c],i[c],m)}))},g=e=>{const t=r.c9.utc().startOf("hour").toMillis(),n=[];return e.forEach((e=>{let s=Date.parse(e.validTime.substr(0,e.validTime.indexOf("/")));const a=s+r.dw.fromISO(e.validTime.substr(e.validTime.indexOf("/")+1)).shiftTo("milliseconds").values.milliseconds;do{s>=t&&n.length<24&&n.push(e.value),s+=36e5}while(s{n.d(t,{Wu:()=>s,XV:()=>r,ZJ:()=>a});const s=(e,t)=>{const n=t??e.indexOf("/night/")>=0,s=e=>`images/r/${e}`;let r=e.toLowerCase().match(/[^/]+$/)[0].match(/(.*?)[&,.?]/)[1];const a=+(e.match(/,(\d{2,3})/)??[0,100])[1];if("dualimage"===r){const t=e.match(/&j=(.*)&/);[,r]=t}switch(r+(n?"-n":"")){case"skc":case"hot":case"haze":return s("Sunny.gif");case"skc-n":case"nskc":case"nskc-n":case"cold-n":return s("Clear-1992.gif");case"bkn":return s("Mostly-Cloudy-1994-2.gif");case"bkn-n":case"few-n":case"nfew-n":case"nfew":return s("Partly-Clear-1994-2.gif");case"sct":case"few":return s("Partly-Cloudy.gif");case"sct-n":case"nsct":case"nsct-n":return s("Mostly-Clear.gif");case"ovc":case"ovc-n":return s("Cloudy.gif");case"fog":case"fog-n":return s("Fog.gif");case"rain_sleet":case"sleet":case"sleet-n":return s("Sleet.gif");case"rain_showers":case"rain_showers_high":return s("Scattered-Showers-1994-2.gif");case"rain_showers-n":case"rain_showers_high-n":return s("Scattered-Showers-Night-1994-2.gif");case"rain":case"rain-n":return s("Rain-1992.gif");case"snow":case"snow-n":return s(a>50?"Heavy-Snow-1994-2.gif":"Light-Snow.gif");case"rain_snow":case"rain_snow-n":return s("Rain-Snow-1992.gif");case"snow_fzra":case"snow_fzra-n":return s("Freezing-Rain-Snow-1992.gif");case"fzra":case"fzra-n":case"rain_fzra":case"rain_fzra-n":return s("Freezing-Rain-1992.gif");case"snow_sleet":case"snow_sleet-n":return s("Snow and Sleet.gif");case"tsra_sct":case"tsra":return s("Scattered-Tstorms-1994-2.gif");case"tsra_sct-n":case"tsra-n":return s("Scattered-Tstorms-Night-1994-2.gif");case"tsra_hi":case"tsra_hi-n":case"hurricane":case"tropical_storm":return s("Thunderstorm.gif");case"wind":case"wind_few":case"wind_sct":case"wind_bkn":case"wind_ovc":case"wind-n":case"wind_few-n":case"wind_bkn-n":case"wind_ovc-n":return s("Wind.gif");case"wind_skc":return s("Sunny-Wind-1994.gif");case"wind_skc-n":case"wind_sct-n":return s("Clear-Wind-1994.gif");case"blizzard":case"blizzard-n":return s("Blowing Snow.gif");case"cold":return s("cold.gif");default:return console.log(`Unable to locate regional icon for ${r} ${e} ${n}`),!1}},r=(e,t)=>{if(!e)return!1;const n=e=>`images/${e}`,s=t??e.indexOf("/night/")>=0;let r=e.toLowerCase().match(/[^/]+$/)[0].match(/(.*?)[&,.?]/)[1];const a=+(e.match(/,(\d{2,3})/)??[0,100])[1];if("dualimage"===r){const t=e.match(/&j=(.*)&/);[,r]=t}switch(r+(s?"-n":"")){case"skc":case"hot":case"haze":case"cold":return n("CC_Clear1.gif");case"skc-n":case"nskc":case"nskc-n":case"cold-n":return n("CC_Clear0.gif");case"sct":case"few":case"bkn":return n("CC_PartlyCloudy1.gif");case"bkn-n":case"few-n":case"nfew-n":case"nfew":case"sct-n":case"nsct":case"nsct-n":return n("CC_PartlyCloudy0.gif");case"ovc":case"novc":case"ovc-n":return n("CC_Cloudy.gif");case"fog":case"fog-n":return n("CC_Fog.gif");case"rain_sleet":case"rain_sleet-n":case"sleet":case"sleet-n":return n("Sleet.gif");case"rain_showers":case"rain_showers_high":case"rain_showers-n":case"rain_showers_high-n":return n("CC_Showers.gif");case"rain":case"rain-n":return n("CC_Rain.gif");case"snow":case"snow-n":return n(a>50?"CC_Snow.gif":"CC_SnowShowers.gif");case"rain_snow":return n("CC_RainSnow.gif");case"snow_fzra":case"snow_fzra-n":case"fzra":case"fzra-n":case"rain_fzra":case"rain_fzra-n":return n("CC_FreezingRain.gif");case"snow_sleet":return n("Snow-Sleet.gif");case"tsra_sct":case"tsra":return n("EF_ScatTstorms.gif");case"tsra_sct-n":case"tsra-n":case"tsra_hi":case"tsra_hi-n":case"hurricane":case"tropical_storm":case"hurricane-n":case"tropical_storm-n":return n("CC_TStorm.gif");case"wind_few":case"wind_sct":case"wind_bkn":case"wind_ovc":case"wind_skc":case"wind_few-n":case"wind_bkn-n":case"wind_ovc-n":case"wind_skc-n":case"wind_sct-n":return n("CC_Windy.gif");case"blizzard":case"blizzard-n":return n("Blowing-Snow.gif");default:return console.log(`Unable to locate icon for ${r} ${e} ${s}`),!1}},a=(e,t,n,s,r,a,i=!1)=>{const o=e=>`images/r/${e}`;let l=!1,c=!1,u=!1,d=!1,h=!1;return t.forEach((e=>{e.weather&&(e.weather.toLowerCase().includes("thunder")&&(l=!0),e.weather.toLowerCase().includes("snow")&&(c=!0),e.weather.toLowerCase().includes("ice")&&(u=!0),e.weather.toLowerCase().includes("fog")&&(d=!0),e.weather.toLowerCase().includes("wind")&&(h=!0))})),o(n>0||u?"Freezing-Rain-1992.gif":r>10?a>30||h?"Blowing Snow.gif":"Heavy-Snow-1994.gif":(r>0||c)&&l?"ThunderSnow.gif":r>0||c?"Light-Snow.gif":l?"Thunderstorm.gif":s>70?"Rain-1992.gif":s>50?"Shower.gif":s>30?i?"Scattered-Showers-Night.gif":"Scattered-Showers-1994.gif":d?"Fog.gif":e>70?"Cloudy.gif":e>50?i?"Partly-Clear-1994.gif":"Mostly-Cloudy-1994.gif":e>30?i?"Mostly-Clear.gif":"Partly-Cloudy.gif":i?"Clear-1992.gif":"Sunny.gif")}},94:(e,t,n)=>{var s=n(519),r=n(440),a=n(592),i=n(891),o=n(413),l=n(24),c=n(211);class u extends l.A{constructor(e,t){super(e,t,"Latest Observations",!0),this.MaximumRegionalStations=7}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters,n=Object.keys(StationInfo).map((e=>{const n=StationInfo[e],r=(0,s.Io)(n.lat,n.lon,t.latitude,t.longitude);return{...n,distance:r}})).sort(((e,t)=>e.distance-t.distance)).slice(0,30),r=[];let i=Math.min(n.length,7),o=0;for(;r.length<7&&i<=n.length;){const e=await h(n.slice(o,i));r.push(...e),o+=i,i=Math.min(n.length+1,o+7-r.length)}this.data=r.slice(0,this.MaximumRegionalStations),0!==this.data.length?this.setStatus(a.Ay.loaded):this.setStatus(a.Ay.noData)}async drawCanvas(){super.drawCanvas();const e=this.data.sort(((e,t)=>e.Name{const t=(0,s.Up)(e.windDirection.value),n=Math.round((0,o.sz)(e.temperature.value)),r=Math.round((0,o.Yy)(e.windSpeed.value)),a={location:(0,i.C)(e.city).substr(0,14),temp:n,weather:d(e.textDescription).substr(0,9)};return a.wind=r>0?t+Array(6-t.length-r.toString().length).join(" ")+r.toString():"NA"===r?"NA":"Calm",this.fillTemplate("observation-row",a)})),n=this.elem.querySelector(".observation-lines");n.innerHTML="",n.append(...t),this.finishDraw()}}const d=e=>{let t=e;return t=t.replace(/Light/,"L"),t=t.replace(/Heavy/,"H"),t=t.replace(/Partly/,"P"),t=t.replace(/Mostly/,"M"),t=t.replace(/Few/,"F"),t=t.replace(/Thunderstorm/,"T'storm"),t=t.replace(/ in /,""),t=t.replace(/Vicinity/,""),t=t.replace(/ and /," "),t=t.replace(/Freezing Rain/,"Frz Rn"),t=t.replace(/Freezing/,"Frz"),t=t.replace(/Unknown Precip/,""),t=t.replace(/L Snow Fog/,"L Snw/Fog"),t=t.replace(/ with /,"/"),t},h=async e=>(await Promise.all(e.map((async e=>{try{const t=await(0,r.Pq)(`https://api.weather.gov/stations/${e.id}/observations/latest`,{retryCount:1,stillWaiting:()=>(void 0).stillWaiting()});return null!==t.properties.temperature.value&&""!==t.properties.textDescription&&null!==t.properties.windSpeed.value&&{...t.properties,StationId:e.id,city:e.city}}catch(t){return console.log(`Unable to get latest observations for ${e.id}`),!1}})))).filter((e=>e));(0,c.Kb)(new u(2,"latest-observations"))},704:(e,t,n)=>{var s=n(592),r=n(440),a=n(24),i=n(211);class o extends a.A{constructor(e,t){super(e,t,"Local Forecast",!0),this.timing.baseDelay=5e3}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters,n=await this.getRawData(t);if(!n)return void this.setStatus(s.Ay.failed);const r=l(n);this.screenTexts=r.map((e=>{let t=`${e.DayName.toUpperCase()}...`;return t+=e.Text.toUpperCase().replace("..."," "),t}));const a=this.screenTexts.map((e=>this.fillTemplate("forecast",{text:e}))),i=this.elem.querySelector(".forecasts");i.innerHTML="",i.append(...a),this.pageHeight=i.parentNode.scrollHeight,a.forEach((e=>{const t=Math.ceil(e.scrollHeight/this.pageHeight)*this.pageHeight;e.style.height=`${t}px`})),this.timing.totalScreens=i.scrollHeight/this.pageHeight,this.calcNavTiming(),this.setStatus(s.Ay.loaded)}async getRawData(e){try{return await(0,r.Pq)(e.forecast,{data:{units:"us"},retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(t){return console.error(`GetWeatherForecast failed: ${e.forecast}`),console.error(t.status,t.responseJSON),this.setStatus(s.Ay.failed),!1}}async drawCanvas(){super.drawCanvas();const e=-this.screenIndex*this.pageHeight;this.elem.querySelector(".forecasts").style.top=`${e}px`,this.finishDraw()}}const l=e=>e.properties.periods.slice(0,6).map((e=>({DayName:e.name.toUpperCase(),Text:e.detailedForecast})));(0,i.Kb)(new o(7,"local-forecast"))},211:(e,t,n)=>{n.d(t,{F4:()=>k,Fx:()=>U,Ju:()=>T,K$:()=>z,Kb:()=>F,Lg:()=>W,XR:()=>E,ab:()=>C,eB:()=>j,iU:()=>w,kY:()=>$,pv:()=>O,q:()=>M,u6:()=>_,yB:()=>v});var s=n(430),r=n(592),a=n(519),i=n(440),o=n(348),l=n(302);document.addEventListener("DOMContentLoaded",(()=>{p()}));const c=[];let u,d=!1;const h={},m=6e5,f="#chkAutoRefresh";let g=null,y=0;const p=async()=>{window.addEventListener("resize",E),E();const e=localStorage.getItem("autoRefresh");document.querySelector(f).checked=!e||"true"===e,document.querySelector(f).addEventListener("change",V),q()},w=e=>!!e.type&&("navButton"===e.type?N(e.message):console.error(`Unknown event ${e.type}`)),v=e=>{if(e.id<0)return;if(!u)return;if(u.drawCanvas(c,S()),c[0].status===r.Ay.loading)return;const t=c.findIndex((e=>e.enabled&&e.timing.totalScreens>0));0!==e.id||e.status!==r.Ay.failed&&e.status!==r.Ay.retrying||(e.id=t,e.status=c[t].status),0===e.id&&e.status===r.Ay.loaded&&0===c[0].timing.totalScreens&&(e.id=t,e.status=c[t].status),k()&&e.id===t&&e.status===r.Ay.loaded&&x(C.command.firstFrame),S()c.reduce(((e,t)=>t.status!==r.Ay.loading?e+1:e),0),b=()=>{c.forEach((e=>e.hideCanvas()))},k=()=>d,C={response:{previous:Symbol("previous"),inProgress:Symbol("inProgress"),next:Symbol("next")},command:{firstFrame:Symbol("firstFrame"),previousFrame:Symbol("previousFrame"),nextFrame:Symbol("nextFrame"),lastFrame:Symbol("lastFrame")}},T=e=>{e.type===C.response.previous&&L(-1),e.type===C.response.next&&L(1)},x=e=>{const t=M();if(u.hideCanvas(),!t){let e,t=0;do{c[t].status===r.Ay.loaded&&c[t].timing.totalScreens>0&&(e=c[t]),t+=1}while(!e&&t{const t=c.length,n=D();let s;for(let i=0;i0));i+=1);if(s<=n&&Z())return;const i=c[s];b(),e<0&&i.showCanvas(C.command.lastFrame),e>0&&i.showCanvas(C.command.firstFrame)},D=()=>c.findIndex((e=>e.active)),M=()=>c[D()],I=e=>{d=e;const t=document.querySelector("#NavigatePlay");localStorage.setItem("play",d),d?((0,s.A)(!0),t.title="Pause",t.src="images/nav/ic_pause_white_24dp_2x.png"):((0,s.A)(!1),t.title="Play",t.src="images/nav/ic_play_arrow_white_24dp_2x.png"),u&&d&&!M()&&x(C.command.firstFrame)},N=e=>{switch(e){case"play":I(!0);break;case"playToggle":I(!d);break;case"stop":I(!1);break;case"next":I(!1),x(C.command.nextFrame);break;case"previous":I(!1),x(C.command.previousFrame);break;case"menu":I(!1),u.showCanvas(),b();break;default:console.error(`Unknown navButton ${e}`)}},O=e=>c[e],E=()=>{const e=l.A.wide.value?854:640,t=document.querySelector("#divTwcBottom").getBoundingClientRect().width/e,n=window.innerHeight/480,s=Math.min(t,n);s<1||document.fullscreenElement||l.A.kiosk?document.querySelector("#container").style.transform=`scale(${s})`:document.querySelector("#container").style.transform="unset"},$=()=>{c.forEach((e=>{e.status=r.Ay.loading}))},F=e=>{c[e.navId]=e,q()},q=()=>{const e=document.querySelector("#enabledDisplays");if(!e)return;const t=c.map((e=>e.generateCheckbox(e.defaultEnabled))).filter((e=>e));e.innerHTML="",e.append(...t)},W=e=>{u=e},A=e=>{document.querySelector("#spanCity").innerHTML=`${e.city}, `,document.querySelector("#spanState").innerHTML=e.state,document.querySelector("#spanStationId").innerHTML=e.stationId,document.querySelector("#spanRadarId").innerHTML=e.radarId,document.querySelector("#spanZoneId").innerHTML=e.zoneId},V=e=>{const{checked:t}=e.target;t?H():z(),localStorage.setItem("autoRefresh",t)},P=e=>{e?(document.querySelector("#spanLastRefresh").innerHTML=e.toLocaleString("en-US",{weekday:"short",month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short"}),document.querySelector(f).checked&&H()):document.querySelector("#spanLastRefresh").innerHTML="(none)"},_=(e,t)=>{(async(e,t)=>{const n=await(0,o.f)(e.lat,e.lon);"function"==typeof t&&t(n);const s=await(0,i.Pq)(n.properties.observationStations),r=s.features[0].properties.stationIdentifier;let{city:a}=n.properties.relativeLocation.properties;const{state:l}=n.properties.relativeLocation.properties;r in StationInfo&&(a=StationInfo[r].city,[a]=a.split("/"),a=a.replace(/\s+$/,"")),h.latitude=e.lat,h.longitude=e.lon,h.zoneId=n.properties.forecastZone.substr(-6),h.radarId=n.properties.radarStation.substr(-3),h.stationId=r,h.weatherOffice=n.properties.cwa,h.city=a,h.state=l,h.timeZone=n.properties.timeZone,h.forecast=n.properties.forecast,h.forecastGridData=n.properties.forecastGridData,h.stations=s.features,A(h),b(),document.querySelector("#loading").style.display="none",u&&(await u.drawCanvas(),u.showCanvas()),c.forEach((e=>e.getData(h)))})(e,t),P(null)},H=()=>{if(g)return;y=0;const e=()=>{y+=500;let e=m-y;e<0&&(e=0);const t=new Date(e);document.querySelector("#spanRefreshCountDown").innerHTML=`${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}`,y>=m&&!k()&&R()};g=window.setInterval(e,500),e()},z=()=>{g&&(window.clearInterval(g),document.querySelector("#spanRefreshCountDown").innerHTML="--:--",g=null)},Z=()=>!!(y>=m&&k())&&(R(),!0),R=()=>{R.callback&&R.callback()},U=e=>{R.callback=e},j=()=>h.timeZone},951:(e,t,n)=>{var s=n(47),r=n(592),a=n(24),i=n(211);class o extends a.A{constructor(e,t){super(e,t,"",!1),this.backgroundImage=(0,s.u)("images/BackGround1_1.png"),this.timing=!1,document.addEventListener("DOMContentLoaded",(()=>{this.version=document.querySelector("#version").innerHTML,this.elem.querySelector(".container").addEventListener("click",this.lineClick.bind(this))})),this.okToDrawCurrentConditions=!1}async drawCanvas(e,t){if(!this.elem)return;if(super.drawCanvas(),this.progressCover||(this.progressCover=this.elem.querySelector(".scroll .cover")),!e)return;const n=e.map(((e,t)=>{if(!1===e.showOnProgress)return!1;const n={name:e.name},s=(0,r.qx)(e.status),a=this.fillTemplate("item",n);if(!a)return!1;const i=a.querySelector(".links");return i.classList.remove(...r.LR),i.classList.add(s),i.dataset.index=t,a})).filter((e=>e)),s=this.elem.querySelector(".container");s.innerHTML="",s.append(...n),this.finishDraw();const a=t/e.length;this.progressCover.style.width=100*(1-a)+"%",a<1?this.progressCover.parentNode.classList.add("show"):setTimeout((()=>this.progressCover.parentNode.classList.remove("show")),1e3)}lineClick(e){const t=e.target?.parentNode?.dataset?.index;if(void 0===t)return;const n=+t;(0,i.iU)("navButton");const s=(0,i.pv)(n);s&&s.status===r.Ay.loaded&&(s.showCanvas(i.ab.command.firstFrame),this.elem.classList.remove("show"))}}const l=new o(-1,"progress");(0,i.Lg)(l)},503:(e,t,n)=>{var s=n(592),r=n(125),a=n(47),i=n(440),o=n(147),l=n(24),c=n(211);class u extends l.A{constructor(e,t){super(e,t,"Local Radar",!0),this.okToDrawCurrentConditions=!1,this.okToDrawCurrentDateTime=!1,this.dopplerRadarImageMax=6,this.timing.baseDelay=350,this.timing.delay=[{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:12,si:5}]}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;if("AK"===t.state||"HI"===t.state)return void this.setStatus(s.Ay.noData);let n="images/4000RadarMap2.jpg";"HI"===t.State&&(n="images/HawaiiRadarMap2.png"),this.baseMap=await(0,a.u)(n);const l=[];let u=r.c9.utc().minus({days:1}).startOf("day");for(;u<=r.c9.utc().startOf("day");)l.push(`https://mesonet.agron.iastate.edu/archive/data/${u.toFormat("yyyy/LL/dd")}/GIS/uscomp/`),u=u.plus({days:1});const d=(await Promise.all(l.map((async e=>{try{return(0,i.Qq)(e,{cors:!0})}catch(e){return console.log("Unable to get list of radars"),console.error(e),this.setStatus(s.Ay.failed),!1}})))).filter((e=>e)).flatMap(((e,t)=>{const n=(new DOMParser).parseFromString(e,"text/html"),s=n.createElement("base");s.href=l[t],n.head.append(s);const r=n.querySelectorAll("a"),a=[];return Array.from(r).forEach((e=>{e.innerHTML?.match(/n0r_\d{12}\.png/)&&a.push(e.href)})),a})),h=/_(\d{12})\.png/,m=d.sort(((e,t)=>e.match(h)[1]{let s=0,r=0;return s=55.2*(51.75-e.latitude),s-=n,s>3200-2*n?s=3200-2*n:s<0&&(s=0),r=41.775*(-130.37-e.longitude)*-1,r-=t,r>5100-2*t?r=5100-2*t:r<0&&(r=0),{x:2*r,y:2*s}})(t,240,138),w=document.createElement("canvas");w.width=y,w.height=1600;const v=w.getContext("2d");v.imageSmoothingEnabled=!1;const S=((e,t,n)=>{let s=0,r=0;return s=61.4481*(51-e.latitude),s-=n,s>6e3-2*n?s=6e3-2*n:s<0&&(s=0),r=42.1768*(-129.138-e.longitude)*-1,r-=t,r>2800-2*t?r=2800-2*t:r<0&&(r=0),{x:2*r,y:2*s}})(t,240,138),b=S.x/2,k=S.y/2,C=await Promise.all(m.map((async e=>{const t=document.createElement("canvas");t.width=640,t.height=367;const n=t.getContext("2d");n.imageSmoothingEnabled=!1;const s=await fetch((0,o.O)(e));if(!s.ok)throw new Error(`Unable to fetch radar error ${s.status} ${s.statusText} from ${s.url}`);const i=await s.blob(),l=e.match(/_(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)\./);let u;if(l){const[,e,t,n,s,a]=l;u=r.c9.fromObject({year:e,month:t,day:n,hour:s,minute:a},{zone:"UTC"}).setZone()}else u=r.c9.fromHTTP(s.headers.get("last-modified")).setZone((0,c.eB)());const d=await(0,a.u)(i);v.clearRect(0,0,y,1600),v.drawImage(d,0,0,y,1600),n.drawImage(await this.baseMap,p.x,p.y,480,276,0,0,640,367);const h=document.createElement("canvas");h.width=640,h.height=367;const m=h.getContext("2d",{willReadFrequently:!0});m.imageSmoothingEnabled=!1,m.drawImage(w,b,k,240,163.1,0,0,640,367),(e=>{const t=e.getImageData(0,0,e.canvas.width,e.canvas.height);for(let e=0;e{const n=e.getImageData(0,0,e.canvas.width,e.canvas.height),s=t.getImageData(0,0,t.canvas.width,t.canvas.height);for(let e=0;ee.elem))),this.timing.totalScreens=C.length,this.data=C.map((e=>e.canvas)),this.times=C.map((e=>e.time)),this.setStatus(s.Ay.loaded)}async drawCanvas(){super.drawCanvas();const e=this.times[this.screenIndex].toLocaleString(r.c9.TIME_SIMPLE),t=e.length>=8?e:` ${e}`;this.elem.querySelector(".header .right .time").innerHTML=t;const n=this.elem.querySelector(".frame").scrollHeight;this.elem.querySelector(".scroll-area").style.top=-this.screenIndex*n+"px",this.finishDraw()}}(0,c.Kb)(new u(10,"radar"))},187:(e,t,n)=>{var s=n(592),r=n(519),a=n(440),i=n(413),o=n(716),l=n(47),c=n(125),u=n(24),d=n(211);const h=(e,t,n)=>({daytime:e.isDaytime,temperature:e.temperature||0,name:v(t.city),icon:e.icon,x:n.x,y:n.y,time:e.startTime}),m=(e,t,n,s)=>{let r=0,a=0;return r=56*(73-e),r-=s,r>1142-2*s?r=1142-2*s:r<0&&(r=0),a=25*(-175-t)*-1,a-=n,a>1200-2*n?a=1200-2*n:a<0&&(a=0),{x:a,y:r}},f=(e,t,n,s)=>{let r=0,a=0;return r=55.2*(25-e),r-=s,r>571-2*s?r=571-2*s:r<0&&(r=0),a=41.775*(-164.5-t)*-1,a-=n,a>600-2*n?a=600-2*n:a<0&&(a=0),{x:a,y:r}},g=(e,t,n,s)=>({minLat:-1*((t+2*s)/56-73),maxLat:-1*(t/56-73),minLon:-1*(-1*e/25+175),maxLon:-1*(-1*(e+2*n)/25+175)}),y=(e,t,n,s)=>({minLat:-1*((t+2*s)/55.2-25),maxLat:-1*(t/55.2-25),minLon:-1*(-1*e/41.775+164.5),maxLon:-1*(-1*(e+2*n)/41.775+164.5)}),p=(e,t,n)=>{let s=37*(e.lon-n),r=70*(t-e.lat);return r<30&&(r=30),r>282&&(r=282),s<40&&(s=40),s>580&&(s=580),{x:s,y:r}},w=(e,t,n)=>{let s=57*(e.lon-n),r=70*(t-e.lat);return r<30&&(r=30),r>282&&(r=282),s<40&&(s=40),s>580&&(s=580),{x:s,y:r}},v=e=>e.match(/[^,/;\\-]*/)[0].substr(0,12);var S=n(348);class b extends u.A{constructor(e,t){super(e,t,"Regional Forecast",!0),this.timing.totalScreens=3}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;let n="images/Basemap2.png";"HI"===t.state?n="images/HawaiiRadarMap4.png":"AK"===t.state&&(n="images/AlaskaRadarMap6.png"),this.elem.querySelector(".map img").src=n;const c={x:240,y:117},u=((e,t,n,s,r)=>{if("AK"===r)return m(e,t,n,s);if("HI"===r)return f(e,t,n,s);let a=0,i=0;return a=55.2*(50.5-e),a-=s,a>1600-2*s?a=1600-2*s:a<0&&(a=0),i=41.775*(-127.5-t)*-1,i-=n,i>2550-2*n?i=2550-2*n:i<0&&(i=0),{x:i,y:a}})(t.latitude,t.longitude,c.x,c.y,t.state),d=(S=u.x,b=u.y,C=c.x,T=c.y,"AK"===(x=t.state)?g(S,b,C,T):"HI"===x?y(S,b,C,T):{minLat:-1*((b+2*T)/55.2-50.5),maxLat:-1*(b/55.2-50.5),minLon:-1*(-1*S/41.775+127.5),maxLon:-1*(-1*(S+2*C)/41.775+127.5)});var S,b,C,T,x;let L=2.5;"HI"===t.state&&(L=1);const D=Object.values(StationInfo).map((e=>({...e,targetDistance:L}))),M=[...RegionalCities,...D],I=[];M.forEach((e=>{if(e.lat>d.minLat&&e.latd.minLon&&e.lon{const a=(0,r.Io)(e.lon,e.lat,s.lon,s.lat);return n&&a>=t}),!0)&&I.push(e)}}));const N=await Promise.all(I.map((async e=>{try{const n=e?.point??await k(e.lat,e.lon);if(!n)throw new Error("No pre-loaded point");const s=(async(e,t)=>{try{const t=(await(0,a.Pq)(`https://api.weather.gov/gridpoints/${e.wfo}/${e.x},${e.y}/stations`)).features[0].id,n=await(0,a.Pq)(`${t}/observations/latest`);if(!n.properties.icon)return!1;const s=(0,o.Wu)(n.properties.icon,!n.properties.daytime);return!!s&&((0,l.b)(s),n.properties)}catch(e){return console.log(`Unable to get regional observations for ${t.Name??t.city}`),console.error(e.status,e.responseJSON),!1}})(n,e),r=await(0,a.Pq)(`https://api.weather.gov/gridpoints/${n.wfo}/${n.x},${n.y}/forecast`),c=((e,t,n,s)=>{"AK"===s&&p(e,t,n),"HI"===s&&w(e,t,n);let r=57*(e.lon-n),a=70*(t-e.lat);return a<30&&(a=30),a>282&&(a=282),r<40&&(r=40),r>580&&(r=580),{x:r,y:a}})(e,d.maxLat,d.minLon,t.state),u=await s;if(!u)return!1;const m={daytime:!!/\/day\//.test(u.icon),temperature:(0,i.sz)(u.temperature.value),name:v(e.city),icon:u.icon,x:c.x,y:c.y};return(0,l.b)((0,o.Wu)(m.icon,!m.daytime)),[m,h(r.properties.periods[1],e,c),h(r.properties.periods[2],e,c)]}catch(t){return console.log(`No regional forecast data for '${e.name??e.city}'`),console.log(t),!1}}))),O=N.filter((e=>e));0!==O.length?(this.data={regionalData:O,offsetXY:c,sourceXY:u},this.setStatus(s.Ay.loaded)):this.setStatus(s.Ay.noData)}drawCanvas(){super.drawCanvas();const{regionalData:e,sourceXY:t,offsetXY:n}=this.data,s=this.elem.querySelector(".title.dual .top"),r=this.elem.querySelector(".title.dual .bottom");if(0===this.screenIndex)s.innerHTML="Regional",r.innerHTML="Observations";else{const t=c.c9.fromISO(e[0][this.screenIndex].time).toLocaleString({weekday:"long"});s.innerHTML="Forecast for",r.innerHTML=e[0][this.screenIndex].daytime?t:`${t} Night`}const a=640/(2*n.x);this.elem.querySelector(".map").style.transform=`scale(${a}) translate(-${t.x}px, -${t.y}px)`;const i=e.map((e=>{const t={},n=e[this.screenIndex];t.icon={type:"img",src:(0,o.Wu)(n.icon,!n.daytime)},t.city=n.name;const{temperature:s}=n;t.temp=s;const{x:r,y:a}=n,i=this.fillTemplate("location",t);return i.style.left=`${r}px`,i.style.top=`${a}px`,i})),l=this.elem.querySelector(".location-container");l.innerHTML="",l.append(...i),this.finishDraw()}}const k=async(e,t)=>{const n=await(0,S.f)(e,t);return{x:n.properties.gridX,y:n.properties.gridY,wfo:n.properties.gridId}};(0,d.Kb)(new b(6,"regional-forecast"))},302:(e,t,n)=>{n.d(t,{A:()=>u});var s=n(999);const r="Settings";const a=class{constructor(e,t,n,r,a,i,o){this.shortName=e,this.name=t,this.defaultValue=r,this.myValue=r,this.type=n??"checkbox",this.sticky=i,this.values=o,this.changeAction=a??(()=>{});const l=(0,s.J)()?.[`settings-${e}-${n}`];let c;"checkbox"===n&&void 0!==l&&(c="true"===l),"select"===n&&void 0!==l&&(c=parseFloat(l));const u=c??this.getFromLocalStorage();if(i&&null!==u&&(this.myValue=u),"select"===n)this.selectChange({target:{value:this.myValue}});else this.checkboxChange({target:{checked:this.myValue}})}generateSelect(){const e=document.createElement("label");e.for=`settings-${this.shortName}-select`,e.id=`settings-${this.shortName}-label`;const t=document.createElement("span");t.innerHTML=`${this.name} `,e.append(t);const n=document.createElement("select");return n.id=`settings-${this.shortName}-select`,n.name=`settings-${this.shortName}-select`,n.addEventListener("change",(e=>this.selectChange(e))),this.values.forEach((([e,t])=>{const s=document.createElement("option");s.value=e.toFixed(2),s.innerHTML=t,n.append(s)})),e.append(n),this.element=e,this.selectHighlight(this.myValue),e}generateCheckbox(){const e=document.createElement("label");e.for=`settings-${this.shortName}-checkbox`,e.id=`settings-${this.shortName}-label`;const t=document.createElement("input");t.type="checkbox",t.value=!0,t.id=`settings-${this.shortName}-checkbox`,t.name=`settings-${this.shortName}-checkbox`,t.checked=this.myValue,t.addEventListener("change",(e=>this.checkboxChange(e)));const n=document.createElement("span");return n.innerHTML=this.name,e.append(t,n),this.element=e,e}checkboxChange(e){this.myValue=e.target.checked,this.storeToLocalStorage(this.myValue),this.changeAction(this.myValue)}selectChange(e){this.myValue=parseFloat(e.target.value),this.storeToLocalStorage(this.myValue),this.changeAction(this.myValue)}storeToLocalStorage(e){if(!this.sticky)return;const t=localStorage?.getItem(r)??"{}",n=JSON.parse(t);n[this.shortName]=e,localStorage?.setItem(r,JSON.stringify(n))}getFromLocalStorage(){const e=localStorage?.getItem(r);try{if(e){const t=JSON.parse(e)?.[this.shortName];if(void 0!==t)switch(this.type){case"boolean":case"select":return t;default:return null}}}catch{return null}return null}get value(){return this.myValue}set value(e){if(this.myValue=e,"select"===this.type)this.selectHighlight(e);else this.element.checked=e;this.storeToLocalStorage(this.myValue),this.changeAction(this.myValue)}selectHighlight(e){this.element.querySelectorAll("option").forEach((t=>{t.selected=e.toFixed(2)===t.value}))}generate(){return"select"===this.type?this.generateSelect():this.generateCheckbox()}};document.addEventListener("DOMContentLoaded",(()=>{o()}));const i={speed:{value:1}},o=()=>{i.wide=new a("wide","Widescreen","boolean",!1,l,!0),i.kiosk=new a("kiosk","Kiosk","boolean",!1,c,!1),i.speed=new a("speed","Speed","select",1,null,!0,[[.5,"Very Fast"],[.75,"Fast"],[1,"Normal"],[1.25,"Slow"],[1.5,"Very Slow"]]);const e=Object.values(i).map((e=>e.generate())),t=document.querySelector("#settings");t.innerHTML="",t.append(...e)},l=e=>{const t=document.querySelector("#divTwc");e?t.classList.add("wide"):t.classList.remove("wide")},c=e=>{const t=document.querySelector("body");e?(t.classList.add("kiosk"),window.dispatchEvent(new Event("resize"))):t.classList.remove("kiosk")},u=i},999:(e,t,n)=>{n.d(t,{J:()=>l}),document.addEventListener("DOMContentLoaded",(()=>r()));const s={kiosk:"settings-kiosk-checkbox"},r=()=>{const e=document.querySelector("#share-link");e.addEventListener("click",a),navigator?.clipboard||(e.textContent="Get Permalink")},a=async e=>{e.preventDefault();const t=document.querySelectorAll("input[type=checkbox]"),n={};[...t].forEach((e=>{e?.id&&(n[e.id]=e?.checked??!1)}));[...document.querySelectorAll("select")].forEach((e=>{e?.id&&(n[e.id]=e?.value??0)})),n.latLonQuery=localStorage.getItem("latLonQuery"),n.latLon=localStorage.getItem("latLon");const s=new URLSearchParams(n).toString(),r=new URL(`?${s}`,document.location.href);navigator?.clipboard?i(r):o(r)},i=async e=>{try{await navigator.clipboard.writeText(e.toString());const t=document.querySelector("#share-link-copied");t.style.display="inline",setTimeout((()=>{t.style.display="none"}),5e3)}catch(e){console.error(e)}},o=e=>{const t=document.querySelector("#share-link-instructions"),n=t.querySelector("#share-link-url");n.value=e,t.style.display="inline",n.focus(),n.select()},l=()=>{if(l.params)return l.params;const e=[...new URLSearchParams(window.location.search)];return e.forEach((t=>{const n=s[t[0]];n&&e.push([n,t[1]])})),l.params=Object.fromEntries(e),l.params}},592:(e,t,n)=>{n.d(t,{Ay:()=>i,LR:()=>a,qx:()=>r});const s={loading:Symbol("loading"),loaded:Symbol("loaded"),failed:Symbol("failed"),noData:Symbol("noData"),disabled:Symbol("disabled"),retrying:Symbol("retrying")},r=e=>{switch(e){case s.loading:return"loading";case s.loaded:return"press-here";case s.failed:return"failed";case s.noData:return"no-data";case s.disabled:return"disabled";case s.retrying:return"retrying";default:return""}},a=["loading","press-here","failed","no-data","disabled","retrying"],i=s},709:(e,t,n)=>{var s=n(592),r=n(440),a=n(716),i=n(125),o=n(24),l=n(211);class c extends o.A{constructor(e,t,n){super(e,t,"Travel Forecast",n),this.timing.baseDelay=20;const s=TravelCities.length/4,r=Math.floor(s)-2,a=r%1;this.timing.delay=[450];for(let e=0;e{try{if(!e.point)throw new Error("No pre-loaded point");const t=await(0,r.Pq)(`https://api.weather.gov/gridpoints/${e.point.wfo}/${e.point.x},${e.point.y}/forecast`),n=t.properties.periods[0].isDaytime?0:1;return{today:0===n,high:t.properties.periods[n].temperature,low:t.properties.periods[n+1].temperature,name:e.Name,icon:(0,a.Wu)(t.properties.periods[n].icon)}}catch(t){return console.error(`GetTravelWeather for ${e.Name} failed`),console.error(t.status,t.responseJSON),{name:e.Name,error:!0}}})),t=await Promise.all(e);this.data=t;this.data.some((e=>e.high))?(this.setStatus(s.Ay.loaded),this.drawLongCanvas()):this.setStatus(s.Ay.noData)}async drawLongCanvas(){const e=this.elem.querySelector(".travel-lines");e.innerHTML="";const t=this.data.map((e=>{if(e.error)return!1;const t={city:e};if(e.icon){t.city=e.name;const{low:n,high:s}=e,r=Math.round(n).toString(),a=Math.round(s).toString();t.low=r,t.high=a;const{icon:i}=e;t.icon={type:"img",src:i}}else t.error="NO TRAVEL DATA AVAILABLE";return this.fillTemplate("travel-row",t)})).filter((e=>e));e.append(...t)}async drawCanvas(){super.drawCanvas();const e=this.data;this.elem.querySelector(".header .title.dual .bottom").innerHTML=`For ${u(e)}`,this.finishDraw()}async showCanvas(){await this.drawCanvas(),super.showCanvas()}screenIndexChange(){this.baseCountChange(this.navBaseCount)}baseCountChange(e){let t=Math.min(this.elem.querySelector(".travel-lines").getBoundingClientRect().height-289,e-150);t<0&&(t=0),this.elem.querySelector(".main").scrollTo(0,t)}getLongCanvas(){return this.longCanvas}}const u=e=>e.reduce(((e,t)=>{if(t&&""===e){return i.c9.local().plus({days:t.today?0:1}).toLocaleString({weekday:"long"})}return e}),"");(0,l.Kb)(new c(5,"travel",!1))},519:(e,t,n)=>{n.d(t,{Io:()=>r,LV:()=>a,Up:()=>s});const s=e=>["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"][Math.floor(e/22.5+.5)%16],r=(e,t,n,s)=>Math.sqrt((n-e)**2+(s-t)**2),a=(e,t)=>(e%t+t)%t},147:(e,t,n)=>{n.d(t,{O:()=>s});const s=e=>{let t=e;return t=t.replace("https://api.weather.gov/",`${window.location.protocol}//${window.location.host}/`),t=t.replace("https://www.cpc.ncep.noaa.gov/",`${window.location.protocol}//${window.location.host}/`),t}},440:(e,t,n)=>{n.d(t,{Pq:()=>r,Qq:()=>a,av:()=>i});var s=n(147);const r=(e,t)=>o(e,"json",t),a=(e,t)=>o(e,"text",t),i=(e,t)=>o(e,"blob",t),o=async(e,t,n={})=>{const r={method:"GET",mode:"cors",type:"GET",retryCount:0,...n};r.originalRetries=r.retryCount;let a=e;!0===r.cors&&(a=(0,s.O)(e));const i=new URL(a,`${window.location.origin}/`);r.data&&Object.keys(r.data).forEach((e=>{const t=r.data[e];i.searchParams.append(e,t)}));const o=await l(i,r);if(!o.ok)throw new Error(`Fetch error ${o.status} ${o.statusText} while fetching ${o.url}`);switch(t){case"json":return o.json();case"text":return o.text();case"blob":return o.blob();default:return o}},l=(e,t)=>new Promise(((n,s)=>{fetch(e,t).then((s=>{if(t.retryCount>0){if(s.status>=500&&s.status<=599&&t.retryCount>0){"function"==typeof t.stillWaiting&&t.retryCount===t.originalRetries&&t.stillWaiting();const s={...t,retryCount:t.retryCount-1};return n(c(u(t.originalRetries-s.retryCount),l,e,s))}return n(s)}return n(s)})).catch((e=>s(e)))})),c=(e,t,...n)=>new Promise((s=>{setTimeout((()=>{s(t(...n))}),e)})),u=e=>{switch(e){case 1:return 1e3;case 2:return 2e3;case 3:return 5e3;case 4:return 1e4;default:return 3e4}}},47:(e,t,n)=>{n.d(t,{b:()=>o,u:()=>a});var s=n(440),r=n(147);const a=(e,t=!1)=>new Promise((n=>{const s=new Image;if(s.onload=e=>{n(e.target)},e instanceof Blob)s.src=window.URL.createObjectURL(e);else{let n=e;t&&(n=(0,r.O)(e)),s.src=n}})),i=[],o=e=>!i.includes(e)&&((0,s.av)(e),i.push(e),!0)},430:(e,t,n)=>{n.d(t,{A:()=>a});let s=!1;const r=(e=!1)=>(r.controller||(r.controller=new NoSleep),s!==e&&(s=e,e?r.controller.enable():r.controller.disable())),a=r},891:(e,t,n)=>{n.d(t,{C:()=>s});const s=e=>[/^[ A-Za-z]+ \/ /,/^[ A-Za-z]+\//,/^[ A-Za-z]+, /].reduce(((e,t)=>e.replace(t,"")),e)},413:(e,t,n)=>{n.d(t,{Q8:()=>o,X4:()=>s,Yy:()=>r,lt:()=>i,sz:()=>a,yX:()=>l});const s=(e,t)=>Math.trunc(e*10**t)/10**t,r=e=>Math.round(e/1.60934),a=e=>Math.round(9*e/5+32),i=e=>Math.round(e/1.60934),o=e=>Math.round(e/.3048),l=e=>s(2953e-7*e,2)},348:(e,t,n)=>{n.d(t,{f:()=>r});var s=n(440);const r=async(e,t)=>{try{return await(0,s.Pq)(`https://api.weather.gov/points/${e},${t}`)}catch(n){return console.log(`Unable to get point ${e}, ${t}`),console.error(n),!1}}},24:(e,t,n)=>{n.d(t,{A:()=>l});var s=n(592),r=n(125),a=n(211),i=n(999),o=n(302);const l=class{constructor(e,t,n,r){this.navId=e,this.elemId=void 0,this.data=void 0,this.loadingStatus=s.Ay.loading,this.name=n??t,this.getDataCallbacks=[],this.stillWaitingCallbacks=[],this.defaultEnabled=r,this.okToDrawCurrentConditions=!0,this.okToDrawCurrentDateTime=!0,this.showOnProgress=!0,this.timing={totalScreens:1,baseDelay:9e3,delay:1},this.navBaseCount=0,this.screenIndex=-1,this.storeElemId(t),this.isEnabled?this.setStatus(s.Ay.loading):this.setStatus(s.Ay.disabled),this.startNavCount(),document.addEventListener("DOMContentLoaded",(()=>{this.loadTemplates()}))}generateCheckbox(e=!0){if("progress"===this.elemId)return!1;const t=(0,i.J)()?.[`${this.elemId}-checkbox`];let n;void 0!==t&&(n="true"===t);let s=n??window.localStorage.getItem(`display-enabled: ${this.elemId}`);null===s&&(s=e),this.isEnabled=!("true"!==s&&!0!==s),window.localStorage.setItem(`display-enabled: ${this.elemId}`,this.isEnabled);const r=document.createElement("label");r.for=`${this.elemId}-checkbox`,r.id=`${this.elemId}-label`;const a=document.createElement("input");a.type="checkbox",a.value=!0,a.id=`${this.elemId}-checkbox`,a.name=`${this.elemId}-checkbox`,a.checked=this.isEnabled,a.addEventListener("change",(e=>this.checkboxChange(e)));const o=document.createElement("span");o.innerHTML=this.name;const l=document.createElement("span");return l.innerHTML="!!!",l.classList.add("alert"),r.append(a,o,l),this.checkbox=r,r}checkboxChange(e){this.isEnabled=e.target.checked,window.localStorage.setItem(`display-enabled: ${this.elemId}`,this.isEnabled),this.getData()}setStatus(e){this.status=e,(0,a.yB)({id:this.navId,status:this.status}),this.checkbox&&(this.checkbox.classList.remove(...s.LR),this.checkbox.classList.add((0,s.qx)(e)))}get status(){return this.loadingStatus}set status(e){this.loadingStatus=e}storeElemId(e){this.elemId||(this.elemId=e)}getData(e){return this.data=void 0,e&&(this.weatherParameters=e),this.isEnabled?(this.setStatus(s.Ay.loading),this.calcNavTiming(),!0):(this.setStatus(s.Ay.disabled),!1)}getDataCallback(){this.getDataCallbacks.forEach((e=>e(this.data))),this.getDataCallbacks=[]}drawCanvas(){this.screenIndex<0&&(this.screenIndex=0),this.okToDrawCurrentDateTime&&this.drawCurrentDateTime()}finishDraw(){this.okToDrawCurrentDateTime&&(this.drawCurrentDateTime(),this.dateTimeInterval||(this.dateTimeInterval=setInterval((()=>this.active&&this.drawCurrentDateTime()),100)))}drawCurrentDateTime(){const e=r.c9.local().setZone((0,a.eB)()),t=e.toLocaleString(r.c9.TIME_WITH_SECONDS).padStart(11," "),n=e.toFormat(" ccc LLL ")+e.day.toString().padStart(2," "),s=this.elem.querySelector(".date-time.date"),i=this.elem.querySelector(".date-time.time");i&&this.lastTime!==t&&(i.innerHTML=t.toUpperCase()),this.lastTime=t,s&&this.lastDate!==n&&(s.innerHTML=n.toUpperCase()),this.lastDate=n}showCanvas(e){e===a.ab.command.firstFrame&&this.navNext(e),e===a.ab.command.lastFrame&&this.navPrev(e),this.startNavCount(),this.elem.classList.add("show"),document.querySelector("#divTwc").classList.add(this.elemId)}hideCanvas(){this.resetNavBaseCount(),this.elem.classList.remove("show"),document.querySelector("#divTwc").classList.remove(this.elemId)}get active(){return 0!==this.elem.offsetHeight}get enabled(){return this.isEnabled}navBaseTime(){(0,a.F4)()&&this.active&&(this.navBaseCount+=1,this.baseCountChange&&this.baseCountChange(this.navBaseCount),this.updateScreenFromBaseCount())}async updateScreenFromBaseCount(){const e=this.screenIndexFromBaseCount();!1!==e?e!==this.screenIndex&&(this.screenIndex=-1===e?0:e,this.screenIndexChange?this.screenIndexChange(this.screenIndex):await this.drawCanvas(),this.showCanvas()):this.sendNavDisplayMessage(a.ab.response.next)}calcNavTiming(){if(!1===this.timing)return;Array.isArray(this.timing.delay)&&(this.timing.totalScreens=this.timing.delay.length);let e=[];if("number"==typeof this.timing.delay)for(let t=0;t"object"==typeof e?e.time:e));let t=0;if(this.timing.fullDelay=e.map((e=>{const n=t+e;return t+=e,n})),Array.isArray(this.timing.delay)&&"object"==typeof this.timing.delay[0])this.timing.screenIndexes=this.timing.delay.map((e=>e.si));else{this.timing.screenIndexes=[];for(let e=0;ee>this.navBaseCount));this.navBaseCount=e}this.updateScreenFromBaseCount()}navPrev(e){if(e===a.ab.command.lastFrame)this.navBaseCount=this.timing.fullDelay[this.timing.totalScreens-1]-1;else{const e=this.timing.fullDelay.reduce(((e,t)=>te>this.navBaseCount));return-1!==e&&this.timing.screenIndexes[e]}startNavCount(){this.navInterval||(this.navInterval=setInterval((()=>this.navBaseTime()),this.timing.baseDelay*o.A.speed.value))}resetNavBaseCount(){this.navBaseCount=0,this.screenIndex=-1,this.navInterval&&(clearInterval(this.navInterval),this.navInterval=void 0)}sendNavDisplayMessage(e){(0,a.Ju)({id:this.navId,type:e})}loadTemplates(){if(this.templates={},this.elem=document.querySelector(`#${this.elemId}-html`),!this.elem)return;this.elem.querySelectorAll(".template").forEach((e=>{const t=e.classList[0],n=e.cloneNode(!0);n.classList.remove("template"),this.templates[t]=n,e.remove()}))}fillTemplate(e,t){const n=this.templates[e];if(!n)return!1;const s=n.cloneNode(!0);return Object.entries(t).forEach((([e,t])=>{const n=s.querySelector(`.${e}`);n&&("string"==typeof t||"number"==typeof t?n.innerHTML=t:"img"===t?.type&&(n.querySelector("img").src=t.src))})),s}stillWaiting(){this.isEnabled&&this.setStatus(s.Ay.retrying),this.stillWaitingCallbacks.forEach((e=>e())),this.stillWaitingCallbacks=[]}}},125:(e,t,n)=>{n.d(t,{IX:()=>xn,c9:()=>gs,dw:()=>Cn});class s extends Error{}class r extends s{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class a extends s{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class i extends s{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class o extends s{}class l extends s{constructor(e){super(`Invalid unit ${e}`)}}class c extends s{}class u extends s{constructor(){super("Zone is an abstract class")}}const d="numeric",h="short",m="long",f={year:d,month:d,day:d},g={year:d,month:h,day:d},y={year:d,month:h,day:d,weekday:h},p={year:d,month:m,day:d},w={year:d,month:m,day:d,weekday:m},v={hour:d,minute:d},S={hour:d,minute:d,second:d},b={hour:d,minute:d,second:d,timeZoneName:h},k={hour:d,minute:d,second:d,timeZoneName:m},C={hour:d,minute:d,hourCycle:"h23"},T={hour:d,minute:d,second:d,hourCycle:"h23"},x={hour:d,minute:d,second:d,hourCycle:"h23",timeZoneName:h},L={hour:d,minute:d,second:d,hourCycle:"h23",timeZoneName:m},D={year:d,month:d,day:d,hour:d,minute:d},M={year:d,month:d,day:d,hour:d,minute:d,second:d},I={year:d,month:h,day:d,hour:d,minute:d},N={year:d,month:h,day:d,hour:d,minute:d,second:d},O={year:d,month:h,day:d,weekday:h,hour:d,minute:d},E={year:d,month:m,day:d,hour:d,minute:d,timeZoneName:h},$={year:d,month:m,day:d,hour:d,minute:d,second:d,timeZoneName:h},F={year:d,month:m,day:d,weekday:m,hour:d,minute:d,timeZoneName:m},q={year:d,month:m,day:d,weekday:m,hour:d,minute:d,second:d,timeZoneName:m};class W{get type(){throw new u}get name(){throw new u}get ianaName(){return this.name}get isUniversal(){throw new u}offsetName(e,t){throw new u}formatOffset(e,t){throw new u}offset(e){throw new u}equals(e){throw new u}get isValid(){throw new u}}let A=null;class V extends W{static get instance(){return null===A&&(A=new V),A}get type(){return"system"}get name(){return(new Intl.DateTimeFormat).resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return nt(e,t,n)}formatOffset(e,t){return it(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return"system"===e.type}get isValid(){return!0}}let P={};const _={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};let H={};class z extends W{static create(e){return H[e]||(H[e]=new z(e)),H[e]}static resetCache(){H={},P={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch(e){return!1}}constructor(e){super(),this.zoneName=e,this.valid=z.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return nt(e,t,n,this.name)}formatOffset(e,t){return it(this.offset(e),t)}offset(e){const t=new Date(e);if(isNaN(t))return NaN;const n=(s=this.name,P[s]||(P[s]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:s,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),P[s]);var s;let[r,a,i,o,l,c,u]=n.formatToParts?function(e,t){const n=e.formatToParts(t),s=[];for(let e=0;e=0?h:1e3+h,(Qe({year:r,month:a,day:i,hour:24===l?0:l,minute:c,second:u,millisecond:0})-d)/6e4}equals(e){return"iana"===e.type&&e.name===this.name}get isValid(){return this.valid}}let Z={};let R={};function U(e,t={}){const n=JSON.stringify([e,t]);let s=R[n];return s||(s=new Intl.DateTimeFormat(e,t),R[n]=s),s}let j={};let B={};let J=null;let G={};function Y(e,t,n,s){const r=e.listingMode();return"error"===r?null:"en"===r?n(t):s(t)}class K{constructor(e,t,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;const{padTo:s,floor:r,...a}=n;if(!t||Object.keys(a).length>0){const t={useGrouping:!1,...n};n.padTo>0&&(t.minimumIntegerDigits=n.padTo),this.inf=function(e,t={}){const n=JSON.stringify([e,t]);let s=j[n];return s||(s=new Intl.NumberFormat(e,t),j[n]=s),s}(e,t)}}format(e){if(this.inf){const t=this.floor?Math.floor(e):e;return this.inf.format(t)}return Re(this.floor?Math.floor(e):Je(e,3),this.padTo)}}class Q{constructor(e,t,n){let s;if(this.opts=n,this.originalZone=void 0,this.opts.timeZone)this.dt=e;else if("fixed"===e.zone.type){const t=e.offset/60*-1,n=t>=0?`Etc/GMT+${t}`:`Etc/GMT${t}`;0!==e.offset&&z.create(n).valid?(s=n,this.dt=e):(s="UTC",this.dt=0===e.offset?e:e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone)}else"system"===e.zone.type?this.dt=e:"iana"===e.zone.type?(this.dt=e,s=e.zone.name):(s="UTC",this.dt=e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone);const r={...this.opts};r.timeZone=r.timeZone||s,this.dtf=U(t,r)}format(){return this.originalZone?this.formatToParts().map((({value:e})=>e)).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){const e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map((e=>{if("timeZoneName"===e.type){const t=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...e,value:t}}return e})):e}resolvedOptions(){return this.dtf.resolvedOptions()}}class X{constructor(e,t,n){this.opts={style:"long",...n},!t&&Ve()&&(this.rtf=function(e,t={}){const{base:n,...s}=t,r=JSON.stringify([e,s]);let a=B[r];return a||(a=new Intl.RelativeTimeFormat(e,t),B[r]=a),a}(e,n))}format(e,t){return this.rtf?this.rtf.format(e,t):function(e,t,n="always",s=!1){const r={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},a=-1===["hours","minutes","seconds"].indexOf(e);if("auto"===n&&a){const n="days"===e;switch(t){case 1:return n?"tomorrow":`next ${r[e][0]}`;case-1:return n?"yesterday":`last ${r[e][0]}`;case 0:return n?"today":`this ${r[e][0]}`}}const i=Object.is(t,-0)||t<0,o=Math.abs(t),l=1===o,c=r[e],u=s?l?c[1]:c[2]||c[1]:l?r[e][0]:e;return i?`${o} ${u} ago`:`in ${o} ${u}`}(t,e,this.opts.numeric,"long"!==this.opts.style)}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}}const ee={firstDay:1,minimalDays:4,weekend:[6,7]};class te{static fromOpts(e){return te.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,t,n,s,r=!1){const a=e||ve.defaultLocale,i=a||(r?"en-US":J||(J=(new Intl.DateTimeFormat).resolvedOptions().locale,J)),o=t||ve.defaultNumberingSystem,l=n||ve.defaultOutputCalendar,c=ze(s)||ve.defaultWeekSettings;return new te(i,o,l,c,a)}static resetCache(){J=null,R={},j={},B={}}static fromObject({locale:e,numberingSystem:t,outputCalendar:n,weekSettings:s}={}){return te.create(e,t,n,s)}constructor(e,t,n,s,r){const[a,i,o]=function(e){const t=e.indexOf("-x-");-1!==t&&(e=e.substring(0,t));const n=e.indexOf("-u-");if(-1===n)return[e];{let t,s;try{t=U(e).resolvedOptions(),s=e}catch(r){const a=e.substring(0,n);t=U(a).resolvedOptions(),s=a}const{numberingSystem:r,calendar:a}=t;return[s,r,a]}}(e);this.locale=a,this.numberingSystem=t||i||null,this.outputCalendar=n||o||null,this.weekSettings=s,this.intl=function(e,t,n){return n||t?(e.includes("-u-")||(e+="-u"),n&&(e+=`-ca-${n}`),t&&(e+=`-nu-${t}`),e):e}(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=r,this.fastNumbersCached=null}get fastNumbers(){var e;return null==this.fastNumbersCached&&(this.fastNumbersCached=(!(e=this).numberingSystem||"latn"===e.numberingSystem)&&("latn"===e.numberingSystem||!e.locale||e.locale.startsWith("en")||"latn"===new Intl.DateTimeFormat(e.intl).resolvedOptions().numberingSystem)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),t=!(null!==this.numberingSystem&&"latn"!==this.numberingSystem||null!==this.outputCalendar&&"gregory"!==this.outputCalendar);return e&&t?"en":"intl"}clone(e){return e&&0!==Object.getOwnPropertyNames(e).length?te.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,ze(e.weekSettings)||this.weekSettings,e.defaultToEN||!1):this}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,t=!1){return Y(this,e,dt,(()=>{const n=t?{month:e,day:"numeric"}:{month:e},s=t?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=function(e){const t=[];for(let n=1;n<=12;n++){const s=gs.utc(2009,n,1);t.push(e(s))}return t}((e=>this.extract(e,n,"month")))),this.monthsCache[s][e]}))}weekdays(e,t=!1){return Y(this,e,gt,(()=>{const n=t?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},s=t?"format":"standalone";return this.weekdaysCache[s][e]||(this.weekdaysCache[s][e]=function(e){const t=[];for(let n=1;n<=7;n++){const s=gs.utc(2016,11,13+n);t.push(e(s))}return t}((e=>this.extract(e,n,"weekday")))),this.weekdaysCache[s][e]}))}meridiems(){return Y(this,void 0,(()=>yt),(()=>{if(!this.meridiemCache){const e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[gs.utc(2016,11,13,9),gs.utc(2016,11,13,19)].map((t=>this.extract(t,e,"dayperiod")))}return this.meridiemCache}))}eras(e){return Y(this,e,St,(()=>{const t={era:e};return this.eraCache[e]||(this.eraCache[e]=[gs.utc(-40,1,1),gs.utc(2017,1,1)].map((e=>this.extract(e,t,"era")))),this.eraCache[e]}))}extract(e,t,n){const s=this.dtFormatter(e,t).formatToParts().find((e=>e.type.toLowerCase()===n));return s?s.value:null}numberFormatter(e={}){return new K(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new Q(e,this.intl,t)}relFormatter(e={}){return new X(this.intl,this.isEnglish(),e)}listFormatter(e={}){return function(e,t={}){const n=JSON.stringify([e,t]);let s=Z[n];return s||(s=new Intl.ListFormat(e,t),Z[n]=s),s}(this.intl,e)}isEnglish(){return"en"===this.locale||"en-us"===this.locale.toLowerCase()||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:Pe()?function(e){let t=G[e];if(!t){const n=new Intl.Locale(e);t="getWeekInfo"in n?n.getWeekInfo():n.weekInfo,G[e]=t}return t}(this.locale):ee}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}}let ne=null;class se extends W{static get utcInstance(){return null===ne&&(ne=new se(0)),ne}static instance(e){return 0===e?se.utcInstance:new se(e)}static parseSpecifier(e){if(e){const t=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(t)return new se(st(t[1],t[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return 0===this.fixed?"UTC":`UTC${it(this.fixed,"narrow")}`}get ianaName(){return 0===this.fixed?"Etc/UTC":`Etc/GMT${it(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,t){return it(this.fixed,t)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return"fixed"===e.type&&e.fixed===this.fixed}get isValid(){return!0}}class re extends W{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function ae(e,t){if(qe(e)||null===e)return t;if(e instanceof W)return e;if("string"==typeof e){const n=e.toLowerCase();return"default"===n?t:"local"===n||"system"===n?V.instance:"utc"===n||"gmt"===n?se.utcInstance:se.parseSpecifier(n)||z.create(e)}return We(e)?se.instance(e):"object"==typeof e&&"offset"in e&&"function"==typeof e.offset?e:new re(e)}const ie={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},oe={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},le=ie.hanidec.replace(/[\[|\]]/g,"").split("");let ce={};function ue({numberingSystem:e},t=""){const n=e||"latn";return ce[n]||(ce[n]={}),ce[n][t]||(ce[n][t]=new RegExp(`${ie[n]}${t}`)),ce[n][t]}let de,he=()=>Date.now(),me="system",fe=null,ge=null,ye=null,pe=60,we=null;class ve{static get now(){return he}static set now(e){he=e}static set defaultZone(e){me=e}static get defaultZone(){return ae(me,V.instance)}static get defaultLocale(){return fe}static set defaultLocale(e){fe=e}static get defaultNumberingSystem(){return ge}static set defaultNumberingSystem(e){ge=e}static get defaultOutputCalendar(){return ye}static set defaultOutputCalendar(e){ye=e}static get defaultWeekSettings(){return we}static set defaultWeekSettings(e){we=ze(e)}static get twoDigitCutoffYear(){return pe}static set twoDigitCutoffYear(e){pe=e%100}static get throwOnInvalid(){return de}static set throwOnInvalid(e){de=e}static resetCaches(){te.resetCache(),z.resetCache(),gs.resetCache(),ce={}}}class Se{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}const be=[0,31,59,90,120,151,181,212,243,273,304,334],ke=[0,31,60,91,121,152,182,213,244,274,305,335];function Ce(e,t){return new Se("unit out of range",`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function Te(e,t,n){const s=new Date(Date.UTC(e,t-1,n));e<100&&e>=0&&s.setUTCFullYear(s.getUTCFullYear()-1900);const r=s.getUTCDay();return 0===r?7:r}function xe(e,t,n){return n+(Ge(e)?ke:be)[t-1]}function Le(e,t){const n=Ge(e)?ke:be,s=n.findIndex((e=>eet(s,t,n)?(l=s+1,c=1):l=s,{weekYear:l,weekNumber:c,weekday:o,...ot(e)}}function Ie(e,t=4,n=1){const{weekYear:s,weekNumber:r,weekday:a}=e,i=De(Te(s,1,t),n),o=Ye(s);let l,c=7*r+a-i-7+t;c<1?(l=s-1,c+=Ye(l)):c>o?(l=s+1,c-=Ye(s)):l=s;const{month:u,day:d}=Le(l,c);return{year:l,month:u,day:d,...ot(e)}}function Ne(e){const{year:t,month:n,day:s}=e;return{year:t,ordinal:xe(t,n,s),...ot(e)}}function Oe(e){const{year:t,ordinal:n}=e,{month:s,day:r}=Le(t,n);return{year:t,month:s,day:r,...ot(e)}}function Ee(e,t){if(!qe(e.localWeekday)||!qe(e.localWeekNumber)||!qe(e.localWeekYear)){if(!qe(e.weekday)||!qe(e.weekNumber)||!qe(e.weekYear))throw new o("Cannot mix locale-based week fields with ISO-based week fields");return qe(e.localWeekday)||(e.weekday=e.localWeekday),qe(e.localWeekNumber)||(e.weekNumber=e.localWeekNumber),qe(e.localWeekYear)||(e.weekYear=e.localWeekYear),delete e.localWeekday,delete e.localWeekNumber,delete e.localWeekYear,{minDaysInFirstWeek:t.getMinDaysInFirstWeek(),startOfWeek:t.getStartOfWeek()}}return{minDaysInFirstWeek:4,startOfWeek:1}}function $e(e){const t=Ae(e.year),n=Ze(e.month,1,12),s=Ze(e.day,1,Ke(e.year,e.month));return t?n?!s&&Ce("day",e.day):Ce("month",e.month):Ce("year",e.year)}function Fe(e){const{hour:t,minute:n,second:s,millisecond:r}=e,a=Ze(t,0,23)||24===t&&0===n&&0===s&&0===r,i=Ze(n,0,59),o=Ze(s,0,59),l=Ze(r,0,999);return a?i?o?!l&&Ce("millisecond",r):Ce("second",s):Ce("minute",n):Ce("hour",t)}function qe(e){return void 0===e}function We(e){return"number"==typeof e}function Ae(e){return"number"==typeof e&&e%1==0}function Ve(){try{return"undefined"!=typeof Intl&&!!Intl.RelativeTimeFormat}catch(e){return!1}}function Pe(){try{return"undefined"!=typeof Intl&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch(e){return!1}}function _e(e,t,n){if(0!==e.length)return e.reduce(((e,s)=>{const r=[t(s),s];return e&&n(e[0],r[0])===e[0]?e:r}),null)[1]}function He(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function ze(e){if(null==e)return null;if("object"!=typeof e)throw new c("Week settings must be an object");if(!Ze(e.firstDay,1,7)||!Ze(e.minimalDays,1,7)||!Array.isArray(e.weekend)||e.weekend.some((e=>!Ze(e,1,7))))throw new c("Invalid week settings");return{firstDay:e.firstDay,minimalDays:e.minimalDays,weekend:Array.from(e.weekend)}}function Ze(e,t,n){return Ae(e)&&e>=t&&e<=n}function Re(e,t=2){let n;return n=e<0?"-"+(""+-e).padStart(t,"0"):(""+e).padStart(t,"0"),n}function Ue(e){return qe(e)||null===e||""===e?void 0:parseInt(e,10)}function je(e){return qe(e)||null===e||""===e?void 0:parseFloat(e)}function Be(e){if(!qe(e)&&null!==e&&""!==e){const t=1e3*parseFloat("0."+e);return Math.floor(t)}}function Je(e,t,n=!1){const s=10**t;return(n?Math.trunc:Math.round)(e*s)/s}function Ge(e){return e%4==0&&(e%100!=0||e%400==0)}function Ye(e){return Ge(e)?366:365}function Ke(e,t){const n=function(e,t){return e-t*Math.floor(e/t)}(t-1,12)+1;return 2===n?Ge(e+(t-n)/12)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function Qe(e){let t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&e.year>=0&&(t=new Date(t),t.setUTCFullYear(e.year,e.month-1,e.day)),+t}function Xe(e,t,n){return-De(Te(e,1,t),n)+t-1}function et(e,t=4,n=1){const s=Xe(e,t,n),r=Xe(e+1,t,n);return(Ye(e)-s+r)/7}function tt(e){return e>99?e:e>ve.twoDigitCutoffYear?1900+e:2e3+e}function nt(e,t,n,s=null){const r=new Date(e),a={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};s&&(a.timeZone=s);const i={timeZoneName:t,...a},o=new Intl.DateTimeFormat(n,i).formatToParts(r).find((e=>"timezonename"===e.type.toLowerCase()));return o?o.value:null}function st(e,t){let n=parseInt(e,10);Number.isNaN(n)&&(n=0);const s=parseInt(t,10)||0;return 60*n+(n<0||Object.is(n,-0)?-s:s)}function rt(e){const t=Number(e);if("boolean"==typeof e||""===e||Number.isNaN(t))throw new c(`Invalid unit value ${e}`);return t}function at(e,t){const n={};for(const s in e)if(He(e,s)){const r=e[s];if(null==r)continue;n[t(s)]=rt(r)}return n}function it(e,t){const n=Math.trunc(Math.abs(e/60)),s=Math.trunc(Math.abs(e%60)),r=e>=0?"+":"-";switch(t){case"short":return`${r}${Re(n,2)}:${Re(s,2)}`;case"narrow":return`${r}${n}${s>0?`:${s}`:""}`;case"techie":return`${r}${Re(n,2)}${Re(s,2)}`;default:throw new RangeError(`Value format ${t} is out of range for property format`)}}function ot(e){return function(e,t){return t.reduce(((t,n)=>(t[n]=e[n],t)),{})}(e,["hour","minute","second","millisecond"])}const lt=["January","February","March","April","May","June","July","August","September","October","November","December"],ct=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],ut=["J","F","M","A","M","J","J","A","S","O","N","D"];function dt(e){switch(e){case"narrow":return[...ut];case"short":return[...ct];case"long":return[...lt];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const ht=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],mt=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],ft=["M","T","W","T","F","S","S"];function gt(e){switch(e){case"narrow":return[...ft];case"short":return[...mt];case"long":return[...ht];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const yt=["AM","PM"],pt=["Before Christ","Anno Domini"],wt=["BC","AD"],vt=["B","A"];function St(e){switch(e){case"narrow":return[...vt];case"short":return[...wt];case"long":return[...pt];default:return null}}function bt(e,t){let n="";for(const s of e)s.literal?n+=s.val:n+=t(s.val);return n}const kt={D:f,DD:g,DDD:p,DDDD:w,t:v,tt:S,ttt:b,tttt:k,T:C,TT:T,TTT:x,TTTT:L,f:D,ff:I,fff:E,ffff:F,F:M,FF:N,FFF:$,FFFF:q};class Ct{static create(e,t={}){return new Ct(e,t)}static parseFormat(e){let t=null,n="",s=!1;const r=[];for(let a=0;a0&&r.push({literal:s||/^\s+$/.test(n),val:n}),t=null,n="",s=!s):s||i===t?n+=i:(n.length>0&&r.push({literal:/^\s+$/.test(n),val:n}),n=i,t=i)}return n.length>0&&r.push({literal:s||/^\s+$/.test(n),val:n}),r}static macroTokenToFormatOpts(e){return kt[e]}constructor(e,t){this.opts=t,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,t){null===this.systemLoc&&(this.systemLoc=this.loc.redefaultToSystem());return this.systemLoc.dtFormatter(e,{...this.opts,...t}).format()}dtFormatter(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t})}formatDateTime(e,t){return this.dtFormatter(e,t).format()}formatDateTimeParts(e,t){return this.dtFormatter(e,t).formatToParts()}formatInterval(e,t){return this.dtFormatter(e.start,t).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,t){return this.dtFormatter(e,t).resolvedOptions()}num(e,t=0){if(this.opts.forceSimple)return Re(e,t);const n={...this.opts};return t>0&&(n.padTo=t),this.loc.numberFormatter(n).format(e)}formatDateTimeFromString(e,t){const n="en"===this.loc.listingMode(),s=this.loc.outputCalendar&&"gregory"!==this.loc.outputCalendar,r=(t,n)=>this.loc.extract(e,t,n),a=t=>e.isOffsetFixed&&0===e.offset&&t.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,t.format):"",i=()=>n?function(e){return yt[e.hour<12?0:1]}(e):r({hour:"numeric",hourCycle:"h12"},"dayperiod"),o=(t,s)=>n?function(e,t){return dt(t)[e.month-1]}(e,t):r(s?{month:t}:{month:t,day:"numeric"},"month"),l=(t,s)=>n?function(e,t){return gt(t)[e.weekday-1]}(e,t):r(s?{weekday:t}:{weekday:t,month:"long",day:"numeric"},"weekday"),c=t=>{const n=Ct.macroTokenToFormatOpts(t);return n?this.formatWithSystemDefault(e,n):t},u=t=>n?function(e,t){return St(t)[e.year<0?0:1]}(e,t):r({era:t},"era");return bt(Ct.parseFormat(t),(t=>{switch(t){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12==0?12:e.hour%12);case"hh":return this.num(e.hour%12==0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return a({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return a({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return a({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return i();case"d":return s?r({day:"numeric"},"day"):this.num(e.day);case"dd":return s?r({day:"2-digit"},"day"):this.num(e.day,2);case"c":case"E":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return s?r({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return s?r({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return o("short",!0);case"LLLL":return o("long",!0);case"LLLLL":return o("narrow",!0);case"M":return s?r({month:"numeric"},"month"):this.num(e.month);case"MM":return s?r({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return o("short",!1);case"MMMM":return o("long",!1);case"MMMMM":return o("narrow",!1);case"y":return s?r({year:"numeric"},"year"):this.num(e.year);case"yy":return s?r({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return s?r({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return s?r({year:"numeric"},"year"):this.num(e.year,6);case"G":return u("short");case"GG":return u("long");case"GGGGG":return u("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"n":return this.num(e.localWeekNumber);case"nn":return this.num(e.localWeekNumber,2);case"ii":return this.num(e.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(e.localWeekYear,4);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return c(t)}}))}formatDurationFromString(e,t){const n=e=>{switch(e[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},s=Ct.parseFormat(t),r=s.reduce(((e,{literal:t,val:n})=>t?e:e.concat(n)),[]);return bt(s,(e=>t=>{const s=n(t);return s?this.num(e.get(s),t.length):t})(e.shiftTo(...r.map(n).filter((e=>e)))))}}const Tt=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function xt(...e){const t=e.reduce(((e,t)=>e+t.source),"");return RegExp(`^${t}$`)}function Lt(...e){return t=>e.reduce((([e,n,s],r)=>{const[a,i,o]=r(t,s);return[{...e,...a},i||n,o]}),[{},null,1]).slice(0,2)}function Dt(e,...t){if(null==e)return[null,null];for(const[n,s]of t){const t=n.exec(e);if(t)return s(t)}return[null,null]}function Mt(...e){return(t,n)=>{const s={};let r;for(r=0;rvoid 0!==e&&(t||e&&u)?-e:e;return[{years:h(je(n)),months:h(je(s)),weeks:h(je(r)),days:h(je(a)),hours:h(je(i)),minutes:h(je(o)),seconds:h(je(l),"-0"===l),milliseconds:h(Be(c),d)}]}const Rt={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Ut(e,t,n,s,r,a,i){const o={year:2===t.length?tt(Ue(t)):Ue(t),month:ct.indexOf(n)+1,day:Ue(s),hour:Ue(r),minute:Ue(a)};return i&&(o.second=Ue(i)),e&&(o.weekday=e.length>3?ht.indexOf(e)+1:mt.indexOf(e)+1),o}const jt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function Bt(e){const[,t,n,s,r,a,i,o,l,c,u,d]=e,h=Ut(t,r,s,n,a,i,o);let m;return m=l?Rt[l]:c?0:st(u,d),[h,new se(m)]}const Jt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,Gt=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,Yt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function Kt(e){const[,t,n,s,r,a,i,o]=e;return[Ut(t,r,s,n,a,i,o),se.utcInstance]}function Qt(e){const[,t,n,s,r,a,i,o]=e;return[Ut(t,o,n,s,r,a,i),se.utcInstance]}const Xt=xt(/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,Et),en=xt(/(\d{4})-?W(\d\d)(?:-?(\d))?/,Et),tn=xt(/(\d{4})-?(\d{3})/,Et),nn=xt(Ot),sn=Lt((function(e,t){return[{year:At(e,t),month:At(e,t+1,1),day:At(e,t+2,1)},null,t+3]}),Vt,Pt,_t),rn=Lt($t,Vt,Pt,_t),an=Lt(Ft,Vt,Pt,_t),on=Lt(Vt,Pt,_t);const ln=Lt(Vt);const cn=xt(/(\d{4})-(\d\d)-(\d\d)/,Wt),un=xt(qt),dn=Lt(Vt,Pt,_t);const hn="Invalid Duration",mn={weeks:{days:7,hours:168,minutes:10080,seconds:604800,milliseconds:6048e5},days:{hours:24,minutes:1440,seconds:86400,milliseconds:864e5},hours:{minutes:60,seconds:3600,milliseconds:36e5},minutes:{seconds:60,milliseconds:6e4},seconds:{milliseconds:1e3}},fn={years:{quarters:4,months:12,weeks:52,days:365,hours:8760,minutes:525600,seconds:31536e3,milliseconds:31536e6},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:131040,seconds:7862400,milliseconds:78624e5},months:{weeks:4,days:30,hours:720,minutes:43200,seconds:2592e3,milliseconds:2592e6},...mn},gn=365.2425,yn=30.436875,pn={years:{quarters:4,months:12,weeks:52.1775,days:gn,hours:8765.82,minutes:525949.2,seconds:525949.2*60,milliseconds:525949.2*60*1e3},quarters:{months:3,weeks:13.044375,days:91.310625,hours:2191.455,minutes:131487.3,seconds:525949.2*60/4,milliseconds:7889237999.999999},months:{weeks:4.3481250000000005,days:yn,hours:730.485,minutes:43829.1,seconds:2629746,milliseconds:2629746e3},...mn},wn=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],vn=wn.slice(0).reverse();function Sn(e,t,n=!1){const s={values:n?t.values:{...e.values,...t.values||{}},loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy,matrix:t.matrix||e.matrix};return new Cn(s)}function bn(e,t){let n=t.milliseconds??0;for(const s of vn.slice(1))t[s]&&(n+=t[s]*e[s].milliseconds);return n}function kn(e,t){const n=bn(e,t)<0?-1:1;wn.reduceRight(((s,r)=>{if(qe(t[r]))return s;if(s){const a=t[s]*n,i=e[r][s],o=Math.floor(a/i);t[r]+=o*n,t[s]-=o*i*n}return r}),null),wn.reduce(((n,s)=>{if(qe(t[s]))return n;if(n){const r=t[n]%1;t[n]-=r,t[s]+=r*e[n][s]}return s}),null)}class Cn{constructor(e){const t="longterm"===e.conversionAccuracy||!1;let n=t?pn:fn;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||te.create(),this.conversionAccuracy=t?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(e,t){return Cn.fromObject({milliseconds:e},t)}static fromObject(e,t={}){if(null==e||"object"!=typeof e)throw new c("Duration.fromObject: argument expected to be an object, got "+(null===e?"null":typeof e));return new Cn({values:at(e,Cn.normalizeUnit),loc:te.fromObject(t),conversionAccuracy:t.conversionAccuracy,matrix:t.matrix})}static fromDurationLike(e){if(We(e))return Cn.fromMillis(e);if(Cn.isDuration(e))return e;if("object"==typeof e)return Cn.fromObject(e);throw new c(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,t){const[n]=function(e){return Dt(e,[zt,Zt])}(e);return n?Cn.fromObject(n,t):Cn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,t){const[n]=function(e){return Dt(e,[Ht,ln])}(e);return n?Cn.fromObject(n,t):Cn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the Duration is invalid");const n=e instanceof Se?e:new Se(e,t);if(ve.throwOnInvalid)throw new i(n);return new Cn({invalid:n})}static normalizeUnit(e){const t={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e?e.toLowerCase():e];if(!t)throw new l(e);return t}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,t={}){const n={...t,floor:!1!==t.round&&!1!==t.floor};return this.isValid?Ct.create(this.loc,n).formatDurationFromString(this,e):hn}toHuman(e={}){if(!this.isValid)return hn;const t=wn.map((t=>{const n=this.values[t];return qe(n)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:t.slice(0,-1)}).format(n)})).filter((e=>e));return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(t)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return 0!==this.years&&(e+=this.years+"Y"),0===this.months&&0===this.quarters||(e+=this.months+3*this.quarters+"M"),0!==this.weeks&&(e+=this.weeks+"W"),0!==this.days&&(e+=this.days+"D"),0===this.hours&&0===this.minutes&&0===this.seconds&&0===this.milliseconds||(e+="T"),0!==this.hours&&(e+=this.hours+"H"),0!==this.minutes&&(e+=this.minutes+"M"),0===this.seconds&&0===this.milliseconds||(e+=Je(this.seconds+this.milliseconds/1e3,3)+"S"),"P"===e&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const t=this.toMillis();if(t<0||t>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1};return gs.fromMillis(t,{zone:"UTC"}).toISOTime(e)}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?bn(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const t=Cn.fromDurationLike(e),n={};for(const e of wn)(He(t.values,e)||He(this.values,e))&&(n[e]=t.get(e)+this.get(e));return Sn(this,{values:n},!0)}minus(e){if(!this.isValid)return this;const t=Cn.fromDurationLike(e);return this.plus(t.negate())}mapUnits(e){if(!this.isValid)return this;const t={};for(const n of Object.keys(this.values))t[n]=rt(e(this.values[n],n));return Sn(this,{values:t},!0)}get(e){return this[Cn.normalizeUnit(e)]}set(e){if(!this.isValid)return this;return Sn(this,{values:{...this.values,...at(e,Cn.normalizeUnit)}})}reconfigure({locale:e,numberingSystem:t,conversionAccuracy:n,matrix:s}={}){return Sn(this,{loc:this.loc.clone({locale:e,numberingSystem:t}),matrix:s,conversionAccuracy:n})}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return kn(this.matrix,e),Sn(this,{values:e},!0)}rescale(){if(!this.isValid)return this;return Sn(this,{values:function(e){const t={};for(const[n,s]of Object.entries(e))0!==s&&(t[n]=s);return t}(this.normalize().shiftToAll().toObject())},!0)}shiftTo(...e){if(!this.isValid)return this;if(0===e.length)return this;e=e.map((e=>Cn.normalizeUnit(e)));const t={},n={},s=this.toObject();let r;for(const a of wn)if(e.indexOf(a)>=0){r=a;let e=0;for(const t in n)e+=this.matrix[t][a]*n[t],n[t]=0;We(s[a])&&(e+=s[a]);const i=Math.trunc(e);t[a]=i,n[a]=(1e3*e-1e3*i)/1e3}else We(s[a])&&(n[a]=s[a]);for(const e in n)0!==n[e]&&(t[r]+=e===r?n[e]:n[e]/this.matrix[r][e]);return kn(this.matrix,t),Sn(this,{values:t},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;const e={};for(const t of Object.keys(this.values))e[t]=0===this.values[t]?0:-this.values[t];return Sn(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return null===this.invalid}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid)return!1;if(!this.loc.equals(e.loc))return!1;for(const s of wn)if(t=this.values[s],n=e.values[s],!(void 0===t||0===t?void 0===n||0===n:t===n))return!1;var t,n;return!0}}const Tn="Invalid Interval";class xn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the Interval is invalid");const n=e instanceof Se?e:new Se(e,t);if(ve.throwOnInvalid)throw new a(n);return new xn({invalid:n})}static fromDateTimes(e,t){const n=ys(e),s=ys(t),r=function(e,t){return e&&e.isValid?t&&t.isValid?te}isBefore(e){return!!this.isValid&&this.e<=e}contains(e){return!!this.isValid&&(this.s<=e&&this.e>e)}set({start:e,end:t}={}){return this.isValid?xn.fromDateTimes(e||this.s,t||this.e):this}splitAt(...e){if(!this.isValid)return[];const t=e.map(ys).filter((e=>this.contains(e))).sort(((e,t)=>e.toMillis()-t.toMillis())),n=[];let{s}=this,r=0;for(;s+this.e?this.e:e;n.push(xn.fromDateTimes(s,a)),s=a,r+=1}return n}splitBy(e){const t=Cn.fromDurationLike(e);if(!this.isValid||!t.isValid||0===t.as("milliseconds"))return[];let n,{s}=this,r=1;const a=[];for(;se*r)));n=+e>+this.e?this.e:e,a.push(xn.fromDateTimes(s,n)),s=n,r+=1}return a}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s=e.e)}equals(e){return!(!this.isValid||!e.isValid)&&(this.s.equals(e.s)&&this.e.equals(e.e))}intersection(e){if(!this.isValid)return this;const t=this.s>e.s?this.s:e.s,n=this.e=n?null:xn.fromDateTimes(t,n)}union(e){if(!this.isValid)return this;const t=this.se.e?this.e:e.e;return xn.fromDateTimes(t,n)}static merge(e){const[t,n]=e.sort(((e,t)=>e.s-t.s)).reduce((([e,t],n)=>t?t.overlaps(n)||t.abutsStart(n)?[e,t.union(n)]:[e.concat([t]),n]:[e,n]),[[],null]);return n&&t.push(n),t}static xor(e){let t=null,n=0;const s=[],r=e.map((e=>[{time:e.s,type:"s"},{time:e.e,type:"e"}])),a=Array.prototype.concat(...r).sort(((e,t)=>e.time-t.time));for(const e of a)n+="s"===e.type?1:-1,1===n?t=e.time:(t&&+t!=+e.time&&s.push(xn.fromDateTimes(t,e.time)),t=null);return xn.merge(s)}difference(...e){return xn.xor([this].concat(e)).map((e=>this.intersection(e))).filter((e=>e&&!e.isEmpty()))}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:Tn}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=f,t={}){return this.isValid?Ct.create(this.s.loc.clone(t),e).formatInterval(this):Tn}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Tn}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Tn}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Tn}toFormat(e,{separator:t=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:Tn}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):Cn.invalid(this.invalidReason)}mapEndpoints(e){return xn.fromDateTimes(e(this.s),e(this.e))}}class Ln{static hasDST(e=ve.defaultZone){const t=gs.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return z.isValidZone(e)}static normalizeZone(e){return ae(e,ve.defaultZone)}static getStartOfWeek({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getWeekendDays().slice()}static months(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null,outputCalendar:r="gregory"}={}){return(s||te.create(t,n,r)).months(e)}static monthsFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null,outputCalendar:r="gregory"}={}){return(s||te.create(t,n,r)).months(e,!0)}static weekdays(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null}={}){return(s||te.create(t,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null}={}){return(s||te.create(t,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return te.create(e).meridiems()}static eras(e="short",{locale:t=null}={}){return te.create(t,null,"gregory").eras(e)}static features(){return{relative:Ve(),localeWeek:Pe()}}}function Dn(e,t){const n=e=>e.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),s=n(t)-n(e);return Math.floor(Cn.fromMillis(s).as("days"))}function Mn(e,t,n,s){let[r,a,i,o]=function(e,t,n){const s=[["years",(e,t)=>t.year-e.year],["quarters",(e,t)=>t.quarter-e.quarter+4*(t.year-e.year)],["months",(e,t)=>t.month-e.month+12*(t.year-e.year)],["weeks",(e,t)=>{const n=Dn(e,t);return(n-n%7)/7}],["days",Dn]],r={},a=e;let i,o;for(const[l,c]of s)n.indexOf(l)>=0&&(i=l,r[l]=c(e,t),o=a.plus(r),o>t?(r[l]--,(e=a.plus(r))>t&&(o=e,r[l]--,e=a.plus(r))):e=o);return[e,r,o,i]}(e,t,n);const l=t-r,c=n.filter((e=>["hours","minutes","seconds","milliseconds"].indexOf(e)>=0));0===c.length&&(i0?Cn.fromMillis(l,s).shiftTo(...c).plus(u):u}function In(e,t=e=>e){return{regex:e,deser:([e])=>t(function(e){let t=parseInt(e,10);if(isNaN(t)){t="";for(let n=0;n=n&&s<=r&&(t+=s-n)}}return parseInt(t,10)}return t}(e))}}const Nn=`[ ${String.fromCharCode(160)}]`,On=new RegExp(Nn,"g");function En(e){return e.replace(/\./g,"\\.?").replace(On,Nn)}function $n(e){return e.replace(/\./g,"").replace(On," ").toLowerCase()}function Fn(e,t){return null===e?null:{regex:RegExp(e.map(En).join("|")),deser:([n])=>e.findIndex((e=>$n(n)===$n(e)))+t}}function qn(e,t){return{regex:e,deser:([,e,t])=>st(e,t),groups:t}}function Wn(e){return{regex:e,deser:([e])=>e}}const An={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};let Vn=null;function Pn(e,t){return Array.prototype.concat(...e.map((e=>function(e,t){if(e.literal)return e;const n=zn(Ct.macroTokenToFormatOpts(e.val),t);return null==n||n.includes(void 0)?e:n}(e,t))))}class _n{constructor(e,t){if(this.locale=e,this.format=t,this.tokens=Pn(Ct.parseFormat(t),e),this.units=this.tokens.map((t=>function(e,t){const n=ue(t),s=ue(t,"{2}"),r=ue(t,"{3}"),a=ue(t,"{4}"),i=ue(t,"{6}"),o=ue(t,"{1,2}"),l=ue(t,"{1,3}"),c=ue(t,"{1,6}"),u=ue(t,"{1,9}"),d=ue(t,"{2,4}"),h=ue(t,"{4,6}"),m=e=>{return{regex:RegExp((t=e.val,t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"))),deser:([e])=>e,literal:!0};var t},f=(f=>{if(e.literal)return m(f);switch(f.val){case"G":return Fn(t.eras("short"),0);case"GG":return Fn(t.eras("long"),0);case"y":return In(c);case"yy":case"kk":return In(d,tt);case"yyyy":case"kkkk":return In(a);case"yyyyy":return In(h);case"yyyyyy":return In(i);case"M":case"L":case"d":case"H":case"h":case"m":case"q":case"s":case"W":return In(o);case"MM":case"LL":case"dd":case"HH":case"hh":case"mm":case"qq":case"ss":case"WW":return In(s);case"MMM":return Fn(t.months("short",!0),1);case"MMMM":return Fn(t.months("long",!0),1);case"LLL":return Fn(t.months("short",!1),1);case"LLLL":return Fn(t.months("long",!1),1);case"o":case"S":return In(l);case"ooo":case"SSS":return In(r);case"u":return Wn(u);case"uu":return Wn(o);case"uuu":case"E":case"c":return In(n);case"a":return Fn(t.meridiems(),0);case"EEE":return Fn(t.weekdays("short",!1),1);case"EEEE":return Fn(t.weekdays("long",!1),1);case"ccc":return Fn(t.weekdays("short",!0),1);case"cccc":return Fn(t.weekdays("long",!0),1);case"Z":case"ZZ":return qn(new RegExp(`([+-]${o.source})(?::(${s.source}))?`),2);case"ZZZ":return qn(new RegExp(`([+-]${o.source})(${s.source})?`),2);case"z":return Wn(/[a-z_+-/]{1,256}?/i);case" ":return Wn(/[^\S\n\r]/);default:return m(f)}})(e)||{invalidReason:"missing Intl.DateTimeFormat.formatToParts support"};return f.token=e,f}(t,e))),this.disqualifyingUnit=this.units.find((e=>e.invalidReason)),!this.disqualifyingUnit){const[e,t]=[`^${(n=this.units).map((e=>e.regex)).reduce(((e,t)=>`${e}(${t.source})`),"")}$`,n];this.regex=RegExp(e,"i"),this.handlers=t}var n}explainFromTokens(e){if(this.isValid){const[t,n]=function(e,t,n){const s=e.match(t);if(s){const e={};let t=1;for(const r in n)if(He(n,r)){const a=n[r],i=a.groups?a.groups+1:1;!a.literal&&a.token&&(e[a.token.val[0]]=a.deser(s.slice(t,t+i))),t+=i}return[s,e]}return[s,{}]}(e,this.regex,this.handlers),[s,r,a]=n?function(e){let t,n=null;return qe(e.z)||(n=z.create(e.z)),qe(e.Z)||(n||(n=new se(e.Z)),t=e.Z),qe(e.q)||(e.M=3*(e.q-1)+1),qe(e.h)||(e.h<12&&1===e.a?e.h+=12:12===e.h&&0===e.a&&(e.h=0)),0===e.G&&e.y&&(e.y=-e.y),qe(e.u)||(e.S=Be(e.u)),[Object.keys(e).reduce(((t,n)=>{const s=(e=>{switch(e){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}})(n);return s&&(t[s]=e[n]),t}),{}),n,t]}(n):[null,null,void 0];if(He(n,"a")&&He(n,"H"))throw new o("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:this.tokens,regex:this.regex,rawMatches:t,matches:n,result:s,zone:r,specificOffset:a}}return{input:e,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}}function Hn(e,t,n){return new _n(e,n).explainFromTokens(t)}function zn(e,t){if(!e)return null;const n=Ct.create(t,e).dtFormatter((Vn||(Vn=gs.fromMillis(1555555555555)),Vn)),s=n.formatToParts(),r=n.resolvedOptions();return s.map((t=>function(e,t,n){const{type:s,value:r}=e;if("literal"===s){const e=/^\s+$/.test(r);return{literal:!e,val:e?" ":r}}const a=t[s];let i=s;"hour"===s&&(i=null!=t.hour12?t.hour12?"hour12":"hour24":null!=t.hourCycle?"h11"===t.hourCycle||"h12"===t.hourCycle?"hour12":"hour24":n.hour12?"hour12":"hour24");let o=An[i];if("object"==typeof o&&(o=o[a]),o)return{literal:!1,val:o}}(t,e,r)))}const Zn="Invalid DateTime",Rn=864e13;function Un(e){return new Se("unsupported zone",`the zone "${e.name}" is not supported`)}function jn(e){return null===e.weekData&&(e.weekData=Me(e.c)),e.weekData}function Bn(e){return null===e.localWeekData&&(e.localWeekData=Me(e.c,e.loc.getMinDaysInFirstWeek(),e.loc.getStartOfWeek())),e.localWeekData}function Jn(e,t){const n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new gs({...n,...t,old:n})}function Gn(e,t,n){let s=e-60*t*1e3;const r=n.offset(s);if(t===r)return[s,t];s-=60*(r-t)*1e3;const a=n.offset(s);return r===a?[s,r]:[e-60*Math.min(r,a)*1e3,Math.max(r,a)]}function Yn(e,t){const n=new Date(e+=60*t*1e3);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function Kn(e,t,n){return Gn(Qe(e),t,n)}function Qn(e,t){const n=e.o,s=e.c.year+Math.trunc(t.years),r=e.c.month+Math.trunc(t.months)+3*Math.trunc(t.quarters),a={...e.c,year:s,month:r,day:Math.min(e.c.day,Ke(s,r))+Math.trunc(t.days)+7*Math.trunc(t.weeks)},i=Cn.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as("milliseconds"),o=Qe(a);let[l,c]=Gn(o,n,e.zone);return 0!==i&&(l+=i,c=e.zone.offset(l)),{ts:l,o:c}}function Xn(e,t,n,s,r,a){const{setZone:i,zone:o}=n;if(e&&0!==Object.keys(e).length||t){const s=t||o,r=gs.fromObject(e,{...n,zone:s,specificOffset:a});return i?r:r.setZone(o)}return gs.invalid(new Se("unparsable",`the input "${r}" can't be parsed as ${s}`))}function es(e,t,n=!0){return e.isValid?Ct.create(te.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function ts(e,t){const n=e.c.year>9999||e.c.year<0;let s="";return n&&e.c.year>=0&&(s+="+"),s+=Re(e.c.year,n?6:4),t?(s+="-",s+=Re(e.c.month),s+="-",s+=Re(e.c.day)):(s+=Re(e.c.month),s+=Re(e.c.day)),s}function ns(e,t,n,s,r,a){let i=Re(e.c.hour);return t?(i+=":",i+=Re(e.c.minute),0===e.c.millisecond&&0===e.c.second&&n||(i+=":")):i+=Re(e.c.minute),0===e.c.millisecond&&0===e.c.second&&n||(i+=Re(e.c.second),0===e.c.millisecond&&s||(i+=".",i+=Re(e.c.millisecond,3))),r&&(e.isOffsetFixed&&0===e.offset&&!a?i+="Z":e.o<0?(i+="-",i+=Re(Math.trunc(-e.o/60)),i+=":",i+=Re(Math.trunc(-e.o%60))):(i+="+",i+=Re(Math.trunc(e.o/60)),i+=":",i+=Re(Math.trunc(e.o%60)))),a&&(i+="["+e.zone.ianaName+"]"),i}const ss={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},rs={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},as={ordinal:1,hour:0,minute:0,second:0,millisecond:0},is=["year","month","day","hour","minute","second","millisecond"],os=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],ls=["year","ordinal","hour","minute","second","millisecond"];function cs(e){switch(e.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return function(e){const t={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[e.toLowerCase()];if(!t)throw new l(e);return t}(e)}}function us(e,t){const n=ae(t.zone,ve.defaultZone);if(!n.isValid)return gs.invalid(Un(n));const s=te.fromObject(t);let r,a;if(qe(e.year))r=ve.now();else{for(const t of is)qe(e[t])&&(e[t]=ss[t]);const t=$e(e)||Fe(e);if(t)return gs.invalid(t);const s=function(e){return fs[e]||(void 0===ms&&(ms=ve.now()),fs[e]=e.offset(ms)),fs[e]}(n);[r,a]=Kn(e,s,n)}return new gs({ts:r,zone:n,loc:s,o:a})}function ds(e,t,n){const s=!!qe(n.round)||n.round,r=(e,r)=>{e=Je(e,s||n.calendary?0:2,!0);return t.loc.clone(n).relFormatter(n).format(e,r)},a=s=>n.calendary?t.hasSame(e,s)?0:t.startOf(s).diff(e.startOf(s),s).get(s):t.diff(e,s).get(s);if(n.unit)return r(a(n.unit),n.unit);for(const e of n.units){const t=a(e);if(Math.abs(t)>=1)return r(t,e)}return r(e>t?-0:0,n.units[n.units.length-1])}function hs(e){let t,n={};return e.length>0&&"object"==typeof e[e.length-1]?(n=e[e.length-1],t=Array.from(e).slice(0,e.length-1)):t=Array.from(e),[n,t]}let ms,fs={};class gs{constructor(e){const t=e.zone||ve.defaultZone;let n=e.invalid||(Number.isNaN(e.ts)?new Se("invalid input"):null)||(t.isValid?null:Un(t));this.ts=qe(e.ts)?ve.now():e.ts;let s=null,r=null;if(!n){if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t))[s,r]=[e.old.c,e.old.o];else{const a=We(e.o)&&!e.old?e.o:t.offset(this.ts);s=Yn(this.ts,a),n=Number.isNaN(s.year)?new Se("invalid input"):null,s=n?null:s,r=n?null:a}}this._zone=t,this.loc=e.loc||te.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=s,this.o=r,this.isLuxonDateTime=!0}static now(){return new gs({})}static local(){const[e,t]=hs(arguments),[n,s,r,a,i,o,l]=t;return us({year:n,month:s,day:r,hour:a,minute:i,second:o,millisecond:l},e)}static utc(){const[e,t]=hs(arguments),[n,s,r,a,i,o,l]=t;return e.zone=se.utcInstance,us({year:n,month:s,day:r,hour:a,minute:i,second:o,millisecond:l},e)}static fromJSDate(e,t={}){const n=(s=e,"[object Date]"===Object.prototype.toString.call(s)?e.valueOf():NaN);var s;if(Number.isNaN(n))return gs.invalid("invalid input");const r=ae(t.zone,ve.defaultZone);return r.isValid?new gs({ts:n,zone:r,loc:te.fromObject(t)}):gs.invalid(Un(r))}static fromMillis(e,t={}){if(We(e))return e<-Rn||e>Rn?gs.invalid("Timestamp out of range"):new gs({ts:e,zone:ae(t.zone,ve.defaultZone),loc:te.fromObject(t)});throw new c(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,t={}){if(We(e))return new gs({ts:1e3*e,zone:ae(t.zone,ve.defaultZone),loc:te.fromObject(t)});throw new c("fromSeconds requires a numerical input")}static fromObject(e,t={}){e=e||{};const n=ae(t.zone,ve.defaultZone);if(!n.isValid)return gs.invalid(Un(n));const s=te.fromObject(t),r=at(e,cs),{minDaysInFirstWeek:a,startOfWeek:i}=Ee(r,s),l=ve.now(),c=qe(t.specificOffset)?n.offset(l):t.specificOffset,u=!qe(r.ordinal),d=!qe(r.year),h=!qe(r.month)||!qe(r.day),m=d||h,f=r.weekYear||r.weekNumber;if((m||u)&&f)throw new o("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(h&&u)throw new o("Can't mix ordinal dates with month/day");const g=f||r.weekday&&!m;let y,p,w=Yn(l,c);g?(y=os,p=rs,w=Me(w,a,i)):u?(y=ls,p=as,w=Ne(w)):(y=is,p=ss);let v=!1;for(const e of y){qe(r[e])?r[e]=v?p[e]:w[e]:v=!0}const S=g?function(e,t=4,n=1){const s=Ae(e.weekYear),r=Ze(e.weekNumber,1,et(e.weekYear,t,n)),a=Ze(e.weekday,1,7);return s?r?!a&&Ce("weekday",e.weekday):Ce("week",e.weekNumber):Ce("weekYear",e.weekYear)}(r,a,i):u?function(e){const t=Ae(e.year),n=Ze(e.ordinal,1,Ye(e.year));return t?!n&&Ce("ordinal",e.ordinal):Ce("year",e.year)}(r):$e(r),b=S||Fe(r);if(b)return gs.invalid(b);const k=g?Ie(r,a,i):u?Oe(r):r,[C,T]=Kn(k,c,n),x=new gs({ts:C,zone:n,o:T,loc:s});return r.weekday&&m&&e.weekday!==x.weekday?gs.invalid("mismatched weekday",`you can't specify both a weekday of ${r.weekday} and a date of ${x.toISO()}`):x.isValid?x:gs.invalid(x.invalid)}static fromISO(e,t={}){const[n,s]=function(e){return Dt(e,[Xt,sn],[en,rn],[tn,an],[nn,on])}(e);return Xn(n,s,t,"ISO 8601",e)}static fromRFC2822(e,t={}){const[n,s]=function(e){return Dt(function(e){return e.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}(e),[jt,Bt])}(e);return Xn(n,s,t,"RFC 2822",e)}static fromHTTP(e,t={}){const[n,s]=function(e){return Dt(e,[Jt,Kt],[Gt,Kt],[Yt,Qt])}(e);return Xn(n,s,t,"HTTP",t)}static fromFormat(e,t,n={}){if(qe(e)||qe(t))throw new c("fromFormat requires an input string and a format");const{locale:s=null,numberingSystem:r=null}=n,a=te.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0}),[i,o,l,u]=function(e,t,n){const{result:s,zone:r,specificOffset:a,invalidReason:i}=Hn(e,t,n);return[s,r,a,i]}(a,e,t);return u?gs.invalid(u):Xn(i,o,n,`format ${t}`,e,l)}static fromString(e,t,n={}){return gs.fromFormat(e,t,n)}static fromSQL(e,t={}){const[n,s]=function(e){return Dt(e,[cn,sn],[un,dn])}(e);return Xn(n,s,t,"SQL",e)}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the DateTime is invalid");const n=e instanceof Se?e:new Se(e,t);if(ve.throwOnInvalid)throw new r(n);return new gs({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,t={}){const n=zn(e,te.fromObject(t));return n?n.map((e=>e?e.val:null)).join(""):null}static expandFormat(e,t={}){return Pn(Ct.parseFormat(e),te.fromObject(t)).map((e=>e.val)).join("")}static resetCache(){ms=void 0,fs={}}get(e){return this[e]}get isValid(){return null===this.invalid}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?jn(this).weekYear:NaN}get weekNumber(){return this.isValid?jn(this).weekNumber:NaN}get weekday(){return this.isValid?jn(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?Bn(this).weekday:NaN}get localWeekNumber(){return this.isValid?Bn(this).weekNumber:NaN}get localWeekYear(){return this.isValid?Bn(this).weekYear:NaN}get ordinal(){return this.isValid?Ne(this.c).ordinal:NaN}get monthShort(){return this.isValid?Ln.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Ln.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Ln.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Ln.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return!this.isOffsetFixed&&(this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset)}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];const e=864e5,t=6e4,n=Qe(this.c),s=this.zone.offset(n-e),r=this.zone.offset(n+e),a=this.zone.offset(n-s*t),i=this.zone.offset(n-r*t);if(a===i)return[this];const o=n-a*t,l=n-i*t,c=Yn(o,a),u=Yn(l,i);return c.hour===u.hour&&c.minute===u.minute&&c.second===u.second&&c.millisecond===u.millisecond?[Jn(this,{ts:o}),Jn(this,{ts:l})]:[this]}get isInLeapYear(){return Ge(this.year)}get daysInMonth(){return Ke(this.year,this.month)}get daysInYear(){return this.isValid?Ye(this.year):NaN}get weeksInWeekYear(){return this.isValid?et(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?et(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){const{locale:t,numberingSystem:n,calendar:s}=Ct.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:n,outputCalendar:s}}toUTC(e=0,t={}){return this.setZone(se.instance(e),t)}toLocal(){return this.setZone(ve.defaultZone)}setZone(e,{keepLocalTime:t=!1,keepCalendarTime:n=!1}={}){if((e=ae(e,ve.defaultZone)).equals(this.zone))return this;if(e.isValid){let s=this.ts;if(t||n){const t=e.offset(this.ts),n=this.toObject();[s]=Kn(n,t,e)}return Jn(this,{ts:s,zone:e})}return gs.invalid(Un(e))}reconfigure({locale:e,numberingSystem:t,outputCalendar:n}={}){return Jn(this,{loc:this.loc.clone({locale:e,numberingSystem:t,outputCalendar:n})})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const t=at(e,cs),{minDaysInFirstWeek:n,startOfWeek:s}=Ee(t,this.loc),r=!qe(t.weekYear)||!qe(t.weekNumber)||!qe(t.weekday),a=!qe(t.ordinal),i=!qe(t.year),l=!qe(t.month)||!qe(t.day),c=i||l,u=t.weekYear||t.weekNumber;if((c||a)&&u)throw new o("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&a)throw new o("Can't mix ordinal dates with month/day");let d;r?d=Ie({...Me(this.c,n,s),...t},n,s):qe(t.ordinal)?(d={...this.toObject(),...t},qe(t.day)&&(d.day=Math.min(Ke(d.year,d.month),d.day))):d=Oe({...Ne(this.c),...t});const[h,m]=Kn(d,this.o,this.zone);return Jn(this,{ts:h,o:m})}plus(e){if(!this.isValid)return this;return Jn(this,Qn(this,Cn.fromDurationLike(e)))}minus(e){if(!this.isValid)return this;return Jn(this,Qn(this,Cn.fromDurationLike(e).negate()))}startOf(e,{useLocaleWeeks:t=!1}={}){if(!this.isValid)return this;const n={},s=Cn.normalizeUnit(e);switch(s){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0}if("weeks"===s)if(t){const e=this.loc.getStartOfWeek(),{weekday:t}=this;tthis.valueOf(),i=Mn(a?this:e,a?e:this,r,s);var o;return a?i.negate():i}diffNow(e="milliseconds",t={}){return this.diff(gs.now(),e,t)}until(e){return this.isValid?xn.fromDateTimes(this,e):this}hasSame(e,t,n){if(!this.isValid)return!1;const s=e.valueOf(),r=this.setZone(e.zone,{keepLocalTime:!0});return r.startOf(t,n)<=s&&s<=r.endOf(t,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const t=e.base||gs.fromObject({},{zone:this.zone}),n=e.padding?thise.valueOf()),Math.min)}static max(...e){if(!e.every(gs.isDateTime))throw new c("max requires all arguments be DateTimes");return _e(e,(e=>e.valueOf()),Math.max)}static fromFormatExplain(e,t,n={}){const{locale:s=null,numberingSystem:r=null}=n;return Hn(te.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0}),e,t)}static fromStringExplain(e,t,n={}){return gs.fromFormatExplain(e,t,n)}static buildFormatParser(e,t={}){const{locale:n=null,numberingSystem:s=null}=t,r=te.fromOpts({locale:n,numberingSystem:s,defaultToEN:!0});return new _n(r,e)}static fromFormatParser(e,t,n={}){if(qe(e)||qe(t))throw new c("fromFormatParser requires an input string and a format parser");const{locale:s=null,numberingSystem:r=null}=n,a=te.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0});if(!a.equals(t.locale))throw new c(`fromFormatParser called with a locale of ${a}, but the format parser was created for ${t.locale}`);const{result:i,zone:o,specificOffset:l,invalidReason:u}=t.explainFromTokens(e);return u?gs.invalid(u):Xn(i,o,n,`format ${t.format}`,e,l)}static get DATE_SHORT(){return f}static get DATE_MED(){return g}static get DATE_MED_WITH_WEEKDAY(){return y}static get DATE_FULL(){return p}static get DATE_HUGE(){return w}static get TIME_SIMPLE(){return v}static get TIME_WITH_SECONDS(){return S}static get TIME_WITH_SHORT_OFFSET(){return b}static get TIME_WITH_LONG_OFFSET(){return k}static get TIME_24_SIMPLE(){return C}static get TIME_24_WITH_SECONDS(){return T}static get TIME_24_WITH_SHORT_OFFSET(){return x}static get TIME_24_WITH_LONG_OFFSET(){return L}static get DATETIME_SHORT(){return D}static get DATETIME_SHORT_WITH_SECONDS(){return M}static get DATETIME_MED(){return I}static get DATETIME_MED_WITH_SECONDS(){return N}static get DATETIME_MED_WITH_WEEKDAY(){return O}static get DATETIME_FULL(){return E}static get DATETIME_FULL_WITH_SECONDS(){return $}static get DATETIME_HUGE(){return F}static get DATETIME_HUGE_WITH_SECONDS(){return q}}function ys(e){if(gs.isDateTime(e))return e;if(e&&e.valueOf&&We(e.valueOf()))return gs.fromJSDate(e);if(e&&"object"==typeof e)return gs.fromObject(e);throw new c(`Unknown datetime argument: ${e}, of type ${typeof e}`)}}},t={};function n(s){var r=t[s];if(void 0!==r)return r.exports;var a=t[s]={exports:{}};return e[s](a,a.exports,n),a.exports}n.d=(e,t)=>{for(var s in t)n.o(t,s)&&!n.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n(516),n(749),n(423),n(247),n(716),n(498),n(73),n(2),n(94),n(704),n(503),n(187),n(709),n(951);n(652)})(); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index af6e1fb..ba67a0d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ws4kp", - "version": "5.12.0", + "version": "5.13.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ws4kp", - "version": "5.12.0", + "version": "5.13.0", "license": "MIT", "dependencies": { "ejs": "^3.1.5", @@ -257,55 +257,55 @@ } }, "node_modules/@aws-sdk/client-cloudfront": { - "version": "3.637.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.637.0.tgz", - "integrity": "sha512-yuKqFTRlRHAA5mVds/ufO8n6ENcCFAW0D6nXldQcMOCXIuz1UQRE5qyEwajIdDGtFnyeZVf5fWRMx3ylWC7h0Q==", + "version": "3.666.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.666.0.tgz", + "integrity": "sha512-2KZPIXZRmcZ7qX2X67RiTNfMbMSmJPp5TSGBpYYQ5UdD6j+K+cUZEYn2Sc280zphzl72d0Hx5p24DCz1bBfhIw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.637.0", - "@aws-sdk/client-sts": "3.637.0", - "@aws-sdk/core": "3.635.0", - "@aws-sdk/credential-provider-node": "3.637.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.637.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.637.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@aws-sdk/xml-builder": "3.609.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.4.0", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.15", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.2.0", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", + "@aws-sdk/client-sso-oidc": "3.666.0", + "@aws-sdk/client-sts": "3.666.0", + "@aws-sdk/core": "3.666.0", + "@aws-sdk/credential-provider-node": "3.666.0", + "@aws-sdk/middleware-host-header": "3.664.0", + "@aws-sdk/middleware-logger": "3.664.0", + "@aws-sdk/middleware-recursion-detection": "3.664.0", + "@aws-sdk/middleware-user-agent": "3.666.0", + "@aws-sdk/region-config-resolver": "3.664.0", + "@aws-sdk/types": "3.664.0", + "@aws-sdk/util-endpoints": "3.664.0", + "@aws-sdk/util-user-agent-browser": "3.664.0", + "@aws-sdk/util-user-agent-node": "3.666.0", + "@aws-sdk/xml-builder": "3.662.0", + "@smithy/config-resolver": "^3.0.9", + "@smithy/core": "^2.4.8", + "@smithy/fetch-http-handler": "^3.2.9", + "@smithy/hash-node": "^3.0.7", + "@smithy/invalid-dependency": "^3.0.7", + "@smithy/middleware-content-length": "^3.0.9", + "@smithy/middleware-endpoint": "^3.1.4", + "@smithy/middleware-retry": "^3.0.23", + "@smithy/middleware-serde": "^3.0.7", + "@smithy/middleware-stack": "^3.0.7", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/node-http-handler": "^3.2.4", + "@smithy/protocol-http": "^4.1.4", + "@smithy/smithy-client": "^3.4.0", + "@smithy/types": "^3.5.0", + "@smithy/url-parser": "^3.0.7", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.15", - "@smithy/util-defaults-mode-node": "^3.0.15", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-stream": "^3.1.3", + "@smithy/util-defaults-mode-browser": "^3.0.23", + "@smithy/util-defaults-mode-node": "^3.0.23", + "@smithy/util-endpoints": "^2.1.3", + "@smithy/util-middleware": "^3.0.7", + "@smithy/util-retry": "^3.0.7", + "@smithy/util-stream": "^3.1.9", "@smithy/util-utf8": "^3.0.0", - "@smithy/util-waiter": "^3.1.2", + "@smithy/util-waiter": "^3.1.6", "tslib": "^2.6.2" }, "engines": { @@ -313,69 +313,69 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.637.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.637.0.tgz", - "integrity": "sha512-y6UC94fsMvhKbf0dzfnjVP1HePeGjplfcYfilZU1COIJLyTkMcUv4XcT4I407CGIrvgEafONHkiC09ygqUauNA==", + "version": "3.666.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.666.0.tgz", + "integrity": "sha512-gDBvsm5JlocQH7W6MROWpt80UdlBNENofXaQeVnhEanJXr7K13jtPFC0XwlzPYuoXr8NnNZKA/kLKGjsCVoayQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.637.0", - "@aws-sdk/client-sts": "3.637.0", - "@aws-sdk/core": "3.635.0", - "@aws-sdk/credential-provider-node": "3.637.0", - "@aws-sdk/middleware-bucket-endpoint": "3.620.0", - "@aws-sdk/middleware-expect-continue": "3.620.0", - "@aws-sdk/middleware-flexible-checksums": "3.620.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-location-constraint": "3.609.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-sdk-s3": "3.635.0", - "@aws-sdk/middleware-ssec": "3.609.0", - "@aws-sdk/middleware-user-agent": "3.637.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/signature-v4-multi-region": "3.635.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.637.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@aws-sdk/xml-builder": "3.609.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.4.0", - "@smithy/eventstream-serde-browser": "^3.0.6", - "@smithy/eventstream-serde-config-resolver": "^3.0.3", - "@smithy/eventstream-serde-node": "^3.0.5", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-blob-browser": "^3.1.2", - "@smithy/hash-node": "^3.0.3", - "@smithy/hash-stream-node": "^3.1.2", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/md5-js": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.15", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.2.0", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", + "@aws-sdk/client-sso-oidc": "3.666.0", + "@aws-sdk/client-sts": "3.666.0", + "@aws-sdk/core": "3.666.0", + "@aws-sdk/credential-provider-node": "3.666.0", + "@aws-sdk/middleware-bucket-endpoint": "3.664.0", + "@aws-sdk/middleware-expect-continue": "3.664.0", + "@aws-sdk/middleware-flexible-checksums": "3.666.0", + "@aws-sdk/middleware-host-header": "3.664.0", + "@aws-sdk/middleware-location-constraint": "3.664.0", + "@aws-sdk/middleware-logger": "3.664.0", + "@aws-sdk/middleware-recursion-detection": "3.664.0", + "@aws-sdk/middleware-sdk-s3": "3.666.0", + "@aws-sdk/middleware-ssec": "3.664.0", + "@aws-sdk/middleware-user-agent": "3.666.0", + "@aws-sdk/region-config-resolver": "3.664.0", + "@aws-sdk/signature-v4-multi-region": "3.666.0", + "@aws-sdk/types": "3.664.0", + "@aws-sdk/util-endpoints": "3.664.0", + "@aws-sdk/util-user-agent-browser": "3.664.0", + "@aws-sdk/util-user-agent-node": "3.666.0", + "@aws-sdk/xml-builder": "3.662.0", + "@smithy/config-resolver": "^3.0.9", + "@smithy/core": "^2.4.8", + "@smithy/eventstream-serde-browser": "^3.0.10", + "@smithy/eventstream-serde-config-resolver": "^3.0.7", + "@smithy/eventstream-serde-node": "^3.0.9", + "@smithy/fetch-http-handler": "^3.2.9", + "@smithy/hash-blob-browser": "^3.1.6", + "@smithy/hash-node": "^3.0.7", + "@smithy/hash-stream-node": "^3.1.6", + "@smithy/invalid-dependency": "^3.0.7", + "@smithy/md5-js": "^3.0.7", + "@smithy/middleware-content-length": "^3.0.9", + "@smithy/middleware-endpoint": "^3.1.4", + "@smithy/middleware-retry": "^3.0.23", + "@smithy/middleware-serde": "^3.0.7", + "@smithy/middleware-stack": "^3.0.7", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/node-http-handler": "^3.2.4", + "@smithy/protocol-http": "^4.1.4", + "@smithy/smithy-client": "^3.4.0", + "@smithy/types": "^3.5.0", + "@smithy/url-parser": "^3.0.7", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.15", - "@smithy/util-defaults-mode-node": "^3.0.15", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "@smithy/util-stream": "^3.1.3", + "@smithy/util-defaults-mode-browser": "^3.0.23", + "@smithy/util-defaults-mode-node": "^3.0.23", + "@smithy/util-endpoints": "^2.1.3", + "@smithy/util-middleware": "^3.0.7", + "@smithy/util-retry": "^3.0.7", + "@smithy/util-stream": "^3.1.9", "@smithy/util-utf8": "^3.0.0", - "@smithy/util-waiter": "^3.1.2", + "@smithy/util-waiter": "^3.1.6", "tslib": "^2.6.2" }, "engines": { @@ -383,48 +383,48 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.637.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.637.0.tgz", - "integrity": "sha512-+KjLvgX5yJYROWo3TQuwBJlHCY0zz9PsLuEolmXQn0BVK1L/m9GteZHtd+rEdAoDGBpE0Xqjy1oz5+SmtsaRUw==", + "version": "3.666.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.666.0.tgz", + "integrity": "sha512-+h5Xk64dM4on1MwjTYxlwtI8ilytU7zjTVRzMAYOysmH71Bc8YsLOfonFHvzhF/AXpKJu3f1BhM65S0tasPcrw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.635.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.637.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.637.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.4.0", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.15", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.2.0", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", + "@aws-sdk/core": "3.666.0", + "@aws-sdk/middleware-host-header": "3.664.0", + "@aws-sdk/middleware-logger": "3.664.0", + "@aws-sdk/middleware-recursion-detection": "3.664.0", + "@aws-sdk/middleware-user-agent": "3.666.0", + "@aws-sdk/region-config-resolver": "3.664.0", + "@aws-sdk/types": "3.664.0", + "@aws-sdk/util-endpoints": "3.664.0", + "@aws-sdk/util-user-agent-browser": "3.664.0", + "@aws-sdk/util-user-agent-node": "3.666.0", + "@smithy/config-resolver": "^3.0.9", + "@smithy/core": "^2.4.8", + "@smithy/fetch-http-handler": "^3.2.9", + "@smithy/hash-node": "^3.0.7", + "@smithy/invalid-dependency": "^3.0.7", + "@smithy/middleware-content-length": "^3.0.9", + "@smithy/middleware-endpoint": "^3.1.4", + "@smithy/middleware-retry": "^3.0.23", + "@smithy/middleware-serde": "^3.0.7", + "@smithy/middleware-stack": "^3.0.7", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/node-http-handler": "^3.2.4", + "@smithy/protocol-http": "^4.1.4", + "@smithy/smithy-client": "^3.4.0", + "@smithy/types": "^3.5.0", + "@smithy/url-parser": "^3.0.7", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.15", - "@smithy/util-defaults-mode-node": "^3.0.15", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", + "@smithy/util-defaults-mode-browser": "^3.0.23", + "@smithy/util-defaults-mode-node": "^3.0.23", + "@smithy/util-endpoints": "^2.1.3", + "@smithy/util-middleware": "^3.0.7", + "@smithy/util-retry": "^3.0.7", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -433,49 +433,49 @@ } }, "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.637.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.637.0.tgz", - "integrity": "sha512-27bHALN6Qb6m6KZmPvRieJ/QRlj1lyac/GT2Rn5kJpre8Mpp+yxrtvp3h9PjNBty4lCeFEENfY4dGNSozBuBcw==", + "version": "3.666.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.666.0.tgz", + "integrity": "sha512-mW//v5EvHMU2SulW1FqmjJJPDNhzySRb/YUU+jq9AFDIYUdjF6j6wM+iavCW/4gLqOct0RT7B62z8jqyHkUCEQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.635.0", - "@aws-sdk/credential-provider-node": "3.637.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.637.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.637.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.4.0", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.15", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.2.0", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", + "@aws-sdk/core": "3.666.0", + "@aws-sdk/credential-provider-node": "3.666.0", + "@aws-sdk/middleware-host-header": "3.664.0", + "@aws-sdk/middleware-logger": "3.664.0", + "@aws-sdk/middleware-recursion-detection": "3.664.0", + "@aws-sdk/middleware-user-agent": "3.666.0", + "@aws-sdk/region-config-resolver": "3.664.0", + "@aws-sdk/types": "3.664.0", + "@aws-sdk/util-endpoints": "3.664.0", + "@aws-sdk/util-user-agent-browser": "3.664.0", + "@aws-sdk/util-user-agent-node": "3.666.0", + "@smithy/config-resolver": "^3.0.9", + "@smithy/core": "^2.4.8", + "@smithy/fetch-http-handler": "^3.2.9", + "@smithy/hash-node": "^3.0.7", + "@smithy/invalid-dependency": "^3.0.7", + "@smithy/middleware-content-length": "^3.0.9", + "@smithy/middleware-endpoint": "^3.1.4", + "@smithy/middleware-retry": "^3.0.23", + "@smithy/middleware-serde": "^3.0.7", + "@smithy/middleware-stack": "^3.0.7", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/node-http-handler": "^3.2.4", + "@smithy/protocol-http": "^4.1.4", + "@smithy/smithy-client": "^3.4.0", + "@smithy/types": "^3.5.0", + "@smithy/url-parser": "^3.0.7", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.15", - "@smithy/util-defaults-mode-node": "^3.0.15", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", + "@smithy/util-defaults-mode-browser": "^3.0.23", + "@smithy/util-defaults-mode-node": "^3.0.23", + "@smithy/util-endpoints": "^2.1.3", + "@smithy/util-middleware": "^3.0.7", + "@smithy/util-retry": "^3.0.7", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -483,54 +483,54 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.637.0" + "@aws-sdk/client-sts": "^3.666.0" } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.637.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.637.0.tgz", - "integrity": "sha512-xUi7x4qDubtA8QREtlblPuAcn91GS/09YVEY/RwU7xCY0aqGuFwgszAANlha4OUIqva8oVj2WO4gJuG+iaSnhw==", + "version": "3.666.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.666.0.tgz", + "integrity": "sha512-tw8yxcxvaj0d/A4YJXIh3mISzsQe8rThIVKvpyhEdl1lEoz81skCccX5u3gHajciSdga/V0DxhBbsO+eE1bZkw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.637.0", - "@aws-sdk/core": "3.635.0", - "@aws-sdk/credential-provider-node": "3.637.0", - "@aws-sdk/middleware-host-header": "3.620.0", - "@aws-sdk/middleware-logger": "3.609.0", - "@aws-sdk/middleware-recursion-detection": "3.620.0", - "@aws-sdk/middleware-user-agent": "3.637.0", - "@aws-sdk/region-config-resolver": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.637.0", - "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.614.0", - "@smithy/config-resolver": "^3.0.5", - "@smithy/core": "^2.4.0", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/hash-node": "^3.0.3", - "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-content-length": "^3.0.5", - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.15", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.2.0", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", + "@aws-sdk/client-sso-oidc": "3.666.0", + "@aws-sdk/core": "3.666.0", + "@aws-sdk/credential-provider-node": "3.666.0", + "@aws-sdk/middleware-host-header": "3.664.0", + "@aws-sdk/middleware-logger": "3.664.0", + "@aws-sdk/middleware-recursion-detection": "3.664.0", + "@aws-sdk/middleware-user-agent": "3.666.0", + "@aws-sdk/region-config-resolver": "3.664.0", + "@aws-sdk/types": "3.664.0", + "@aws-sdk/util-endpoints": "3.664.0", + "@aws-sdk/util-user-agent-browser": "3.664.0", + "@aws-sdk/util-user-agent-node": "3.666.0", + "@smithy/config-resolver": "^3.0.9", + "@smithy/core": "^2.4.8", + "@smithy/fetch-http-handler": "^3.2.9", + "@smithy/hash-node": "^3.0.7", + "@smithy/invalid-dependency": "^3.0.7", + "@smithy/middleware-content-length": "^3.0.9", + "@smithy/middleware-endpoint": "^3.1.4", + "@smithy/middleware-retry": "^3.0.23", + "@smithy/middleware-serde": "^3.0.7", + "@smithy/middleware-stack": "^3.0.7", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/node-http-handler": "^3.2.4", + "@smithy/protocol-http": "^4.1.4", + "@smithy/smithy-client": "^3.4.0", + "@smithy/types": "^3.5.0", + "@smithy/url-parser": "^3.0.7", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.15", - "@smithy/util-defaults-mode-node": "^3.0.15", - "@smithy/util-endpoints": "^2.0.5", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", + "@smithy/util-defaults-mode-browser": "^3.0.23", + "@smithy/util-defaults-mode-node": "^3.0.23", + "@smithy/util-endpoints": "^2.1.3", + "@smithy/util-middleware": "^3.0.7", + "@smithy/util-retry": "^3.0.7", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -539,20 +539,21 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.635.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.635.0.tgz", - "integrity": "sha512-i1x/E/sgA+liUE1XJ7rj1dhyXpAKO1UKFUcTTHXok2ARjWTvszHnSXMOsB77aPbmn0fUp1JTx2kHUAZ1LVt5Bg==", + "version": "3.666.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.666.0.tgz", + "integrity": "sha512-jxNjs0sAVX+CWwoa4kHUENLHuBwjT1EILBoctmQoiIb1v5KpKwZnSByHTpvUkFmbuwWQPEnJkJCqzIHjEmjisA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^2.4.0", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/protocol-http": "^4.1.0", - "@smithy/signature-v4": "^4.1.0", - "@smithy/smithy-client": "^3.2.0", - "@smithy/types": "^3.3.0", - "@smithy/util-middleware": "^3.0.3", + "@aws-sdk/types": "3.664.0", + "@smithy/core": "^2.4.8", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/property-provider": "^3.1.7", + "@smithy/protocol-http": "^4.1.4", + "@smithy/signature-v4": "^4.2.0", + "@smithy/smithy-client": "^3.4.0", + "@smithy/types": "^3.5.0", + "@smithy/util-middleware": "^3.0.7", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -561,15 +562,15 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.620.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz", - "integrity": "sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==", + "version": "3.664.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.664.0.tgz", + "integrity": "sha512-95rE+9Voaco0nmKJrXqfJAxSSkSWqlBy76zomiZrUrv7YuijQtHCW8jte6v6UHAFAaBzgFsY7QqBxs15u9SM7g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/types": "^3.3.0", + "@aws-sdk/types": "3.664.0", + "@smithy/property-provider": "^3.1.7", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -577,20 +578,20 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.635.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.635.0.tgz", - "integrity": "sha512-iJyRgEjOCQlBMXqtwPLIKYc7Bsc6nqjrZybdMDenPDa+kmLg7xh8LxHsu9088e+2/wtLicE34FsJJIfzu3L82g==", + "version": "3.666.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.666.0.tgz", + "integrity": "sha512-j1Cob+tYmJ/m9agSsFPdAhLfILBqZzolF17XJvmEzQC2edltQ6NR0Wd09GQvtiAFZy7gn1l40bKuxX6Tq5U6XQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.2.0", - "@smithy/types": "^3.3.0", - "@smithy/util-stream": "^3.1.3", + "@aws-sdk/types": "3.664.0", + "@smithy/fetch-http-handler": "^3.2.9", + "@smithy/node-http-handler": "^3.2.4", + "@smithy/property-provider": "^3.1.7", + "@smithy/protocol-http": "^4.1.4", + "@smithy/smithy-client": "^3.4.0", + "@smithy/types": "^3.5.0", + "@smithy/util-stream": "^3.1.9", "tslib": "^2.6.2" }, "engines": { @@ -598,49 +599,49 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.637.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.637.0.tgz", - "integrity": "sha512-h+PFCWfZ0Q3Dx84SppET/TFpcQHmxFW8/oV9ArEvMilw4EBN+IlxgbL0CnHwjHW64szcmrM0mbebjEfHf4FXmw==", + "version": "3.666.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.666.0.tgz", + "integrity": "sha512-u09aUZJQNK8zVAKJKEOQ2mLsv39YxR20US00/WAPNW9sMWWhl4raT97tsalOUc6ZTHOEqHHmEVZXuscINnkaww==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.620.1", - "@aws-sdk/credential-provider-http": "3.635.0", - "@aws-sdk/credential-provider-process": "3.620.1", - "@aws-sdk/credential-provider-sso": "3.637.0", - "@aws-sdk/credential-provider-web-identity": "3.621.0", - "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.2.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", + "@aws-sdk/credential-provider-env": "3.664.0", + "@aws-sdk/credential-provider-http": "3.666.0", + "@aws-sdk/credential-provider-process": "3.664.0", + "@aws-sdk/credential-provider-sso": "3.666.0", + "@aws-sdk/credential-provider-web-identity": "3.664.0", + "@aws-sdk/types": "3.664.0", + "@smithy/credential-provider-imds": "^3.2.4", + "@smithy/property-provider": "^3.1.7", + "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.637.0" + "@aws-sdk/client-sts": "^3.666.0" } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.637.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.637.0.tgz", - "integrity": "sha512-yoEhoxJJfs7sPVQ6Is939BDQJZpZCoUgKr/ySse4YKOZ24t4VqgHA6+wV7rYh+7IW24Rd91UTvEzSuHYTlxlNA==", + "version": "3.666.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.666.0.tgz", + "integrity": "sha512-C43L9kxAb2lvIZ+eKVuyX9xYrkpg+Zyq0fLasK1wekC6M/Qj/uqE1KFz9ddDE8Dv1HwiE+UZk5psM0KatQpPGQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.620.1", - "@aws-sdk/credential-provider-http": "3.635.0", - "@aws-sdk/credential-provider-ini": "3.637.0", - "@aws-sdk/credential-provider-process": "3.620.1", - "@aws-sdk/credential-provider-sso": "3.637.0", - "@aws-sdk/credential-provider-web-identity": "3.621.0", - "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.2.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", + "@aws-sdk/credential-provider-env": "3.664.0", + "@aws-sdk/credential-provider-http": "3.666.0", + "@aws-sdk/credential-provider-ini": "3.666.0", + "@aws-sdk/credential-provider-process": "3.664.0", + "@aws-sdk/credential-provider-sso": "3.666.0", + "@aws-sdk/credential-provider-web-identity": "3.664.0", + "@aws-sdk/types": "3.664.0", + "@smithy/credential-provider-imds": "^3.2.4", + "@smithy/property-provider": "^3.1.7", + "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -648,16 +649,16 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.620.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz", - "integrity": "sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==", + "version": "3.664.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.664.0.tgz", + "integrity": "sha512-sQicIw/qWTsmMw8EUQNJXdrWV5SXaZc2zGdCQsQxhR6wwNO2/rZ5JmzdcwUADmleBVyPYk3KGLhcofF/qXT2Ng==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", + "@aws-sdk/types": "3.664.0", + "@smithy/property-provider": "^3.1.7", + "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -665,18 +666,18 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.637.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.637.0.tgz", - "integrity": "sha512-Mvz+h+e62/tl+dVikLafhv+qkZJ9RUb8l2YN/LeKMWkxQylPT83CPk9aimVhCV89zth1zpREArl97+3xsfgQvA==", + "version": "3.666.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.666.0.tgz", + "integrity": "sha512-aaa5Ig8hI7lSh1CSQP0oaLvjylz6+3mKUgdvw69zv0MdX3TUZiQRDCsfqK0P3VNsj/QSvBytSjuNDuSaYcACJg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.637.0", - "@aws-sdk/token-providers": "3.614.0", - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", + "@aws-sdk/client-sso": "3.666.0", + "@aws-sdk/token-providers": "3.664.0", + "@aws-sdk/types": "3.664.0", + "@smithy/property-provider": "^3.1.7", + "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -684,36 +685,36 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.621.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz", - "integrity": "sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==", + "version": "3.664.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.664.0.tgz", + "integrity": "sha512-10ltP1BfSKRJVXd8Yr5oLbo+VSDskWbps0X3szSsxTk0Dju1xvkz7hoIjylWLvtGbvQ+yb2pmsJYKCudW/4DJg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/types": "^3.3.0", + "@aws-sdk/types": "3.664.0", + "@smithy/property-provider": "^3.1.7", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.621.0" + "@aws-sdk/client-sts": "^3.664.0" } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.620.0.tgz", - "integrity": "sha512-eGLL0W6L3HDb3OACyetZYOWpHJ+gLo0TehQKeQyy2G8vTYXqNTeqYhuI6up9HVjBzU9eQiULVQETmgQs7TFaRg==", + "version": "3.664.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.664.0.tgz", + "integrity": "sha512-KP+foxGaAclhRI63ElZPvVeG5oajkbNhE7wiW34UoSw8wI2l+lmm36zkiebfP4K5HRyADS+KvGw95851N++s2A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", + "@aws-sdk/types": "3.664.0", "@aws-sdk/util-arn-parser": "3.568.0", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/protocol-http": "^4.1.4", + "@smithy/types": "^3.5.0", "@smithy/util-config-provider": "^3.0.0", "tslib": "^2.6.2" }, @@ -722,15 +723,15 @@ } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.620.0.tgz", - "integrity": "sha512-QXeRFMLfyQ31nAHLbiTLtk0oHzG9QLMaof5jIfqcUwnOkO8YnQdeqzakrg1Alpy/VQ7aqzIi8qypkBe2KXZz0A==", + "version": "3.664.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.664.0.tgz", + "integrity": "sha512-7hvF+HQhDFvBCzxWFmFOa6tWkVjRAaTR/Ltt03TAZ6JzfIayqnqKFvmdvYFfIeD2w3x4gx24zooRillFk4e3mQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", + "@aws-sdk/types": "3.664.0", + "@smithy/protocol-http": "^4.1.4", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -738,18 +739,21 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.620.0.tgz", - "integrity": "sha512-ftz+NW7qka2sVuwnnO1IzBku5ccP+s5qZGeRTPgrKB7OzRW85gthvIo1vQR2w+OwHFk7WJbbhhWwbCbktnP4UA==", + "version": "3.666.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.666.0.tgz", + "integrity": "sha512-jDbItXr60OsZwgRNhRMbomf9TitQ3nomV6WR3WZ7wHc8fFcwV67+OnoV1rv091HsC4qYuqp8i1YKecJuuiefrQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", - "@aws-sdk/types": "3.609.0", + "@aws-sdk/core": "3.666.0", + "@aws-sdk/types": "3.664.0", "@smithy/is-array-buffer": "^3.0.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/protocol-http": "^4.1.4", + "@smithy/types": "^3.5.0", + "@smithy/util-middleware": "^3.0.7", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -758,15 +762,15 @@ } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz", - "integrity": "sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg==", + "version": "3.664.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.664.0.tgz", + "integrity": "sha512-4tCXJ+DZWTq38eLmFgnEmO8X4jfWpgPbWoCyVYpRHCPHq6xbrU65gfwS9jGx25L4YdEce641ChI9TKLryuUgRA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", + "@aws-sdk/types": "3.664.0", + "@smithy/protocol-http": "^4.1.4", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -774,14 +778,14 @@ } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz", - "integrity": "sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A==", + "version": "3.664.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.664.0.tgz", + "integrity": "sha512-hHMdJqq83cDnSTVhrSDsOrm1DyFtS1rteSwuqN7dGNr093bluCqH1VpnS/8juYzux8QGnzRecs9qV3hncGGxPw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/types": "^3.3.0", + "@aws-sdk/types": "3.664.0", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -789,14 +793,14 @@ } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz", - "integrity": "sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==", + "version": "3.664.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.664.0.tgz", + "integrity": "sha512-eNykMqQuv7eg9pAcaLro44fscIe1VkFfhm+gYnlxd+PH6xqapRki1E68VHehnIptnVBdqnWfEqLUSLGm9suqhg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/types": "^3.3.0", + "@aws-sdk/types": "3.664.0", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -804,15 +808,15 @@ } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.620.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz", - "integrity": "sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w==", + "version": "3.664.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.664.0.tgz", + "integrity": "sha512-jq27WMZhm+dY8BWZ9Ipy3eXtZj0lJzpaKQE3A3tH5AOIlUV/gqrmnJ9CdqVVef4EJsq9Yil4ZzQjKKmPsxveQg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", + "@aws-sdk/types": "3.664.0", + "@smithy/protocol-http": "^4.1.4", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -820,24 +824,24 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.635.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.635.0.tgz", - "integrity": "sha512-RLdYJPEV4JL/7NBoFUs7VlP90X++5FlJdxHz0DzCjmiD3qCviKy+Cym3qg1gBgHwucs5XisuClxDrGokhAdTQw==", + "version": "3.666.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.666.0.tgz", + "integrity": "sha512-JUUCDBbt0+AQTwE9gvyn1zaN1QA+wFj5A+DO2igWuIRkR/nU5oHtsoyZY0+lL+uvZpsstmJn1Eeu04E9ourwag==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.635.0", - "@aws-sdk/types": "3.609.0", + "@aws-sdk/core": "3.666.0", + "@aws-sdk/types": "3.664.0", "@aws-sdk/util-arn-parser": "3.568.0", - "@smithy/core": "^2.4.0", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/signature-v4": "^4.1.0", - "@smithy/smithy-client": "^3.2.0", - "@smithy/types": "^3.3.0", + "@smithy/core": "^2.4.8", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/protocol-http": "^4.1.4", + "@smithy/signature-v4": "^4.2.0", + "@smithy/smithy-client": "^3.4.0", + "@smithy/types": "^3.5.0", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-stream": "^3.1.3", + "@smithy/util-middleware": "^3.0.7", + "@smithy/util-stream": "^3.1.9", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -846,14 +850,14 @@ } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz", - "integrity": "sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg==", + "version": "3.664.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.664.0.tgz", + "integrity": "sha512-uyMnxku5ygRxr/z4pO9ul8Rgn2CoFcKCaKnfHfTgVo2yV/jKHI3rAvyD3OtOO7k4S0odaJzss2Fw6GsIKZy5AQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/types": "^3.3.0", + "@aws-sdk/types": "3.664.0", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -861,16 +865,18 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.637.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.637.0.tgz", - "integrity": "sha512-EYo0NE9/da/OY8STDsK2LvM4kNa79DBsf4YVtaG4P5pZ615IeFsD8xOHZeuJmUrSMlVQ8ywPRX7WMucUybsKug==", + "version": "3.666.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.666.0.tgz", + "integrity": "sha512-d8XJ103SGCMsFIKEowpOaZr0W8AkLNd+3CS7W95yb6YmN7lcNGL54RtTSy3m8YJI6W2jXftPFN2oLG4K3aywVQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.637.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", + "@aws-sdk/core": "3.666.0", + "@aws-sdk/types": "3.664.0", + "@aws-sdk/util-endpoints": "3.664.0", + "@smithy/core": "^2.4.8", + "@smithy/protocol-http": "^4.1.4", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -878,17 +884,17 @@ } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.614.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz", - "integrity": "sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==", + "version": "3.664.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.664.0.tgz", + "integrity": "sha512-o/B8dg8K+9714RGYPgMxZgAChPe/MTSMkf/eHXTUFHNik5i1HgVKfac22njV2iictGy/6GhpFsKa1OWNYAkcUg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/types": "^3.3.0", + "@aws-sdk/types": "3.664.0", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/types": "^3.5.0", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.3", + "@smithy/util-middleware": "^3.0.7", "tslib": "^2.6.2" }, "engines": { @@ -896,17 +902,17 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.635.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.635.0.tgz", - "integrity": "sha512-J6QY4/invOkpogCHjSaDON1hF03viPpOnsrzVuCvJMmclS/iG62R4EY0wq1alYll0YmSdmKlpJwHMWwGtqK63Q==", + "version": "3.666.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.666.0.tgz", + "integrity": "sha512-dbuJp0riLeXkyh7wWCK4Jra/kOvVoLTIq0jHeBoFMTOEvU/DAoo8KjIvHPu0TJ2nQzccW0RW40DAabUIVEQxCg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.635.0", - "@aws-sdk/types": "3.609.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/signature-v4": "^4.1.0", - "@smithy/types": "^3.3.0", + "@aws-sdk/middleware-sdk-s3": "3.666.0", + "@aws-sdk/types": "3.664.0", + "@smithy/protocol-http": "^4.1.4", + "@smithy/signature-v4": "^4.2.0", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -914,33 +920,33 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.614.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz", - "integrity": "sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw==", + "version": "3.664.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.664.0.tgz", + "integrity": "sha512-dBAvXW2/6bAxidvKARFxyCY2uCynYBKRFN00NhS1T5ggxm3sUnuTpWw1DTjl02CVPkacBOocZf10h8pQbHSK8w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", + "@aws-sdk/types": "3.664.0", + "@smithy/property-provider": "^3.1.7", + "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sso-oidc": "^3.614.0" + "@aws-sdk/client-sso-oidc": "^3.664.0" } }, "node_modules/@aws-sdk/types": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz", - "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==", + "version": "3.664.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.664.0.tgz", + "integrity": "sha512-+GtXktvVgpreM2b+NJL9OqZGsOzHwlCUrO8jgQUvH/yA6Kd8QO2YFhQCp0C9sSzTteZJVqGBu8E0CQurxJHPbw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.3.0", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -961,15 +967,15 @@ } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.637.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.637.0.tgz", - "integrity": "sha512-pAqOKUHeVWHEXXDIp/qoMk/6jyxIb6GGjnK1/f8dKHtKIEs4tKsnnL563gceEvdad53OPXIt86uoevCcCzmBnw==", + "version": "3.664.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.664.0.tgz", + "integrity": "sha512-KrXoHz6zmAahVHkyWMRT+P6xJaxItgmklxEDrT+npsUB4d5C/lhw16Crcp9TDi828fiZK3GYKRAmmNhvmzvBNg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/types": "^3.3.0", - "@smithy/util-endpoints": "^2.0.5", + "@aws-sdk/types": "3.664.0", + "@smithy/types": "^3.5.0", + "@smithy/util-endpoints": "^2.1.3", "tslib": "^2.6.2" }, "engines": { @@ -990,28 +996,29 @@ } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz", - "integrity": "sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==", + "version": "3.664.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.664.0.tgz", + "integrity": "sha512-c/PV3+f1ss4PpskHbcOxTZ6fntV2oXy/xcDR9nW+kVaz5cM1G702gF0rvGLKPqoBwkj2rWGe6KZvEBeLzynTUQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/types": "^3.3.0", + "@aws-sdk/types": "3.664.0", + "@smithy/types": "^3.5.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.614.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz", - "integrity": "sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==", + "version": "3.666.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.666.0.tgz", + "integrity": "sha512-DzbOMcAqrn51Z0fz5FvofaYmQA+sOJKO2cb8zQrix3TkzsTw1vRLo/cgQUJuJRGptbQCe1gnj7+21Gd5hpU6Ag==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.609.0", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/types": "^3.3.0", + "@aws-sdk/middleware-user-agent": "3.666.0", + "@aws-sdk/types": "3.664.0", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1027,13 +1034,13 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.609.0.tgz", - "integrity": "sha512-l9XxNcA4HX98rwCC2/KoiWcmEiRfZe4G+mYwDbCFT87JIMj6GBhLDkAzr/W8KAaA2IDr8Vc6J8fZPgVulxxfMA==", + "version": "3.662.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.662.0.tgz", + "integrity": "sha512-ikLkXn0igUpnJu2mCZjklvmcDGWT9OaLRv3JyC/cRkTaaSrblPjPM7KKsltxdMTLQ+v7fjCN0TsJpxphMfaOPA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.3.0", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1057,9 +1064,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", - "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", "dev": true, "license": "MIT", "engines": { @@ -1091,9 +1098,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "license": "MIT", "engines": { @@ -1124,14 +1131,14 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", "deprecated": "Use @eslint/config-array instead", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", + "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", "minimatch": "^3.0.5" }, @@ -1263,14 +1270,21 @@ "node": ">= 8" } }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, "node_modules/@smithy/abort-controller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.1.tgz", - "integrity": "sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.5.tgz", + "integrity": "sha512-DhNPnqTqPoG8aZ5dWkFOgsuY+i0GQ3CI6hMmvCoduNsnU9gUZWZBwGfDQsTTB7NvFPkom1df7jMIJWU90kuXXg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.3.0", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1299,16 +1313,16 @@ } }, "node_modules/@smithy/config-resolver": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.5.tgz", - "integrity": "sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.9.tgz", + "integrity": "sha512-5d9oBf40qC7n2xUoHmntKLdqsyTMMo/r49+eqSIjJ73eDfEtljAxEhzIQ3bkgXJtR3xiv7YzMT/3FF3ORkjWdg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^3.1.4", - "@smithy/types": "^3.3.0", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/types": "^3.5.0", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.3", + "@smithy/util-middleware": "^3.0.7", "tslib": "^2.6.2" }, "engines": { @@ -1316,20 +1330,20 @@ } }, "node_modules/@smithy/core": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.4.0.tgz", - "integrity": "sha512-cHXq+FneIF/KJbt4q4pjN186+Jf4ZB0ZOqEaZMBhT79srEyGDDBV31NqBRBjazz8ppQ1bJbDJMY9ba5wKFV36w==", + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.4.8.tgz", + "integrity": "sha512-x4qWk7p/a4dcf7Vxb2MODIf4OIcqNbK182WxRvZ/3oKPrf/6Fdic5sSElhO1UtXpWKBazWfqg0ZEK9xN1DsuHA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.15", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.2.0", - "@smithy/types": "^3.3.0", + "@smithy/middleware-endpoint": "^3.1.4", + "@smithy/middleware-retry": "^3.0.23", + "@smithy/middleware-serde": "^3.0.7", + "@smithy/protocol-http": "^4.1.4", + "@smithy/smithy-client": "^3.4.0", + "@smithy/types": "^3.5.0", "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-middleware": "^3.0.3", + "@smithy/util-middleware": "^3.0.7", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -1338,16 +1352,16 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz", - "integrity": "sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.4.tgz", + "integrity": "sha512-S9bb0EIokfYEuar4kEbLta+ivlKCWOCFsLZuilkNy9i0uEUEHSi47IFLPaxqqCl+0ftKmcOTHayY5nQhAuq7+w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/property-provider": "^3.1.7", + "@smithy/types": "^3.5.0", + "@smithy/url-parser": "^3.0.7", "tslib": "^2.6.2" }, "engines": { @@ -1355,27 +1369,27 @@ } }, "node_modules/@smithy/eventstream-codec": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.2.tgz", - "integrity": "sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.6.tgz", + "integrity": "sha512-SBiOYPBH+5wOyPS7lfI150ePfGLhnp/eTu5RnV9xvhGvRiKfnl6HzRK9wehBph+il8FxS9KTeadx7Rcmf1GLPQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^3.3.0", + "@smithy/types": "^3.5.0", "@smithy/util-hex-encoding": "^3.0.0", "tslib": "^2.6.2" } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.6.tgz", - "integrity": "sha512-2hM54UWQUOrki4BtsUI1WzmD13/SeaqT/AB3EUJKbcver/WgKNaiJ5y5F5XXuVe6UekffVzuUDrBZVAA3AWRpQ==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.10.tgz", + "integrity": "sha512-1i9aMY6Pl/SmA6NjvidxnfBLHMPzhKu2BP148pEt5VwhMdmXn36PE2kWKGa9Hj8b0XGtCTRucpCncylevCtI7g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^3.0.5", - "@smithy/types": "^3.3.0", + "@smithy/eventstream-serde-universal": "^3.0.9", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1383,13 +1397,13 @@ } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.3.tgz", - "integrity": "sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.7.tgz", + "integrity": "sha512-eVzhGQBPEqXXYHvIUku0jMTxd4gDvenRzUQPTmKVWdRvp9JUCKrbAXGQRYiGxUYq9+cqQckRm0wq3kTWnNtDhw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.3.0", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1397,14 +1411,14 @@ } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.5.tgz", - "integrity": "sha512-+upXvnHNyZP095s11jF5dhGw/Ihzqwl5G+/KtMnoQOpdfC3B5HYCcDVG9EmgkhJMXJlM64PyN5gjJl0uXFQehQ==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.9.tgz", + "integrity": "sha512-JE0Guqvt0xsmfQ5y1EI342/qtJqznBv8cJqkHZV10PwC8GWGU5KNgFbQnsVCcX+xF+qIqwwfRmeWoJCjuOLmng==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^3.0.5", - "@smithy/types": "^3.3.0", + "@smithy/eventstream-serde-universal": "^3.0.9", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1412,14 +1426,14 @@ } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.5.tgz", - "integrity": "sha512-5u/nXbyoh1s4QxrvNre9V6vfyoLWuiVvvd5TlZjGThIikc3G+uNiG9uOTCWweSRjv1asdDIWK7nOmN7le4RYHQ==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.9.tgz", + "integrity": "sha512-bydfgSisfepCufw9kCEnWRxqxJFzX/o8ysXWv+W9F2FIyiaEwZ/D8bBKINbh4ONz3i05QJ1xE7A5OKYvgJsXaw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-codec": "^3.1.2", - "@smithy/types": "^3.3.0", + "@smithy/eventstream-codec": "^3.1.6", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1427,40 +1441,40 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz", - "integrity": "sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.9.tgz", + "integrity": "sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^4.1.0", - "@smithy/querystring-builder": "^3.0.3", - "@smithy/types": "^3.3.0", + "@smithy/protocol-http": "^4.1.4", + "@smithy/querystring-builder": "^3.0.7", + "@smithy/types": "^3.5.0", "@smithy/util-base64": "^3.0.0", "tslib": "^2.6.2" } }, "node_modules/@smithy/hash-blob-browser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.2.tgz", - "integrity": "sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.6.tgz", + "integrity": "sha512-BKNcMIaeZ9lB67sgo88iCF4YB35KT8X2dNJ8DqrtZNTgN6tUDYBKThzfGtos/mnZkGkW91AYHisESHmSiYQmKw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/chunked-blob-reader": "^3.0.0", "@smithy/chunked-blob-reader-native": "^3.0.0", - "@smithy/types": "^3.3.0", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" } }, "node_modules/@smithy/hash-node": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.3.tgz", - "integrity": "sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.7.tgz", + "integrity": "sha512-SAGHN+QkrwcHFjfWzs/czX94ZEjPJ0CrWJS3M43WswDXVEuP4AVy9gJ3+AF6JQHZD13bojmuf/Ap/ItDeZ+Qfw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.3.0", + "@smithy/types": "^3.5.0", "@smithy/util-buffer-from": "^3.0.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" @@ -1470,13 +1484,13 @@ } }, "node_modules/@smithy/hash-stream-node": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.2.tgz", - "integrity": "sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.6.tgz", + "integrity": "sha512-sFSSt7cmCpFWZPfVx7k80Bgb1K2VJ27VmMxH8X+dDhp7Wv8IBgID4K2VK5ehMJROF8hQgcj4WywnkHIwX/xlwQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.3.0", + "@smithy/types": "^3.5.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -1485,13 +1499,13 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz", - "integrity": "sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.7.tgz", + "integrity": "sha512-Bq00GsAhHeYSuZX8Kpu4sbI9agH2BNYnqUmmbTGWOhki9NVsWn2jFr896vvoTMH8KAjNX/ErC/8t5QHuEXG+IA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.3.0", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" } }, @@ -1509,26 +1523,26 @@ } }, "node_modules/@smithy/md5-js": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.3.tgz", - "integrity": "sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.7.tgz", + "integrity": "sha512-+wco9IN9uOW4tNGkZIqTR6IXyfO7Z8A+IOq82QCRn/f/xcmt7H1fXwmQVbfDSvbeFwfNnhv7s+u0G9PzPG6o2w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.3.0", + "@smithy/types": "^3.5.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" } }, "node_modules/@smithy/middleware-content-length": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz", - "integrity": "sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.9.tgz", + "integrity": "sha512-t97PidoGElF9hTtLCrof32wfWMqC5g2SEJNxaVH3NjlatuNGsdxXRYO/t+RPnxA15RpYiS0f+zG7FuE2DeGgjA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", + "@smithy/protocol-http": "^4.1.4", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1536,18 +1550,18 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz", - "integrity": "sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.4.tgz", + "integrity": "sha512-/ChcVHekAyzUbyPRI8CzPPLj6y8QRAfJngWcLMgsWxKVzw/RzBV69mSOzJYDD3pRwushA1+5tHtPF8fjmzBnrQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/middleware-serde": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-middleware": "^3.0.3", + "@smithy/middleware-serde": "^3.0.7", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/types": "^3.5.0", + "@smithy/url-parser": "^3.0.7", + "@smithy/util-middleware": "^3.0.7", "tslib": "^2.6.2" }, "engines": { @@ -1555,19 +1569,19 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.15.tgz", - "integrity": "sha512-iTMedvNt1ApdvkaoE8aSDuwaoc+BhvHqttbA/FO4Ty+y/S5hW6Ci/CTScG7vam4RYJWZxdTElc3MEfHRVH6cgQ==", + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.23.tgz", + "integrity": "sha512-x9PbGXxkcXIpm6L26qRSCC+eaYcHwybRmqU8LO/WM2RRlW0g8lz6FIiKbKgGvHuoK3dLZRiQVSQJveiCzwnA5A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/service-error-classification": "^3.0.3", - "@smithy/smithy-client": "^3.2.0", - "@smithy/types": "^3.3.0", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/protocol-http": "^4.1.4", + "@smithy/service-error-classification": "^3.0.7", + "@smithy/smithy-client": "^3.4.0", + "@smithy/types": "^3.5.0", + "@smithy/util-middleware": "^3.0.7", + "@smithy/util-retry": "^3.0.7", "tslib": "^2.6.2", "uuid": "^9.0.1" }, @@ -1576,13 +1590,13 @@ } }, "node_modules/@smithy/middleware-serde": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz", - "integrity": "sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.7.tgz", + "integrity": "sha512-VytaagsQqtH2OugzVTq4qvjkLNbWehHfGcGr0JLJmlDRrNCeZoWkWsSOw1nhS/4hyUUWF/TLGGml4X/OnEep5g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.3.0", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1590,13 +1604,13 @@ } }, "node_modules/@smithy/middleware-stack": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz", - "integrity": "sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.7.tgz", + "integrity": "sha512-EyTbMCdqS1DoeQsO4gI7z2Gzq1MoRFAeS8GkFYIwbedB7Lp5zlLHJdg+56tllIIG5Hnf9ZWX48YKSHlsKvugGA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.3.0", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1604,15 +1618,15 @@ } }, "node_modules/@smithy/node-config-provider": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz", - "integrity": "sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.8.tgz", + "integrity": "sha512-E0rU0DglpeJn5ge64mk8wTGEXcQwmpUTY5Zr7IzTpDLmHKiIamINERNZYrPQjg58Ck236sEKSwRSHA4CwshU6Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", + "@smithy/property-provider": "^3.1.7", + "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1620,16 +1634,16 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz", - "integrity": "sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.2.4.tgz", + "integrity": "sha512-49reY3+JgLMFNm7uTAKBWiKCA6XSvkNp9FqhVmusm2jpVnHORYFeFZ704LShtqWfjZW/nhX+7Iexyb6zQfXYIQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^3.1.1", - "@smithy/protocol-http": "^4.1.0", - "@smithy/querystring-builder": "^3.0.3", - "@smithy/types": "^3.3.0", + "@smithy/abort-controller": "^3.1.5", + "@smithy/protocol-http": "^4.1.4", + "@smithy/querystring-builder": "^3.0.7", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1637,13 +1651,13 @@ } }, "node_modules/@smithy/property-provider": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.3.tgz", - "integrity": "sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.7.tgz", + "integrity": "sha512-QfzLi1GPMisY7bAM5hOUqBdGYnY5S2JAlr201pghksrQv139f8iiiMalXtjczIP5f6owxFn3MINLNUNvUkgtPw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.3.0", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1651,13 +1665,13 @@ } }, "node_modules/@smithy/protocol-http": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.0.tgz", - "integrity": "sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.4.tgz", + "integrity": "sha512-MlWK8eqj0JlpZBnWmjQLqmFp71Ug00P+m72/1xQB3YByXD4zZ+y9N4hYrR0EDmrUCZIkyATWHOXFgtavwGDTzQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.3.0", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1665,13 +1679,13 @@ } }, "node_modules/@smithy/querystring-builder": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz", - "integrity": "sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.7.tgz", + "integrity": "sha512-65RXGZZ20rzqqxTsChdqSpbhA6tdt5IFNgG6o7e1lnPVLCe6TNWQq4rTl4N87hTDD8mV4IxJJnvyE7brbnRkQw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.3.0", + "@smithy/types": "^3.5.0", "@smithy/util-uri-escape": "^3.0.0", "tslib": "^2.6.2" }, @@ -1680,13 +1694,13 @@ } }, "node_modules/@smithy/querystring-parser": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz", - "integrity": "sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.7.tgz", + "integrity": "sha512-Fouw4KJVWqqUVIu1gZW8BH2HakwLz6dvdrAhXeXfeymOBrZw+hcqaWs+cS1AZPVp4nlbeIujYrKA921ZW2WMPA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.3.0", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1694,26 +1708,26 @@ } }, "node_modules/@smithy/service-error-classification": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz", - "integrity": "sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.7.tgz", + "integrity": "sha512-91PRkTfiBf9hxkIchhRKJfl1rsplRDyBnmyFca3y0Z3x/q0JJN480S83LBd8R6sBCkm2bBbqw2FHp0Mbh+ecSA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.3.0" + "@smithy/types": "^3.5.0" }, "engines": { "node": ">=16.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz", - "integrity": "sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.8.tgz", + "integrity": "sha512-0NHdQiSkeGl0ICQKcJQ2lCOKH23Nb0EaAa7RDRId6ZqwXkw4LJyIyZ0t3iusD4bnKYDPLGy2/5e2rfUhrt0Acw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.3.0", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1721,17 +1735,17 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.0.tgz", - "integrity": "sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.2.0.tgz", + "integrity": "sha512-LafbclHNKnsorMgUkKm7Tk7oJ7xizsZ1VwqhGKqoCIrXh4fqDDp73fK99HOEEgcsQbtemmeY/BPv0vTVYYUNEQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^3.0.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", + "@smithy/protocol-http": "^4.1.4", + "@smithy/types": "^3.5.0", "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-middleware": "^3.0.3", + "@smithy/util-middleware": "^3.0.7", "@smithy/util-uri-escape": "^3.0.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" @@ -1741,17 +1755,17 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.2.0.tgz", - "integrity": "sha512-pDbtxs8WOhJLJSeaF/eAbPgXg4VVYFlRcL/zoNYA5WbG3wBL06CHtBSg53ppkttDpAJ/hdiede+xApip1CwSLw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.4.0.tgz", + "integrity": "sha512-nOfJ1nVQsxiP6srKt43r2My0Gp5PLWCW2ASqUioxIiGmu6d32v4Nekidiv5qOmmtzIrmaD+ADX5SKHUuhReeBQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", - "@smithy/util-stream": "^3.1.3", + "@smithy/middleware-endpoint": "^3.1.4", + "@smithy/middleware-stack": "^3.0.7", + "@smithy/protocol-http": "^4.1.4", + "@smithy/types": "^3.5.0", + "@smithy/util-stream": "^3.1.9", "tslib": "^2.6.2" }, "engines": { @@ -1759,9 +1773,9 @@ } }, "node_modules/@smithy/types": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.3.0.tgz", - "integrity": "sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.5.0.tgz", + "integrity": "sha512-QN0twHNfe8mNJdH9unwsCK13GURU7oEAZqkBI+rsvpv1jrmserO+WnLE7jidR9W/1dxwZ0u/CB01mV2Gms/K2Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1772,14 +1786,14 @@ } }, "node_modules/@smithy/url-parser": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.3.tgz", - "integrity": "sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.7.tgz", + "integrity": "sha512-70UbSSR8J97c1rHZOWhl+VKiZDqHWxs/iW8ZHrHp5fCCPLSBE7GcUlUvKSle3Ca+J9LLbYCj/A79BxztBvAfpA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/querystring-parser": "^3.0.3", - "@smithy/types": "^3.3.0", + "@smithy/querystring-parser": "^3.0.7", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" } }, @@ -1849,15 +1863,15 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.15.tgz", - "integrity": "sha512-FZ4Psa3vjp8kOXcd3HJOiDPBCWtiilLl57r0cnNtq/Ga9RSDrM5ERL6xt+tO43+2af6Pn5Yp92x2n5vPuduNfg==", + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.23.tgz", + "integrity": "sha512-Y07qslyRtXDP/C5aWKqxTPBl4YxplEELG3xRrz2dnAQ6Lq/FgNrcKWmV561nNaZmFH+EzeGOX3ZRMbU8p1T6Nw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^3.1.3", - "@smithy/smithy-client": "^3.2.0", - "@smithy/types": "^3.3.0", + "@smithy/property-provider": "^3.1.7", + "@smithy/smithy-client": "^3.4.0", + "@smithy/types": "^3.5.0", "bowser": "^2.11.0", "tslib": "^2.6.2" }, @@ -1866,18 +1880,18 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.15.tgz", - "integrity": "sha512-KSyAAx2q6d0t6f/S4XB2+3+6aQacm3aLMhs9aLMqn18uYGUepbdssfogW5JQZpc6lXNBnp0tEnR5e9CEKmEd7A==", + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.23.tgz", + "integrity": "sha512-9Y4WH7f0vnDGuHUa4lGX9e2p+sMwODibsceSV6rfkZOvMC+BY3StB2LdO1NHafpsyHJLpwAgChxQ38tFyd6vkg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/config-resolver": "^3.0.5", - "@smithy/credential-provider-imds": "^3.2.0", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/smithy-client": "^3.2.0", - "@smithy/types": "^3.3.0", + "@smithy/config-resolver": "^3.0.9", + "@smithy/credential-provider-imds": "^3.2.4", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/property-provider": "^3.1.7", + "@smithy/smithy-client": "^3.4.0", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1885,14 +1899,14 @@ } }, "node_modules/@smithy/util-endpoints": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz", - "integrity": "sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.3.tgz", + "integrity": "sha512-34eACeKov6jZdHqS5hxBMJ4KyWKztTMulhuQ2UdOoP6vVxMLrOKUqIXAwJe/wiWMhXhydLW664B02CNpQBQ4Aw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^3.1.4", - "@smithy/types": "^3.3.0", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1913,13 +1927,13 @@ } }, "node_modules/@smithy/util-middleware": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.3.tgz", - "integrity": "sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.7.tgz", + "integrity": "sha512-OVA6fv/3o7TMJTpTgOi1H5OTwnuUa8hzRzhSFDtZyNxi6OZ70L/FHattSmhE212I7b6WSOJAAmbYnvcjTHOJCA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.3.0", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1927,14 +1941,14 @@ } }, "node_modules/@smithy/util-retry": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.3.tgz", - "integrity": "sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.7.tgz", + "integrity": "sha512-nh1ZO1vTeo2YX1plFPSe/OXaHkLAHza5jpokNiiKX2M5YpNUv6RxGJZhpfmiR4jSvVHCjIDmILjrxKmP+/Ghug==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^3.0.3", - "@smithy/types": "^3.3.0", + "@smithy/service-error-classification": "^3.0.7", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -1942,15 +1956,15 @@ } }, "node_modules/@smithy/util-stream": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.3.tgz", - "integrity": "sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.9.tgz", + "integrity": "sha512-7YAR0Ub3MwTMjDfjnup4qa6W8gygZMxikBhFMPESi6ASsl/rZJhwLpF/0k9TuezScCojsM0FryGdz4LZtjKPPQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/types": "^3.3.0", + "@smithy/fetch-http-handler": "^3.2.9", + "@smithy/node-http-handler": "^3.2.4", + "@smithy/types": "^3.5.0", "@smithy/util-base64": "^3.0.0", "@smithy/util-buffer-from": "^3.0.0", "@smithy/util-hex-encoding": "^3.0.0", @@ -1989,14 +2003,14 @@ } }, "node_modules/@smithy/util-waiter": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.1.2.tgz", - "integrity": "sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.1.6.tgz", + "integrity": "sha512-xs/KAwWOeCklq8aMlnpk25LgxEYHKOEodfjfKclDMLcBJEVEKzDLxZxBQyztcuPJ7F54213NJS8PxoiHNMdItQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^3.1.1", - "@smithy/types": "^3.3.0", + "@smithy/abort-controller": "^3.1.5", + "@smithy/types": "^3.5.0", "tslib": "^2.6.2" }, "engines": { @@ -2004,9 +2018,9 @@ } }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true, "license": "MIT", "peer": true @@ -2026,9 +2040,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.5.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.0.tgz", - "integrity": "sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==", + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2644,9 +2658,9 @@ } }, "node_modules/aws-sdk": { - "version": "2.1683.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1683.0.tgz", - "integrity": "sha512-uy53mN2oHU0Jx5tkH7qG6h/42DeMAQD5jMi/6294hVgGCa29MK/ZiFIOdkEJNS9tbB03RTabg+5i4c6DxBpG8g==", + "version": "2.1691.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1691.0.tgz", + "integrity": "sha512-/F2YC+DlsY3UBM2Bdnh5RLHOPNibS/+IcjUuhP8XuctyrN+MlL+fWDAiela32LTDk7hMy4rx8MTgvbJ+0blO5g==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -2677,9 +2691,9 @@ } }, "node_modules/b4a": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", - "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", "dev": true, "license": "Apache-2.0" }, @@ -2705,9 +2719,9 @@ "license": "MIT" }, "node_modules/bare-events": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz", - "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", + "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", "dev": true, "license": "Apache-2.0", "optional": true @@ -2820,9 +2834,9 @@ } }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "license": "MIT", "dependencies": { "bytes": "3.1.2", @@ -2833,7 +2847,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -2889,9 +2903,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", + "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", "dev": true, "funding": [ { @@ -2910,8 +2924,8 @@ "license": "MIT", "peer": true, "dependencies": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", + "caniuse-lite": "^1.0.30001663", + "electron-to-chromium": "^1.5.28", "node-releases": "^2.0.18", "update-browserslist-db": "^1.1.0" }, @@ -2991,9 +3005,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001653", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz", - "integrity": "sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==", + "version": "1.0.30001667", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz", + "integrity": "sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==", "dev": true, "funding": [ { @@ -3362,13 +3376,13 @@ } }, "node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -3542,9 +3556,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", - "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==", + "version": "1.5.33", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.33.tgz", + "integrity": "sha512-+cYTcFB1QqD4j4LegwLfpCNxifb6dDFUAwk6RsLusCwIaZI6or2f+q8rs5tTB2YC53HhOlIbEaqHMAAC8IOIwA==", "dev": true, "license": "ISC", "peer": true @@ -3557,9 +3571,9 @@ "license": "MIT" }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -3767,9 +3781,9 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "license": "MIT", "engines": { @@ -3796,17 +3810,18 @@ } }, "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -3894,9 +3909,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.2.tgz", - "integrity": "sha512-3XnC5fDyc8M4J2E8pt8pmSVRX2M+5yWMCfI/kDZwauQeFgzQOuhcRBFKjTeJagqgk4sFKxe1mvNVnaWwImx/Tg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "dev": true, "license": "MIT", "dependencies": { @@ -3922,35 +3937,37 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, "license": "MIT", "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", "array.prototype.flat": "^1.3.2", "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "node_modules/eslint-plugin-import/node_modules/debug": { @@ -4129,37 +4146,37 @@ } }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -4377,13 +4394,13 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "license": "MIT", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -6415,10 +6432,13 @@ } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "license": "MIT" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", @@ -6516,10 +6536,9 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, "node_modules/mute-stdout": { @@ -6989,9 +7008,9 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "license": "MIT" }, "node_modules/path-type": { @@ -7018,9 +7037,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", "dev": true, "license": "ISC" }, @@ -7121,12 +7140,12 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -7257,16 +7276,16 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -7500,13 +7519,13 @@ "license": "MIT" }, "node_modules/sass": { - "version": "1.77.8", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", - "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==", + "version": "1.79.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.79.4.tgz", + "integrity": "sha512-K0QDSNPXgyqO4GZq2HO5Q70TLxTH6cIT59RdoCHMivrC8rqzaTw5ab9prjz9KUN1El4FLXrBXJhik61JR4HcGg==", "dev": true, "license": "MIT", "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", + "chokidar": "^4.0.0", "immutable": "^4.0.0", "source-map-js": ">=0.6.2 <2.0.0" }, @@ -7517,6 +7536,36 @@ "node": ">=14.0.0" } }, + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sass/node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", @@ -7567,9 +7616,9 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "license": "MIT", "dependencies": { "debug": "2.6.9", @@ -7605,11 +7654,14 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, "node_modules/serialize-javascript": { "version": "6.0.2", @@ -7622,15 +7674,15 @@ } }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "license": "MIT", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" @@ -7740,9 +7792,9 @@ } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -7820,9 +7872,9 @@ "license": "MIT" }, "node_modules/streamx": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.19.0.tgz", - "integrity": "sha512-5z6CNR4gtkPbwlxyEqoDGDmWIzoNJqCBt4Eac1ICP9YaIT08ct712cFj0u1rx4F8luAuL+3Qc+RFIdI4OX00kg==", + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", + "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", "dev": true, "license": "MIT", "dependencies": { @@ -8031,9 +8083,9 @@ } }, "node_modules/terser": { - "version": "5.31.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", - "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", + "version": "5.34.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.34.1.tgz", + "integrity": "sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -8092,9 +8144,9 @@ "license": "MIT" }, "node_modules/text-decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.1.tgz", - "integrity": "sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.0.tgz", + "integrity": "sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -8417,9 +8469,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "dev": true, "funding": [ { @@ -8438,8 +8490,8 @@ "license": "MIT", "peer": true, "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -8680,9 +8732,9 @@ } }, "node_modules/webpack": { - "version": "5.94.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", - "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", + "version": "5.95.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", + "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", "dev": true, "license": "MIT", "peer": true, diff --git a/package.json b/package.json index 22b50b0..9c7d01e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ws4kp", - "version": "5.12.0", + "version": "5.13.0", "description": "Welcome to the WeatherStar 4000+ project page!", "main": "index.js", "scripts": { @@ -48,4 +48,4 @@ "express": "^4.17.1", "ejs": "^3.1.5" } -} \ No newline at end of file +} diff --git a/server/scripts/modules/hazards.mjs b/server/scripts/modules/hazards.mjs index 7a55fdb..fed60b2 100644 --- a/server/scripts/modules/hazards.mjs +++ b/server/scripts/modules/hazards.mjs @@ -3,13 +3,19 @@ import STATUS from './status.mjs'; import { json } from './utils/fetch.mjs'; import WeatherDisplay from './weatherdisplay.mjs'; -import { registerDisplay } from './navigation.mjs'; +import { registerDisplay, msg } from './navigation.mjs'; const hazardLevels = { Extreme: 10, Severe: 5, }; +const hazardModifiers = { + 'Hurricane Warning': 2, + 'Tornado Warning': 3, + 'Severe Thunderstorm Warning': 1, +} + class Hazards extends WeatherDisplay { constructor(navId, elemId, defaultActive) { // special height and width for scrolling @@ -34,8 +40,9 @@ class Hazards extends WeatherDisplay { url.searchParams.append('limit', 5); const alerts = await json(url, { retryCount: 3, stillWaiting: () => this.stillWaiting() }); const unsortedAlerts = alerts.features ?? []; - const sortedAlerts = unsortedAlerts.sort((a, b) => (hazardLevels[b.properties.severity] ?? 0) - (hazardLevels[a.properties.severity] ?? 0)); - const filteredAlerts = sortedAlerts.filter((hazard) => hazard.properties.severity !== 'Unknown'); + const hasImmediate = unsortedAlerts.reduce((acc, hazard) => acc || hazard.properties.urgency === 'Immediate', false); + const sortedAlerts = unsortedAlerts.sort((a, b) => (calcSeverity(b.properties.severity, b.properties.event)) - (calcSeverity(a.properties.severity, a.properties.event))); + const filteredAlerts = sortedAlerts.filter((hazard) => hazard.properties.severity !== 'Unknown' && (!hasImmediate || (hazard.properties.urgency === 'Immediate'))); this.data = filteredAlerts; // show alert indicator @@ -134,6 +141,25 @@ class Hazards extends WeatherDisplay { this.getDataCallbacks.push(() => resolve(this.data)); }); } + + // after we roll through the hazards once, don't display again until the next refresh (10 minutes) + screenIndexFromBaseCount() { + const superValue = super.screenIndexFromBaseCount(); + // false is returned when we reach the end of the scroll + if (superValue === false) { + // set total screens to zero to take this out of the rotation + this.timing.totalScreens = 0; + } + // return the value as expected + return superValue; + } +} + +const calcSeverity = (severity, event) => { + // base severity plus some modifiers for specific types of warnings + const baseSeverity = hazardLevels[severity] ?? 0; + const modifiedSeverity = hazardModifiers[event] ?? 0; + return baseSeverity + modifiedSeverity; } // register display diff --git a/server/scripts/modules/icons.mjs b/server/scripts/modules/icons.mjs index 0b9f345..d1cc5eb 100644 --- a/server/scripts/modules/icons.mjs +++ b/server/scripts/modules/icons.mjs @@ -20,57 +20,57 @@ const getWeatherRegionalIconFromIconLink = (link, _isNightTime) => { // find the icon switch (conditionName + (isNightTime ? '-n' : '')) { - case 'skc': - case 'hot': - case 'haze': - return addPath('Sunny.gif'); - - case 'skc-n': - case 'nskc': - case 'nskc-n': - case 'cold-n': - return addPath('Clear-1992.gif'); - - case 'bkn': - return addPath('Mostly-Cloudy-1994-2.gif'); - - case 'bkn-n': - case 'few-n': - case 'nfew-n': - case 'nfew': - return addPath('Partly-Clear-1994-2.gif'); - - case 'sct': - case 'few': - return addPath('Partly-Cloudy.gif'); - - case 'sct-n': - case 'nsct': - case 'nsct-n': - return addPath('Mostly-Clear.gif'); - - case 'ovc': - case 'ovc-n': - return addPath('Cloudy.gif'); - - case 'fog': - case 'fog-n': - return addPath('Fog.gif'); - - case 'rain_sleet': - return addPath('Sleet.gif'); - - case 'rain_showers': - case 'rain_showers_high': - return addPath('Scattered-Showers-1994-2.gif'); - - case 'rain_showers-n': - case 'rain_showers_high-n': - return addPath('Scattered-Showers-Night-1994-2.gif'); - - case 'rain': - case 'rain-n': - return addPath('Rain-1992.gif'); + case 'skc': + case 'hot': + case 'haze': + return addPath('Sunny.gif'); + + case 'skc-n': + case 'nskc': + case 'nskc-n': + case 'cold-n': + return addPath('Clear-1992.gif'); + + case 'bkn': + return addPath('Mostly-Cloudy-1994-2.gif'); + + case 'bkn-n': + case 'few-n': + case 'nfew-n': + case 'nfew': + return addPath('Partly-Clear-1994-2.gif'); + + case 'sct': + case 'few': + return addPath('Partly-Cloudy.gif'); + + case 'sct-n': + case 'nsct': + case 'nsct-n': + return addPath('Mostly-Clear.gif'); + + case 'ovc': + case 'ovc-n': + return addPath('Cloudy.gif'); + + case 'fog': + case 'fog-n': + return addPath('Fog.gif'); + + case 'rain_sleet': + return addPath('Sleet.gif'); + + case 'rain_showers': + case 'rain_showers_high': + return addPath('Scattered-Showers-1994-2.gif'); + + case 'rain_showers-n': + case 'rain_showers_high-n': + return addPath('Scattered-Showers-Night-1994-2.gif'); + + case 'rain': + case 'rain-n': + return addPath('Rain-1992.gif'); // case 'snow': // return addPath('Light-Snow.gif'); @@ -81,75 +81,75 @@ const getWeatherRegionalIconFromIconLink = (link, _isNightTime) => { // return addPath('AM-Snow-1994.gif'); // break; - case 'snow': - case 'snow-n': - if (value > 50) return addPath('Heavy-Snow-1994-2.gif'); - return addPath('Light-Snow.gif'); - - case 'rain_snow': - case 'rain_snow-n': - return addPath('Rain-Snow-1992.gif'); - - case 'snow_fzra': - case 'snow_fzra-n': - return addPath('Freezing-Rain-Snow-1992.gif'); - - case 'fzra': - case 'fzra-n': - case 'rain_fzra': - case 'rain_fzra-n': - return addPath('Freezing-Rain-1992.gif'); - - case 'snow_sleet': - case 'snow_sleet-n': - return addPath('Snow and Sleet.gif'); - - case 'sleet': - case 'sleet-n': - return addPath('Sleet.gif'); - - case 'tsra_sct': - case 'tsra': - return addPath('Scattered-Tstorms-1994-2.gif'); - - case 'tsra_sct-n': - case 'tsra-n': - return addPath('Scattered-Tstorms-Night-1994-2.gif'); - - case 'tsra_hi': - case 'tsra_hi-n': - case 'hurricane': - case 'tropical_storm': - return addPath('Thunderstorm.gif'); - - case 'wind': - case 'wind_few': - case 'wind_sct': - case 'wind_bkn': - case 'wind_ovc': - case 'wind-n': - case 'wind_few-n': - case 'wind_bkn-n': - case 'wind_ovc-n': - return addPath('Wind.gif'); - - case 'wind_skc': - return addPath('Sunny-Wind-1994.gif'); - - case 'wind_skc-n': - case 'wind_sct-n': - return addPath('Clear-Wind-1994.gif'); - - case 'blizzard': - case 'blizzard-n': - return addPath('Blowing Snow.gif'); - - case 'cold': - return addPath('cold.gif'); - - default: - console.log(`Unable to locate regional icon for ${conditionName} ${link} ${isNightTime}`); - return false; + case 'snow': + case 'snow-n': + if (value > 50) return addPath('Heavy-Snow-1994-2.gif'); + return addPath('Light-Snow.gif'); + + case 'rain_snow': + case 'rain_snow-n': + return addPath('Rain-Snow-1992.gif'); + + case 'snow_fzra': + case 'snow_fzra-n': + return addPath('Freezing-Rain-Snow-1992.gif'); + + case 'fzra': + case 'fzra-n': + case 'rain_fzra': + case 'rain_fzra-n': + return addPath('Freezing-Rain-1992.gif'); + + case 'snow_sleet': + case 'snow_sleet-n': + return addPath('Snow and Sleet.gif'); + + case 'sleet': + case 'sleet-n': + return addPath('Sleet.gif'); + + case 'tsra_sct': + case 'tsra': + return addPath('Scattered-Tstorms-1994-2.gif'); + + case 'tsra_sct-n': + case 'tsra-n': + return addPath('Scattered-Tstorms-Night-1994-2.gif'); + + case 'tsra_hi': + case 'tsra_hi-n': + case 'hurricane': + case 'tropical_storm': + return addPath('Thunderstorm.gif'); + + case 'wind': + case 'wind_few': + case 'wind_sct': + case 'wind_bkn': + case 'wind_ovc': + case 'wind-n': + case 'wind_few-n': + case 'wind_bkn-n': + case 'wind_ovc-n': + return addPath('Wind.gif'); + + case 'wind_skc': + return addPath('Sunny-Wind-1994.gif'); + + case 'wind_skc-n': + case 'wind_sct-n': + return addPath('Clear-Wind-1994.gif'); + + case 'blizzard': + case 'blizzard-n': + return addPath('Blowing Snow.gif'); + + case 'cold': + return addPath('cold.gif'); + + default: + console.log(`Unable to locate regional icon for ${conditionName} ${link} ${isNightTime}`); + return false; } }; @@ -175,58 +175,58 @@ const getWeatherIconFromIconLink = (link, _isNightTime) => { // find the icon switch (conditionName + (isNightTime ? '-n' : '')) { - case 'skc': - case 'hot': - case 'haze': - case 'cold': - return addPath('CC_Clear1.gif'); - - case 'skc-n': - case 'nskc': - case 'nskc-n': - case 'cold-n': - return addPath('CC_Clear0.gif'); - - case 'sct': - case 'few': - case 'bkn': - return addPath('CC_PartlyCloudy1.gif'); - - case 'bkn-n': - case 'few-n': - case 'nfew-n': - case 'nfew': - case 'sct-n': - case 'nsct': - case 'nsct-n': - return addPath('CC_PartlyCloudy0.gif'); - - case 'ovc': - case 'novc': - case 'ovc-n': - return addPath('CC_Cloudy.gif'); - - case 'fog': - case 'fog-n': - return addPath('CC_Fog.gif'); - - case 'rain_sleet': - case 'rain_sleet-n': - case 'sleet': - case 'sleet-n': - return addPath('Sleet.gif'); - - case 'rain_showers': - case 'rain_showers_high': - return addPath('CC_Showers.gif'); - - case 'rain_showers-n': - case 'rain_showers_high-n': - return addPath('CC_Showers.gif'); - - case 'rain': - case 'rain-n': - return addPath('CC_Rain.gif'); + case 'skc': + case 'hot': + case 'haze': + case 'cold': + return addPath('CC_Clear1.gif'); + + case 'skc-n': + case 'nskc': + case 'nskc-n': + case 'cold-n': + return addPath('CC_Clear0.gif'); + + case 'sct': + case 'few': + case 'bkn': + return addPath('CC_PartlyCloudy1.gif'); + + case 'bkn-n': + case 'few-n': + case 'nfew-n': + case 'nfew': + case 'sct-n': + case 'nsct': + case 'nsct-n': + return addPath('CC_PartlyCloudy0.gif'); + + case 'ovc': + case 'novc': + case 'ovc-n': + return addPath('CC_Cloudy.gif'); + + case 'fog': + case 'fog-n': + return addPath('CC_Fog.gif'); + + case 'rain_sleet': + case 'rain_sleet-n': + case 'sleet': + case 'sleet-n': + return addPath('Sleet.gif'); + + case 'rain_showers': + case 'rain_showers_high': + return addPath('CC_Showers.gif'); + + case 'rain_showers-n': + case 'rain_showers_high-n': + return addPath('CC_Showers.gif'); + + case 'rain': + case 'rain-n': + return addPath('CC_Rain.gif'); // case 'snow': // return addPath('Light-Snow.gif'); @@ -237,58 +237,60 @@ const getWeatherIconFromIconLink = (link, _isNightTime) => { // return addPath('AM-Snow-1994.gif'); // break; - case 'snow': - case 'snow-n': - if (value > 50) return addPath('CC_Snow.gif'); - return addPath('CC_SnowShowers.gif'); - - case 'rain_snow': - return addPath('CC_RainSnow.gif'); - - case 'snow_fzra': - case 'snow_fzra-n': - case 'fzra': - case 'fzra-n': - case 'rain_fzra': - case 'rain_fzra-n': - return addPath('CC_FreezingRain.gif'); - - case 'snow_sleet': - return addPath('Snow-Sleet.gif'); - - case 'tsra_sct': - case 'tsra': - return addPath('EF_ScatTstorms.gif'); - - case 'tsra_sct-n': - case 'tsra-n': - return addPath('CC_TStorm.gif'); - - case 'tsra_hi': - case 'tsra_hi-n': - case 'hurricane': - case 'tropical_storm': - return addPath('CC_TStorm.gif'); - - case 'wind_few': - case 'wind_sct': - case 'wind_bkn': - case 'wind_ovc': - case 'wind_skc': - case 'wind_few-n': - case 'wind_bkn-n': - case 'wind_ovc-n': - case 'wind_skc-n': - case 'wind_sct-n': - return addPath('CC_Windy.gif'); - - case 'blizzard': - case 'blizzard-n': - return addPath('Blowing-Snow.gif'); - - default: - console.log(`Unable to locate icon for ${conditionName} ${link} ${isNightTime}`); - return false; + case 'snow': + case 'snow-n': + if (value > 50) return addPath('CC_Snow.gif'); + return addPath('CC_SnowShowers.gif'); + + case 'rain_snow': + return addPath('CC_RainSnow.gif'); + + case 'snow_fzra': + case 'snow_fzra-n': + case 'fzra': + case 'fzra-n': + case 'rain_fzra': + case 'rain_fzra-n': + return addPath('CC_FreezingRain.gif'); + + case 'snow_sleet': + return addPath('Snow-Sleet.gif'); + + case 'tsra_sct': + case 'tsra': + return addPath('EF_ScatTstorms.gif'); + + case 'tsra_sct-n': + case 'tsra-n': + return addPath('CC_TStorm.gif'); + + case 'tsra_hi': + case 'tsra_hi-n': + case 'hurricane': + case 'tropical_storm': + case 'hurricane-n': + case 'tropical_storm-n': + return addPath('CC_TStorm.gif'); + + case 'wind_few': + case 'wind_sct': + case 'wind_bkn': + case 'wind_ovc': + case 'wind_skc': + case 'wind_few-n': + case 'wind_bkn-n': + case 'wind_ovc-n': + case 'wind_skc-n': + case 'wind_sct-n': + return addPath('CC_Windy.gif'); + + case 'blizzard': + case 'blizzard-n': + return addPath('Blowing-Snow.gif'); + + default: + console.log(`Unable to locate icon for ${conditionName} ${link} ${isNightTime}`); + return false; } }; From d3daf4d5a9a36b0cf24e99788ddc2cc6e360ad3f Mon Sep 17 00:00:00 2001 From: Matt Walsh Date: Tue, 8 Oct 2024 20:42:03 -0500 Subject: [PATCH 2/3] night time hurricane icons 5.13.1 --- .eslintrc.js | 3 +++ .vscode/settings.json | 7 ++++--- dist/index.html | 2 +- dist/resources/ws.min.js | 2 +- package-lock.json | 4 ++-- package.json | 2 +- server/scripts/modules/icons.mjs | 30 ++++++++++++++++-------------- 7 files changed, 28 insertions(+), 22 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 31b5752..89eac82 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -29,6 +29,9 @@ module.exports = { indent: [ 'error', 'tab', + { + SwitchCase: 1 + }, ], 'no-tabs': 0, 'no-console': 0, diff --git a/.vscode/settings.json b/.vscode/settings.json index b33c711..4768b92 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,8 +7,6 @@ "format": "compressed", "extensionName": ".css", "savePath": "/server/styles", - "savePathSegmentKeys": null, - "savePathReplaceSegmentsWith": null } ], "search.exclude": { @@ -21,5 +19,8 @@ "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" - } + }, + "eslint.validate": [ + "javascript" + ] } \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index 89c4895..b43fb28 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1 +1 @@ -WeatherStar 4000+
WeatherStar 4000+
v5.13.0
Enter your location above to continue
WeatherStar
4000+ v5.13.0
Current Conditions
Hourly Forecast
TEMP
WIND
Hourly Graph
Temperature
Cloud %
Precip %
75
65
55
12a
6a
12p
6p
12a
Travel Forecast
For
LOW
HIGH
Current
Conditions
Wind:
Humidity:
Dewpoint:
Ceiling:
Visibility:
Pressure:
Local
Forecast
Latest
Observations
°F
°C
Weather
Wind
Regional
Observations
Almanac
Monday
Tuesday
Sunrise:
6:24 am
6:25 am
Sunset:
6:24 am
6:25 am
Moon Data:
Extended
Forecast
Lo
Hi
Local
Radar
PRECIP
Light
Heavy

Selected displays
Settings
Sharing
Copy Permalink Link copied to clipboard!
Forecast Information
Location:
Station Id:
Radar Id:
Zone Id:
Last Update: (None)
\ No newline at end of file +WeatherStar 4000+
WeatherStar 4000+
v5.13.1
Enter your location above to continue
WeatherStar
4000+ v5.13.1
Current Conditions
Hourly Forecast
TEMP
WIND
Hourly Graph
Temperature
Cloud %
Precip %
75
65
55
12a
6a
12p
6p
12a
Travel Forecast
For
LOW
HIGH
Current
Conditions
Wind:
Humidity:
Dewpoint:
Ceiling:
Visibility:
Pressure:
Local
Forecast
Latest
Observations
°F
°C
Weather
Wind
Regional
Observations
Almanac
Monday
Tuesday
Sunrise:
6:24 am
6:25 am
Sunset:
6:24 am
6:25 am
Moon Data:
Extended
Forecast
Lo
Hi
Local
Radar
PRECIP
Light
Heavy

Selected displays
Settings
Sharing
Copy Permalink Link copied to clipboard!
Forecast Information
Location:
Station Id:
Radar Id:
Zone Id:
Last Update: (None)
\ No newline at end of file diff --git a/dist/resources/ws.min.js b/dist/resources/ws.min.js index 62cd426..6a7547d 100644 --- a/dist/resources/ws.min.js +++ b/dist/resources/ws.min.js @@ -1 +1 @@ -(()=>{"use strict";var e={652:(e,t,n)=>{var s=n(440),r=n(430),a=n(211),i=n(413),o=n(999),l=n(302);document.addEventListener("DOMContentLoaded",(()=>{m()}));const c=["Land Features","Bay","Channel","Cove","Dam","Delta","Gulf","Lagoon","Lake","Ocean","Reef","Reservoir","Sea","Sound","Strait","Waterfall","Wharf","Amusement Park","Historical Monument","Landmark","Tourist Attraction","Zoo","College","Beach","Campground","Golf Course","Harbor","Nature Reserve","Other Parks and Outdoors","Park","Racetrack","Scenic Overlook","Ski Resort","Sports Center","Sports Field","Wildlife Reserve","Airport","Ferry","Marina","Pier","Port","Resort","Postal","Populated Place"].join(","),u="#txtAddress",d="#ToggleFullScreen",h="#btnGetGps",m=()=>{document.querySelector(u).addEventListener("focus",(e=>{e.target.select()})),(0,a.Fx)(b),document.querySelector("#NavigateMenu").addEventListener("click",S),document.querySelector("#NavigateRefresh").addEventListener("click",C),document.querySelector("#NavigateNext").addEventListener("click",T),document.querySelector("#NavigatePrevious").addEventListener("click",x),document.querySelector("#NavigatePlay").addEventListener("click",I),document.querySelector(d).addEventListener("click",y);const e=document.querySelector(h);e.addEventListener("click",O),navigator.geolocation||(e.style.display="none"),document.querySelector("#divTwc").addEventListener("mousemove",(()=>{document.fullscreenElement&&D()})),window.addEventListener("resize",E),E.wasFull=!1,document.querySelector(u).addEventListener("keydown",(e=>{"Enter"===e.code&&t()})),document.querySelector("#btnGetLatLng").addEventListener("click",(()=>t())),document.addEventListener("keydown",M),document.addEventListener("touchmove",(e=>{document.fullscreenElement&&e.preventDefault()})),$(u).devbridgeAutocomplete({serviceUrl:"https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/suggest",deferRequestBy:300,paramName:"text",params:{f:"json",countryCode:"USA",category:c,maxSuggestions:10},dataType:"json",transformResult:e=>({suggestions:e.suggestions.map((e=>({value:e.text,data:e.magicKey})))}),minChars:3,showNoSuggestionNotice:!0,noSuggestionNotice:"No results found. Please try a different search string.",onSelect(e){f(e,this)},width:490});const t=()=>{const e=$(u).devbridgeAutocomplete();return e.suggestions[0]&&$(e.suggestionsContainer.children[0]).trigger("click"),!1},n=(0,o.J)(),s=n.latLonQuery&&n.latLon,r=n.latLonQuery??localStorage.getItem("latLonQuery"),i=n.latLon??localStorage.getItem("latLon"),m=localStorage.getItem("latLonFromGPS")&&!s;if(r&&i&&!m){document.querySelector(u).value=r,b(JSON.parse(i))}m&&O(),l.A.kiosk.value="true"===n["settings-kiosk-checkbox"];const g=n["settings-kiosk-checkbox"]??localStorage.getItem("play");null!==g&&"true"!==g||N("navButton","play"),document.querySelector("#btnClearQuery").addEventListener("click",(()=>{document.querySelector("#spanCity").innerHTML="",document.querySelector("#spanState").innerHTML="",document.querySelector("#spanStationId").innerHTML="",document.querySelector("#spanRadarId").innerHTML="",document.querySelector("#spanZoneId").innerHTML="",document.querySelector("#chkAutoRefresh").checked=!0,localStorage.removeItem("autoRefresh"),localStorage.removeItem("play"),N("navButton","play"),localStorage.removeItem("latLonQuery"),localStorage.removeItem("latLon"),localStorage.removeItem("latLonFromGPS"),document.querySelector(h).classList.remove("active")})),document.querySelector("#container").addEventListener("swiped-left",(()=>k("left"))),document.querySelector("#container").addEventListener("swiped-right",(()=>k("right")))},f=async(e,t)=>{if(t.previousSuggestionValue===e.value)return;const n=(await(0,s.Pq)("https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/find",{data:{text:e.value,magicKey:e.data,f:"json"}})).locations[0];n?(localStorage.removeItem("latLonFromGPS"),document.querySelector(h).classList.remove("active"),g(n.feature.geometry)):console.error("An unexpected error occurred. Please try a different search string.")},g=(e,t)=>{const n={lat:(0,i.X4)(e.y,4),lon:(0,i.X4)(e.x,4)};localStorage.setItem("latLonQuery",document.querySelector(u).value),localStorage.setItem("latLon",JSON.stringify(n)),b(n,t)},y=()=>(document.fullscreenElement?w():p(),(0,a.F4)()?(0,r.A)(!0):(0,r.A)(!1),D(),!1),p=()=>{const e=document.querySelector("#divTwc"),t=e.requestFullScreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullscreen;t?t.call(e,{navigationUI:"hide"}):window.scrollTo(0,0),(0,a.XR)(),D();const n=document.querySelector(d);n.src="images/nav/ic_fullscreen_exit_white_24dp_2x.png",n.title="Exit fullscreen"},w=()=>{document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen(),(0,a.XR)(),v()},v=()=>{const e=document.querySelector(d);e.src="images/nav/ic_fullscreen_white_24dp_2x.png",e.title="Enter fullscreen",document.querySelector("#divTwc").classList.remove("no-cursor");const t=document.querySelector("#divTwcBottom");t.classList.remove("hidden"),t.classList.add("visible")},S=()=>(N("navButton","menu"),!1),b=(e,t)=>{e&&(b.latLon=e);const{latLon:n}=b;n&&(document.querySelector(u).blur(),(0,a.K$)(),(0,a.u6)(n,t))},k=e=>{if("left"===e)T();else x()},C=()=>((0,a.kY)(),b(),!1),T=()=>(N("navButton","next"),!1),x=()=>(N("navButton","previous"),!1);let L=null;const D=()=>{document.activeElement.blur();const e=document.querySelector("#divTwcBottom");e.classList.remove("hidden"),e.classList.add("visible"),document.querySelector("#divTwc").classList.remove("no-cursor"),L&&(clearTimeout(L),L=null),L=setTimeout((()=>{document.fullscreenElement&&(e.classList.remove("visible"),e.classList.add("hidden"),document.querySelector("#divTwc").classList.add("no-cursor"))}),2e3)},M=e=>{const{key:t}=e;if(document.fullscreenElement||document.activeElement===document.body)switch(t){case" ":return e.preventDefault(),I(),!1;case"ArrowRight":case"PageDown":return e.preventDefault(),T(),!1;case"ArrowLeft":case"PageUp":return e.preventDefault(),x(),!1;case"ArrowUp":return e.preventDefault(),S(),!1;case"0":return C(),!1;case"F":case"f":return y(),!1}return!1},I=()=>(N("navButton","playToggle"),!1),N=(e,t={})=>{(0,a.iU)({type:e,message:t})},O=async()=>{if(!navigator.geolocation)return;const e=document.querySelector(h);if(e.classList.contains("active"))return e.classList.remove("active"),void localStorage.removeItem("latLonFromGPS");e.classList.add("active");const t=await(async()=>new Promise((e=>{navigator.geolocation.getCurrentPosition(e)})))(),{latitude:n,longitude:s}=t.coords,r=document.querySelector(u);r.value=`${(0,i.X4)(n,4)}, ${(0,i.X4)(s,4)}`,g({y:n,x:s},(e=>{const t=e.properties.relativeLocation.properties,a=`${t.city}, ${t.state}`;localStorage.setItem("latLon",JSON.stringify({lat:n,lon:s})),localStorage.setItem("latLonQuery",a),localStorage.setItem("latLonFromGPS",!0),r.value=`${t.city}, ${t.state}`}))},E=()=>{E.wasFull&&!document.fullscreenElement&&v(),!E.wasFull&&document.fullscreenElement,E.wasFull=!!document.fullscreenElement}},247:(e,t,n)=>{n.d(t,{A:()=>d});var s=n(47),r=n(125),a=n(592),i=n(24),o=n(211);class l extends i.A{constructor(e,t){super(e,t,"Almanac",!0),this.backgroundImage0=(0,s.u)("images/BackGround3_1.png"),(0,s.b)("images/2/Full-Moon.gif"),(0,s.b)("images/2/Last-Quarter.gif"),(0,s.b)("images/2/New-Moon.gif"),(0,s.b)("images/2/First-Quarter.gif"),this.timing.totalScreens=1}async getData(e){const t=super.getData(e),n=e??this.weatherParameters,{sun:s,moon:r}=this.calcSunMoonData(n);this.data={sun:s,moon:r},this.getDataCallback(),t&&this.setStatus(a.Ay.loaded)}calcSunMoonData(e){const t=[SunCalc.getTimes(new Date,e.latitude,e.longitude),SunCalc.getTimes(r.c9.local().plus({days:1}).toJSDate(),e.latitude,e.longitude)],n=[];let s=r.c9.local().minus({days:1}),{phase:a}=SunCalc.getMoonIllumination(s.toJSDate()),i=0;do{const e=a;s=s.plus({days:1}),a=SunCalc.getMoonIllumination(s.toJSDate()).phase,e<.25&&a>=.25&&n.push(this.getMoonTransition(.25,"First",s)),e<.5&&a>=.5&&n.push(this.getMoonTransition(.5,"Full",s)),e<.75&&a>=.75&&n.push(this.getMoonTransition(.75,"Last",s)),e>a&&n.push(this.getMoonTransition(0,"New",s)),i+=1}while(i<=30&&n.length<4);return{sun:t,moon:n}}getMoonTransition(e,t,n,s=0){let r=n,{phase:a}=SunCalc.getMoonIllumination(r.toJSDate()),i=0;const o={hours:0===s?-1:0,minutes:1===s?1:0,seconds:2===s?-1:0,milliseconds:3===s?1:0};let l=(t,n)=>t=e;s%2==0&&(l=(t,n)=>t>e&&n<=e);do{const n=a;if(r=r.plus(o),a=SunCalc.getMoonIllumination(r.toJSDate()).phase,a>.9&&(a-=1),l(n,a)){if(s>=3)break;return this.getMoonTransition(e,t,r,s+1)}i+=1}while(i<1e3);return{phase:t,date:r}}async drawCanvas(){super.drawCanvas();const e=this.data,t=r.c9.local(),n=t.plus({days:1});this.elem.querySelector(".day-1").innerHTML=t.toLocaleString({weekday:"long"}),this.elem.querySelector(".day-2").innerHTML=n.toLocaleString({weekday:"long"}),this.elem.querySelector(".rise-1").innerHTML=r.c9.fromJSDate(e.sun[0].sunrise).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".rise-2").innerHTML=r.c9.fromJSDate(e.sun[1].sunrise).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".set-1").innerHTML=r.c9.fromJSDate(e.sun[0].sunset).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".set-2").innerHTML=r.c9.fromJSDate(e.sun[1].sunset).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase();const s=e.moon.map((e=>{const t={},n=e.date.toLocaleString({month:"short",day:"numeric"});return t.date=n,t.type=e.phase,t.icon={type:"img",src:c(e.phase)},this.fillTemplate("day",t)})),a=this.elem.querySelector(".moon .days");a.innerHTML="",a.append(...s),this.finishDraw()}async getSun(){return new Promise((e=>{this.data&&e(this.data),this.getDataCallbacks.push(e)}))}}const c=e=>{switch(e){case"Full":return"images/2/Full-Moon.gif";case"Last":return"images/2/Last-Quarter.gif";case"New":return"images/2/New-Moon.gif";default:return"images/2/First-Quarter.gif"}},u=new l(9,"almanac");(0,o.Kb)(u);const d=u.getSun.bind(u)},423:(e,t,n)=>{n.d(t,{A:()=>p});var s=n(592),r=n(47),a=n(440),i=n(519),o=n(891),l=n(716),c=n(24),u=n(211),d=n(413);const h=["U","C","H","W","Y","T","S","M","O","L","A","F","B","N","V","R","D","E","I","G","J"];class m extends c.A{constructor(e,t){super(e,t,"Current Conditions",!0),this.backgroundImage=(0,r.u)("images/BackGround1_1.png")}async getData(e){const t=super.getData(e),n=(e??this.weatherParameters).stations.filter((e=>4===e?.properties?.stationIdentifier?.length&&!h.includes(e.properties.stationIdentifier.slice(0,1))));let i,o,c=0;for(;!i&&cthis.stillWaiting()}),null===i.features[0].properties.temperature.value||null===i.features[0].properties.windSpeed.value||null===i.features[0].properties.textDescription||""===i.features[0].properties.textDescription||null===i.features[0].properties.icon)throw i=void 0,new Error(`Unable to get observations: ${o.properties.stationIdentifier}, trying next station`)}catch(e){console.error(e)}}if(!i)return console.error("All current weather stations exhausted"),this.isEnabled&&this.setStatus(s.Ay.failed),void this.getDataCallback(void 0);this.data=g({...i,station:o}),this.getDataCallback(),t&&((0,r.b)((0,l.XV)(i.features[0].properties.icon)),this.setStatus(s.Ay.loaded))}async drawCanvas(){super.drawCanvas();let e=this.data.observations.textDescription;e.length>15&&(e=f(e));const t={temp:this.data.Temperature+String.fromCharCode(176),condition:e,wind:this.data.WindDirection.padEnd(3,"")+this.data.WindSpeed.toString().padStart(3," "),location:(0,o.C)(this.data.station.properties.name).substr(0,20),humidity:`${this.data.Humidity}%`,dewpoint:this.data.DewPoint+String.fromCharCode(176),ceiling:0===this.data.Ceiling?"Unlimited":this.data.Ceiling+this.data.CeilingUnit,visibility:this.data.Visibility+this.data.VisibilityUnit,pressure:`${this.data.Pressure} ${this.data.PressureDirection}`,icon:{type:"img",src:this.data.Icon}};this.data.WindGust&&(t["wind-gusts"]=`Gusts to ${this.data.WindGust}`),this.data.observations.heatIndex.value&&this.data.HeatIndex!==this.data.Temperature?(t["heat-index-label"]="Heat Index:",t["heat-index"]=this.data.HeatIndex+String.fromCharCode(176)):this.data.observations.windChill.value&&""!==this.data.WindChill&&this.data.WindChill{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}}const f=e=>{let t=e;return t=t.replace(/Light/g,"L"),t=t.replace(/Heavy/g,"H"),t=t.replace(/Partly/g,"P"),t=t.replace(/Mostly/g,"M"),t=t.replace(/Few/g,"F"),t=t.replace(/Thunderstorm/g,"T'storm"),t=t.replace(/ in /g,""),t=t.replace(/Vicinity/g,""),t=t.replace(/ and /g," "),t=t.replace(/Freezing Rain/g,"Frz Rn"),t=t.replace(/Freezing/g,"Frz"),t=t.replace(/Unknown Precip/g,""),t=t.replace(/L Snow Fog/g,"L Snw/Fog"),t=t.replace(/ with /g,"/"),t},g=e=>{const t=e.features[0].properties;e.observations=t,e.Temperature=Math.round(t.temperature.value),e.TemperatureUnit="C",e.DewPoint=Math.round(t.dewpoint.value),e.Ceiling=Math.round(t.cloudLayers[0]?.base?.value??0),e.CeilingUnit="m.",e.Visibility=Math.round(t.visibility.value/1e3),e.VisibilityUnit=" km.",e.WindSpeed=Math.round(t.windSpeed.value),e.WindDirection=(0,i.Up)(t.windDirection.value),e.Pressure=Math.round(t.barometricPressure.value),e.HeatIndex=Math.round(t.heatIndex.value),e.WindChill=Math.round(t.windChill.value),e.WindGust=Math.round(t.windGust.value),e.WindUnit="KPH",e.Humidity=Math.round(t.relativeHumidity.value),e.Icon=(0,l.XV)(t.icon),e.PressureDirection="",e.TextConditions=t.textDescription;const n=t.barometricPressure.value-e.features[1].properties.barometricPressure.value;return n>150&&(e.PressureDirection="R"),n<-150&&(e.PressureDirection="F"),e.Temperature=(0,d.sz)(e.Temperature),e.TemperatureUnit="F",e.DewPoint=(0,d.sz)(e.DewPoint),e.Ceiling=100*Math.round((0,d.Q8)(e.Ceiling)/100),e.CeilingUnit="ft.",e.Visibility=(0,d.lt)(t.visibility.value/1e3),e.VisibilityUnit=" mi.",e.WindSpeed=(0,d.Yy)(e.WindSpeed),e.WindUnit="MPH",e.Pressure=(0,d.yX)(e.Pressure).toFixed(2),e.HeatIndex=(0,d.sz)(e.HeatIndex),e.WindChill=(0,d.sz)(e.WindChill),e.WindGust=(0,d.Yy)(e.WindGust),e},y=new m(1,"current-weather");(0,u.Kb)(y);const p=y.getCurrentWeather.bind(y)},516:(e,t,n)=>{var s=n(891);var r=n(423),a=n(211);const i=String.fromCharCode(176);let o,l=0;const c=()=>{const e=(0,a.q)();e?.okToDrawCurrentConditions?(l=(l+1)%d.length,u()):"progress"===e?.elemId&&(l=0)},u=async()=>{const e=await(0,r.A)();e&&h(d[l](e))},d=[e=>`Conditions at ${(0,s.C)(e.station.properties.name).substr(0,20)}`,e=>{let t=`Temp: ${e.Temperature}${i}${e.TemperatureUnit}`;return e.observations.heatIndex.value?t+=` Heat Index: ${e.HeatIndex}${i}${e.TemperatureUnit}`:e.observations.windChill.value&&(t+=` Wind Chill: ${e.WindChill}${i}${e.TemperatureUnit}`),t},e=>`Humidity: ${e.Humidity}% Dewpoint: ${e.DewPoint}${i}${e.TemperatureUnit}`,e=>`Barometric Pressure: ${e.Pressure} ${e.PressureDirection}`,e=>{let t=e.WindSpeed>0?`Wind: ${e.WindDirection} ${e.WindSpeed} ${e.WindUnit}`:"Wind: Calm";return e.WindGust>0&&(t+=` Gusts to ${e.WindGust}`),t},e=>{const t=`${e.Ceiling} ${e.CeilingUnit}`;return`Visib: ${e.Visibility} ${e.VisibilityUnit} Ceiling: ${0===e.Ceiling?"Unlimited":t}`}],h=e=>{var t,n;t=".weather-display .scroll .fixed",n=t=>{t.innerHTML=e},[...document.querySelectorAll(t)].forEach(n)};document.addEventListener("DOMContentLoaded",(()=>{o||(o=setInterval(c,4e3)),u()}))},498:(e,t,n)=>{var s=n(592),r=n(440),a=n(125),i=n(716),o=n(47),l=n(24),c=n(211);class u extends l.A{constructor(e,t){super(e,t,"Extended Forecast",!0),this.timing.totalScreens=2}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;let n;try{n=await(0,r.Pq)(t.forecast,{data:{units:"us"},retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(e){return console.error("Unable to get extended forecast"),console.error(e.status,e.responseJSON),void this.setStatus(s.Ay.failed)}this.data=d(n.properties.periods),this.screenIndex=0,this.setStatus(s.Ay.loaded)}async drawCanvas(){super.drawCanvas();const e=this.data.slice(0+3*this.screenIndex,3+3*this.screenIndex).map((e=>{const t={icon:{type:"img",src:e.icon},condition:e.text,date:e.dayName},{low:n}=e;void 0!==n&&(t["value-lo"]=Math.round(n));const{high:s}=e;return t["value-hi"]=Math.round(s),this.fillTemplate("day",t)})),t=this.elem.querySelector(".day-container");t.innerHTML="",t.append(...e),this.finishDraw()}}const d=e=>{const t=[0,1,2,3,4,5,6].map((e=>a.c9.local().startOf("day").plus({days:e}).toLocaleString({weekday:"short"})));let n=0;const s=[];return e.forEach((e=>{s[n]||s.push({dayName:"",low:void 0,high:void 0,text:void 0,icon:void 0});const r=s[n];r.icon=(0,i.XV)(e.icon),r.text=h(e.shortForecast),r.dayName=t[n],(0,o.b)(r.icon),e.isDaytime?(r.high=e.temperature,n+=1):r.low=e.temperature})),s},h=e=>{const t=[[/ and /gi," "],[/slight /gi,""],[/chance /gi,""],[/very /gi,""],[/patchy /gi,""],[/areas /gi,""],[/dense /gi,""],[/Thunderstorm/g,"T'Storm"]].reduce(((e,[t,n])=>e.replace(t,n)),e);let n=t.split(" ");-1!==t.indexOf("then")&&(n=t.split(" then "),n=n[1].split(" "));let s=n[0].substr(0,10),r="";n[1]&&(s.endsWith(".")?s=s.replace(/\./,""):r=n[1].substr(0,10),"Blowing"===r&&(r=""));let a=s;return""!==r&&(a+=` ${r}`),a};(0,c.Kb)(new u(8,"extended-forecast"))},749:(e,t,n)=>{var s=n(592),r=n(440),a=n(24),i=n(211);const o={Extreme:10,Severe:5},l={"Hurricane Warning":2,"Tornado Warning":3,"Severe Thunderstorm Warning":1};class c extends a.A{constructor(e,t,n){super(e,t,"Hazards",n),this.showOnProgress=!1,this.timing.totalScreens=0}async getData(e){const t=super.getData(e),n=this.checkbox.querySelector(".alert");n.classList.remove("show");try{const e=new URL("https://api.weather.gov/alerts/active");e.searchParams.append("point",`${this.weatherParameters.latitude},${this.weatherParameters.longitude}`),e.searchParams.append("limit",5);const t=(await(0,r.Pq)(e,{retryCount:3,stillWaiting:()=>this.stillWaiting()})).features??[],s=t.reduce(((e,t)=>e||"Immediate"===t.properties.urgency),!1),a=t.sort(((e,t)=>u(t.properties.severity,t.properties.event)-u(e.properties.severity,e.properties.event))).filter((e=>"Unknown"!==e.properties.severity&&(!s||"Immediate"===e.properties.urgency)));this.data=a,this.data.length>0&&n.classList.add("show")}catch(e){return console.error("Get hourly forecast failed"),console.error(e.status,e.responseJSON),this.isEnabled&&this.setStatus(s.Ay.failed),void this.getDataCallback(void 0)}this.getDataCallback(),t?this.drawLongCanvas():this.setStatus(s.Ay.loaded)}async drawLongCanvas(){const e=this.elem.querySelector(".hazard-lines");e.innerHTML="";const t=this.data.map((e=>{const t={};return t["hazard-text"]=`${e.properties.event}

${e.properties.description.replaceAll("\n\n","

").replaceAll("\n"," ")}`,this.fillTemplate("hazard",t)}));if(e.append(...t),0===t.length)return this.setStatus(s.Ay.loaded),this.timing.totalScreens=0,void this.setStatus(s.Ay.loaded);this.timing.baseDelay=20;const n=Math.max(Math.ceil(e.scrollHeight/400)-3,1);this.timing.delay=[550];for(let e=0;e{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}screenIndexFromBaseCount(){const e=super.screenIndexFromBaseCount();return!1===e&&(this.timing.totalScreens=0),e}}const u=(e,t)=>(o[e]??0)+(l[t]??0);(0,i.Kb)(new c(0,"hazards",!0))},2:(e,t,n)=>{var s=n(592),r=n(73),a=n(24),i=n(211),o=n(125);class l extends a.A{constructor(e,t,n){super(e,t,"Hourly Graph",n),document.addEventListener("DOMContentLoaded",(()=>{this.moveHeader()}))}moveHeader(){const e=this.fillTemplate("top-right",{});this.elem.querySelector(".header .right").append(e)}async getData(){if(!super.getData())return;const e=await(0,r.A)((()=>this.stillWaiting()));if(void 0===e)return void this.setStatus(s.Ay.failed);const t=e.map((e=>e.temperature)),n=e.map((e=>e.probabilityOfPrecipitation)),a=e.map((e=>e.skyCover));this.data={skyCover:a,temperature:t,probabilityOfPrecipitation:n},this.setStatus(s.Ay.loaded)}drawCanvas(){this.image||(this.image=this.elem.querySelector(".chart img"));const e=285;this.image.width=532,this.image.height=e;const t=document.createElement("canvas");t.width=532,t.height=e;const n=t.getContext("2d");n.imageSmoothingEnabled=!1;const s=c(0,5,this.data.temperature.length-1,532),r=o.c9.now().startOf("hour");document.querySelector(".x-axis .l-1").innerHTML=h(r),document.querySelector(".x-axis .l-2").innerHTML=h(r.plus({hour:6})),document.querySelector(".x-axis .l-3").innerHTML=h(r.plus({hour:12})),document.querySelector(".x-axis .l-4").innerHTML=h(r.plus({hour:18})),document.querySelector(".x-axis .l-5").innerHTML=h(r.plus({hour:24}));const a=c(0,275,100,10),i=u(this.data.skyCover,s,a);d(i,n,{strokeStyle:"lightgrey",lineWidth:3});const l=u(this.data.probabilityOfPrecipitation,s,a);d(l,n,{strokeStyle:"aqua",lineWidth:3});const m=Math.min(...this.data.temperature),f=Math.max(...this.data.temperature),g=Math.round((m+f)/2),y=c(m,275,f,10),p=u(this.data.temperature,s,y);d(p,n,{strokeStyle:"red",lineWidth:3});const w=String.fromCharCode(176);this.elem.querySelector(".y-axis .l-1").innerHTML=(f+w).substring(0,3),this.elem.querySelector(".y-axis .l-2").innerHTML=(g+w).substring(0,3),this.elem.querySelector(".y-axis .l-3").innerHTML=(m+w).substring(0,3),this.image.src=t.toDataURL(),super.drawCanvas(),this.finishDraw()}}const c=(e,t,n,s)=>{const r=(s-t)/(n-e),a=t-r*e;return e=>r*e+a},u=(e,t,n)=>e.map(((e,s)=>[t(s),n(e)])),d=(e,t,n)=>{t.beginPath(),t.strokeStyle="black",t.lineWidth=(n?.lineWidth??2)+2,t.moveTo(e[0][0],e[0][1]),e.slice(1).forEach((e=>t.lineTo(e[0],e[1]+2))),t.stroke(),t.beginPath(),t.strokeStyle=n?.strokeStyle??"red",t.lineWidth=n?.lineWidth??2,t.moveTo(e[0][0],e[0][1]),e.slice(1).forEach((e=>t.lineTo(e[0],e[1]))),t.stroke()},h=e=>e.toFormat("ha").slice(0,-1);(0,i.Kb)(new l(4,"hourly-graph"))},73:(e,t,n)=>{n.d(t,{A:()=>p});var s=n(592),r=n(125),a=n(440),i=n(413),o=n(716),l=n(519),c=n(24),u=n(211),d=n(247);class h extends c.A{constructor(e,t,n){super(e,t,"Hourly Forecast",n),this.timing.baseDelay=20;this.timing.delay=[450];for(let e=0;e<4;e+=1)this.timing.delay.push(300);this.timing.delay.push(150)}async getData(e){const t=super.getData(e);let n;try{n=await(0,a.Pq)(e.forecastGridData,{retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(e){return console.error("Get hourly forecast failed"),console.error(e.status,e.responseJSON),this.isEnabled&&this.setStatus(s.Ay.failed),void this.getDataCallback(void 0)}this.data=await m(n.properties),this.getDataCallback(),t&&(this.setStatus(s.Ay.loaded),this.drawLongCanvas())}async drawLongCanvas(){const e=this.elem.querySelector(".hourly-lines");e.innerHTML="";const t=r.c9.local(),n=this.data.map(((e,n)=>{const s={},r=t.plus({hours:n}).toLocaleString({weekday:"short",hour:"numeric"});s.hour=r;const a=Math.round(e.temperature).toString().padStart(3),i=Math.round(e.apparentTemperature).toString().padStart(3);s.temp=a,a!==i&&(s.like=i);let o="Calm";if(e.windSpeed>0){const t=Math.round(e.windSpeed).toString();o=e.windDirection+Array(6-e.windDirection.length-t.length).join(" ")+t}return s.wind=o,s.icon={type:"img",src:e.icon},this.fillTemplate("hourly-row",s)}));e.append(...n)}drawCanvas(){super.drawCanvas(),this.finishDraw()}showCanvas(){this.drawCanvas(),super.showCanvas()}screenIndexChange(){this.baseCountChange(this.navBaseCount)}baseCountChange(e){let t=Math.min(this.elem.querySelector(".hourly-lines").getBoundingClientRect().height-289,e-150);t<0&&(t=0),this.elem.querySelector(".main").scrollTo(0,t)}async getCurrentData(e){return e&&this.stillWaitingCallbacks.push(e),new Promise((e=>{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}}const m=async e=>{const t=g(e.temperature.values),n=g(e.apparentTemperature.values),s=g(e.windSpeed.values),r=g(e.windDirection.values),a=g(e.skyCover.values),o=g(e.weather.values),c=g(e.iceAccumulation.values),u=g(e.probabilityOfPrecipitation.values),d=g(e.snowfallAmount.values),h=await f(a,o,c,u,d,s);return t.map(((e,o)=>({temperature:(0,i.sz)(t[o]),apparentTemperature:(0,i.sz)(n[o]),windSpeed:(0,i.lt)(s[o]),windDirection:(0,l.Up)(r[o]),probabilityOfPrecipitation:u[o],skyCover:a[o],icon:h[o]})))},f=async(e,t,n,s,a,i)=>{const l=r.c9.local().startOf("hour"),c=(await(0,d.A)()).sun,u=r.IX.fromDateTimes(r.c9.fromJSDate(c[0].sunset),r.c9.fromJSDate(c[1].sunrise)),h=r.c9.fromJSDate(c[1].sunset);return e.map(((r,c)=>{const d=l.plus({hours:c}),m=u.contains(d)||d>h;return(0,o.ZJ)(e[c],t[c],n[c],s[c],a[c],i[c],m)}))},g=e=>{const t=r.c9.utc().startOf("hour").toMillis(),n=[];return e.forEach((e=>{let s=Date.parse(e.validTime.substr(0,e.validTime.indexOf("/")));const a=s+r.dw.fromISO(e.validTime.substr(e.validTime.indexOf("/")+1)).shiftTo("milliseconds").values.milliseconds;do{s>=t&&n.length<24&&n.push(e.value),s+=36e5}while(s{n.d(t,{Wu:()=>s,XV:()=>r,ZJ:()=>a});const s=(e,t)=>{const n=t??e.indexOf("/night/")>=0,s=e=>`images/r/${e}`;let r=e.toLowerCase().match(/[^/]+$/)[0].match(/(.*?)[&,.?]/)[1];const a=+(e.match(/,(\d{2,3})/)??[0,100])[1];if("dualimage"===r){const t=e.match(/&j=(.*)&/);[,r]=t}switch(r+(n?"-n":"")){case"skc":case"hot":case"haze":return s("Sunny.gif");case"skc-n":case"nskc":case"nskc-n":case"cold-n":return s("Clear-1992.gif");case"bkn":return s("Mostly-Cloudy-1994-2.gif");case"bkn-n":case"few-n":case"nfew-n":case"nfew":return s("Partly-Clear-1994-2.gif");case"sct":case"few":return s("Partly-Cloudy.gif");case"sct-n":case"nsct":case"nsct-n":return s("Mostly-Clear.gif");case"ovc":case"ovc-n":return s("Cloudy.gif");case"fog":case"fog-n":return s("Fog.gif");case"rain_sleet":case"sleet":case"sleet-n":return s("Sleet.gif");case"rain_showers":case"rain_showers_high":return s("Scattered-Showers-1994-2.gif");case"rain_showers-n":case"rain_showers_high-n":return s("Scattered-Showers-Night-1994-2.gif");case"rain":case"rain-n":return s("Rain-1992.gif");case"snow":case"snow-n":return s(a>50?"Heavy-Snow-1994-2.gif":"Light-Snow.gif");case"rain_snow":case"rain_snow-n":return s("Rain-Snow-1992.gif");case"snow_fzra":case"snow_fzra-n":return s("Freezing-Rain-Snow-1992.gif");case"fzra":case"fzra-n":case"rain_fzra":case"rain_fzra-n":return s("Freezing-Rain-1992.gif");case"snow_sleet":case"snow_sleet-n":return s("Snow and Sleet.gif");case"tsra_sct":case"tsra":return s("Scattered-Tstorms-1994-2.gif");case"tsra_sct-n":case"tsra-n":return s("Scattered-Tstorms-Night-1994-2.gif");case"tsra_hi":case"tsra_hi-n":case"hurricane":case"tropical_storm":return s("Thunderstorm.gif");case"wind":case"wind_few":case"wind_sct":case"wind_bkn":case"wind_ovc":case"wind-n":case"wind_few-n":case"wind_bkn-n":case"wind_ovc-n":return s("Wind.gif");case"wind_skc":return s("Sunny-Wind-1994.gif");case"wind_skc-n":case"wind_sct-n":return s("Clear-Wind-1994.gif");case"blizzard":case"blizzard-n":return s("Blowing Snow.gif");case"cold":return s("cold.gif");default:return console.log(`Unable to locate regional icon for ${r} ${e} ${n}`),!1}},r=(e,t)=>{if(!e)return!1;const n=e=>`images/${e}`,s=t??e.indexOf("/night/")>=0;let r=e.toLowerCase().match(/[^/]+$/)[0].match(/(.*?)[&,.?]/)[1];const a=+(e.match(/,(\d{2,3})/)??[0,100])[1];if("dualimage"===r){const t=e.match(/&j=(.*)&/);[,r]=t}switch(r+(s?"-n":"")){case"skc":case"hot":case"haze":case"cold":return n("CC_Clear1.gif");case"skc-n":case"nskc":case"nskc-n":case"cold-n":return n("CC_Clear0.gif");case"sct":case"few":case"bkn":return n("CC_PartlyCloudy1.gif");case"bkn-n":case"few-n":case"nfew-n":case"nfew":case"sct-n":case"nsct":case"nsct-n":return n("CC_PartlyCloudy0.gif");case"ovc":case"novc":case"ovc-n":return n("CC_Cloudy.gif");case"fog":case"fog-n":return n("CC_Fog.gif");case"rain_sleet":case"rain_sleet-n":case"sleet":case"sleet-n":return n("Sleet.gif");case"rain_showers":case"rain_showers_high":case"rain_showers-n":case"rain_showers_high-n":return n("CC_Showers.gif");case"rain":case"rain-n":return n("CC_Rain.gif");case"snow":case"snow-n":return n(a>50?"CC_Snow.gif":"CC_SnowShowers.gif");case"rain_snow":return n("CC_RainSnow.gif");case"snow_fzra":case"snow_fzra-n":case"fzra":case"fzra-n":case"rain_fzra":case"rain_fzra-n":return n("CC_FreezingRain.gif");case"snow_sleet":return n("Snow-Sleet.gif");case"tsra_sct":case"tsra":return n("EF_ScatTstorms.gif");case"tsra_sct-n":case"tsra-n":case"tsra_hi":case"tsra_hi-n":case"hurricane":case"tropical_storm":case"hurricane-n":case"tropical_storm-n":return n("CC_TStorm.gif");case"wind_few":case"wind_sct":case"wind_bkn":case"wind_ovc":case"wind_skc":case"wind_few-n":case"wind_bkn-n":case"wind_ovc-n":case"wind_skc-n":case"wind_sct-n":return n("CC_Windy.gif");case"blizzard":case"blizzard-n":return n("Blowing-Snow.gif");default:return console.log(`Unable to locate icon for ${r} ${e} ${s}`),!1}},a=(e,t,n,s,r,a,i=!1)=>{const o=e=>`images/r/${e}`;let l=!1,c=!1,u=!1,d=!1,h=!1;return t.forEach((e=>{e.weather&&(e.weather.toLowerCase().includes("thunder")&&(l=!0),e.weather.toLowerCase().includes("snow")&&(c=!0),e.weather.toLowerCase().includes("ice")&&(u=!0),e.weather.toLowerCase().includes("fog")&&(d=!0),e.weather.toLowerCase().includes("wind")&&(h=!0))})),o(n>0||u?"Freezing-Rain-1992.gif":r>10?a>30||h?"Blowing Snow.gif":"Heavy-Snow-1994.gif":(r>0||c)&&l?"ThunderSnow.gif":r>0||c?"Light-Snow.gif":l?"Thunderstorm.gif":s>70?"Rain-1992.gif":s>50?"Shower.gif":s>30?i?"Scattered-Showers-Night.gif":"Scattered-Showers-1994.gif":d?"Fog.gif":e>70?"Cloudy.gif":e>50?i?"Partly-Clear-1994.gif":"Mostly-Cloudy-1994.gif":e>30?i?"Mostly-Clear.gif":"Partly-Cloudy.gif":i?"Clear-1992.gif":"Sunny.gif")}},94:(e,t,n)=>{var s=n(519),r=n(440),a=n(592),i=n(891),o=n(413),l=n(24),c=n(211);class u extends l.A{constructor(e,t){super(e,t,"Latest Observations",!0),this.MaximumRegionalStations=7}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters,n=Object.keys(StationInfo).map((e=>{const n=StationInfo[e],r=(0,s.Io)(n.lat,n.lon,t.latitude,t.longitude);return{...n,distance:r}})).sort(((e,t)=>e.distance-t.distance)).slice(0,30),r=[];let i=Math.min(n.length,7),o=0;for(;r.length<7&&i<=n.length;){const e=await h(n.slice(o,i));r.push(...e),o+=i,i=Math.min(n.length+1,o+7-r.length)}this.data=r.slice(0,this.MaximumRegionalStations),0!==this.data.length?this.setStatus(a.Ay.loaded):this.setStatus(a.Ay.noData)}async drawCanvas(){super.drawCanvas();const e=this.data.sort(((e,t)=>e.Name{const t=(0,s.Up)(e.windDirection.value),n=Math.round((0,o.sz)(e.temperature.value)),r=Math.round((0,o.Yy)(e.windSpeed.value)),a={location:(0,i.C)(e.city).substr(0,14),temp:n,weather:d(e.textDescription).substr(0,9)};return a.wind=r>0?t+Array(6-t.length-r.toString().length).join(" ")+r.toString():"NA"===r?"NA":"Calm",this.fillTemplate("observation-row",a)})),n=this.elem.querySelector(".observation-lines");n.innerHTML="",n.append(...t),this.finishDraw()}}const d=e=>{let t=e;return t=t.replace(/Light/,"L"),t=t.replace(/Heavy/,"H"),t=t.replace(/Partly/,"P"),t=t.replace(/Mostly/,"M"),t=t.replace(/Few/,"F"),t=t.replace(/Thunderstorm/,"T'storm"),t=t.replace(/ in /,""),t=t.replace(/Vicinity/,""),t=t.replace(/ and /," "),t=t.replace(/Freezing Rain/,"Frz Rn"),t=t.replace(/Freezing/,"Frz"),t=t.replace(/Unknown Precip/,""),t=t.replace(/L Snow Fog/,"L Snw/Fog"),t=t.replace(/ with /,"/"),t},h=async e=>(await Promise.all(e.map((async e=>{try{const t=await(0,r.Pq)(`https://api.weather.gov/stations/${e.id}/observations/latest`,{retryCount:1,stillWaiting:()=>(void 0).stillWaiting()});return null!==t.properties.temperature.value&&""!==t.properties.textDescription&&null!==t.properties.windSpeed.value&&{...t.properties,StationId:e.id,city:e.city}}catch(t){return console.log(`Unable to get latest observations for ${e.id}`),!1}})))).filter((e=>e));(0,c.Kb)(new u(2,"latest-observations"))},704:(e,t,n)=>{var s=n(592),r=n(440),a=n(24),i=n(211);class o extends a.A{constructor(e,t){super(e,t,"Local Forecast",!0),this.timing.baseDelay=5e3}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters,n=await this.getRawData(t);if(!n)return void this.setStatus(s.Ay.failed);const r=l(n);this.screenTexts=r.map((e=>{let t=`${e.DayName.toUpperCase()}...`;return t+=e.Text.toUpperCase().replace("..."," "),t}));const a=this.screenTexts.map((e=>this.fillTemplate("forecast",{text:e}))),i=this.elem.querySelector(".forecasts");i.innerHTML="",i.append(...a),this.pageHeight=i.parentNode.scrollHeight,a.forEach((e=>{const t=Math.ceil(e.scrollHeight/this.pageHeight)*this.pageHeight;e.style.height=`${t}px`})),this.timing.totalScreens=i.scrollHeight/this.pageHeight,this.calcNavTiming(),this.setStatus(s.Ay.loaded)}async getRawData(e){try{return await(0,r.Pq)(e.forecast,{data:{units:"us"},retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(t){return console.error(`GetWeatherForecast failed: ${e.forecast}`),console.error(t.status,t.responseJSON),this.setStatus(s.Ay.failed),!1}}async drawCanvas(){super.drawCanvas();const e=-this.screenIndex*this.pageHeight;this.elem.querySelector(".forecasts").style.top=`${e}px`,this.finishDraw()}}const l=e=>e.properties.periods.slice(0,6).map((e=>({DayName:e.name.toUpperCase(),Text:e.detailedForecast})));(0,i.Kb)(new o(7,"local-forecast"))},211:(e,t,n)=>{n.d(t,{F4:()=>k,Fx:()=>U,Ju:()=>T,K$:()=>z,Kb:()=>F,Lg:()=>W,XR:()=>E,ab:()=>C,eB:()=>j,iU:()=>w,kY:()=>$,pv:()=>O,q:()=>M,u6:()=>_,yB:()=>v});var s=n(430),r=n(592),a=n(519),i=n(440),o=n(348),l=n(302);document.addEventListener("DOMContentLoaded",(()=>{p()}));const c=[];let u,d=!1;const h={},m=6e5,f="#chkAutoRefresh";let g=null,y=0;const p=async()=>{window.addEventListener("resize",E),E();const e=localStorage.getItem("autoRefresh");document.querySelector(f).checked=!e||"true"===e,document.querySelector(f).addEventListener("change",V),q()},w=e=>!!e.type&&("navButton"===e.type?N(e.message):console.error(`Unknown event ${e.type}`)),v=e=>{if(e.id<0)return;if(!u)return;if(u.drawCanvas(c,S()),c[0].status===r.Ay.loading)return;const t=c.findIndex((e=>e.enabled&&e.timing.totalScreens>0));0!==e.id||e.status!==r.Ay.failed&&e.status!==r.Ay.retrying||(e.id=t,e.status=c[t].status),0===e.id&&e.status===r.Ay.loaded&&0===c[0].timing.totalScreens&&(e.id=t,e.status=c[t].status),k()&&e.id===t&&e.status===r.Ay.loaded&&x(C.command.firstFrame),S()c.reduce(((e,t)=>t.status!==r.Ay.loading?e+1:e),0),b=()=>{c.forEach((e=>e.hideCanvas()))},k=()=>d,C={response:{previous:Symbol("previous"),inProgress:Symbol("inProgress"),next:Symbol("next")},command:{firstFrame:Symbol("firstFrame"),previousFrame:Symbol("previousFrame"),nextFrame:Symbol("nextFrame"),lastFrame:Symbol("lastFrame")}},T=e=>{e.type===C.response.previous&&L(-1),e.type===C.response.next&&L(1)},x=e=>{const t=M();if(u.hideCanvas(),!t){let e,t=0;do{c[t].status===r.Ay.loaded&&c[t].timing.totalScreens>0&&(e=c[t]),t+=1}while(!e&&t{const t=c.length,n=D();let s;for(let i=0;i0));i+=1);if(s<=n&&Z())return;const i=c[s];b(),e<0&&i.showCanvas(C.command.lastFrame),e>0&&i.showCanvas(C.command.firstFrame)},D=()=>c.findIndex((e=>e.active)),M=()=>c[D()],I=e=>{d=e;const t=document.querySelector("#NavigatePlay");localStorage.setItem("play",d),d?((0,s.A)(!0),t.title="Pause",t.src="images/nav/ic_pause_white_24dp_2x.png"):((0,s.A)(!1),t.title="Play",t.src="images/nav/ic_play_arrow_white_24dp_2x.png"),u&&d&&!M()&&x(C.command.firstFrame)},N=e=>{switch(e){case"play":I(!0);break;case"playToggle":I(!d);break;case"stop":I(!1);break;case"next":I(!1),x(C.command.nextFrame);break;case"previous":I(!1),x(C.command.previousFrame);break;case"menu":I(!1),u.showCanvas(),b();break;default:console.error(`Unknown navButton ${e}`)}},O=e=>c[e],E=()=>{const e=l.A.wide.value?854:640,t=document.querySelector("#divTwcBottom").getBoundingClientRect().width/e,n=window.innerHeight/480,s=Math.min(t,n);s<1||document.fullscreenElement||l.A.kiosk?document.querySelector("#container").style.transform=`scale(${s})`:document.querySelector("#container").style.transform="unset"},$=()=>{c.forEach((e=>{e.status=r.Ay.loading}))},F=e=>{c[e.navId]=e,q()},q=()=>{const e=document.querySelector("#enabledDisplays");if(!e)return;const t=c.map((e=>e.generateCheckbox(e.defaultEnabled))).filter((e=>e));e.innerHTML="",e.append(...t)},W=e=>{u=e},A=e=>{document.querySelector("#spanCity").innerHTML=`${e.city}, `,document.querySelector("#spanState").innerHTML=e.state,document.querySelector("#spanStationId").innerHTML=e.stationId,document.querySelector("#spanRadarId").innerHTML=e.radarId,document.querySelector("#spanZoneId").innerHTML=e.zoneId},V=e=>{const{checked:t}=e.target;t?H():z(),localStorage.setItem("autoRefresh",t)},P=e=>{e?(document.querySelector("#spanLastRefresh").innerHTML=e.toLocaleString("en-US",{weekday:"short",month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short"}),document.querySelector(f).checked&&H()):document.querySelector("#spanLastRefresh").innerHTML="(none)"},_=(e,t)=>{(async(e,t)=>{const n=await(0,o.f)(e.lat,e.lon);"function"==typeof t&&t(n);const s=await(0,i.Pq)(n.properties.observationStations),r=s.features[0].properties.stationIdentifier;let{city:a}=n.properties.relativeLocation.properties;const{state:l}=n.properties.relativeLocation.properties;r in StationInfo&&(a=StationInfo[r].city,[a]=a.split("/"),a=a.replace(/\s+$/,"")),h.latitude=e.lat,h.longitude=e.lon,h.zoneId=n.properties.forecastZone.substr(-6),h.radarId=n.properties.radarStation.substr(-3),h.stationId=r,h.weatherOffice=n.properties.cwa,h.city=a,h.state=l,h.timeZone=n.properties.timeZone,h.forecast=n.properties.forecast,h.forecastGridData=n.properties.forecastGridData,h.stations=s.features,A(h),b(),document.querySelector("#loading").style.display="none",u&&(await u.drawCanvas(),u.showCanvas()),c.forEach((e=>e.getData(h)))})(e,t),P(null)},H=()=>{if(g)return;y=0;const e=()=>{y+=500;let e=m-y;e<0&&(e=0);const t=new Date(e);document.querySelector("#spanRefreshCountDown").innerHTML=`${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}`,y>=m&&!k()&&R()};g=window.setInterval(e,500),e()},z=()=>{g&&(window.clearInterval(g),document.querySelector("#spanRefreshCountDown").innerHTML="--:--",g=null)},Z=()=>!!(y>=m&&k())&&(R(),!0),R=()=>{R.callback&&R.callback()},U=e=>{R.callback=e},j=()=>h.timeZone},951:(e,t,n)=>{var s=n(47),r=n(592),a=n(24),i=n(211);class o extends a.A{constructor(e,t){super(e,t,"",!1),this.backgroundImage=(0,s.u)("images/BackGround1_1.png"),this.timing=!1,document.addEventListener("DOMContentLoaded",(()=>{this.version=document.querySelector("#version").innerHTML,this.elem.querySelector(".container").addEventListener("click",this.lineClick.bind(this))})),this.okToDrawCurrentConditions=!1}async drawCanvas(e,t){if(!this.elem)return;if(super.drawCanvas(),this.progressCover||(this.progressCover=this.elem.querySelector(".scroll .cover")),!e)return;const n=e.map(((e,t)=>{if(!1===e.showOnProgress)return!1;const n={name:e.name},s=(0,r.qx)(e.status),a=this.fillTemplate("item",n);if(!a)return!1;const i=a.querySelector(".links");return i.classList.remove(...r.LR),i.classList.add(s),i.dataset.index=t,a})).filter((e=>e)),s=this.elem.querySelector(".container");s.innerHTML="",s.append(...n),this.finishDraw();const a=t/e.length;this.progressCover.style.width=100*(1-a)+"%",a<1?this.progressCover.parentNode.classList.add("show"):setTimeout((()=>this.progressCover.parentNode.classList.remove("show")),1e3)}lineClick(e){const t=e.target?.parentNode?.dataset?.index;if(void 0===t)return;const n=+t;(0,i.iU)("navButton");const s=(0,i.pv)(n);s&&s.status===r.Ay.loaded&&(s.showCanvas(i.ab.command.firstFrame),this.elem.classList.remove("show"))}}const l=new o(-1,"progress");(0,i.Lg)(l)},503:(e,t,n)=>{var s=n(592),r=n(125),a=n(47),i=n(440),o=n(147),l=n(24),c=n(211);class u extends l.A{constructor(e,t){super(e,t,"Local Radar",!0),this.okToDrawCurrentConditions=!1,this.okToDrawCurrentDateTime=!1,this.dopplerRadarImageMax=6,this.timing.baseDelay=350,this.timing.delay=[{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:12,si:5}]}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;if("AK"===t.state||"HI"===t.state)return void this.setStatus(s.Ay.noData);let n="images/4000RadarMap2.jpg";"HI"===t.State&&(n="images/HawaiiRadarMap2.png"),this.baseMap=await(0,a.u)(n);const l=[];let u=r.c9.utc().minus({days:1}).startOf("day");for(;u<=r.c9.utc().startOf("day");)l.push(`https://mesonet.agron.iastate.edu/archive/data/${u.toFormat("yyyy/LL/dd")}/GIS/uscomp/`),u=u.plus({days:1});const d=(await Promise.all(l.map((async e=>{try{return(0,i.Qq)(e,{cors:!0})}catch(e){return console.log("Unable to get list of radars"),console.error(e),this.setStatus(s.Ay.failed),!1}})))).filter((e=>e)).flatMap(((e,t)=>{const n=(new DOMParser).parseFromString(e,"text/html"),s=n.createElement("base");s.href=l[t],n.head.append(s);const r=n.querySelectorAll("a"),a=[];return Array.from(r).forEach((e=>{e.innerHTML?.match(/n0r_\d{12}\.png/)&&a.push(e.href)})),a})),h=/_(\d{12})\.png/,m=d.sort(((e,t)=>e.match(h)[1]{let s=0,r=0;return s=55.2*(51.75-e.latitude),s-=n,s>3200-2*n?s=3200-2*n:s<0&&(s=0),r=41.775*(-130.37-e.longitude)*-1,r-=t,r>5100-2*t?r=5100-2*t:r<0&&(r=0),{x:2*r,y:2*s}})(t,240,138),w=document.createElement("canvas");w.width=y,w.height=1600;const v=w.getContext("2d");v.imageSmoothingEnabled=!1;const S=((e,t,n)=>{let s=0,r=0;return s=61.4481*(51-e.latitude),s-=n,s>6e3-2*n?s=6e3-2*n:s<0&&(s=0),r=42.1768*(-129.138-e.longitude)*-1,r-=t,r>2800-2*t?r=2800-2*t:r<0&&(r=0),{x:2*r,y:2*s}})(t,240,138),b=S.x/2,k=S.y/2,C=await Promise.all(m.map((async e=>{const t=document.createElement("canvas");t.width=640,t.height=367;const n=t.getContext("2d");n.imageSmoothingEnabled=!1;const s=await fetch((0,o.O)(e));if(!s.ok)throw new Error(`Unable to fetch radar error ${s.status} ${s.statusText} from ${s.url}`);const i=await s.blob(),l=e.match(/_(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)\./);let u;if(l){const[,e,t,n,s,a]=l;u=r.c9.fromObject({year:e,month:t,day:n,hour:s,minute:a},{zone:"UTC"}).setZone()}else u=r.c9.fromHTTP(s.headers.get("last-modified")).setZone((0,c.eB)());const d=await(0,a.u)(i);v.clearRect(0,0,y,1600),v.drawImage(d,0,0,y,1600),n.drawImage(await this.baseMap,p.x,p.y,480,276,0,0,640,367);const h=document.createElement("canvas");h.width=640,h.height=367;const m=h.getContext("2d",{willReadFrequently:!0});m.imageSmoothingEnabled=!1,m.drawImage(w,b,k,240,163.1,0,0,640,367),(e=>{const t=e.getImageData(0,0,e.canvas.width,e.canvas.height);for(let e=0;e{const n=e.getImageData(0,0,e.canvas.width,e.canvas.height),s=t.getImageData(0,0,t.canvas.width,t.canvas.height);for(let e=0;ee.elem))),this.timing.totalScreens=C.length,this.data=C.map((e=>e.canvas)),this.times=C.map((e=>e.time)),this.setStatus(s.Ay.loaded)}async drawCanvas(){super.drawCanvas();const e=this.times[this.screenIndex].toLocaleString(r.c9.TIME_SIMPLE),t=e.length>=8?e:` ${e}`;this.elem.querySelector(".header .right .time").innerHTML=t;const n=this.elem.querySelector(".frame").scrollHeight;this.elem.querySelector(".scroll-area").style.top=-this.screenIndex*n+"px",this.finishDraw()}}(0,c.Kb)(new u(10,"radar"))},187:(e,t,n)=>{var s=n(592),r=n(519),a=n(440),i=n(413),o=n(716),l=n(47),c=n(125),u=n(24),d=n(211);const h=(e,t,n)=>({daytime:e.isDaytime,temperature:e.temperature||0,name:v(t.city),icon:e.icon,x:n.x,y:n.y,time:e.startTime}),m=(e,t,n,s)=>{let r=0,a=0;return r=56*(73-e),r-=s,r>1142-2*s?r=1142-2*s:r<0&&(r=0),a=25*(-175-t)*-1,a-=n,a>1200-2*n?a=1200-2*n:a<0&&(a=0),{x:a,y:r}},f=(e,t,n,s)=>{let r=0,a=0;return r=55.2*(25-e),r-=s,r>571-2*s?r=571-2*s:r<0&&(r=0),a=41.775*(-164.5-t)*-1,a-=n,a>600-2*n?a=600-2*n:a<0&&(a=0),{x:a,y:r}},g=(e,t,n,s)=>({minLat:-1*((t+2*s)/56-73),maxLat:-1*(t/56-73),minLon:-1*(-1*e/25+175),maxLon:-1*(-1*(e+2*n)/25+175)}),y=(e,t,n,s)=>({minLat:-1*((t+2*s)/55.2-25),maxLat:-1*(t/55.2-25),minLon:-1*(-1*e/41.775+164.5),maxLon:-1*(-1*(e+2*n)/41.775+164.5)}),p=(e,t,n)=>{let s=37*(e.lon-n),r=70*(t-e.lat);return r<30&&(r=30),r>282&&(r=282),s<40&&(s=40),s>580&&(s=580),{x:s,y:r}},w=(e,t,n)=>{let s=57*(e.lon-n),r=70*(t-e.lat);return r<30&&(r=30),r>282&&(r=282),s<40&&(s=40),s>580&&(s=580),{x:s,y:r}},v=e=>e.match(/[^,/;\\-]*/)[0].substr(0,12);var S=n(348);class b extends u.A{constructor(e,t){super(e,t,"Regional Forecast",!0),this.timing.totalScreens=3}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;let n="images/Basemap2.png";"HI"===t.state?n="images/HawaiiRadarMap4.png":"AK"===t.state&&(n="images/AlaskaRadarMap6.png"),this.elem.querySelector(".map img").src=n;const c={x:240,y:117},u=((e,t,n,s,r)=>{if("AK"===r)return m(e,t,n,s);if("HI"===r)return f(e,t,n,s);let a=0,i=0;return a=55.2*(50.5-e),a-=s,a>1600-2*s?a=1600-2*s:a<0&&(a=0),i=41.775*(-127.5-t)*-1,i-=n,i>2550-2*n?i=2550-2*n:i<0&&(i=0),{x:i,y:a}})(t.latitude,t.longitude,c.x,c.y,t.state),d=(S=u.x,b=u.y,C=c.x,T=c.y,"AK"===(x=t.state)?g(S,b,C,T):"HI"===x?y(S,b,C,T):{minLat:-1*((b+2*T)/55.2-50.5),maxLat:-1*(b/55.2-50.5),minLon:-1*(-1*S/41.775+127.5),maxLon:-1*(-1*(S+2*C)/41.775+127.5)});var S,b,C,T,x;let L=2.5;"HI"===t.state&&(L=1);const D=Object.values(StationInfo).map((e=>({...e,targetDistance:L}))),M=[...RegionalCities,...D],I=[];M.forEach((e=>{if(e.lat>d.minLat&&e.latd.minLon&&e.lon{const a=(0,r.Io)(e.lon,e.lat,s.lon,s.lat);return n&&a>=t}),!0)&&I.push(e)}}));const N=await Promise.all(I.map((async e=>{try{const n=e?.point??await k(e.lat,e.lon);if(!n)throw new Error("No pre-loaded point");const s=(async(e,t)=>{try{const t=(await(0,a.Pq)(`https://api.weather.gov/gridpoints/${e.wfo}/${e.x},${e.y}/stations`)).features[0].id,n=await(0,a.Pq)(`${t}/observations/latest`);if(!n.properties.icon)return!1;const s=(0,o.Wu)(n.properties.icon,!n.properties.daytime);return!!s&&((0,l.b)(s),n.properties)}catch(e){return console.log(`Unable to get regional observations for ${t.Name??t.city}`),console.error(e.status,e.responseJSON),!1}})(n,e),r=await(0,a.Pq)(`https://api.weather.gov/gridpoints/${n.wfo}/${n.x},${n.y}/forecast`),c=((e,t,n,s)=>{"AK"===s&&p(e,t,n),"HI"===s&&w(e,t,n);let r=57*(e.lon-n),a=70*(t-e.lat);return a<30&&(a=30),a>282&&(a=282),r<40&&(r=40),r>580&&(r=580),{x:r,y:a}})(e,d.maxLat,d.minLon,t.state),u=await s;if(!u)return!1;const m={daytime:!!/\/day\//.test(u.icon),temperature:(0,i.sz)(u.temperature.value),name:v(e.city),icon:u.icon,x:c.x,y:c.y};return(0,l.b)((0,o.Wu)(m.icon,!m.daytime)),[m,h(r.properties.periods[1],e,c),h(r.properties.periods[2],e,c)]}catch(t){return console.log(`No regional forecast data for '${e.name??e.city}'`),console.log(t),!1}}))),O=N.filter((e=>e));0!==O.length?(this.data={regionalData:O,offsetXY:c,sourceXY:u},this.setStatus(s.Ay.loaded)):this.setStatus(s.Ay.noData)}drawCanvas(){super.drawCanvas();const{regionalData:e,sourceXY:t,offsetXY:n}=this.data,s=this.elem.querySelector(".title.dual .top"),r=this.elem.querySelector(".title.dual .bottom");if(0===this.screenIndex)s.innerHTML="Regional",r.innerHTML="Observations";else{const t=c.c9.fromISO(e[0][this.screenIndex].time).toLocaleString({weekday:"long"});s.innerHTML="Forecast for",r.innerHTML=e[0][this.screenIndex].daytime?t:`${t} Night`}const a=640/(2*n.x);this.elem.querySelector(".map").style.transform=`scale(${a}) translate(-${t.x}px, -${t.y}px)`;const i=e.map((e=>{const t={},n=e[this.screenIndex];t.icon={type:"img",src:(0,o.Wu)(n.icon,!n.daytime)},t.city=n.name;const{temperature:s}=n;t.temp=s;const{x:r,y:a}=n,i=this.fillTemplate("location",t);return i.style.left=`${r}px`,i.style.top=`${a}px`,i})),l=this.elem.querySelector(".location-container");l.innerHTML="",l.append(...i),this.finishDraw()}}const k=async(e,t)=>{const n=await(0,S.f)(e,t);return{x:n.properties.gridX,y:n.properties.gridY,wfo:n.properties.gridId}};(0,d.Kb)(new b(6,"regional-forecast"))},302:(e,t,n)=>{n.d(t,{A:()=>u});var s=n(999);const r="Settings";const a=class{constructor(e,t,n,r,a,i,o){this.shortName=e,this.name=t,this.defaultValue=r,this.myValue=r,this.type=n??"checkbox",this.sticky=i,this.values=o,this.changeAction=a??(()=>{});const l=(0,s.J)()?.[`settings-${e}-${n}`];let c;"checkbox"===n&&void 0!==l&&(c="true"===l),"select"===n&&void 0!==l&&(c=parseFloat(l));const u=c??this.getFromLocalStorage();if(i&&null!==u&&(this.myValue=u),"select"===n)this.selectChange({target:{value:this.myValue}});else this.checkboxChange({target:{checked:this.myValue}})}generateSelect(){const e=document.createElement("label");e.for=`settings-${this.shortName}-select`,e.id=`settings-${this.shortName}-label`;const t=document.createElement("span");t.innerHTML=`${this.name} `,e.append(t);const n=document.createElement("select");return n.id=`settings-${this.shortName}-select`,n.name=`settings-${this.shortName}-select`,n.addEventListener("change",(e=>this.selectChange(e))),this.values.forEach((([e,t])=>{const s=document.createElement("option");s.value=e.toFixed(2),s.innerHTML=t,n.append(s)})),e.append(n),this.element=e,this.selectHighlight(this.myValue),e}generateCheckbox(){const e=document.createElement("label");e.for=`settings-${this.shortName}-checkbox`,e.id=`settings-${this.shortName}-label`;const t=document.createElement("input");t.type="checkbox",t.value=!0,t.id=`settings-${this.shortName}-checkbox`,t.name=`settings-${this.shortName}-checkbox`,t.checked=this.myValue,t.addEventListener("change",(e=>this.checkboxChange(e)));const n=document.createElement("span");return n.innerHTML=this.name,e.append(t,n),this.element=e,e}checkboxChange(e){this.myValue=e.target.checked,this.storeToLocalStorage(this.myValue),this.changeAction(this.myValue)}selectChange(e){this.myValue=parseFloat(e.target.value),this.storeToLocalStorage(this.myValue),this.changeAction(this.myValue)}storeToLocalStorage(e){if(!this.sticky)return;const t=localStorage?.getItem(r)??"{}",n=JSON.parse(t);n[this.shortName]=e,localStorage?.setItem(r,JSON.stringify(n))}getFromLocalStorage(){const e=localStorage?.getItem(r);try{if(e){const t=JSON.parse(e)?.[this.shortName];if(void 0!==t)switch(this.type){case"boolean":case"select":return t;default:return null}}}catch{return null}return null}get value(){return this.myValue}set value(e){if(this.myValue=e,"select"===this.type)this.selectHighlight(e);else this.element.checked=e;this.storeToLocalStorage(this.myValue),this.changeAction(this.myValue)}selectHighlight(e){this.element.querySelectorAll("option").forEach((t=>{t.selected=e.toFixed(2)===t.value}))}generate(){return"select"===this.type?this.generateSelect():this.generateCheckbox()}};document.addEventListener("DOMContentLoaded",(()=>{o()}));const i={speed:{value:1}},o=()=>{i.wide=new a("wide","Widescreen","boolean",!1,l,!0),i.kiosk=new a("kiosk","Kiosk","boolean",!1,c,!1),i.speed=new a("speed","Speed","select",1,null,!0,[[.5,"Very Fast"],[.75,"Fast"],[1,"Normal"],[1.25,"Slow"],[1.5,"Very Slow"]]);const e=Object.values(i).map((e=>e.generate())),t=document.querySelector("#settings");t.innerHTML="",t.append(...e)},l=e=>{const t=document.querySelector("#divTwc");e?t.classList.add("wide"):t.classList.remove("wide")},c=e=>{const t=document.querySelector("body");e?(t.classList.add("kiosk"),window.dispatchEvent(new Event("resize"))):t.classList.remove("kiosk")},u=i},999:(e,t,n)=>{n.d(t,{J:()=>l}),document.addEventListener("DOMContentLoaded",(()=>r()));const s={kiosk:"settings-kiosk-checkbox"},r=()=>{const e=document.querySelector("#share-link");e.addEventListener("click",a),navigator?.clipboard||(e.textContent="Get Permalink")},a=async e=>{e.preventDefault();const t=document.querySelectorAll("input[type=checkbox]"),n={};[...t].forEach((e=>{e?.id&&(n[e.id]=e?.checked??!1)}));[...document.querySelectorAll("select")].forEach((e=>{e?.id&&(n[e.id]=e?.value??0)})),n.latLonQuery=localStorage.getItem("latLonQuery"),n.latLon=localStorage.getItem("latLon");const s=new URLSearchParams(n).toString(),r=new URL(`?${s}`,document.location.href);navigator?.clipboard?i(r):o(r)},i=async e=>{try{await navigator.clipboard.writeText(e.toString());const t=document.querySelector("#share-link-copied");t.style.display="inline",setTimeout((()=>{t.style.display="none"}),5e3)}catch(e){console.error(e)}},o=e=>{const t=document.querySelector("#share-link-instructions"),n=t.querySelector("#share-link-url");n.value=e,t.style.display="inline",n.focus(),n.select()},l=()=>{if(l.params)return l.params;const e=[...new URLSearchParams(window.location.search)];return e.forEach((t=>{const n=s[t[0]];n&&e.push([n,t[1]])})),l.params=Object.fromEntries(e),l.params}},592:(e,t,n)=>{n.d(t,{Ay:()=>i,LR:()=>a,qx:()=>r});const s={loading:Symbol("loading"),loaded:Symbol("loaded"),failed:Symbol("failed"),noData:Symbol("noData"),disabled:Symbol("disabled"),retrying:Symbol("retrying")},r=e=>{switch(e){case s.loading:return"loading";case s.loaded:return"press-here";case s.failed:return"failed";case s.noData:return"no-data";case s.disabled:return"disabled";case s.retrying:return"retrying";default:return""}},a=["loading","press-here","failed","no-data","disabled","retrying"],i=s},709:(e,t,n)=>{var s=n(592),r=n(440),a=n(716),i=n(125),o=n(24),l=n(211);class c extends o.A{constructor(e,t,n){super(e,t,"Travel Forecast",n),this.timing.baseDelay=20;const s=TravelCities.length/4,r=Math.floor(s)-2,a=r%1;this.timing.delay=[450];for(let e=0;e{try{if(!e.point)throw new Error("No pre-loaded point");const t=await(0,r.Pq)(`https://api.weather.gov/gridpoints/${e.point.wfo}/${e.point.x},${e.point.y}/forecast`),n=t.properties.periods[0].isDaytime?0:1;return{today:0===n,high:t.properties.periods[n].temperature,low:t.properties.periods[n+1].temperature,name:e.Name,icon:(0,a.Wu)(t.properties.periods[n].icon)}}catch(t){return console.error(`GetTravelWeather for ${e.Name} failed`),console.error(t.status,t.responseJSON),{name:e.Name,error:!0}}})),t=await Promise.all(e);this.data=t;this.data.some((e=>e.high))?(this.setStatus(s.Ay.loaded),this.drawLongCanvas()):this.setStatus(s.Ay.noData)}async drawLongCanvas(){const e=this.elem.querySelector(".travel-lines");e.innerHTML="";const t=this.data.map((e=>{if(e.error)return!1;const t={city:e};if(e.icon){t.city=e.name;const{low:n,high:s}=e,r=Math.round(n).toString(),a=Math.round(s).toString();t.low=r,t.high=a;const{icon:i}=e;t.icon={type:"img",src:i}}else t.error="NO TRAVEL DATA AVAILABLE";return this.fillTemplate("travel-row",t)})).filter((e=>e));e.append(...t)}async drawCanvas(){super.drawCanvas();const e=this.data;this.elem.querySelector(".header .title.dual .bottom").innerHTML=`For ${u(e)}`,this.finishDraw()}async showCanvas(){await this.drawCanvas(),super.showCanvas()}screenIndexChange(){this.baseCountChange(this.navBaseCount)}baseCountChange(e){let t=Math.min(this.elem.querySelector(".travel-lines").getBoundingClientRect().height-289,e-150);t<0&&(t=0),this.elem.querySelector(".main").scrollTo(0,t)}getLongCanvas(){return this.longCanvas}}const u=e=>e.reduce(((e,t)=>{if(t&&""===e){return i.c9.local().plus({days:t.today?0:1}).toLocaleString({weekday:"long"})}return e}),"");(0,l.Kb)(new c(5,"travel",!1))},519:(e,t,n)=>{n.d(t,{Io:()=>r,LV:()=>a,Up:()=>s});const s=e=>["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"][Math.floor(e/22.5+.5)%16],r=(e,t,n,s)=>Math.sqrt((n-e)**2+(s-t)**2),a=(e,t)=>(e%t+t)%t},147:(e,t,n)=>{n.d(t,{O:()=>s});const s=e=>{let t=e;return t=t.replace("https://api.weather.gov/",`${window.location.protocol}//${window.location.host}/`),t=t.replace("https://www.cpc.ncep.noaa.gov/",`${window.location.protocol}//${window.location.host}/`),t}},440:(e,t,n)=>{n.d(t,{Pq:()=>r,Qq:()=>a,av:()=>i});var s=n(147);const r=(e,t)=>o(e,"json",t),a=(e,t)=>o(e,"text",t),i=(e,t)=>o(e,"blob",t),o=async(e,t,n={})=>{const r={method:"GET",mode:"cors",type:"GET",retryCount:0,...n};r.originalRetries=r.retryCount;let a=e;!0===r.cors&&(a=(0,s.O)(e));const i=new URL(a,`${window.location.origin}/`);r.data&&Object.keys(r.data).forEach((e=>{const t=r.data[e];i.searchParams.append(e,t)}));const o=await l(i,r);if(!o.ok)throw new Error(`Fetch error ${o.status} ${o.statusText} while fetching ${o.url}`);switch(t){case"json":return o.json();case"text":return o.text();case"blob":return o.blob();default:return o}},l=(e,t)=>new Promise(((n,s)=>{fetch(e,t).then((s=>{if(t.retryCount>0){if(s.status>=500&&s.status<=599&&t.retryCount>0){"function"==typeof t.stillWaiting&&t.retryCount===t.originalRetries&&t.stillWaiting();const s={...t,retryCount:t.retryCount-1};return n(c(u(t.originalRetries-s.retryCount),l,e,s))}return n(s)}return n(s)})).catch((e=>s(e)))})),c=(e,t,...n)=>new Promise((s=>{setTimeout((()=>{s(t(...n))}),e)})),u=e=>{switch(e){case 1:return 1e3;case 2:return 2e3;case 3:return 5e3;case 4:return 1e4;default:return 3e4}}},47:(e,t,n)=>{n.d(t,{b:()=>o,u:()=>a});var s=n(440),r=n(147);const a=(e,t=!1)=>new Promise((n=>{const s=new Image;if(s.onload=e=>{n(e.target)},e instanceof Blob)s.src=window.URL.createObjectURL(e);else{let n=e;t&&(n=(0,r.O)(e)),s.src=n}})),i=[],o=e=>!i.includes(e)&&((0,s.av)(e),i.push(e),!0)},430:(e,t,n)=>{n.d(t,{A:()=>a});let s=!1;const r=(e=!1)=>(r.controller||(r.controller=new NoSleep),s!==e&&(s=e,e?r.controller.enable():r.controller.disable())),a=r},891:(e,t,n)=>{n.d(t,{C:()=>s});const s=e=>[/^[ A-Za-z]+ \/ /,/^[ A-Za-z]+\//,/^[ A-Za-z]+, /].reduce(((e,t)=>e.replace(t,"")),e)},413:(e,t,n)=>{n.d(t,{Q8:()=>o,X4:()=>s,Yy:()=>r,lt:()=>i,sz:()=>a,yX:()=>l});const s=(e,t)=>Math.trunc(e*10**t)/10**t,r=e=>Math.round(e/1.60934),a=e=>Math.round(9*e/5+32),i=e=>Math.round(e/1.60934),o=e=>Math.round(e/.3048),l=e=>s(2953e-7*e,2)},348:(e,t,n)=>{n.d(t,{f:()=>r});var s=n(440);const r=async(e,t)=>{try{return await(0,s.Pq)(`https://api.weather.gov/points/${e},${t}`)}catch(n){return console.log(`Unable to get point ${e}, ${t}`),console.error(n),!1}}},24:(e,t,n)=>{n.d(t,{A:()=>l});var s=n(592),r=n(125),a=n(211),i=n(999),o=n(302);const l=class{constructor(e,t,n,r){this.navId=e,this.elemId=void 0,this.data=void 0,this.loadingStatus=s.Ay.loading,this.name=n??t,this.getDataCallbacks=[],this.stillWaitingCallbacks=[],this.defaultEnabled=r,this.okToDrawCurrentConditions=!0,this.okToDrawCurrentDateTime=!0,this.showOnProgress=!0,this.timing={totalScreens:1,baseDelay:9e3,delay:1},this.navBaseCount=0,this.screenIndex=-1,this.storeElemId(t),this.isEnabled?this.setStatus(s.Ay.loading):this.setStatus(s.Ay.disabled),this.startNavCount(),document.addEventListener("DOMContentLoaded",(()=>{this.loadTemplates()}))}generateCheckbox(e=!0){if("progress"===this.elemId)return!1;const t=(0,i.J)()?.[`${this.elemId}-checkbox`];let n;void 0!==t&&(n="true"===t);let s=n??window.localStorage.getItem(`display-enabled: ${this.elemId}`);null===s&&(s=e),this.isEnabled=!("true"!==s&&!0!==s),window.localStorage.setItem(`display-enabled: ${this.elemId}`,this.isEnabled);const r=document.createElement("label");r.for=`${this.elemId}-checkbox`,r.id=`${this.elemId}-label`;const a=document.createElement("input");a.type="checkbox",a.value=!0,a.id=`${this.elemId}-checkbox`,a.name=`${this.elemId}-checkbox`,a.checked=this.isEnabled,a.addEventListener("change",(e=>this.checkboxChange(e)));const o=document.createElement("span");o.innerHTML=this.name;const l=document.createElement("span");return l.innerHTML="!!!",l.classList.add("alert"),r.append(a,o,l),this.checkbox=r,r}checkboxChange(e){this.isEnabled=e.target.checked,window.localStorage.setItem(`display-enabled: ${this.elemId}`,this.isEnabled),this.getData()}setStatus(e){this.status=e,(0,a.yB)({id:this.navId,status:this.status}),this.checkbox&&(this.checkbox.classList.remove(...s.LR),this.checkbox.classList.add((0,s.qx)(e)))}get status(){return this.loadingStatus}set status(e){this.loadingStatus=e}storeElemId(e){this.elemId||(this.elemId=e)}getData(e){return this.data=void 0,e&&(this.weatherParameters=e),this.isEnabled?(this.setStatus(s.Ay.loading),this.calcNavTiming(),!0):(this.setStatus(s.Ay.disabled),!1)}getDataCallback(){this.getDataCallbacks.forEach((e=>e(this.data))),this.getDataCallbacks=[]}drawCanvas(){this.screenIndex<0&&(this.screenIndex=0),this.okToDrawCurrentDateTime&&this.drawCurrentDateTime()}finishDraw(){this.okToDrawCurrentDateTime&&(this.drawCurrentDateTime(),this.dateTimeInterval||(this.dateTimeInterval=setInterval((()=>this.active&&this.drawCurrentDateTime()),100)))}drawCurrentDateTime(){const e=r.c9.local().setZone((0,a.eB)()),t=e.toLocaleString(r.c9.TIME_WITH_SECONDS).padStart(11," "),n=e.toFormat(" ccc LLL ")+e.day.toString().padStart(2," "),s=this.elem.querySelector(".date-time.date"),i=this.elem.querySelector(".date-time.time");i&&this.lastTime!==t&&(i.innerHTML=t.toUpperCase()),this.lastTime=t,s&&this.lastDate!==n&&(s.innerHTML=n.toUpperCase()),this.lastDate=n}showCanvas(e){e===a.ab.command.firstFrame&&this.navNext(e),e===a.ab.command.lastFrame&&this.navPrev(e),this.startNavCount(),this.elem.classList.add("show"),document.querySelector("#divTwc").classList.add(this.elemId)}hideCanvas(){this.resetNavBaseCount(),this.elem.classList.remove("show"),document.querySelector("#divTwc").classList.remove(this.elemId)}get active(){return 0!==this.elem.offsetHeight}get enabled(){return this.isEnabled}navBaseTime(){(0,a.F4)()&&this.active&&(this.navBaseCount+=1,this.baseCountChange&&this.baseCountChange(this.navBaseCount),this.updateScreenFromBaseCount())}async updateScreenFromBaseCount(){const e=this.screenIndexFromBaseCount();!1!==e?e!==this.screenIndex&&(this.screenIndex=-1===e?0:e,this.screenIndexChange?this.screenIndexChange(this.screenIndex):await this.drawCanvas(),this.showCanvas()):this.sendNavDisplayMessage(a.ab.response.next)}calcNavTiming(){if(!1===this.timing)return;Array.isArray(this.timing.delay)&&(this.timing.totalScreens=this.timing.delay.length);let e=[];if("number"==typeof this.timing.delay)for(let t=0;t"object"==typeof e?e.time:e));let t=0;if(this.timing.fullDelay=e.map((e=>{const n=t+e;return t+=e,n})),Array.isArray(this.timing.delay)&&"object"==typeof this.timing.delay[0])this.timing.screenIndexes=this.timing.delay.map((e=>e.si));else{this.timing.screenIndexes=[];for(let e=0;ee>this.navBaseCount));this.navBaseCount=e}this.updateScreenFromBaseCount()}navPrev(e){if(e===a.ab.command.lastFrame)this.navBaseCount=this.timing.fullDelay[this.timing.totalScreens-1]-1;else{const e=this.timing.fullDelay.reduce(((e,t)=>te>this.navBaseCount));return-1!==e&&this.timing.screenIndexes[e]}startNavCount(){this.navInterval||(this.navInterval=setInterval((()=>this.navBaseTime()),this.timing.baseDelay*o.A.speed.value))}resetNavBaseCount(){this.navBaseCount=0,this.screenIndex=-1,this.navInterval&&(clearInterval(this.navInterval),this.navInterval=void 0)}sendNavDisplayMessage(e){(0,a.Ju)({id:this.navId,type:e})}loadTemplates(){if(this.templates={},this.elem=document.querySelector(`#${this.elemId}-html`),!this.elem)return;this.elem.querySelectorAll(".template").forEach((e=>{const t=e.classList[0],n=e.cloneNode(!0);n.classList.remove("template"),this.templates[t]=n,e.remove()}))}fillTemplate(e,t){const n=this.templates[e];if(!n)return!1;const s=n.cloneNode(!0);return Object.entries(t).forEach((([e,t])=>{const n=s.querySelector(`.${e}`);n&&("string"==typeof t||"number"==typeof t?n.innerHTML=t:"img"===t?.type&&(n.querySelector("img").src=t.src))})),s}stillWaiting(){this.isEnabled&&this.setStatus(s.Ay.retrying),this.stillWaitingCallbacks.forEach((e=>e())),this.stillWaitingCallbacks=[]}}},125:(e,t,n)=>{n.d(t,{IX:()=>xn,c9:()=>gs,dw:()=>Cn});class s extends Error{}class r extends s{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class a extends s{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class i extends s{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class o extends s{}class l extends s{constructor(e){super(`Invalid unit ${e}`)}}class c extends s{}class u extends s{constructor(){super("Zone is an abstract class")}}const d="numeric",h="short",m="long",f={year:d,month:d,day:d},g={year:d,month:h,day:d},y={year:d,month:h,day:d,weekday:h},p={year:d,month:m,day:d},w={year:d,month:m,day:d,weekday:m},v={hour:d,minute:d},S={hour:d,minute:d,second:d},b={hour:d,minute:d,second:d,timeZoneName:h},k={hour:d,minute:d,second:d,timeZoneName:m},C={hour:d,minute:d,hourCycle:"h23"},T={hour:d,minute:d,second:d,hourCycle:"h23"},x={hour:d,minute:d,second:d,hourCycle:"h23",timeZoneName:h},L={hour:d,minute:d,second:d,hourCycle:"h23",timeZoneName:m},D={year:d,month:d,day:d,hour:d,minute:d},M={year:d,month:d,day:d,hour:d,minute:d,second:d},I={year:d,month:h,day:d,hour:d,minute:d},N={year:d,month:h,day:d,hour:d,minute:d,second:d},O={year:d,month:h,day:d,weekday:h,hour:d,minute:d},E={year:d,month:m,day:d,hour:d,minute:d,timeZoneName:h},$={year:d,month:m,day:d,hour:d,minute:d,second:d,timeZoneName:h},F={year:d,month:m,day:d,weekday:m,hour:d,minute:d,timeZoneName:m},q={year:d,month:m,day:d,weekday:m,hour:d,minute:d,second:d,timeZoneName:m};class W{get type(){throw new u}get name(){throw new u}get ianaName(){return this.name}get isUniversal(){throw new u}offsetName(e,t){throw new u}formatOffset(e,t){throw new u}offset(e){throw new u}equals(e){throw new u}get isValid(){throw new u}}let A=null;class V extends W{static get instance(){return null===A&&(A=new V),A}get type(){return"system"}get name(){return(new Intl.DateTimeFormat).resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return nt(e,t,n)}formatOffset(e,t){return it(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return"system"===e.type}get isValid(){return!0}}let P={};const _={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};let H={};class z extends W{static create(e){return H[e]||(H[e]=new z(e)),H[e]}static resetCache(){H={},P={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch(e){return!1}}constructor(e){super(),this.zoneName=e,this.valid=z.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return nt(e,t,n,this.name)}formatOffset(e,t){return it(this.offset(e),t)}offset(e){const t=new Date(e);if(isNaN(t))return NaN;const n=(s=this.name,P[s]||(P[s]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:s,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),P[s]);var s;let[r,a,i,o,l,c,u]=n.formatToParts?function(e,t){const n=e.formatToParts(t),s=[];for(let e=0;e=0?h:1e3+h,(Qe({year:r,month:a,day:i,hour:24===l?0:l,minute:c,second:u,millisecond:0})-d)/6e4}equals(e){return"iana"===e.type&&e.name===this.name}get isValid(){return this.valid}}let Z={};let R={};function U(e,t={}){const n=JSON.stringify([e,t]);let s=R[n];return s||(s=new Intl.DateTimeFormat(e,t),R[n]=s),s}let j={};let B={};let J=null;let G={};function Y(e,t,n,s){const r=e.listingMode();return"error"===r?null:"en"===r?n(t):s(t)}class K{constructor(e,t,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;const{padTo:s,floor:r,...a}=n;if(!t||Object.keys(a).length>0){const t={useGrouping:!1,...n};n.padTo>0&&(t.minimumIntegerDigits=n.padTo),this.inf=function(e,t={}){const n=JSON.stringify([e,t]);let s=j[n];return s||(s=new Intl.NumberFormat(e,t),j[n]=s),s}(e,t)}}format(e){if(this.inf){const t=this.floor?Math.floor(e):e;return this.inf.format(t)}return Re(this.floor?Math.floor(e):Je(e,3),this.padTo)}}class Q{constructor(e,t,n){let s;if(this.opts=n,this.originalZone=void 0,this.opts.timeZone)this.dt=e;else if("fixed"===e.zone.type){const t=e.offset/60*-1,n=t>=0?`Etc/GMT+${t}`:`Etc/GMT${t}`;0!==e.offset&&z.create(n).valid?(s=n,this.dt=e):(s="UTC",this.dt=0===e.offset?e:e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone)}else"system"===e.zone.type?this.dt=e:"iana"===e.zone.type?(this.dt=e,s=e.zone.name):(s="UTC",this.dt=e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone);const r={...this.opts};r.timeZone=r.timeZone||s,this.dtf=U(t,r)}format(){return this.originalZone?this.formatToParts().map((({value:e})=>e)).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){const e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map((e=>{if("timeZoneName"===e.type){const t=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...e,value:t}}return e})):e}resolvedOptions(){return this.dtf.resolvedOptions()}}class X{constructor(e,t,n){this.opts={style:"long",...n},!t&&Ve()&&(this.rtf=function(e,t={}){const{base:n,...s}=t,r=JSON.stringify([e,s]);let a=B[r];return a||(a=new Intl.RelativeTimeFormat(e,t),B[r]=a),a}(e,n))}format(e,t){return this.rtf?this.rtf.format(e,t):function(e,t,n="always",s=!1){const r={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},a=-1===["hours","minutes","seconds"].indexOf(e);if("auto"===n&&a){const n="days"===e;switch(t){case 1:return n?"tomorrow":`next ${r[e][0]}`;case-1:return n?"yesterday":`last ${r[e][0]}`;case 0:return n?"today":`this ${r[e][0]}`}}const i=Object.is(t,-0)||t<0,o=Math.abs(t),l=1===o,c=r[e],u=s?l?c[1]:c[2]||c[1]:l?r[e][0]:e;return i?`${o} ${u} ago`:`in ${o} ${u}`}(t,e,this.opts.numeric,"long"!==this.opts.style)}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}}const ee={firstDay:1,minimalDays:4,weekend:[6,7]};class te{static fromOpts(e){return te.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,t,n,s,r=!1){const a=e||ve.defaultLocale,i=a||(r?"en-US":J||(J=(new Intl.DateTimeFormat).resolvedOptions().locale,J)),o=t||ve.defaultNumberingSystem,l=n||ve.defaultOutputCalendar,c=ze(s)||ve.defaultWeekSettings;return new te(i,o,l,c,a)}static resetCache(){J=null,R={},j={},B={}}static fromObject({locale:e,numberingSystem:t,outputCalendar:n,weekSettings:s}={}){return te.create(e,t,n,s)}constructor(e,t,n,s,r){const[a,i,o]=function(e){const t=e.indexOf("-x-");-1!==t&&(e=e.substring(0,t));const n=e.indexOf("-u-");if(-1===n)return[e];{let t,s;try{t=U(e).resolvedOptions(),s=e}catch(r){const a=e.substring(0,n);t=U(a).resolvedOptions(),s=a}const{numberingSystem:r,calendar:a}=t;return[s,r,a]}}(e);this.locale=a,this.numberingSystem=t||i||null,this.outputCalendar=n||o||null,this.weekSettings=s,this.intl=function(e,t,n){return n||t?(e.includes("-u-")||(e+="-u"),n&&(e+=`-ca-${n}`),t&&(e+=`-nu-${t}`),e):e}(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=r,this.fastNumbersCached=null}get fastNumbers(){var e;return null==this.fastNumbersCached&&(this.fastNumbersCached=(!(e=this).numberingSystem||"latn"===e.numberingSystem)&&("latn"===e.numberingSystem||!e.locale||e.locale.startsWith("en")||"latn"===new Intl.DateTimeFormat(e.intl).resolvedOptions().numberingSystem)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),t=!(null!==this.numberingSystem&&"latn"!==this.numberingSystem||null!==this.outputCalendar&&"gregory"!==this.outputCalendar);return e&&t?"en":"intl"}clone(e){return e&&0!==Object.getOwnPropertyNames(e).length?te.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,ze(e.weekSettings)||this.weekSettings,e.defaultToEN||!1):this}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,t=!1){return Y(this,e,dt,(()=>{const n=t?{month:e,day:"numeric"}:{month:e},s=t?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=function(e){const t=[];for(let n=1;n<=12;n++){const s=gs.utc(2009,n,1);t.push(e(s))}return t}((e=>this.extract(e,n,"month")))),this.monthsCache[s][e]}))}weekdays(e,t=!1){return Y(this,e,gt,(()=>{const n=t?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},s=t?"format":"standalone";return this.weekdaysCache[s][e]||(this.weekdaysCache[s][e]=function(e){const t=[];for(let n=1;n<=7;n++){const s=gs.utc(2016,11,13+n);t.push(e(s))}return t}((e=>this.extract(e,n,"weekday")))),this.weekdaysCache[s][e]}))}meridiems(){return Y(this,void 0,(()=>yt),(()=>{if(!this.meridiemCache){const e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[gs.utc(2016,11,13,9),gs.utc(2016,11,13,19)].map((t=>this.extract(t,e,"dayperiod")))}return this.meridiemCache}))}eras(e){return Y(this,e,St,(()=>{const t={era:e};return this.eraCache[e]||(this.eraCache[e]=[gs.utc(-40,1,1),gs.utc(2017,1,1)].map((e=>this.extract(e,t,"era")))),this.eraCache[e]}))}extract(e,t,n){const s=this.dtFormatter(e,t).formatToParts().find((e=>e.type.toLowerCase()===n));return s?s.value:null}numberFormatter(e={}){return new K(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new Q(e,this.intl,t)}relFormatter(e={}){return new X(this.intl,this.isEnglish(),e)}listFormatter(e={}){return function(e,t={}){const n=JSON.stringify([e,t]);let s=Z[n];return s||(s=new Intl.ListFormat(e,t),Z[n]=s),s}(this.intl,e)}isEnglish(){return"en"===this.locale||"en-us"===this.locale.toLowerCase()||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:Pe()?function(e){let t=G[e];if(!t){const n=new Intl.Locale(e);t="getWeekInfo"in n?n.getWeekInfo():n.weekInfo,G[e]=t}return t}(this.locale):ee}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}}let ne=null;class se extends W{static get utcInstance(){return null===ne&&(ne=new se(0)),ne}static instance(e){return 0===e?se.utcInstance:new se(e)}static parseSpecifier(e){if(e){const t=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(t)return new se(st(t[1],t[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return 0===this.fixed?"UTC":`UTC${it(this.fixed,"narrow")}`}get ianaName(){return 0===this.fixed?"Etc/UTC":`Etc/GMT${it(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,t){return it(this.fixed,t)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return"fixed"===e.type&&e.fixed===this.fixed}get isValid(){return!0}}class re extends W{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function ae(e,t){if(qe(e)||null===e)return t;if(e instanceof W)return e;if("string"==typeof e){const n=e.toLowerCase();return"default"===n?t:"local"===n||"system"===n?V.instance:"utc"===n||"gmt"===n?se.utcInstance:se.parseSpecifier(n)||z.create(e)}return We(e)?se.instance(e):"object"==typeof e&&"offset"in e&&"function"==typeof e.offset?e:new re(e)}const ie={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},oe={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},le=ie.hanidec.replace(/[\[|\]]/g,"").split("");let ce={};function ue({numberingSystem:e},t=""){const n=e||"latn";return ce[n]||(ce[n]={}),ce[n][t]||(ce[n][t]=new RegExp(`${ie[n]}${t}`)),ce[n][t]}let de,he=()=>Date.now(),me="system",fe=null,ge=null,ye=null,pe=60,we=null;class ve{static get now(){return he}static set now(e){he=e}static set defaultZone(e){me=e}static get defaultZone(){return ae(me,V.instance)}static get defaultLocale(){return fe}static set defaultLocale(e){fe=e}static get defaultNumberingSystem(){return ge}static set defaultNumberingSystem(e){ge=e}static get defaultOutputCalendar(){return ye}static set defaultOutputCalendar(e){ye=e}static get defaultWeekSettings(){return we}static set defaultWeekSettings(e){we=ze(e)}static get twoDigitCutoffYear(){return pe}static set twoDigitCutoffYear(e){pe=e%100}static get throwOnInvalid(){return de}static set throwOnInvalid(e){de=e}static resetCaches(){te.resetCache(),z.resetCache(),gs.resetCache(),ce={}}}class Se{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}const be=[0,31,59,90,120,151,181,212,243,273,304,334],ke=[0,31,60,91,121,152,182,213,244,274,305,335];function Ce(e,t){return new Se("unit out of range",`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function Te(e,t,n){const s=new Date(Date.UTC(e,t-1,n));e<100&&e>=0&&s.setUTCFullYear(s.getUTCFullYear()-1900);const r=s.getUTCDay();return 0===r?7:r}function xe(e,t,n){return n+(Ge(e)?ke:be)[t-1]}function Le(e,t){const n=Ge(e)?ke:be,s=n.findIndex((e=>eet(s,t,n)?(l=s+1,c=1):l=s,{weekYear:l,weekNumber:c,weekday:o,...ot(e)}}function Ie(e,t=4,n=1){const{weekYear:s,weekNumber:r,weekday:a}=e,i=De(Te(s,1,t),n),o=Ye(s);let l,c=7*r+a-i-7+t;c<1?(l=s-1,c+=Ye(l)):c>o?(l=s+1,c-=Ye(s)):l=s;const{month:u,day:d}=Le(l,c);return{year:l,month:u,day:d,...ot(e)}}function Ne(e){const{year:t,month:n,day:s}=e;return{year:t,ordinal:xe(t,n,s),...ot(e)}}function Oe(e){const{year:t,ordinal:n}=e,{month:s,day:r}=Le(t,n);return{year:t,month:s,day:r,...ot(e)}}function Ee(e,t){if(!qe(e.localWeekday)||!qe(e.localWeekNumber)||!qe(e.localWeekYear)){if(!qe(e.weekday)||!qe(e.weekNumber)||!qe(e.weekYear))throw new o("Cannot mix locale-based week fields with ISO-based week fields");return qe(e.localWeekday)||(e.weekday=e.localWeekday),qe(e.localWeekNumber)||(e.weekNumber=e.localWeekNumber),qe(e.localWeekYear)||(e.weekYear=e.localWeekYear),delete e.localWeekday,delete e.localWeekNumber,delete e.localWeekYear,{minDaysInFirstWeek:t.getMinDaysInFirstWeek(),startOfWeek:t.getStartOfWeek()}}return{minDaysInFirstWeek:4,startOfWeek:1}}function $e(e){const t=Ae(e.year),n=Ze(e.month,1,12),s=Ze(e.day,1,Ke(e.year,e.month));return t?n?!s&&Ce("day",e.day):Ce("month",e.month):Ce("year",e.year)}function Fe(e){const{hour:t,minute:n,second:s,millisecond:r}=e,a=Ze(t,0,23)||24===t&&0===n&&0===s&&0===r,i=Ze(n,0,59),o=Ze(s,0,59),l=Ze(r,0,999);return a?i?o?!l&&Ce("millisecond",r):Ce("second",s):Ce("minute",n):Ce("hour",t)}function qe(e){return void 0===e}function We(e){return"number"==typeof e}function Ae(e){return"number"==typeof e&&e%1==0}function Ve(){try{return"undefined"!=typeof Intl&&!!Intl.RelativeTimeFormat}catch(e){return!1}}function Pe(){try{return"undefined"!=typeof Intl&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch(e){return!1}}function _e(e,t,n){if(0!==e.length)return e.reduce(((e,s)=>{const r=[t(s),s];return e&&n(e[0],r[0])===e[0]?e:r}),null)[1]}function He(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function ze(e){if(null==e)return null;if("object"!=typeof e)throw new c("Week settings must be an object");if(!Ze(e.firstDay,1,7)||!Ze(e.minimalDays,1,7)||!Array.isArray(e.weekend)||e.weekend.some((e=>!Ze(e,1,7))))throw new c("Invalid week settings");return{firstDay:e.firstDay,minimalDays:e.minimalDays,weekend:Array.from(e.weekend)}}function Ze(e,t,n){return Ae(e)&&e>=t&&e<=n}function Re(e,t=2){let n;return n=e<0?"-"+(""+-e).padStart(t,"0"):(""+e).padStart(t,"0"),n}function Ue(e){return qe(e)||null===e||""===e?void 0:parseInt(e,10)}function je(e){return qe(e)||null===e||""===e?void 0:parseFloat(e)}function Be(e){if(!qe(e)&&null!==e&&""!==e){const t=1e3*parseFloat("0."+e);return Math.floor(t)}}function Je(e,t,n=!1){const s=10**t;return(n?Math.trunc:Math.round)(e*s)/s}function Ge(e){return e%4==0&&(e%100!=0||e%400==0)}function Ye(e){return Ge(e)?366:365}function Ke(e,t){const n=function(e,t){return e-t*Math.floor(e/t)}(t-1,12)+1;return 2===n?Ge(e+(t-n)/12)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function Qe(e){let t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&e.year>=0&&(t=new Date(t),t.setUTCFullYear(e.year,e.month-1,e.day)),+t}function Xe(e,t,n){return-De(Te(e,1,t),n)+t-1}function et(e,t=4,n=1){const s=Xe(e,t,n),r=Xe(e+1,t,n);return(Ye(e)-s+r)/7}function tt(e){return e>99?e:e>ve.twoDigitCutoffYear?1900+e:2e3+e}function nt(e,t,n,s=null){const r=new Date(e),a={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};s&&(a.timeZone=s);const i={timeZoneName:t,...a},o=new Intl.DateTimeFormat(n,i).formatToParts(r).find((e=>"timezonename"===e.type.toLowerCase()));return o?o.value:null}function st(e,t){let n=parseInt(e,10);Number.isNaN(n)&&(n=0);const s=parseInt(t,10)||0;return 60*n+(n<0||Object.is(n,-0)?-s:s)}function rt(e){const t=Number(e);if("boolean"==typeof e||""===e||Number.isNaN(t))throw new c(`Invalid unit value ${e}`);return t}function at(e,t){const n={};for(const s in e)if(He(e,s)){const r=e[s];if(null==r)continue;n[t(s)]=rt(r)}return n}function it(e,t){const n=Math.trunc(Math.abs(e/60)),s=Math.trunc(Math.abs(e%60)),r=e>=0?"+":"-";switch(t){case"short":return`${r}${Re(n,2)}:${Re(s,2)}`;case"narrow":return`${r}${n}${s>0?`:${s}`:""}`;case"techie":return`${r}${Re(n,2)}${Re(s,2)}`;default:throw new RangeError(`Value format ${t} is out of range for property format`)}}function ot(e){return function(e,t){return t.reduce(((t,n)=>(t[n]=e[n],t)),{})}(e,["hour","minute","second","millisecond"])}const lt=["January","February","March","April","May","June","July","August","September","October","November","December"],ct=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],ut=["J","F","M","A","M","J","J","A","S","O","N","D"];function dt(e){switch(e){case"narrow":return[...ut];case"short":return[...ct];case"long":return[...lt];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const ht=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],mt=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],ft=["M","T","W","T","F","S","S"];function gt(e){switch(e){case"narrow":return[...ft];case"short":return[...mt];case"long":return[...ht];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const yt=["AM","PM"],pt=["Before Christ","Anno Domini"],wt=["BC","AD"],vt=["B","A"];function St(e){switch(e){case"narrow":return[...vt];case"short":return[...wt];case"long":return[...pt];default:return null}}function bt(e,t){let n="";for(const s of e)s.literal?n+=s.val:n+=t(s.val);return n}const kt={D:f,DD:g,DDD:p,DDDD:w,t:v,tt:S,ttt:b,tttt:k,T:C,TT:T,TTT:x,TTTT:L,f:D,ff:I,fff:E,ffff:F,F:M,FF:N,FFF:$,FFFF:q};class Ct{static create(e,t={}){return new Ct(e,t)}static parseFormat(e){let t=null,n="",s=!1;const r=[];for(let a=0;a0&&r.push({literal:s||/^\s+$/.test(n),val:n}),t=null,n="",s=!s):s||i===t?n+=i:(n.length>0&&r.push({literal:/^\s+$/.test(n),val:n}),n=i,t=i)}return n.length>0&&r.push({literal:s||/^\s+$/.test(n),val:n}),r}static macroTokenToFormatOpts(e){return kt[e]}constructor(e,t){this.opts=t,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,t){null===this.systemLoc&&(this.systemLoc=this.loc.redefaultToSystem());return this.systemLoc.dtFormatter(e,{...this.opts,...t}).format()}dtFormatter(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t})}formatDateTime(e,t){return this.dtFormatter(e,t).format()}formatDateTimeParts(e,t){return this.dtFormatter(e,t).formatToParts()}formatInterval(e,t){return this.dtFormatter(e.start,t).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,t){return this.dtFormatter(e,t).resolvedOptions()}num(e,t=0){if(this.opts.forceSimple)return Re(e,t);const n={...this.opts};return t>0&&(n.padTo=t),this.loc.numberFormatter(n).format(e)}formatDateTimeFromString(e,t){const n="en"===this.loc.listingMode(),s=this.loc.outputCalendar&&"gregory"!==this.loc.outputCalendar,r=(t,n)=>this.loc.extract(e,t,n),a=t=>e.isOffsetFixed&&0===e.offset&&t.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,t.format):"",i=()=>n?function(e){return yt[e.hour<12?0:1]}(e):r({hour:"numeric",hourCycle:"h12"},"dayperiod"),o=(t,s)=>n?function(e,t){return dt(t)[e.month-1]}(e,t):r(s?{month:t}:{month:t,day:"numeric"},"month"),l=(t,s)=>n?function(e,t){return gt(t)[e.weekday-1]}(e,t):r(s?{weekday:t}:{weekday:t,month:"long",day:"numeric"},"weekday"),c=t=>{const n=Ct.macroTokenToFormatOpts(t);return n?this.formatWithSystemDefault(e,n):t},u=t=>n?function(e,t){return St(t)[e.year<0?0:1]}(e,t):r({era:t},"era");return bt(Ct.parseFormat(t),(t=>{switch(t){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12==0?12:e.hour%12);case"hh":return this.num(e.hour%12==0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return a({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return a({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return a({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return i();case"d":return s?r({day:"numeric"},"day"):this.num(e.day);case"dd":return s?r({day:"2-digit"},"day"):this.num(e.day,2);case"c":case"E":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return s?r({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return s?r({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return o("short",!0);case"LLLL":return o("long",!0);case"LLLLL":return o("narrow",!0);case"M":return s?r({month:"numeric"},"month"):this.num(e.month);case"MM":return s?r({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return o("short",!1);case"MMMM":return o("long",!1);case"MMMMM":return o("narrow",!1);case"y":return s?r({year:"numeric"},"year"):this.num(e.year);case"yy":return s?r({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return s?r({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return s?r({year:"numeric"},"year"):this.num(e.year,6);case"G":return u("short");case"GG":return u("long");case"GGGGG":return u("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"n":return this.num(e.localWeekNumber);case"nn":return this.num(e.localWeekNumber,2);case"ii":return this.num(e.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(e.localWeekYear,4);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return c(t)}}))}formatDurationFromString(e,t){const n=e=>{switch(e[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},s=Ct.parseFormat(t),r=s.reduce(((e,{literal:t,val:n})=>t?e:e.concat(n)),[]);return bt(s,(e=>t=>{const s=n(t);return s?this.num(e.get(s),t.length):t})(e.shiftTo(...r.map(n).filter((e=>e)))))}}const Tt=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function xt(...e){const t=e.reduce(((e,t)=>e+t.source),"");return RegExp(`^${t}$`)}function Lt(...e){return t=>e.reduce((([e,n,s],r)=>{const[a,i,o]=r(t,s);return[{...e,...a},i||n,o]}),[{},null,1]).slice(0,2)}function Dt(e,...t){if(null==e)return[null,null];for(const[n,s]of t){const t=n.exec(e);if(t)return s(t)}return[null,null]}function Mt(...e){return(t,n)=>{const s={};let r;for(r=0;rvoid 0!==e&&(t||e&&u)?-e:e;return[{years:h(je(n)),months:h(je(s)),weeks:h(je(r)),days:h(je(a)),hours:h(je(i)),minutes:h(je(o)),seconds:h(je(l),"-0"===l),milliseconds:h(Be(c),d)}]}const Rt={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Ut(e,t,n,s,r,a,i){const o={year:2===t.length?tt(Ue(t)):Ue(t),month:ct.indexOf(n)+1,day:Ue(s),hour:Ue(r),minute:Ue(a)};return i&&(o.second=Ue(i)),e&&(o.weekday=e.length>3?ht.indexOf(e)+1:mt.indexOf(e)+1),o}const jt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function Bt(e){const[,t,n,s,r,a,i,o,l,c,u,d]=e,h=Ut(t,r,s,n,a,i,o);let m;return m=l?Rt[l]:c?0:st(u,d),[h,new se(m)]}const Jt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,Gt=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,Yt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function Kt(e){const[,t,n,s,r,a,i,o]=e;return[Ut(t,r,s,n,a,i,o),se.utcInstance]}function Qt(e){const[,t,n,s,r,a,i,o]=e;return[Ut(t,o,n,s,r,a,i),se.utcInstance]}const Xt=xt(/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,Et),en=xt(/(\d{4})-?W(\d\d)(?:-?(\d))?/,Et),tn=xt(/(\d{4})-?(\d{3})/,Et),nn=xt(Ot),sn=Lt((function(e,t){return[{year:At(e,t),month:At(e,t+1,1),day:At(e,t+2,1)},null,t+3]}),Vt,Pt,_t),rn=Lt($t,Vt,Pt,_t),an=Lt(Ft,Vt,Pt,_t),on=Lt(Vt,Pt,_t);const ln=Lt(Vt);const cn=xt(/(\d{4})-(\d\d)-(\d\d)/,Wt),un=xt(qt),dn=Lt(Vt,Pt,_t);const hn="Invalid Duration",mn={weeks:{days:7,hours:168,minutes:10080,seconds:604800,milliseconds:6048e5},days:{hours:24,minutes:1440,seconds:86400,milliseconds:864e5},hours:{minutes:60,seconds:3600,milliseconds:36e5},minutes:{seconds:60,milliseconds:6e4},seconds:{milliseconds:1e3}},fn={years:{quarters:4,months:12,weeks:52,days:365,hours:8760,minutes:525600,seconds:31536e3,milliseconds:31536e6},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:131040,seconds:7862400,milliseconds:78624e5},months:{weeks:4,days:30,hours:720,minutes:43200,seconds:2592e3,milliseconds:2592e6},...mn},gn=365.2425,yn=30.436875,pn={years:{quarters:4,months:12,weeks:52.1775,days:gn,hours:8765.82,minutes:525949.2,seconds:525949.2*60,milliseconds:525949.2*60*1e3},quarters:{months:3,weeks:13.044375,days:91.310625,hours:2191.455,minutes:131487.3,seconds:525949.2*60/4,milliseconds:7889237999.999999},months:{weeks:4.3481250000000005,days:yn,hours:730.485,minutes:43829.1,seconds:2629746,milliseconds:2629746e3},...mn},wn=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],vn=wn.slice(0).reverse();function Sn(e,t,n=!1){const s={values:n?t.values:{...e.values,...t.values||{}},loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy,matrix:t.matrix||e.matrix};return new Cn(s)}function bn(e,t){let n=t.milliseconds??0;for(const s of vn.slice(1))t[s]&&(n+=t[s]*e[s].milliseconds);return n}function kn(e,t){const n=bn(e,t)<0?-1:1;wn.reduceRight(((s,r)=>{if(qe(t[r]))return s;if(s){const a=t[s]*n,i=e[r][s],o=Math.floor(a/i);t[r]+=o*n,t[s]-=o*i*n}return r}),null),wn.reduce(((n,s)=>{if(qe(t[s]))return n;if(n){const r=t[n]%1;t[n]-=r,t[s]+=r*e[n][s]}return s}),null)}class Cn{constructor(e){const t="longterm"===e.conversionAccuracy||!1;let n=t?pn:fn;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||te.create(),this.conversionAccuracy=t?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(e,t){return Cn.fromObject({milliseconds:e},t)}static fromObject(e,t={}){if(null==e||"object"!=typeof e)throw new c("Duration.fromObject: argument expected to be an object, got "+(null===e?"null":typeof e));return new Cn({values:at(e,Cn.normalizeUnit),loc:te.fromObject(t),conversionAccuracy:t.conversionAccuracy,matrix:t.matrix})}static fromDurationLike(e){if(We(e))return Cn.fromMillis(e);if(Cn.isDuration(e))return e;if("object"==typeof e)return Cn.fromObject(e);throw new c(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,t){const[n]=function(e){return Dt(e,[zt,Zt])}(e);return n?Cn.fromObject(n,t):Cn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,t){const[n]=function(e){return Dt(e,[Ht,ln])}(e);return n?Cn.fromObject(n,t):Cn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the Duration is invalid");const n=e instanceof Se?e:new Se(e,t);if(ve.throwOnInvalid)throw new i(n);return new Cn({invalid:n})}static normalizeUnit(e){const t={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e?e.toLowerCase():e];if(!t)throw new l(e);return t}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,t={}){const n={...t,floor:!1!==t.round&&!1!==t.floor};return this.isValid?Ct.create(this.loc,n).formatDurationFromString(this,e):hn}toHuman(e={}){if(!this.isValid)return hn;const t=wn.map((t=>{const n=this.values[t];return qe(n)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:t.slice(0,-1)}).format(n)})).filter((e=>e));return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(t)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return 0!==this.years&&(e+=this.years+"Y"),0===this.months&&0===this.quarters||(e+=this.months+3*this.quarters+"M"),0!==this.weeks&&(e+=this.weeks+"W"),0!==this.days&&(e+=this.days+"D"),0===this.hours&&0===this.minutes&&0===this.seconds&&0===this.milliseconds||(e+="T"),0!==this.hours&&(e+=this.hours+"H"),0!==this.minutes&&(e+=this.minutes+"M"),0===this.seconds&&0===this.milliseconds||(e+=Je(this.seconds+this.milliseconds/1e3,3)+"S"),"P"===e&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const t=this.toMillis();if(t<0||t>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1};return gs.fromMillis(t,{zone:"UTC"}).toISOTime(e)}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?bn(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const t=Cn.fromDurationLike(e),n={};for(const e of wn)(He(t.values,e)||He(this.values,e))&&(n[e]=t.get(e)+this.get(e));return Sn(this,{values:n},!0)}minus(e){if(!this.isValid)return this;const t=Cn.fromDurationLike(e);return this.plus(t.negate())}mapUnits(e){if(!this.isValid)return this;const t={};for(const n of Object.keys(this.values))t[n]=rt(e(this.values[n],n));return Sn(this,{values:t},!0)}get(e){return this[Cn.normalizeUnit(e)]}set(e){if(!this.isValid)return this;return Sn(this,{values:{...this.values,...at(e,Cn.normalizeUnit)}})}reconfigure({locale:e,numberingSystem:t,conversionAccuracy:n,matrix:s}={}){return Sn(this,{loc:this.loc.clone({locale:e,numberingSystem:t}),matrix:s,conversionAccuracy:n})}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return kn(this.matrix,e),Sn(this,{values:e},!0)}rescale(){if(!this.isValid)return this;return Sn(this,{values:function(e){const t={};for(const[n,s]of Object.entries(e))0!==s&&(t[n]=s);return t}(this.normalize().shiftToAll().toObject())},!0)}shiftTo(...e){if(!this.isValid)return this;if(0===e.length)return this;e=e.map((e=>Cn.normalizeUnit(e)));const t={},n={},s=this.toObject();let r;for(const a of wn)if(e.indexOf(a)>=0){r=a;let e=0;for(const t in n)e+=this.matrix[t][a]*n[t],n[t]=0;We(s[a])&&(e+=s[a]);const i=Math.trunc(e);t[a]=i,n[a]=(1e3*e-1e3*i)/1e3}else We(s[a])&&(n[a]=s[a]);for(const e in n)0!==n[e]&&(t[r]+=e===r?n[e]:n[e]/this.matrix[r][e]);return kn(this.matrix,t),Sn(this,{values:t},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;const e={};for(const t of Object.keys(this.values))e[t]=0===this.values[t]?0:-this.values[t];return Sn(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return null===this.invalid}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid)return!1;if(!this.loc.equals(e.loc))return!1;for(const s of wn)if(t=this.values[s],n=e.values[s],!(void 0===t||0===t?void 0===n||0===n:t===n))return!1;var t,n;return!0}}const Tn="Invalid Interval";class xn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the Interval is invalid");const n=e instanceof Se?e:new Se(e,t);if(ve.throwOnInvalid)throw new a(n);return new xn({invalid:n})}static fromDateTimes(e,t){const n=ys(e),s=ys(t),r=function(e,t){return e&&e.isValid?t&&t.isValid?te}isBefore(e){return!!this.isValid&&this.e<=e}contains(e){return!!this.isValid&&(this.s<=e&&this.e>e)}set({start:e,end:t}={}){return this.isValid?xn.fromDateTimes(e||this.s,t||this.e):this}splitAt(...e){if(!this.isValid)return[];const t=e.map(ys).filter((e=>this.contains(e))).sort(((e,t)=>e.toMillis()-t.toMillis())),n=[];let{s}=this,r=0;for(;s+this.e?this.e:e;n.push(xn.fromDateTimes(s,a)),s=a,r+=1}return n}splitBy(e){const t=Cn.fromDurationLike(e);if(!this.isValid||!t.isValid||0===t.as("milliseconds"))return[];let n,{s}=this,r=1;const a=[];for(;se*r)));n=+e>+this.e?this.e:e,a.push(xn.fromDateTimes(s,n)),s=n,r+=1}return a}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s=e.e)}equals(e){return!(!this.isValid||!e.isValid)&&(this.s.equals(e.s)&&this.e.equals(e.e))}intersection(e){if(!this.isValid)return this;const t=this.s>e.s?this.s:e.s,n=this.e=n?null:xn.fromDateTimes(t,n)}union(e){if(!this.isValid)return this;const t=this.se.e?this.e:e.e;return xn.fromDateTimes(t,n)}static merge(e){const[t,n]=e.sort(((e,t)=>e.s-t.s)).reduce((([e,t],n)=>t?t.overlaps(n)||t.abutsStart(n)?[e,t.union(n)]:[e.concat([t]),n]:[e,n]),[[],null]);return n&&t.push(n),t}static xor(e){let t=null,n=0;const s=[],r=e.map((e=>[{time:e.s,type:"s"},{time:e.e,type:"e"}])),a=Array.prototype.concat(...r).sort(((e,t)=>e.time-t.time));for(const e of a)n+="s"===e.type?1:-1,1===n?t=e.time:(t&&+t!=+e.time&&s.push(xn.fromDateTimes(t,e.time)),t=null);return xn.merge(s)}difference(...e){return xn.xor([this].concat(e)).map((e=>this.intersection(e))).filter((e=>e&&!e.isEmpty()))}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:Tn}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=f,t={}){return this.isValid?Ct.create(this.s.loc.clone(t),e).formatInterval(this):Tn}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Tn}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Tn}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Tn}toFormat(e,{separator:t=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:Tn}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):Cn.invalid(this.invalidReason)}mapEndpoints(e){return xn.fromDateTimes(e(this.s),e(this.e))}}class Ln{static hasDST(e=ve.defaultZone){const t=gs.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return z.isValidZone(e)}static normalizeZone(e){return ae(e,ve.defaultZone)}static getStartOfWeek({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getWeekendDays().slice()}static months(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null,outputCalendar:r="gregory"}={}){return(s||te.create(t,n,r)).months(e)}static monthsFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null,outputCalendar:r="gregory"}={}){return(s||te.create(t,n,r)).months(e,!0)}static weekdays(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null}={}){return(s||te.create(t,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null}={}){return(s||te.create(t,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return te.create(e).meridiems()}static eras(e="short",{locale:t=null}={}){return te.create(t,null,"gregory").eras(e)}static features(){return{relative:Ve(),localeWeek:Pe()}}}function Dn(e,t){const n=e=>e.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),s=n(t)-n(e);return Math.floor(Cn.fromMillis(s).as("days"))}function Mn(e,t,n,s){let[r,a,i,o]=function(e,t,n){const s=[["years",(e,t)=>t.year-e.year],["quarters",(e,t)=>t.quarter-e.quarter+4*(t.year-e.year)],["months",(e,t)=>t.month-e.month+12*(t.year-e.year)],["weeks",(e,t)=>{const n=Dn(e,t);return(n-n%7)/7}],["days",Dn]],r={},a=e;let i,o;for(const[l,c]of s)n.indexOf(l)>=0&&(i=l,r[l]=c(e,t),o=a.plus(r),o>t?(r[l]--,(e=a.plus(r))>t&&(o=e,r[l]--,e=a.plus(r))):e=o);return[e,r,o,i]}(e,t,n);const l=t-r,c=n.filter((e=>["hours","minutes","seconds","milliseconds"].indexOf(e)>=0));0===c.length&&(i0?Cn.fromMillis(l,s).shiftTo(...c).plus(u):u}function In(e,t=e=>e){return{regex:e,deser:([e])=>t(function(e){let t=parseInt(e,10);if(isNaN(t)){t="";for(let n=0;n=n&&s<=r&&(t+=s-n)}}return parseInt(t,10)}return t}(e))}}const Nn=`[ ${String.fromCharCode(160)}]`,On=new RegExp(Nn,"g");function En(e){return e.replace(/\./g,"\\.?").replace(On,Nn)}function $n(e){return e.replace(/\./g,"").replace(On," ").toLowerCase()}function Fn(e,t){return null===e?null:{regex:RegExp(e.map(En).join("|")),deser:([n])=>e.findIndex((e=>$n(n)===$n(e)))+t}}function qn(e,t){return{regex:e,deser:([,e,t])=>st(e,t),groups:t}}function Wn(e){return{regex:e,deser:([e])=>e}}const An={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};let Vn=null;function Pn(e,t){return Array.prototype.concat(...e.map((e=>function(e,t){if(e.literal)return e;const n=zn(Ct.macroTokenToFormatOpts(e.val),t);return null==n||n.includes(void 0)?e:n}(e,t))))}class _n{constructor(e,t){if(this.locale=e,this.format=t,this.tokens=Pn(Ct.parseFormat(t),e),this.units=this.tokens.map((t=>function(e,t){const n=ue(t),s=ue(t,"{2}"),r=ue(t,"{3}"),a=ue(t,"{4}"),i=ue(t,"{6}"),o=ue(t,"{1,2}"),l=ue(t,"{1,3}"),c=ue(t,"{1,6}"),u=ue(t,"{1,9}"),d=ue(t,"{2,4}"),h=ue(t,"{4,6}"),m=e=>{return{regex:RegExp((t=e.val,t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"))),deser:([e])=>e,literal:!0};var t},f=(f=>{if(e.literal)return m(f);switch(f.val){case"G":return Fn(t.eras("short"),0);case"GG":return Fn(t.eras("long"),0);case"y":return In(c);case"yy":case"kk":return In(d,tt);case"yyyy":case"kkkk":return In(a);case"yyyyy":return In(h);case"yyyyyy":return In(i);case"M":case"L":case"d":case"H":case"h":case"m":case"q":case"s":case"W":return In(o);case"MM":case"LL":case"dd":case"HH":case"hh":case"mm":case"qq":case"ss":case"WW":return In(s);case"MMM":return Fn(t.months("short",!0),1);case"MMMM":return Fn(t.months("long",!0),1);case"LLL":return Fn(t.months("short",!1),1);case"LLLL":return Fn(t.months("long",!1),1);case"o":case"S":return In(l);case"ooo":case"SSS":return In(r);case"u":return Wn(u);case"uu":return Wn(o);case"uuu":case"E":case"c":return In(n);case"a":return Fn(t.meridiems(),0);case"EEE":return Fn(t.weekdays("short",!1),1);case"EEEE":return Fn(t.weekdays("long",!1),1);case"ccc":return Fn(t.weekdays("short",!0),1);case"cccc":return Fn(t.weekdays("long",!0),1);case"Z":case"ZZ":return qn(new RegExp(`([+-]${o.source})(?::(${s.source}))?`),2);case"ZZZ":return qn(new RegExp(`([+-]${o.source})(${s.source})?`),2);case"z":return Wn(/[a-z_+-/]{1,256}?/i);case" ":return Wn(/[^\S\n\r]/);default:return m(f)}})(e)||{invalidReason:"missing Intl.DateTimeFormat.formatToParts support"};return f.token=e,f}(t,e))),this.disqualifyingUnit=this.units.find((e=>e.invalidReason)),!this.disqualifyingUnit){const[e,t]=[`^${(n=this.units).map((e=>e.regex)).reduce(((e,t)=>`${e}(${t.source})`),"")}$`,n];this.regex=RegExp(e,"i"),this.handlers=t}var n}explainFromTokens(e){if(this.isValid){const[t,n]=function(e,t,n){const s=e.match(t);if(s){const e={};let t=1;for(const r in n)if(He(n,r)){const a=n[r],i=a.groups?a.groups+1:1;!a.literal&&a.token&&(e[a.token.val[0]]=a.deser(s.slice(t,t+i))),t+=i}return[s,e]}return[s,{}]}(e,this.regex,this.handlers),[s,r,a]=n?function(e){let t,n=null;return qe(e.z)||(n=z.create(e.z)),qe(e.Z)||(n||(n=new se(e.Z)),t=e.Z),qe(e.q)||(e.M=3*(e.q-1)+1),qe(e.h)||(e.h<12&&1===e.a?e.h+=12:12===e.h&&0===e.a&&(e.h=0)),0===e.G&&e.y&&(e.y=-e.y),qe(e.u)||(e.S=Be(e.u)),[Object.keys(e).reduce(((t,n)=>{const s=(e=>{switch(e){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}})(n);return s&&(t[s]=e[n]),t}),{}),n,t]}(n):[null,null,void 0];if(He(n,"a")&&He(n,"H"))throw new o("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:this.tokens,regex:this.regex,rawMatches:t,matches:n,result:s,zone:r,specificOffset:a}}return{input:e,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}}function Hn(e,t,n){return new _n(e,n).explainFromTokens(t)}function zn(e,t){if(!e)return null;const n=Ct.create(t,e).dtFormatter((Vn||(Vn=gs.fromMillis(1555555555555)),Vn)),s=n.formatToParts(),r=n.resolvedOptions();return s.map((t=>function(e,t,n){const{type:s,value:r}=e;if("literal"===s){const e=/^\s+$/.test(r);return{literal:!e,val:e?" ":r}}const a=t[s];let i=s;"hour"===s&&(i=null!=t.hour12?t.hour12?"hour12":"hour24":null!=t.hourCycle?"h11"===t.hourCycle||"h12"===t.hourCycle?"hour12":"hour24":n.hour12?"hour12":"hour24");let o=An[i];if("object"==typeof o&&(o=o[a]),o)return{literal:!1,val:o}}(t,e,r)))}const Zn="Invalid DateTime",Rn=864e13;function Un(e){return new Se("unsupported zone",`the zone "${e.name}" is not supported`)}function jn(e){return null===e.weekData&&(e.weekData=Me(e.c)),e.weekData}function Bn(e){return null===e.localWeekData&&(e.localWeekData=Me(e.c,e.loc.getMinDaysInFirstWeek(),e.loc.getStartOfWeek())),e.localWeekData}function Jn(e,t){const n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new gs({...n,...t,old:n})}function Gn(e,t,n){let s=e-60*t*1e3;const r=n.offset(s);if(t===r)return[s,t];s-=60*(r-t)*1e3;const a=n.offset(s);return r===a?[s,r]:[e-60*Math.min(r,a)*1e3,Math.max(r,a)]}function Yn(e,t){const n=new Date(e+=60*t*1e3);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function Kn(e,t,n){return Gn(Qe(e),t,n)}function Qn(e,t){const n=e.o,s=e.c.year+Math.trunc(t.years),r=e.c.month+Math.trunc(t.months)+3*Math.trunc(t.quarters),a={...e.c,year:s,month:r,day:Math.min(e.c.day,Ke(s,r))+Math.trunc(t.days)+7*Math.trunc(t.weeks)},i=Cn.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as("milliseconds"),o=Qe(a);let[l,c]=Gn(o,n,e.zone);return 0!==i&&(l+=i,c=e.zone.offset(l)),{ts:l,o:c}}function Xn(e,t,n,s,r,a){const{setZone:i,zone:o}=n;if(e&&0!==Object.keys(e).length||t){const s=t||o,r=gs.fromObject(e,{...n,zone:s,specificOffset:a});return i?r:r.setZone(o)}return gs.invalid(new Se("unparsable",`the input "${r}" can't be parsed as ${s}`))}function es(e,t,n=!0){return e.isValid?Ct.create(te.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function ts(e,t){const n=e.c.year>9999||e.c.year<0;let s="";return n&&e.c.year>=0&&(s+="+"),s+=Re(e.c.year,n?6:4),t?(s+="-",s+=Re(e.c.month),s+="-",s+=Re(e.c.day)):(s+=Re(e.c.month),s+=Re(e.c.day)),s}function ns(e,t,n,s,r,a){let i=Re(e.c.hour);return t?(i+=":",i+=Re(e.c.minute),0===e.c.millisecond&&0===e.c.second&&n||(i+=":")):i+=Re(e.c.minute),0===e.c.millisecond&&0===e.c.second&&n||(i+=Re(e.c.second),0===e.c.millisecond&&s||(i+=".",i+=Re(e.c.millisecond,3))),r&&(e.isOffsetFixed&&0===e.offset&&!a?i+="Z":e.o<0?(i+="-",i+=Re(Math.trunc(-e.o/60)),i+=":",i+=Re(Math.trunc(-e.o%60))):(i+="+",i+=Re(Math.trunc(e.o/60)),i+=":",i+=Re(Math.trunc(e.o%60)))),a&&(i+="["+e.zone.ianaName+"]"),i}const ss={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},rs={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},as={ordinal:1,hour:0,minute:0,second:0,millisecond:0},is=["year","month","day","hour","minute","second","millisecond"],os=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],ls=["year","ordinal","hour","minute","second","millisecond"];function cs(e){switch(e.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return function(e){const t={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[e.toLowerCase()];if(!t)throw new l(e);return t}(e)}}function us(e,t){const n=ae(t.zone,ve.defaultZone);if(!n.isValid)return gs.invalid(Un(n));const s=te.fromObject(t);let r,a;if(qe(e.year))r=ve.now();else{for(const t of is)qe(e[t])&&(e[t]=ss[t]);const t=$e(e)||Fe(e);if(t)return gs.invalid(t);const s=function(e){return fs[e]||(void 0===ms&&(ms=ve.now()),fs[e]=e.offset(ms)),fs[e]}(n);[r,a]=Kn(e,s,n)}return new gs({ts:r,zone:n,loc:s,o:a})}function ds(e,t,n){const s=!!qe(n.round)||n.round,r=(e,r)=>{e=Je(e,s||n.calendary?0:2,!0);return t.loc.clone(n).relFormatter(n).format(e,r)},a=s=>n.calendary?t.hasSame(e,s)?0:t.startOf(s).diff(e.startOf(s),s).get(s):t.diff(e,s).get(s);if(n.unit)return r(a(n.unit),n.unit);for(const e of n.units){const t=a(e);if(Math.abs(t)>=1)return r(t,e)}return r(e>t?-0:0,n.units[n.units.length-1])}function hs(e){let t,n={};return e.length>0&&"object"==typeof e[e.length-1]?(n=e[e.length-1],t=Array.from(e).slice(0,e.length-1)):t=Array.from(e),[n,t]}let ms,fs={};class gs{constructor(e){const t=e.zone||ve.defaultZone;let n=e.invalid||(Number.isNaN(e.ts)?new Se("invalid input"):null)||(t.isValid?null:Un(t));this.ts=qe(e.ts)?ve.now():e.ts;let s=null,r=null;if(!n){if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t))[s,r]=[e.old.c,e.old.o];else{const a=We(e.o)&&!e.old?e.o:t.offset(this.ts);s=Yn(this.ts,a),n=Number.isNaN(s.year)?new Se("invalid input"):null,s=n?null:s,r=n?null:a}}this._zone=t,this.loc=e.loc||te.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=s,this.o=r,this.isLuxonDateTime=!0}static now(){return new gs({})}static local(){const[e,t]=hs(arguments),[n,s,r,a,i,o,l]=t;return us({year:n,month:s,day:r,hour:a,minute:i,second:o,millisecond:l},e)}static utc(){const[e,t]=hs(arguments),[n,s,r,a,i,o,l]=t;return e.zone=se.utcInstance,us({year:n,month:s,day:r,hour:a,minute:i,second:o,millisecond:l},e)}static fromJSDate(e,t={}){const n=(s=e,"[object Date]"===Object.prototype.toString.call(s)?e.valueOf():NaN);var s;if(Number.isNaN(n))return gs.invalid("invalid input");const r=ae(t.zone,ve.defaultZone);return r.isValid?new gs({ts:n,zone:r,loc:te.fromObject(t)}):gs.invalid(Un(r))}static fromMillis(e,t={}){if(We(e))return e<-Rn||e>Rn?gs.invalid("Timestamp out of range"):new gs({ts:e,zone:ae(t.zone,ve.defaultZone),loc:te.fromObject(t)});throw new c(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,t={}){if(We(e))return new gs({ts:1e3*e,zone:ae(t.zone,ve.defaultZone),loc:te.fromObject(t)});throw new c("fromSeconds requires a numerical input")}static fromObject(e,t={}){e=e||{};const n=ae(t.zone,ve.defaultZone);if(!n.isValid)return gs.invalid(Un(n));const s=te.fromObject(t),r=at(e,cs),{minDaysInFirstWeek:a,startOfWeek:i}=Ee(r,s),l=ve.now(),c=qe(t.specificOffset)?n.offset(l):t.specificOffset,u=!qe(r.ordinal),d=!qe(r.year),h=!qe(r.month)||!qe(r.day),m=d||h,f=r.weekYear||r.weekNumber;if((m||u)&&f)throw new o("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(h&&u)throw new o("Can't mix ordinal dates with month/day");const g=f||r.weekday&&!m;let y,p,w=Yn(l,c);g?(y=os,p=rs,w=Me(w,a,i)):u?(y=ls,p=as,w=Ne(w)):(y=is,p=ss);let v=!1;for(const e of y){qe(r[e])?r[e]=v?p[e]:w[e]:v=!0}const S=g?function(e,t=4,n=1){const s=Ae(e.weekYear),r=Ze(e.weekNumber,1,et(e.weekYear,t,n)),a=Ze(e.weekday,1,7);return s?r?!a&&Ce("weekday",e.weekday):Ce("week",e.weekNumber):Ce("weekYear",e.weekYear)}(r,a,i):u?function(e){const t=Ae(e.year),n=Ze(e.ordinal,1,Ye(e.year));return t?!n&&Ce("ordinal",e.ordinal):Ce("year",e.year)}(r):$e(r),b=S||Fe(r);if(b)return gs.invalid(b);const k=g?Ie(r,a,i):u?Oe(r):r,[C,T]=Kn(k,c,n),x=new gs({ts:C,zone:n,o:T,loc:s});return r.weekday&&m&&e.weekday!==x.weekday?gs.invalid("mismatched weekday",`you can't specify both a weekday of ${r.weekday} and a date of ${x.toISO()}`):x.isValid?x:gs.invalid(x.invalid)}static fromISO(e,t={}){const[n,s]=function(e){return Dt(e,[Xt,sn],[en,rn],[tn,an],[nn,on])}(e);return Xn(n,s,t,"ISO 8601",e)}static fromRFC2822(e,t={}){const[n,s]=function(e){return Dt(function(e){return e.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}(e),[jt,Bt])}(e);return Xn(n,s,t,"RFC 2822",e)}static fromHTTP(e,t={}){const[n,s]=function(e){return Dt(e,[Jt,Kt],[Gt,Kt],[Yt,Qt])}(e);return Xn(n,s,t,"HTTP",t)}static fromFormat(e,t,n={}){if(qe(e)||qe(t))throw new c("fromFormat requires an input string and a format");const{locale:s=null,numberingSystem:r=null}=n,a=te.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0}),[i,o,l,u]=function(e,t,n){const{result:s,zone:r,specificOffset:a,invalidReason:i}=Hn(e,t,n);return[s,r,a,i]}(a,e,t);return u?gs.invalid(u):Xn(i,o,n,`format ${t}`,e,l)}static fromString(e,t,n={}){return gs.fromFormat(e,t,n)}static fromSQL(e,t={}){const[n,s]=function(e){return Dt(e,[cn,sn],[un,dn])}(e);return Xn(n,s,t,"SQL",e)}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the DateTime is invalid");const n=e instanceof Se?e:new Se(e,t);if(ve.throwOnInvalid)throw new r(n);return new gs({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,t={}){const n=zn(e,te.fromObject(t));return n?n.map((e=>e?e.val:null)).join(""):null}static expandFormat(e,t={}){return Pn(Ct.parseFormat(e),te.fromObject(t)).map((e=>e.val)).join("")}static resetCache(){ms=void 0,fs={}}get(e){return this[e]}get isValid(){return null===this.invalid}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?jn(this).weekYear:NaN}get weekNumber(){return this.isValid?jn(this).weekNumber:NaN}get weekday(){return this.isValid?jn(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?Bn(this).weekday:NaN}get localWeekNumber(){return this.isValid?Bn(this).weekNumber:NaN}get localWeekYear(){return this.isValid?Bn(this).weekYear:NaN}get ordinal(){return this.isValid?Ne(this.c).ordinal:NaN}get monthShort(){return this.isValid?Ln.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Ln.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Ln.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Ln.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return!this.isOffsetFixed&&(this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset)}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];const e=864e5,t=6e4,n=Qe(this.c),s=this.zone.offset(n-e),r=this.zone.offset(n+e),a=this.zone.offset(n-s*t),i=this.zone.offset(n-r*t);if(a===i)return[this];const o=n-a*t,l=n-i*t,c=Yn(o,a),u=Yn(l,i);return c.hour===u.hour&&c.minute===u.minute&&c.second===u.second&&c.millisecond===u.millisecond?[Jn(this,{ts:o}),Jn(this,{ts:l})]:[this]}get isInLeapYear(){return Ge(this.year)}get daysInMonth(){return Ke(this.year,this.month)}get daysInYear(){return this.isValid?Ye(this.year):NaN}get weeksInWeekYear(){return this.isValid?et(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?et(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){const{locale:t,numberingSystem:n,calendar:s}=Ct.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:n,outputCalendar:s}}toUTC(e=0,t={}){return this.setZone(se.instance(e),t)}toLocal(){return this.setZone(ve.defaultZone)}setZone(e,{keepLocalTime:t=!1,keepCalendarTime:n=!1}={}){if((e=ae(e,ve.defaultZone)).equals(this.zone))return this;if(e.isValid){let s=this.ts;if(t||n){const t=e.offset(this.ts),n=this.toObject();[s]=Kn(n,t,e)}return Jn(this,{ts:s,zone:e})}return gs.invalid(Un(e))}reconfigure({locale:e,numberingSystem:t,outputCalendar:n}={}){return Jn(this,{loc:this.loc.clone({locale:e,numberingSystem:t,outputCalendar:n})})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const t=at(e,cs),{minDaysInFirstWeek:n,startOfWeek:s}=Ee(t,this.loc),r=!qe(t.weekYear)||!qe(t.weekNumber)||!qe(t.weekday),a=!qe(t.ordinal),i=!qe(t.year),l=!qe(t.month)||!qe(t.day),c=i||l,u=t.weekYear||t.weekNumber;if((c||a)&&u)throw new o("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&a)throw new o("Can't mix ordinal dates with month/day");let d;r?d=Ie({...Me(this.c,n,s),...t},n,s):qe(t.ordinal)?(d={...this.toObject(),...t},qe(t.day)&&(d.day=Math.min(Ke(d.year,d.month),d.day))):d=Oe({...Ne(this.c),...t});const[h,m]=Kn(d,this.o,this.zone);return Jn(this,{ts:h,o:m})}plus(e){if(!this.isValid)return this;return Jn(this,Qn(this,Cn.fromDurationLike(e)))}minus(e){if(!this.isValid)return this;return Jn(this,Qn(this,Cn.fromDurationLike(e).negate()))}startOf(e,{useLocaleWeeks:t=!1}={}){if(!this.isValid)return this;const n={},s=Cn.normalizeUnit(e);switch(s){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0}if("weeks"===s)if(t){const e=this.loc.getStartOfWeek(),{weekday:t}=this;tthis.valueOf(),i=Mn(a?this:e,a?e:this,r,s);var o;return a?i.negate():i}diffNow(e="milliseconds",t={}){return this.diff(gs.now(),e,t)}until(e){return this.isValid?xn.fromDateTimes(this,e):this}hasSame(e,t,n){if(!this.isValid)return!1;const s=e.valueOf(),r=this.setZone(e.zone,{keepLocalTime:!0});return r.startOf(t,n)<=s&&s<=r.endOf(t,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const t=e.base||gs.fromObject({},{zone:this.zone}),n=e.padding?thise.valueOf()),Math.min)}static max(...e){if(!e.every(gs.isDateTime))throw new c("max requires all arguments be DateTimes");return _e(e,(e=>e.valueOf()),Math.max)}static fromFormatExplain(e,t,n={}){const{locale:s=null,numberingSystem:r=null}=n;return Hn(te.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0}),e,t)}static fromStringExplain(e,t,n={}){return gs.fromFormatExplain(e,t,n)}static buildFormatParser(e,t={}){const{locale:n=null,numberingSystem:s=null}=t,r=te.fromOpts({locale:n,numberingSystem:s,defaultToEN:!0});return new _n(r,e)}static fromFormatParser(e,t,n={}){if(qe(e)||qe(t))throw new c("fromFormatParser requires an input string and a format parser");const{locale:s=null,numberingSystem:r=null}=n,a=te.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0});if(!a.equals(t.locale))throw new c(`fromFormatParser called with a locale of ${a}, but the format parser was created for ${t.locale}`);const{result:i,zone:o,specificOffset:l,invalidReason:u}=t.explainFromTokens(e);return u?gs.invalid(u):Xn(i,o,n,`format ${t.format}`,e,l)}static get DATE_SHORT(){return f}static get DATE_MED(){return g}static get DATE_MED_WITH_WEEKDAY(){return y}static get DATE_FULL(){return p}static get DATE_HUGE(){return w}static get TIME_SIMPLE(){return v}static get TIME_WITH_SECONDS(){return S}static get TIME_WITH_SHORT_OFFSET(){return b}static get TIME_WITH_LONG_OFFSET(){return k}static get TIME_24_SIMPLE(){return C}static get TIME_24_WITH_SECONDS(){return T}static get TIME_24_WITH_SHORT_OFFSET(){return x}static get TIME_24_WITH_LONG_OFFSET(){return L}static get DATETIME_SHORT(){return D}static get DATETIME_SHORT_WITH_SECONDS(){return M}static get DATETIME_MED(){return I}static get DATETIME_MED_WITH_SECONDS(){return N}static get DATETIME_MED_WITH_WEEKDAY(){return O}static get DATETIME_FULL(){return E}static get DATETIME_FULL_WITH_SECONDS(){return $}static get DATETIME_HUGE(){return F}static get DATETIME_HUGE_WITH_SECONDS(){return q}}function ys(e){if(gs.isDateTime(e))return e;if(e&&e.valueOf&&We(e.valueOf()))return gs.fromJSDate(e);if(e&&"object"==typeof e)return gs.fromObject(e);throw new c(`Unknown datetime argument: ${e}, of type ${typeof e}`)}}},t={};function n(s){var r=t[s];if(void 0!==r)return r.exports;var a=t[s]={exports:{}};return e[s](a,a.exports,n),a.exports}n.d=(e,t)=>{for(var s in t)n.o(t,s)&&!n.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n(516),n(749),n(423),n(247),n(716),n(498),n(73),n(2),n(94),n(704),n(503),n(187),n(709),n(951);n(652)})(); \ No newline at end of file +(()=>{"use strict";var e={652:(e,t,n)=>{var s=n(440),r=n(430),a=n(211),i=n(413),o=n(999),l=n(302);document.addEventListener("DOMContentLoaded",(()=>{m()}));const c=["Land Features","Bay","Channel","Cove","Dam","Delta","Gulf","Lagoon","Lake","Ocean","Reef","Reservoir","Sea","Sound","Strait","Waterfall","Wharf","Amusement Park","Historical Monument","Landmark","Tourist Attraction","Zoo","College","Beach","Campground","Golf Course","Harbor","Nature Reserve","Other Parks and Outdoors","Park","Racetrack","Scenic Overlook","Ski Resort","Sports Center","Sports Field","Wildlife Reserve","Airport","Ferry","Marina","Pier","Port","Resort","Postal","Populated Place"].join(","),u="#txtAddress",d="#ToggleFullScreen",h="#btnGetGps",m=()=>{document.querySelector(u).addEventListener("focus",(e=>{e.target.select()})),(0,a.Fx)(b),document.querySelector("#NavigateMenu").addEventListener("click",S),document.querySelector("#NavigateRefresh").addEventListener("click",C),document.querySelector("#NavigateNext").addEventListener("click",T),document.querySelector("#NavigatePrevious").addEventListener("click",x),document.querySelector("#NavigatePlay").addEventListener("click",I),document.querySelector(d).addEventListener("click",y);const e=document.querySelector(h);e.addEventListener("click",O),navigator.geolocation||(e.style.display="none"),document.querySelector("#divTwc").addEventListener("mousemove",(()=>{document.fullscreenElement&&D()})),window.addEventListener("resize",E),E.wasFull=!1,document.querySelector(u).addEventListener("keydown",(e=>{"Enter"===e.code&&t()})),document.querySelector("#btnGetLatLng").addEventListener("click",(()=>t())),document.addEventListener("keydown",M),document.addEventListener("touchmove",(e=>{document.fullscreenElement&&e.preventDefault()})),$(u).devbridgeAutocomplete({serviceUrl:"https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/suggest",deferRequestBy:300,paramName:"text",params:{f:"json",countryCode:"USA",category:c,maxSuggestions:10},dataType:"json",transformResult:e=>({suggestions:e.suggestions.map((e=>({value:e.text,data:e.magicKey})))}),minChars:3,showNoSuggestionNotice:!0,noSuggestionNotice:"No results found. Please try a different search string.",onSelect(e){f(e,this)},width:490});const t=()=>{const e=$(u).devbridgeAutocomplete();return e.suggestions[0]&&$(e.suggestionsContainer.children[0]).trigger("click"),!1},n=(0,o.J)(),s=n.latLonQuery&&n.latLon,r=n.latLonQuery??localStorage.getItem("latLonQuery"),i=n.latLon??localStorage.getItem("latLon"),m=localStorage.getItem("latLonFromGPS")&&!s;if(r&&i&&!m){document.querySelector(u).value=r,b(JSON.parse(i))}m&&O(),l.A.kiosk.value="true"===n["settings-kiosk-checkbox"];const g=n["settings-kiosk-checkbox"]??localStorage.getItem("play");null!==g&&"true"!==g||N("navButton","play"),document.querySelector("#btnClearQuery").addEventListener("click",(()=>{document.querySelector("#spanCity").innerHTML="",document.querySelector("#spanState").innerHTML="",document.querySelector("#spanStationId").innerHTML="",document.querySelector("#spanRadarId").innerHTML="",document.querySelector("#spanZoneId").innerHTML="",document.querySelector("#chkAutoRefresh").checked=!0,localStorage.removeItem("autoRefresh"),localStorage.removeItem("play"),N("navButton","play"),localStorage.removeItem("latLonQuery"),localStorage.removeItem("latLon"),localStorage.removeItem("latLonFromGPS"),document.querySelector(h).classList.remove("active")})),document.querySelector("#container").addEventListener("swiped-left",(()=>k("left"))),document.querySelector("#container").addEventListener("swiped-right",(()=>k("right")))},f=async(e,t)=>{if(t.previousSuggestionValue===e.value)return;const n=(await(0,s.Pq)("https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/find",{data:{text:e.value,magicKey:e.data,f:"json"}})).locations[0];n?(localStorage.removeItem("latLonFromGPS"),document.querySelector(h).classList.remove("active"),g(n.feature.geometry)):console.error("An unexpected error occurred. Please try a different search string.")},g=(e,t)=>{const n={lat:(0,i.X4)(e.y,4),lon:(0,i.X4)(e.x,4)};localStorage.setItem("latLonQuery",document.querySelector(u).value),localStorage.setItem("latLon",JSON.stringify(n)),b(n,t)},y=()=>(document.fullscreenElement?w():p(),(0,a.F4)()?(0,r.A)(!0):(0,r.A)(!1),D(),!1),p=()=>{const e=document.querySelector("#divTwc"),t=e.requestFullScreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullscreen;t?t.call(e,{navigationUI:"hide"}):window.scrollTo(0,0),(0,a.XR)(),D();const n=document.querySelector(d);n.src="images/nav/ic_fullscreen_exit_white_24dp_2x.png",n.title="Exit fullscreen"},w=()=>{document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen(),(0,a.XR)(),v()},v=()=>{const e=document.querySelector(d);e.src="images/nav/ic_fullscreen_white_24dp_2x.png",e.title="Enter fullscreen",document.querySelector("#divTwc").classList.remove("no-cursor");const t=document.querySelector("#divTwcBottom");t.classList.remove("hidden"),t.classList.add("visible")},S=()=>(N("navButton","menu"),!1),b=(e,t)=>{e&&(b.latLon=e);const{latLon:n}=b;n&&(document.querySelector(u).blur(),(0,a.K$)(),(0,a.u6)(n,t))},k=e=>{if("left"===e)T();else x()},C=()=>((0,a.kY)(),b(),!1),T=()=>(N("navButton","next"),!1),x=()=>(N("navButton","previous"),!1);let L=null;const D=()=>{document.activeElement.blur();const e=document.querySelector("#divTwcBottom");e.classList.remove("hidden"),e.classList.add("visible"),document.querySelector("#divTwc").classList.remove("no-cursor"),L&&(clearTimeout(L),L=null),L=setTimeout((()=>{document.fullscreenElement&&(e.classList.remove("visible"),e.classList.add("hidden"),document.querySelector("#divTwc").classList.add("no-cursor"))}),2e3)},M=e=>{const{key:t}=e;if(document.fullscreenElement||document.activeElement===document.body)switch(t){case" ":return e.preventDefault(),I(),!1;case"ArrowRight":case"PageDown":return e.preventDefault(),T(),!1;case"ArrowLeft":case"PageUp":return e.preventDefault(),x(),!1;case"ArrowUp":return e.preventDefault(),S(),!1;case"0":return C(),!1;case"F":case"f":return y(),!1}return!1},I=()=>(N("navButton","playToggle"),!1),N=(e,t={})=>{(0,a.iU)({type:e,message:t})},O=async()=>{if(!navigator.geolocation)return;const e=document.querySelector(h);if(e.classList.contains("active"))return e.classList.remove("active"),void localStorage.removeItem("latLonFromGPS");e.classList.add("active");const t=await(async()=>new Promise((e=>{navigator.geolocation.getCurrentPosition(e)})))(),{latitude:n,longitude:s}=t.coords,r=document.querySelector(u);r.value=`${(0,i.X4)(n,4)}, ${(0,i.X4)(s,4)}`,g({y:n,x:s},(e=>{const t=e.properties.relativeLocation.properties,a=`${t.city}, ${t.state}`;localStorage.setItem("latLon",JSON.stringify({lat:n,lon:s})),localStorage.setItem("latLonQuery",a),localStorage.setItem("latLonFromGPS",!0),r.value=`${t.city}, ${t.state}`}))},E=()=>{E.wasFull&&!document.fullscreenElement&&v(),!E.wasFull&&document.fullscreenElement,E.wasFull=!!document.fullscreenElement}},247:(e,t,n)=>{n.d(t,{A:()=>d});var s=n(47),r=n(125),a=n(592),i=n(24),o=n(211);class l extends i.A{constructor(e,t){super(e,t,"Almanac",!0),this.backgroundImage0=(0,s.u)("images/BackGround3_1.png"),(0,s.b)("images/2/Full-Moon.gif"),(0,s.b)("images/2/Last-Quarter.gif"),(0,s.b)("images/2/New-Moon.gif"),(0,s.b)("images/2/First-Quarter.gif"),this.timing.totalScreens=1}async getData(e){const t=super.getData(e),n=e??this.weatherParameters,{sun:s,moon:r}=this.calcSunMoonData(n);this.data={sun:s,moon:r},this.getDataCallback(),t&&this.setStatus(a.Ay.loaded)}calcSunMoonData(e){const t=[SunCalc.getTimes(new Date,e.latitude,e.longitude),SunCalc.getTimes(r.c9.local().plus({days:1}).toJSDate(),e.latitude,e.longitude)],n=[];let s=r.c9.local().minus({days:1}),{phase:a}=SunCalc.getMoonIllumination(s.toJSDate()),i=0;do{const e=a;s=s.plus({days:1}),a=SunCalc.getMoonIllumination(s.toJSDate()).phase,e<.25&&a>=.25&&n.push(this.getMoonTransition(.25,"First",s)),e<.5&&a>=.5&&n.push(this.getMoonTransition(.5,"Full",s)),e<.75&&a>=.75&&n.push(this.getMoonTransition(.75,"Last",s)),e>a&&n.push(this.getMoonTransition(0,"New",s)),i+=1}while(i<=30&&n.length<4);return{sun:t,moon:n}}getMoonTransition(e,t,n,s=0){let r=n,{phase:a}=SunCalc.getMoonIllumination(r.toJSDate()),i=0;const o={hours:0===s?-1:0,minutes:1===s?1:0,seconds:2===s?-1:0,milliseconds:3===s?1:0};let l=(t,n)=>t=e;s%2==0&&(l=(t,n)=>t>e&&n<=e);do{const n=a;if(r=r.plus(o),a=SunCalc.getMoonIllumination(r.toJSDate()).phase,a>.9&&(a-=1),l(n,a)){if(s>=3)break;return this.getMoonTransition(e,t,r,s+1)}i+=1}while(i<1e3);return{phase:t,date:r}}async drawCanvas(){super.drawCanvas();const e=this.data,t=r.c9.local(),n=t.plus({days:1});this.elem.querySelector(".day-1").innerHTML=t.toLocaleString({weekday:"long"}),this.elem.querySelector(".day-2").innerHTML=n.toLocaleString({weekday:"long"}),this.elem.querySelector(".rise-1").innerHTML=r.c9.fromJSDate(e.sun[0].sunrise).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".rise-2").innerHTML=r.c9.fromJSDate(e.sun[1].sunrise).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".set-1").innerHTML=r.c9.fromJSDate(e.sun[0].sunset).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".set-2").innerHTML=r.c9.fromJSDate(e.sun[1].sunset).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase();const s=e.moon.map((e=>{const t={},n=e.date.toLocaleString({month:"short",day:"numeric"});return t.date=n,t.type=e.phase,t.icon={type:"img",src:c(e.phase)},this.fillTemplate("day",t)})),a=this.elem.querySelector(".moon .days");a.innerHTML="",a.append(...s),this.finishDraw()}async getSun(){return new Promise((e=>{this.data&&e(this.data),this.getDataCallbacks.push(e)}))}}const c=e=>{switch(e){case"Full":return"images/2/Full-Moon.gif";case"Last":return"images/2/Last-Quarter.gif";case"New":return"images/2/New-Moon.gif";default:return"images/2/First-Quarter.gif"}},u=new l(9,"almanac");(0,o.Kb)(u);const d=u.getSun.bind(u)},423:(e,t,n)=>{n.d(t,{A:()=>p});var s=n(592),r=n(47),a=n(440),i=n(519),o=n(891),l=n(716),c=n(24),u=n(211),d=n(413);const h=["U","C","H","W","Y","T","S","M","O","L","A","F","B","N","V","R","D","E","I","G","J"];class m extends c.A{constructor(e,t){super(e,t,"Current Conditions",!0),this.backgroundImage=(0,r.u)("images/BackGround1_1.png")}async getData(e){const t=super.getData(e),n=(e??this.weatherParameters).stations.filter((e=>4===e?.properties?.stationIdentifier?.length&&!h.includes(e.properties.stationIdentifier.slice(0,1))));let i,o,c=0;for(;!i&&cthis.stillWaiting()}),null===i.features[0].properties.temperature.value||null===i.features[0].properties.windSpeed.value||null===i.features[0].properties.textDescription||""===i.features[0].properties.textDescription||null===i.features[0].properties.icon)throw i=void 0,new Error(`Unable to get observations: ${o.properties.stationIdentifier}, trying next station`)}catch(e){console.error(e)}}if(!i)return console.error("All current weather stations exhausted"),this.isEnabled&&this.setStatus(s.Ay.failed),void this.getDataCallback(void 0);this.data=g({...i,station:o}),this.getDataCallback(),t&&((0,r.b)((0,l.XV)(i.features[0].properties.icon)),this.setStatus(s.Ay.loaded))}async drawCanvas(){super.drawCanvas();let e=this.data.observations.textDescription;e.length>15&&(e=f(e));const t={temp:this.data.Temperature+String.fromCharCode(176),condition:e,wind:this.data.WindDirection.padEnd(3,"")+this.data.WindSpeed.toString().padStart(3," "),location:(0,o.C)(this.data.station.properties.name).substr(0,20),humidity:`${this.data.Humidity}%`,dewpoint:this.data.DewPoint+String.fromCharCode(176),ceiling:0===this.data.Ceiling?"Unlimited":this.data.Ceiling+this.data.CeilingUnit,visibility:this.data.Visibility+this.data.VisibilityUnit,pressure:`${this.data.Pressure} ${this.data.PressureDirection}`,icon:{type:"img",src:this.data.Icon}};this.data.WindGust&&(t["wind-gusts"]=`Gusts to ${this.data.WindGust}`),this.data.observations.heatIndex.value&&this.data.HeatIndex!==this.data.Temperature?(t["heat-index-label"]="Heat Index:",t["heat-index"]=this.data.HeatIndex+String.fromCharCode(176)):this.data.observations.windChill.value&&""!==this.data.WindChill&&this.data.WindChill{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}}const f=e=>{let t=e;return t=t.replace(/Light/g,"L"),t=t.replace(/Heavy/g,"H"),t=t.replace(/Partly/g,"P"),t=t.replace(/Mostly/g,"M"),t=t.replace(/Few/g,"F"),t=t.replace(/Thunderstorm/g,"T'storm"),t=t.replace(/ in /g,""),t=t.replace(/Vicinity/g,""),t=t.replace(/ and /g," "),t=t.replace(/Freezing Rain/g,"Frz Rn"),t=t.replace(/Freezing/g,"Frz"),t=t.replace(/Unknown Precip/g,""),t=t.replace(/L Snow Fog/g,"L Snw/Fog"),t=t.replace(/ with /g,"/"),t},g=e=>{const t=e.features[0].properties;e.observations=t,e.Temperature=Math.round(t.temperature.value),e.TemperatureUnit="C",e.DewPoint=Math.round(t.dewpoint.value),e.Ceiling=Math.round(t.cloudLayers[0]?.base?.value??0),e.CeilingUnit="m.",e.Visibility=Math.round(t.visibility.value/1e3),e.VisibilityUnit=" km.",e.WindSpeed=Math.round(t.windSpeed.value),e.WindDirection=(0,i.Up)(t.windDirection.value),e.Pressure=Math.round(t.barometricPressure.value),e.HeatIndex=Math.round(t.heatIndex.value),e.WindChill=Math.round(t.windChill.value),e.WindGust=Math.round(t.windGust.value),e.WindUnit="KPH",e.Humidity=Math.round(t.relativeHumidity.value),e.Icon=(0,l.XV)(t.icon),e.PressureDirection="",e.TextConditions=t.textDescription;const n=t.barometricPressure.value-e.features[1].properties.barometricPressure.value;return n>150&&(e.PressureDirection="R"),n<-150&&(e.PressureDirection="F"),e.Temperature=(0,d.sz)(e.Temperature),e.TemperatureUnit="F",e.DewPoint=(0,d.sz)(e.DewPoint),e.Ceiling=100*Math.round((0,d.Q8)(e.Ceiling)/100),e.CeilingUnit="ft.",e.Visibility=(0,d.lt)(t.visibility.value/1e3),e.VisibilityUnit=" mi.",e.WindSpeed=(0,d.Yy)(e.WindSpeed),e.WindUnit="MPH",e.Pressure=(0,d.yX)(e.Pressure).toFixed(2),e.HeatIndex=(0,d.sz)(e.HeatIndex),e.WindChill=(0,d.sz)(e.WindChill),e.WindGust=(0,d.Yy)(e.WindGust),e},y=new m(1,"current-weather");(0,u.Kb)(y);const p=y.getCurrentWeather.bind(y)},516:(e,t,n)=>{var s=n(891);var r=n(423),a=n(211);const i=String.fromCharCode(176);let o,l=0;const c=()=>{const e=(0,a.q)();e?.okToDrawCurrentConditions?(l=(l+1)%d.length,u()):"progress"===e?.elemId&&(l=0)},u=async()=>{const e=await(0,r.A)();e&&h(d[l](e))},d=[e=>`Conditions at ${(0,s.C)(e.station.properties.name).substr(0,20)}`,e=>{let t=`Temp: ${e.Temperature}${i}${e.TemperatureUnit}`;return e.observations.heatIndex.value?t+=` Heat Index: ${e.HeatIndex}${i}${e.TemperatureUnit}`:e.observations.windChill.value&&(t+=` Wind Chill: ${e.WindChill}${i}${e.TemperatureUnit}`),t},e=>`Humidity: ${e.Humidity}% Dewpoint: ${e.DewPoint}${i}${e.TemperatureUnit}`,e=>`Barometric Pressure: ${e.Pressure} ${e.PressureDirection}`,e=>{let t=e.WindSpeed>0?`Wind: ${e.WindDirection} ${e.WindSpeed} ${e.WindUnit}`:"Wind: Calm";return e.WindGust>0&&(t+=` Gusts to ${e.WindGust}`),t},e=>{const t=`${e.Ceiling} ${e.CeilingUnit}`;return`Visib: ${e.Visibility} ${e.VisibilityUnit} Ceiling: ${0===e.Ceiling?"Unlimited":t}`}],h=e=>{var t,n;t=".weather-display .scroll .fixed",n=t=>{t.innerHTML=e},[...document.querySelectorAll(t)].forEach(n)};document.addEventListener("DOMContentLoaded",(()=>{o||(o=setInterval(c,4e3)),u()}))},498:(e,t,n)=>{var s=n(592),r=n(440),a=n(125),i=n(716),o=n(47),l=n(24),c=n(211);class u extends l.A{constructor(e,t){super(e,t,"Extended Forecast",!0),this.timing.totalScreens=2}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;let n;try{n=await(0,r.Pq)(t.forecast,{data:{units:"us"},retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(e){return console.error("Unable to get extended forecast"),console.error(e.status,e.responseJSON),void this.setStatus(s.Ay.failed)}this.data=d(n.properties.periods),this.screenIndex=0,this.setStatus(s.Ay.loaded)}async drawCanvas(){super.drawCanvas();const e=this.data.slice(0+3*this.screenIndex,3+3*this.screenIndex).map((e=>{const t={icon:{type:"img",src:e.icon},condition:e.text,date:e.dayName},{low:n}=e;void 0!==n&&(t["value-lo"]=Math.round(n));const{high:s}=e;return t["value-hi"]=Math.round(s),this.fillTemplate("day",t)})),t=this.elem.querySelector(".day-container");t.innerHTML="",t.append(...e),this.finishDraw()}}const d=e=>{const t=[0,1,2,3,4,5,6].map((e=>a.c9.local().startOf("day").plus({days:e}).toLocaleString({weekday:"short"})));let n=0;const s=[];return e.forEach((e=>{s[n]||s.push({dayName:"",low:void 0,high:void 0,text:void 0,icon:void 0});const r=s[n];r.icon=(0,i.XV)(e.icon),r.text=h(e.shortForecast),r.dayName=t[n],(0,o.b)(r.icon),e.isDaytime?(r.high=e.temperature,n+=1):r.low=e.temperature})),s},h=e=>{const t=[[/ and /gi," "],[/slight /gi,""],[/chance /gi,""],[/very /gi,""],[/patchy /gi,""],[/areas /gi,""],[/dense /gi,""],[/Thunderstorm/g,"T'Storm"]].reduce(((e,[t,n])=>e.replace(t,n)),e);let n=t.split(" ");-1!==t.indexOf("then")&&(n=t.split(" then "),n=n[1].split(" "));let s=n[0].substr(0,10),r="";n[1]&&(s.endsWith(".")?s=s.replace(/\./,""):r=n[1].substr(0,10),"Blowing"===r&&(r=""));let a=s;return""!==r&&(a+=` ${r}`),a};(0,c.Kb)(new u(8,"extended-forecast"))},749:(e,t,n)=>{var s=n(592),r=n(440),a=n(24),i=n(211);const o={Extreme:10,Severe:5},l={"Hurricane Warning":2,"Tornado Warning":3,"Severe Thunderstorm Warning":1};class c extends a.A{constructor(e,t,n){super(e,t,"Hazards",n),this.showOnProgress=!1,this.timing.totalScreens=0}async getData(e){const t=super.getData(e),n=this.checkbox.querySelector(".alert");n.classList.remove("show");try{const e=new URL("https://api.weather.gov/alerts/active");e.searchParams.append("point",`${this.weatherParameters.latitude},${this.weatherParameters.longitude}`),e.searchParams.append("limit",5);const t=(await(0,r.Pq)(e,{retryCount:3,stillWaiting:()=>this.stillWaiting()})).features??[],s=t.reduce(((e,t)=>e||"Immediate"===t.properties.urgency),!1),a=t.sort(((e,t)=>u(t.properties.severity,t.properties.event)-u(e.properties.severity,e.properties.event))).filter((e=>"Unknown"!==e.properties.severity&&(!s||"Immediate"===e.properties.urgency)));this.data=a,this.data.length>0&&n.classList.add("show")}catch(e){return console.error("Get hourly forecast failed"),console.error(e.status,e.responseJSON),this.isEnabled&&this.setStatus(s.Ay.failed),void this.getDataCallback(void 0)}this.getDataCallback(),t?this.drawLongCanvas():this.setStatus(s.Ay.loaded)}async drawLongCanvas(){const e=this.elem.querySelector(".hazard-lines");e.innerHTML="";const t=this.data.map((e=>{const t={};return t["hazard-text"]=`${e.properties.event}

${e.properties.description.replaceAll("\n\n","

").replaceAll("\n"," ")}`,this.fillTemplate("hazard",t)}));if(e.append(...t),0===t.length)return this.setStatus(s.Ay.loaded),this.timing.totalScreens=0,void this.setStatus(s.Ay.loaded);this.timing.baseDelay=20;const n=Math.max(Math.ceil(e.scrollHeight/400)-3,1);this.timing.delay=[550];for(let e=0;e{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}screenIndexFromBaseCount(){const e=super.screenIndexFromBaseCount();return!1===e&&(this.timing.totalScreens=0),e}}const u=(e,t)=>(o[e]??0)+(l[t]??0);(0,i.Kb)(new c(0,"hazards",!0))},2:(e,t,n)=>{var s=n(592),r=n(73),a=n(24),i=n(211),o=n(125);class l extends a.A{constructor(e,t,n){super(e,t,"Hourly Graph",n),document.addEventListener("DOMContentLoaded",(()=>{this.moveHeader()}))}moveHeader(){const e=this.fillTemplate("top-right",{});this.elem.querySelector(".header .right").append(e)}async getData(){if(!super.getData())return;const e=await(0,r.A)((()=>this.stillWaiting()));if(void 0===e)return void this.setStatus(s.Ay.failed);const t=e.map((e=>e.temperature)),n=e.map((e=>e.probabilityOfPrecipitation)),a=e.map((e=>e.skyCover));this.data={skyCover:a,temperature:t,probabilityOfPrecipitation:n},this.setStatus(s.Ay.loaded)}drawCanvas(){this.image||(this.image=this.elem.querySelector(".chart img"));const e=285;this.image.width=532,this.image.height=e;const t=document.createElement("canvas");t.width=532,t.height=e;const n=t.getContext("2d");n.imageSmoothingEnabled=!1;const s=c(0,5,this.data.temperature.length-1,532),r=o.c9.now().startOf("hour");document.querySelector(".x-axis .l-1").innerHTML=h(r),document.querySelector(".x-axis .l-2").innerHTML=h(r.plus({hour:6})),document.querySelector(".x-axis .l-3").innerHTML=h(r.plus({hour:12})),document.querySelector(".x-axis .l-4").innerHTML=h(r.plus({hour:18})),document.querySelector(".x-axis .l-5").innerHTML=h(r.plus({hour:24}));const a=c(0,275,100,10),i=u(this.data.skyCover,s,a);d(i,n,{strokeStyle:"lightgrey",lineWidth:3});const l=u(this.data.probabilityOfPrecipitation,s,a);d(l,n,{strokeStyle:"aqua",lineWidth:3});const m=Math.min(...this.data.temperature),f=Math.max(...this.data.temperature),g=Math.round((m+f)/2),y=c(m,275,f,10),p=u(this.data.temperature,s,y);d(p,n,{strokeStyle:"red",lineWidth:3});const w=String.fromCharCode(176);this.elem.querySelector(".y-axis .l-1").innerHTML=(f+w).substring(0,3),this.elem.querySelector(".y-axis .l-2").innerHTML=(g+w).substring(0,3),this.elem.querySelector(".y-axis .l-3").innerHTML=(m+w).substring(0,3),this.image.src=t.toDataURL(),super.drawCanvas(),this.finishDraw()}}const c=(e,t,n,s)=>{const r=(s-t)/(n-e),a=t-r*e;return e=>r*e+a},u=(e,t,n)=>e.map(((e,s)=>[t(s),n(e)])),d=(e,t,n)=>{t.beginPath(),t.strokeStyle="black",t.lineWidth=(n?.lineWidth??2)+2,t.moveTo(e[0][0],e[0][1]),e.slice(1).forEach((e=>t.lineTo(e[0],e[1]+2))),t.stroke(),t.beginPath(),t.strokeStyle=n?.strokeStyle??"red",t.lineWidth=n?.lineWidth??2,t.moveTo(e[0][0],e[0][1]),e.slice(1).forEach((e=>t.lineTo(e[0],e[1]))),t.stroke()},h=e=>e.toFormat("ha").slice(0,-1);(0,i.Kb)(new l(4,"hourly-graph"))},73:(e,t,n)=>{n.d(t,{A:()=>p});var s=n(592),r=n(125),a=n(440),i=n(413),o=n(716),l=n(519),c=n(24),u=n(211),d=n(247);class h extends c.A{constructor(e,t,n){super(e,t,"Hourly Forecast",n),this.timing.baseDelay=20;this.timing.delay=[450];for(let e=0;e<4;e+=1)this.timing.delay.push(300);this.timing.delay.push(150)}async getData(e){const t=super.getData(e);let n;try{n=await(0,a.Pq)(e.forecastGridData,{retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(e){return console.error("Get hourly forecast failed"),console.error(e.status,e.responseJSON),this.isEnabled&&this.setStatus(s.Ay.failed),void this.getDataCallback(void 0)}this.data=await m(n.properties),this.getDataCallback(),t&&(this.setStatus(s.Ay.loaded),this.drawLongCanvas())}async drawLongCanvas(){const e=this.elem.querySelector(".hourly-lines");e.innerHTML="";const t=r.c9.local(),n=this.data.map(((e,n)=>{const s={},r=t.plus({hours:n}).toLocaleString({weekday:"short",hour:"numeric"});s.hour=r;const a=Math.round(e.temperature).toString().padStart(3),i=Math.round(e.apparentTemperature).toString().padStart(3);s.temp=a,a!==i&&(s.like=i);let o="Calm";if(e.windSpeed>0){const t=Math.round(e.windSpeed).toString();o=e.windDirection+Array(6-e.windDirection.length-t.length).join(" ")+t}return s.wind=o,s.icon={type:"img",src:e.icon},this.fillTemplate("hourly-row",s)}));e.append(...n)}drawCanvas(){super.drawCanvas(),this.finishDraw()}showCanvas(){this.drawCanvas(),super.showCanvas()}screenIndexChange(){this.baseCountChange(this.navBaseCount)}baseCountChange(e){let t=Math.min(this.elem.querySelector(".hourly-lines").getBoundingClientRect().height-289,e-150);t<0&&(t=0),this.elem.querySelector(".main").scrollTo(0,t)}async getCurrentData(e){return e&&this.stillWaitingCallbacks.push(e),new Promise((e=>{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}}const m=async e=>{const t=g(e.temperature.values),n=g(e.apparentTemperature.values),s=g(e.windSpeed.values),r=g(e.windDirection.values),a=g(e.skyCover.values),o=g(e.weather.values),c=g(e.iceAccumulation.values),u=g(e.probabilityOfPrecipitation.values),d=g(e.snowfallAmount.values),h=await f(a,o,c,u,d,s);return t.map(((e,o)=>({temperature:(0,i.sz)(t[o]),apparentTemperature:(0,i.sz)(n[o]),windSpeed:(0,i.lt)(s[o]),windDirection:(0,l.Up)(r[o]),probabilityOfPrecipitation:u[o],skyCover:a[o],icon:h[o]})))},f=async(e,t,n,s,a,i)=>{const l=r.c9.local().startOf("hour"),c=(await(0,d.A)()).sun,u=r.IX.fromDateTimes(r.c9.fromJSDate(c[0].sunset),r.c9.fromJSDate(c[1].sunrise)),h=r.c9.fromJSDate(c[1].sunset);return e.map(((r,c)=>{const d=l.plus({hours:c}),m=u.contains(d)||d>h;return(0,o.ZJ)(e[c],t[c],n[c],s[c],a[c],i[c],m)}))},g=e=>{const t=r.c9.utc().startOf("hour").toMillis(),n=[];return e.forEach((e=>{let s=Date.parse(e.validTime.substr(0,e.validTime.indexOf("/")));const a=s+r.dw.fromISO(e.validTime.substr(e.validTime.indexOf("/")+1)).shiftTo("milliseconds").values.milliseconds;do{s>=t&&n.length<24&&n.push(e.value),s+=36e5}while(s{n.d(t,{Wu:()=>s,XV:()=>r,ZJ:()=>a});const s=(e,t)=>{const n=t??e.indexOf("/night/")>=0,s=e=>`images/r/${e}`;let r=e.toLowerCase().match(/[^/]+$/)[0].match(/(.*?)[&,.?]/)[1];const a=+(e.match(/,(\d{2,3})/)??[0,100])[1];if("dualimage"===r){const t=e.match(/&j=(.*)&/);[,r]=t}switch(r+(n?"-n":"")){case"skc":case"hot":case"haze":return s("Sunny.gif");case"skc-n":case"nskc":case"nskc-n":case"cold-n":return s("Clear-1992.gif");case"bkn":return s("Mostly-Cloudy-1994-2.gif");case"bkn-n":case"few-n":case"nfew-n":case"nfew":return s("Partly-Clear-1994-2.gif");case"sct":case"few":return s("Partly-Cloudy.gif");case"sct-n":case"nsct":case"nsct-n":return s("Mostly-Clear.gif");case"ovc":case"ovc-n":return s("Cloudy.gif");case"fog":case"fog-n":return s("Fog.gif");case"rain_sleet":case"sleet":case"sleet-n":return s("Sleet.gif");case"rain_showers":case"rain_showers_high":return s("Scattered-Showers-1994-2.gif");case"rain_showers-n":case"rain_showers_high-n":return s("Scattered-Showers-Night-1994-2.gif");case"rain":case"rain-n":return s("Rain-1992.gif");case"snow":case"snow-n":return s(a>50?"Heavy-Snow-1994-2.gif":"Light-Snow.gif");case"rain_snow":case"rain_snow-n":return s("Rain-Snow-1992.gif");case"snow_fzra":case"snow_fzra-n":return s("Freezing-Rain-Snow-1992.gif");case"fzra":case"fzra-n":case"rain_fzra":case"rain_fzra-n":return s("Freezing-Rain-1992.gif");case"snow_sleet":case"snow_sleet-n":return s("Snow and Sleet.gif");case"tsra_sct":case"tsra":return s("Scattered-Tstorms-1994-2.gif");case"tsra_sct-n":case"tsra-n":return s("Scattered-Tstorms-Night-1994-2.gif");case"tsra_hi":case"tsra_hi-n":case"hurricane":case"tropical_storm":case"hurricane-n":case"tropical_storm-n":return s("Thunderstorm.gif");case"wind":case"wind_few":case"wind_sct":case"wind_bkn":case"wind_ovc":case"wind-n":case"wind_few-n":case"wind_bkn-n":case"wind_ovc-n":return s("Wind.gif");case"wind_skc":return s("Sunny-Wind-1994.gif");case"wind_skc-n":case"wind_sct-n":return s("Clear-Wind-1994.gif");case"blizzard":case"blizzard-n":return s("Blowing Snow.gif");case"cold":return s("cold.gif");default:return console.log(`Unable to locate regional icon for ${r} ${e} ${n}`),!1}},r=(e,t)=>{if(!e)return!1;const n=e=>`images/${e}`,s=t??e.indexOf("/night/")>=0;let r=e.toLowerCase().match(/[^/]+$/)[0].match(/(.*?)[&,.?]/)[1];const a=+(e.match(/,(\d{2,3})/)??[0,100])[1];if("dualimage"===r){const t=e.match(/&j=(.*)&/);[,r]=t}switch(r+(s?"-n":"")){case"skc":case"hot":case"haze":case"cold":return n("CC_Clear1.gif");case"skc-n":case"nskc":case"nskc-n":case"cold-n":return n("CC_Clear0.gif");case"sct":case"few":case"bkn":return n("CC_PartlyCloudy1.gif");case"bkn-n":case"few-n":case"nfew-n":case"nfew":case"sct-n":case"nsct":case"nsct-n":return n("CC_PartlyCloudy0.gif");case"ovc":case"novc":case"ovc-n":return n("CC_Cloudy.gif");case"fog":case"fog-n":return n("CC_Fog.gif");case"rain_sleet":case"rain_sleet-n":case"sleet":case"sleet-n":return n("Sleet.gif");case"rain_showers":case"rain_showers_high":case"rain_showers-n":case"rain_showers_high-n":return n("CC_Showers.gif");case"rain":case"rain-n":return n("CC_Rain.gif");case"snow":case"snow-n":return n(a>50?"CC_Snow.gif":"CC_SnowShowers.gif");case"rain_snow":return n("CC_RainSnow.gif");case"snow_fzra":case"snow_fzra-n":case"fzra":case"fzra-n":case"rain_fzra":case"rain_fzra-n":return n("CC_FreezingRain.gif");case"snow_sleet":return n("Snow-Sleet.gif");case"tsra_sct":case"tsra":return n("EF_ScatTstorms.gif");case"tsra_sct-n":case"tsra-n":case"tsra_hi":case"tsra_hi-n":case"hurricane":case"tropical_storm":case"hurricane-n":case"tropical_storm-n":return n("CC_TStorm.gif");case"wind_few":case"wind_sct":case"wind_bkn":case"wind_ovc":case"wind_skc":case"wind_few-n":case"wind_bkn-n":case"wind_ovc-n":case"wind_skc-n":case"wind_sct-n":return n("CC_Windy.gif");case"blizzard":case"blizzard-n":return n("Blowing-Snow.gif");default:return console.log(`Unable to locate icon for ${r} ${e} ${s}`),!1}},a=(e,t,n,s,r,a,i=!1)=>{const o=e=>`images/r/${e}`;let l=!1,c=!1,u=!1,d=!1,h=!1;return t.forEach((e=>{e.weather&&(e.weather.toLowerCase().includes("thunder")&&(l=!0),e.weather.toLowerCase().includes("snow")&&(c=!0),e.weather.toLowerCase().includes("ice")&&(u=!0),e.weather.toLowerCase().includes("fog")&&(d=!0),e.weather.toLowerCase().includes("wind")&&(h=!0))})),o(n>0||u?"Freezing-Rain-1992.gif":r>10?a>30||h?"Blowing Snow.gif":"Heavy-Snow-1994.gif":(r>0||c)&&l?"ThunderSnow.gif":r>0||c?"Light-Snow.gif":l?"Thunderstorm.gif":s>70?"Rain-1992.gif":s>50?"Shower.gif":s>30?i?"Scattered-Showers-Night.gif":"Scattered-Showers-1994.gif":d?"Fog.gif":e>70?"Cloudy.gif":e>50?i?"Partly-Clear-1994.gif":"Mostly-Cloudy-1994.gif":e>30?i?"Mostly-Clear.gif":"Partly-Cloudy.gif":i?"Clear-1992.gif":"Sunny.gif")}},94:(e,t,n)=>{var s=n(519),r=n(440),a=n(592),i=n(891),o=n(413),l=n(24),c=n(211);class u extends l.A{constructor(e,t){super(e,t,"Latest Observations",!0),this.MaximumRegionalStations=7}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters,n=Object.keys(StationInfo).map((e=>{const n=StationInfo[e],r=(0,s.Io)(n.lat,n.lon,t.latitude,t.longitude);return{...n,distance:r}})).sort(((e,t)=>e.distance-t.distance)).slice(0,30),r=[];let i=Math.min(n.length,7),o=0;for(;r.length<7&&i<=n.length;){const e=await h(n.slice(o,i));r.push(...e),o+=i,i=Math.min(n.length+1,o+7-r.length)}this.data=r.slice(0,this.MaximumRegionalStations),0!==this.data.length?this.setStatus(a.Ay.loaded):this.setStatus(a.Ay.noData)}async drawCanvas(){super.drawCanvas();const e=this.data.sort(((e,t)=>e.Name{const t=(0,s.Up)(e.windDirection.value),n=Math.round((0,o.sz)(e.temperature.value)),r=Math.round((0,o.Yy)(e.windSpeed.value)),a={location:(0,i.C)(e.city).substr(0,14),temp:n,weather:d(e.textDescription).substr(0,9)};return a.wind=r>0?t+Array(6-t.length-r.toString().length).join(" ")+r.toString():"NA"===r?"NA":"Calm",this.fillTemplate("observation-row",a)})),n=this.elem.querySelector(".observation-lines");n.innerHTML="",n.append(...t),this.finishDraw()}}const d=e=>{let t=e;return t=t.replace(/Light/,"L"),t=t.replace(/Heavy/,"H"),t=t.replace(/Partly/,"P"),t=t.replace(/Mostly/,"M"),t=t.replace(/Few/,"F"),t=t.replace(/Thunderstorm/,"T'storm"),t=t.replace(/ in /,""),t=t.replace(/Vicinity/,""),t=t.replace(/ and /," "),t=t.replace(/Freezing Rain/,"Frz Rn"),t=t.replace(/Freezing/,"Frz"),t=t.replace(/Unknown Precip/,""),t=t.replace(/L Snow Fog/,"L Snw/Fog"),t=t.replace(/ with /,"/"),t},h=async e=>(await Promise.all(e.map((async e=>{try{const t=await(0,r.Pq)(`https://api.weather.gov/stations/${e.id}/observations/latest`,{retryCount:1,stillWaiting:()=>(void 0).stillWaiting()});return null!==t.properties.temperature.value&&""!==t.properties.textDescription&&null!==t.properties.windSpeed.value&&{...t.properties,StationId:e.id,city:e.city}}catch(t){return console.log(`Unable to get latest observations for ${e.id}`),!1}})))).filter((e=>e));(0,c.Kb)(new u(2,"latest-observations"))},704:(e,t,n)=>{var s=n(592),r=n(440),a=n(24),i=n(211);class o extends a.A{constructor(e,t){super(e,t,"Local Forecast",!0),this.timing.baseDelay=5e3}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters,n=await this.getRawData(t);if(!n)return void this.setStatus(s.Ay.failed);const r=l(n);this.screenTexts=r.map((e=>{let t=`${e.DayName.toUpperCase()}...`;return t+=e.Text.toUpperCase().replace("..."," "),t}));const a=this.screenTexts.map((e=>this.fillTemplate("forecast",{text:e}))),i=this.elem.querySelector(".forecasts");i.innerHTML="",i.append(...a),this.pageHeight=i.parentNode.scrollHeight,a.forEach((e=>{const t=Math.ceil(e.scrollHeight/this.pageHeight)*this.pageHeight;e.style.height=`${t}px`})),this.timing.totalScreens=i.scrollHeight/this.pageHeight,this.calcNavTiming(),this.setStatus(s.Ay.loaded)}async getRawData(e){try{return await(0,r.Pq)(e.forecast,{data:{units:"us"},retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(t){return console.error(`GetWeatherForecast failed: ${e.forecast}`),console.error(t.status,t.responseJSON),this.setStatus(s.Ay.failed),!1}}async drawCanvas(){super.drawCanvas();const e=-this.screenIndex*this.pageHeight;this.elem.querySelector(".forecasts").style.top=`${e}px`,this.finishDraw()}}const l=e=>e.properties.periods.slice(0,6).map((e=>({DayName:e.name.toUpperCase(),Text:e.detailedForecast})));(0,i.Kb)(new o(7,"local-forecast"))},211:(e,t,n)=>{n.d(t,{F4:()=>k,Fx:()=>U,Ju:()=>T,K$:()=>z,Kb:()=>F,Lg:()=>W,XR:()=>E,ab:()=>C,eB:()=>j,iU:()=>w,kY:()=>$,pv:()=>O,q:()=>M,u6:()=>P,yB:()=>v});var s=n(430),r=n(592),a=n(519),i=n(440),o=n(348),l=n(302);document.addEventListener("DOMContentLoaded",(()=>{p()}));const c=[];let u,d=!1;const h={},m=6e5,f="#chkAutoRefresh";let g=null,y=0;const p=async()=>{window.addEventListener("resize",E),E();const e=localStorage.getItem("autoRefresh");document.querySelector(f).checked=!e||"true"===e,document.querySelector(f).addEventListener("change",V),q()},w=e=>!!e.type&&("navButton"===e.type?N(e.message):console.error(`Unknown event ${e.type}`)),v=e=>{if(e.id<0)return;if(!u)return;if(u.drawCanvas(c,S()),c[0].status===r.Ay.loading)return;const t=c.findIndex((e=>e.enabled&&e.timing.totalScreens>0));0!==e.id||e.status!==r.Ay.failed&&e.status!==r.Ay.retrying||(e.id=t,e.status=c[t].status),0===e.id&&e.status===r.Ay.loaded&&0===c[0].timing.totalScreens&&(e.id=t,e.status=c[t].status),k()&&e.id===t&&e.status===r.Ay.loaded&&x(C.command.firstFrame),S()c.reduce(((e,t)=>t.status!==r.Ay.loading?e+1:e),0),b=()=>{c.forEach((e=>e.hideCanvas()))},k=()=>d,C={response:{previous:Symbol("previous"),inProgress:Symbol("inProgress"),next:Symbol("next")},command:{firstFrame:Symbol("firstFrame"),previousFrame:Symbol("previousFrame"),nextFrame:Symbol("nextFrame"),lastFrame:Symbol("lastFrame")}},T=e=>{e.type===C.response.previous&&L(-1),e.type===C.response.next&&L(1)},x=e=>{const t=M();if(u.hideCanvas(),!t){let e,t=0;do{c[t].status===r.Ay.loaded&&c[t].timing.totalScreens>0&&(e=c[t]),t+=1}while(!e&&t{const t=c.length,n=D();let s;for(let i=0;i0));i+=1);if(s<=n&&Z())return;const i=c[s];b(),e<0&&i.showCanvas(C.command.lastFrame),e>0&&i.showCanvas(C.command.firstFrame)},D=()=>c.findIndex((e=>e.active)),M=()=>c[D()],I=e=>{d=e;const t=document.querySelector("#NavigatePlay");localStorage.setItem("play",d),d?((0,s.A)(!0),t.title="Pause",t.src="images/nav/ic_pause_white_24dp_2x.png"):((0,s.A)(!1),t.title="Play",t.src="images/nav/ic_play_arrow_white_24dp_2x.png"),u&&d&&!M()&&x(C.command.firstFrame)},N=e=>{switch(e){case"play":I(!0);break;case"playToggle":I(!d);break;case"stop":I(!1);break;case"next":I(!1),x(C.command.nextFrame);break;case"previous":I(!1),x(C.command.previousFrame);break;case"menu":I(!1),u.showCanvas(),b();break;default:console.error(`Unknown navButton ${e}`)}},O=e=>c[e],E=()=>{const e=l.A.wide.value?854:640,t=document.querySelector("#divTwcBottom").getBoundingClientRect().width/e,n=window.innerHeight/480,s=Math.min(t,n);s<1||document.fullscreenElement||l.A.kiosk?document.querySelector("#container").style.transform=`scale(${s})`:document.querySelector("#container").style.transform="unset"},$=()=>{c.forEach((e=>{e.status=r.Ay.loading}))},F=e=>{c[e.navId]=e,q()},q=()=>{const e=document.querySelector("#enabledDisplays");if(!e)return;const t=c.map((e=>e.generateCheckbox(e.defaultEnabled))).filter((e=>e));e.innerHTML="",e.append(...t)},W=e=>{u=e},A=e=>{document.querySelector("#spanCity").innerHTML=`${e.city}, `,document.querySelector("#spanState").innerHTML=e.state,document.querySelector("#spanStationId").innerHTML=e.stationId,document.querySelector("#spanRadarId").innerHTML=e.radarId,document.querySelector("#spanZoneId").innerHTML=e.zoneId},V=e=>{const{checked:t}=e.target;t?H():z(),localStorage.setItem("autoRefresh",t)},_=e=>{e?(document.querySelector("#spanLastRefresh").innerHTML=e.toLocaleString("en-US",{weekday:"short",month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short"}),document.querySelector(f).checked&&H()):document.querySelector("#spanLastRefresh").innerHTML="(none)"},P=(e,t)=>{(async(e,t)=>{const n=await(0,o.f)(e.lat,e.lon);"function"==typeof t&&t(n);const s=await(0,i.Pq)(n.properties.observationStations),r=s.features[0].properties.stationIdentifier;let{city:a}=n.properties.relativeLocation.properties;const{state:l}=n.properties.relativeLocation.properties;r in StationInfo&&(a=StationInfo[r].city,[a]=a.split("/"),a=a.replace(/\s+$/,"")),h.latitude=e.lat,h.longitude=e.lon,h.zoneId=n.properties.forecastZone.substr(-6),h.radarId=n.properties.radarStation.substr(-3),h.stationId=r,h.weatherOffice=n.properties.cwa,h.city=a,h.state=l,h.timeZone=n.properties.timeZone,h.forecast=n.properties.forecast,h.forecastGridData=n.properties.forecastGridData,h.stations=s.features,A(h),b(),document.querySelector("#loading").style.display="none",u&&(await u.drawCanvas(),u.showCanvas()),c.forEach((e=>e.getData(h)))})(e,t),_(null)},H=()=>{if(g)return;y=0;const e=()=>{y+=500;let e=m-y;e<0&&(e=0);const t=new Date(e);document.querySelector("#spanRefreshCountDown").innerHTML=`${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}`,y>=m&&!k()&&R()};g=window.setInterval(e,500),e()},z=()=>{g&&(window.clearInterval(g),document.querySelector("#spanRefreshCountDown").innerHTML="--:--",g=null)},Z=()=>!!(y>=m&&k())&&(R(),!0),R=()=>{R.callback&&R.callback()},U=e=>{R.callback=e},j=()=>h.timeZone},951:(e,t,n)=>{var s=n(47),r=n(592),a=n(24),i=n(211);class o extends a.A{constructor(e,t){super(e,t,"",!1),this.backgroundImage=(0,s.u)("images/BackGround1_1.png"),this.timing=!1,document.addEventListener("DOMContentLoaded",(()=>{this.version=document.querySelector("#version").innerHTML,this.elem.querySelector(".container").addEventListener("click",this.lineClick.bind(this))})),this.okToDrawCurrentConditions=!1}async drawCanvas(e,t){if(!this.elem)return;if(super.drawCanvas(),this.progressCover||(this.progressCover=this.elem.querySelector(".scroll .cover")),!e)return;const n=e.map(((e,t)=>{if(!1===e.showOnProgress)return!1;const n={name:e.name},s=(0,r.qx)(e.status),a=this.fillTemplate("item",n);if(!a)return!1;const i=a.querySelector(".links");return i.classList.remove(...r.LR),i.classList.add(s),i.dataset.index=t,a})).filter((e=>e)),s=this.elem.querySelector(".container");s.innerHTML="",s.append(...n),this.finishDraw();const a=t/e.length;this.progressCover.style.width=100*(1-a)+"%",a<1?this.progressCover.parentNode.classList.add("show"):setTimeout((()=>this.progressCover.parentNode.classList.remove("show")),1e3)}lineClick(e){const t=e.target?.parentNode?.dataset?.index;if(void 0===t)return;const n=+t;(0,i.iU)("navButton");const s=(0,i.pv)(n);s&&s.status===r.Ay.loaded&&(s.showCanvas(i.ab.command.firstFrame),this.elem.classList.remove("show"))}}const l=new o(-1,"progress");(0,i.Lg)(l)},503:(e,t,n)=>{var s=n(592),r=n(125),a=n(47),i=n(440),o=n(147),l=n(24),c=n(211);class u extends l.A{constructor(e,t){super(e,t,"Local Radar",!0),this.okToDrawCurrentConditions=!1,this.okToDrawCurrentDateTime=!1,this.dopplerRadarImageMax=6,this.timing.baseDelay=350,this.timing.delay=[{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:12,si:5}]}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;if("AK"===t.state||"HI"===t.state)return void this.setStatus(s.Ay.noData);let n="images/4000RadarMap2.jpg";"HI"===t.State&&(n="images/HawaiiRadarMap2.png"),this.baseMap=await(0,a.u)(n);const l=[];let u=r.c9.utc().minus({days:1}).startOf("day");for(;u<=r.c9.utc().startOf("day");)l.push(`https://mesonet.agron.iastate.edu/archive/data/${u.toFormat("yyyy/LL/dd")}/GIS/uscomp/`),u=u.plus({days:1});const d=(await Promise.all(l.map((async e=>{try{return(0,i.Qq)(e,{cors:!0})}catch(e){return console.log("Unable to get list of radars"),console.error(e),this.setStatus(s.Ay.failed),!1}})))).filter((e=>e)).flatMap(((e,t)=>{const n=(new DOMParser).parseFromString(e,"text/html"),s=n.createElement("base");s.href=l[t],n.head.append(s);const r=n.querySelectorAll("a"),a=[];return Array.from(r).forEach((e=>{e.innerHTML?.match(/n0r_\d{12}\.png/)&&a.push(e.href)})),a})),h=/_(\d{12})\.png/,m=d.sort(((e,t)=>e.match(h)[1]{let s=0,r=0;return s=55.2*(51.75-e.latitude),s-=n,s>3200-2*n?s=3200-2*n:s<0&&(s=0),r=41.775*(-130.37-e.longitude)*-1,r-=t,r>5100-2*t?r=5100-2*t:r<0&&(r=0),{x:2*r,y:2*s}})(t,240,138),w=document.createElement("canvas");w.width=y,w.height=1600;const v=w.getContext("2d");v.imageSmoothingEnabled=!1;const S=((e,t,n)=>{let s=0,r=0;return s=61.4481*(51-e.latitude),s-=n,s>6e3-2*n?s=6e3-2*n:s<0&&(s=0),r=42.1768*(-129.138-e.longitude)*-1,r-=t,r>2800-2*t?r=2800-2*t:r<0&&(r=0),{x:2*r,y:2*s}})(t,240,138),b=S.x/2,k=S.y/2,C=await Promise.all(m.map((async e=>{const t=document.createElement("canvas");t.width=640,t.height=367;const n=t.getContext("2d");n.imageSmoothingEnabled=!1;const s=await fetch((0,o.O)(e));if(!s.ok)throw new Error(`Unable to fetch radar error ${s.status} ${s.statusText} from ${s.url}`);const i=await s.blob(),l=e.match(/_(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)\./);let u;if(l){const[,e,t,n,s,a]=l;u=r.c9.fromObject({year:e,month:t,day:n,hour:s,minute:a},{zone:"UTC"}).setZone()}else u=r.c9.fromHTTP(s.headers.get("last-modified")).setZone((0,c.eB)());const d=await(0,a.u)(i);v.clearRect(0,0,y,1600),v.drawImage(d,0,0,y,1600),n.drawImage(await this.baseMap,p.x,p.y,480,276,0,0,640,367);const h=document.createElement("canvas");h.width=640,h.height=367;const m=h.getContext("2d",{willReadFrequently:!0});m.imageSmoothingEnabled=!1,m.drawImage(w,b,k,240,163.1,0,0,640,367),(e=>{const t=e.getImageData(0,0,e.canvas.width,e.canvas.height);for(let e=0;e{const n=e.getImageData(0,0,e.canvas.width,e.canvas.height),s=t.getImageData(0,0,t.canvas.width,t.canvas.height);for(let e=0;ee.elem))),this.timing.totalScreens=C.length,this.data=C.map((e=>e.canvas)),this.times=C.map((e=>e.time)),this.setStatus(s.Ay.loaded)}async drawCanvas(){super.drawCanvas();const e=this.times[this.screenIndex].toLocaleString(r.c9.TIME_SIMPLE),t=e.length>=8?e:` ${e}`;this.elem.querySelector(".header .right .time").innerHTML=t;const n=this.elem.querySelector(".frame").scrollHeight;this.elem.querySelector(".scroll-area").style.top=-this.screenIndex*n+"px",this.finishDraw()}}(0,c.Kb)(new u(10,"radar"))},187:(e,t,n)=>{var s=n(592),r=n(519),a=n(440),i=n(413),o=n(716),l=n(47),c=n(125),u=n(24),d=n(211);const h=(e,t,n)=>({daytime:e.isDaytime,temperature:e.temperature||0,name:v(t.city),icon:e.icon,x:n.x,y:n.y,time:e.startTime}),m=(e,t,n,s)=>{let r=0,a=0;return r=56*(73-e),r-=s,r>1142-2*s?r=1142-2*s:r<0&&(r=0),a=25*(-175-t)*-1,a-=n,a>1200-2*n?a=1200-2*n:a<0&&(a=0),{x:a,y:r}},f=(e,t,n,s)=>{let r=0,a=0;return r=55.2*(25-e),r-=s,r>571-2*s?r=571-2*s:r<0&&(r=0),a=41.775*(-164.5-t)*-1,a-=n,a>600-2*n?a=600-2*n:a<0&&(a=0),{x:a,y:r}},g=(e,t,n,s)=>({minLat:-1*((t+2*s)/56-73),maxLat:-1*(t/56-73),minLon:-1*(-1*e/25+175),maxLon:-1*(-1*(e+2*n)/25+175)}),y=(e,t,n,s)=>({minLat:-1*((t+2*s)/55.2-25),maxLat:-1*(t/55.2-25),minLon:-1*(-1*e/41.775+164.5),maxLon:-1*(-1*(e+2*n)/41.775+164.5)}),p=(e,t,n)=>{let s=37*(e.lon-n),r=70*(t-e.lat);return r<30&&(r=30),r>282&&(r=282),s<40&&(s=40),s>580&&(s=580),{x:s,y:r}},w=(e,t,n)=>{let s=57*(e.lon-n),r=70*(t-e.lat);return r<30&&(r=30),r>282&&(r=282),s<40&&(s=40),s>580&&(s=580),{x:s,y:r}},v=e=>e.match(/[^,/;\\-]*/)[0].substr(0,12);var S=n(348);class b extends u.A{constructor(e,t){super(e,t,"Regional Forecast",!0),this.timing.totalScreens=3}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;let n="images/Basemap2.png";"HI"===t.state?n="images/HawaiiRadarMap4.png":"AK"===t.state&&(n="images/AlaskaRadarMap6.png"),this.elem.querySelector(".map img").src=n;const c={x:240,y:117},u=((e,t,n,s,r)=>{if("AK"===r)return m(e,t,n,s);if("HI"===r)return f(e,t,n,s);let a=0,i=0;return a=55.2*(50.5-e),a-=s,a>1600-2*s?a=1600-2*s:a<0&&(a=0),i=41.775*(-127.5-t)*-1,i-=n,i>2550-2*n?i=2550-2*n:i<0&&(i=0),{x:i,y:a}})(t.latitude,t.longitude,c.x,c.y,t.state),d=(S=u.x,b=u.y,C=c.x,T=c.y,"AK"===(x=t.state)?g(S,b,C,T):"HI"===x?y(S,b,C,T):{minLat:-1*((b+2*T)/55.2-50.5),maxLat:-1*(b/55.2-50.5),minLon:-1*(-1*S/41.775+127.5),maxLon:-1*(-1*(S+2*C)/41.775+127.5)});var S,b,C,T,x;let L=2.5;"HI"===t.state&&(L=1);const D=Object.values(StationInfo).map((e=>({...e,targetDistance:L}))),M=[...RegionalCities,...D],I=[];M.forEach((e=>{if(e.lat>d.minLat&&e.latd.minLon&&e.lon{const a=(0,r.Io)(e.lon,e.lat,s.lon,s.lat);return n&&a>=t}),!0)&&I.push(e)}}));const N=await Promise.all(I.map((async e=>{try{const n=e?.point??await k(e.lat,e.lon);if(!n)throw new Error("No pre-loaded point");const s=(async(e,t)=>{try{const t=(await(0,a.Pq)(`https://api.weather.gov/gridpoints/${e.wfo}/${e.x},${e.y}/stations`)).features[0].id,n=await(0,a.Pq)(`${t}/observations/latest`);if(!n.properties.icon)return!1;const s=(0,o.Wu)(n.properties.icon,!n.properties.daytime);return!!s&&((0,l.b)(s),n.properties)}catch(e){return console.log(`Unable to get regional observations for ${t.Name??t.city}`),console.error(e.status,e.responseJSON),!1}})(n,e),r=await(0,a.Pq)(`https://api.weather.gov/gridpoints/${n.wfo}/${n.x},${n.y}/forecast`),c=((e,t,n,s)=>{"AK"===s&&p(e,t,n),"HI"===s&&w(e,t,n);let r=57*(e.lon-n),a=70*(t-e.lat);return a<30&&(a=30),a>282&&(a=282),r<40&&(r=40),r>580&&(r=580),{x:r,y:a}})(e,d.maxLat,d.minLon,t.state),u=await s;if(!u)return!1;const m={daytime:!!/\/day\//.test(u.icon),temperature:(0,i.sz)(u.temperature.value),name:v(e.city),icon:u.icon,x:c.x,y:c.y};return(0,l.b)((0,o.Wu)(m.icon,!m.daytime)),[m,h(r.properties.periods[1],e,c),h(r.properties.periods[2],e,c)]}catch(t){return console.log(`No regional forecast data for '${e.name??e.city}'`),console.log(t),!1}}))),O=N.filter((e=>e));0!==O.length?(this.data={regionalData:O,offsetXY:c,sourceXY:u},this.setStatus(s.Ay.loaded)):this.setStatus(s.Ay.noData)}drawCanvas(){super.drawCanvas();const{regionalData:e,sourceXY:t,offsetXY:n}=this.data,s=this.elem.querySelector(".title.dual .top"),r=this.elem.querySelector(".title.dual .bottom");if(0===this.screenIndex)s.innerHTML="Regional",r.innerHTML="Observations";else{const t=c.c9.fromISO(e[0][this.screenIndex].time).toLocaleString({weekday:"long"});s.innerHTML="Forecast for",r.innerHTML=e[0][this.screenIndex].daytime?t:`${t} Night`}const a=640/(2*n.x);this.elem.querySelector(".map").style.transform=`scale(${a}) translate(-${t.x}px, -${t.y}px)`;const i=e.map((e=>{const t={},n=e[this.screenIndex];t.icon={type:"img",src:(0,o.Wu)(n.icon,!n.daytime)},t.city=n.name;const{temperature:s}=n;t.temp=s;const{x:r,y:a}=n,i=this.fillTemplate("location",t);return i.style.left=`${r}px`,i.style.top=`${a}px`,i})),l=this.elem.querySelector(".location-container");l.innerHTML="",l.append(...i),this.finishDraw()}}const k=async(e,t)=>{const n=await(0,S.f)(e,t);return{x:n.properties.gridX,y:n.properties.gridY,wfo:n.properties.gridId}};(0,d.Kb)(new b(6,"regional-forecast"))},302:(e,t,n)=>{n.d(t,{A:()=>u});var s=n(999);const r="Settings";const a=class{constructor(e,t,n,r,a,i,o){this.shortName=e,this.name=t,this.defaultValue=r,this.myValue=r,this.type=n??"checkbox",this.sticky=i,this.values=o,this.changeAction=a??(()=>{});const l=(0,s.J)()?.[`settings-${e}-${n}`];let c;"checkbox"===n&&void 0!==l&&(c="true"===l),"select"===n&&void 0!==l&&(c=parseFloat(l));const u=c??this.getFromLocalStorage();if(i&&null!==u&&(this.myValue=u),"select"===n)this.selectChange({target:{value:this.myValue}});else this.checkboxChange({target:{checked:this.myValue}})}generateSelect(){const e=document.createElement("label");e.for=`settings-${this.shortName}-select`,e.id=`settings-${this.shortName}-label`;const t=document.createElement("span");t.innerHTML=`${this.name} `,e.append(t);const n=document.createElement("select");return n.id=`settings-${this.shortName}-select`,n.name=`settings-${this.shortName}-select`,n.addEventListener("change",(e=>this.selectChange(e))),this.values.forEach((([e,t])=>{const s=document.createElement("option");s.value=e.toFixed(2),s.innerHTML=t,n.append(s)})),e.append(n),this.element=e,this.selectHighlight(this.myValue),e}generateCheckbox(){const e=document.createElement("label");e.for=`settings-${this.shortName}-checkbox`,e.id=`settings-${this.shortName}-label`;const t=document.createElement("input");t.type="checkbox",t.value=!0,t.id=`settings-${this.shortName}-checkbox`,t.name=`settings-${this.shortName}-checkbox`,t.checked=this.myValue,t.addEventListener("change",(e=>this.checkboxChange(e)));const n=document.createElement("span");return n.innerHTML=this.name,e.append(t,n),this.element=e,e}checkboxChange(e){this.myValue=e.target.checked,this.storeToLocalStorage(this.myValue),this.changeAction(this.myValue)}selectChange(e){this.myValue=parseFloat(e.target.value),this.storeToLocalStorage(this.myValue),this.changeAction(this.myValue)}storeToLocalStorage(e){if(!this.sticky)return;const t=localStorage?.getItem(r)??"{}",n=JSON.parse(t);n[this.shortName]=e,localStorage?.setItem(r,JSON.stringify(n))}getFromLocalStorage(){const e=localStorage?.getItem(r);try{if(e){const t=JSON.parse(e)?.[this.shortName];if(void 0!==t)switch(this.type){case"boolean":case"select":return t;default:return null}}}catch{return null}return null}get value(){return this.myValue}set value(e){if(this.myValue=e,"select"===this.type)this.selectHighlight(e);else this.element.checked=e;this.storeToLocalStorage(this.myValue),this.changeAction(this.myValue)}selectHighlight(e){this.element.querySelectorAll("option").forEach((t=>{t.selected=e.toFixed(2)===t.value}))}generate(){return"select"===this.type?this.generateSelect():this.generateCheckbox()}};document.addEventListener("DOMContentLoaded",(()=>{o()}));const i={speed:{value:1}},o=()=>{i.wide=new a("wide","Widescreen","boolean",!1,l,!0),i.kiosk=new a("kiosk","Kiosk","boolean",!1,c,!1),i.speed=new a("speed","Speed","select",1,null,!0,[[.5,"Very Fast"],[.75,"Fast"],[1,"Normal"],[1.25,"Slow"],[1.5,"Very Slow"]]);const e=Object.values(i).map((e=>e.generate())),t=document.querySelector("#settings");t.innerHTML="",t.append(...e)},l=e=>{const t=document.querySelector("#divTwc");e?t.classList.add("wide"):t.classList.remove("wide")},c=e=>{const t=document.querySelector("body");e?(t.classList.add("kiosk"),window.dispatchEvent(new Event("resize"))):t.classList.remove("kiosk")},u=i},999:(e,t,n)=>{n.d(t,{J:()=>l}),document.addEventListener("DOMContentLoaded",(()=>r()));const s={kiosk:"settings-kiosk-checkbox"},r=()=>{const e=document.querySelector("#share-link");e.addEventListener("click",a),navigator?.clipboard||(e.textContent="Get Permalink")},a=async e=>{e.preventDefault();const t=document.querySelectorAll("input[type=checkbox]"),n={};[...t].forEach((e=>{e?.id&&(n[e.id]=e?.checked??!1)}));[...document.querySelectorAll("select")].forEach((e=>{e?.id&&(n[e.id]=e?.value??0)})),n.latLonQuery=localStorage.getItem("latLonQuery"),n.latLon=localStorage.getItem("latLon");const s=new URLSearchParams(n).toString(),r=new URL(`?${s}`,document.location.href);navigator?.clipboard?i(r):o(r)},i=async e=>{try{await navigator.clipboard.writeText(e.toString());const t=document.querySelector("#share-link-copied");t.style.display="inline",setTimeout((()=>{t.style.display="none"}),5e3)}catch(e){console.error(e)}},o=e=>{const t=document.querySelector("#share-link-instructions"),n=t.querySelector("#share-link-url");n.value=e,t.style.display="inline",n.focus(),n.select()},l=()=>{if(l.params)return l.params;const e=[...new URLSearchParams(window.location.search)];return e.forEach((t=>{const n=s[t[0]];n&&e.push([n,t[1]])})),l.params=Object.fromEntries(e),l.params}},592:(e,t,n)=>{n.d(t,{Ay:()=>i,LR:()=>a,qx:()=>r});const s={loading:Symbol("loading"),loaded:Symbol("loaded"),failed:Symbol("failed"),noData:Symbol("noData"),disabled:Symbol("disabled"),retrying:Symbol("retrying")},r=e=>{switch(e){case s.loading:return"loading";case s.loaded:return"press-here";case s.failed:return"failed";case s.noData:return"no-data";case s.disabled:return"disabled";case s.retrying:return"retrying";default:return""}},a=["loading","press-here","failed","no-data","disabled","retrying"],i=s},709:(e,t,n)=>{var s=n(592),r=n(440),a=n(716),i=n(125),o=n(24),l=n(211);class c extends o.A{constructor(e,t,n){super(e,t,"Travel Forecast",n),this.timing.baseDelay=20;const s=TravelCities.length/4,r=Math.floor(s)-2,a=r%1;this.timing.delay=[450];for(let e=0;e{try{if(!e.point)throw new Error("No pre-loaded point");const t=await(0,r.Pq)(`https://api.weather.gov/gridpoints/${e.point.wfo}/${e.point.x},${e.point.y}/forecast`),n=t.properties.periods[0].isDaytime?0:1;return{today:0===n,high:t.properties.periods[n].temperature,low:t.properties.periods[n+1].temperature,name:e.Name,icon:(0,a.Wu)(t.properties.periods[n].icon)}}catch(t){return console.error(`GetTravelWeather for ${e.Name} failed`),console.error(t.status,t.responseJSON),{name:e.Name,error:!0}}})),t=await Promise.all(e);this.data=t;this.data.some((e=>e.high))?(this.setStatus(s.Ay.loaded),this.drawLongCanvas()):this.setStatus(s.Ay.noData)}async drawLongCanvas(){const e=this.elem.querySelector(".travel-lines");e.innerHTML="";const t=this.data.map((e=>{if(e.error)return!1;const t={city:e};if(e.icon){t.city=e.name;const{low:n,high:s}=e,r=Math.round(n).toString(),a=Math.round(s).toString();t.low=r,t.high=a;const{icon:i}=e;t.icon={type:"img",src:i}}else t.error="NO TRAVEL DATA AVAILABLE";return this.fillTemplate("travel-row",t)})).filter((e=>e));e.append(...t)}async drawCanvas(){super.drawCanvas();const e=this.data;this.elem.querySelector(".header .title.dual .bottom").innerHTML=`For ${u(e)}`,this.finishDraw()}async showCanvas(){await this.drawCanvas(),super.showCanvas()}screenIndexChange(){this.baseCountChange(this.navBaseCount)}baseCountChange(e){let t=Math.min(this.elem.querySelector(".travel-lines").getBoundingClientRect().height-289,e-150);t<0&&(t=0),this.elem.querySelector(".main").scrollTo(0,t)}getLongCanvas(){return this.longCanvas}}const u=e=>e.reduce(((e,t)=>{if(t&&""===e){return i.c9.local().plus({days:t.today?0:1}).toLocaleString({weekday:"long"})}return e}),"");(0,l.Kb)(new c(5,"travel",!1))},519:(e,t,n)=>{n.d(t,{Io:()=>r,LV:()=>a,Up:()=>s});const s=e=>["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"][Math.floor(e/22.5+.5)%16],r=(e,t,n,s)=>Math.sqrt((n-e)**2+(s-t)**2),a=(e,t)=>(e%t+t)%t},147:(e,t,n)=>{n.d(t,{O:()=>s});const s=e=>{let t=e;return t=t.replace("https://api.weather.gov/",`${window.location.protocol}//${window.location.host}/`),t=t.replace("https://www.cpc.ncep.noaa.gov/",`${window.location.protocol}//${window.location.host}/`),t}},440:(e,t,n)=>{n.d(t,{Pq:()=>r,Qq:()=>a,av:()=>i});var s=n(147);const r=(e,t)=>o(e,"json",t),a=(e,t)=>o(e,"text",t),i=(e,t)=>o(e,"blob",t),o=async(e,t,n={})=>{const r={method:"GET",mode:"cors",type:"GET",retryCount:0,...n};r.originalRetries=r.retryCount;let a=e;!0===r.cors&&(a=(0,s.O)(e));const i=new URL(a,`${window.location.origin}/`);r.data&&Object.keys(r.data).forEach((e=>{const t=r.data[e];i.searchParams.append(e,t)}));const o=await l(i,r);if(!o.ok)throw new Error(`Fetch error ${o.status} ${o.statusText} while fetching ${o.url}`);switch(t){case"json":return o.json();case"text":return o.text();case"blob":return o.blob();default:return o}},l=(e,t)=>new Promise(((n,s)=>{fetch(e,t).then((s=>{if(t.retryCount>0){if(s.status>=500&&s.status<=599&&t.retryCount>0){"function"==typeof t.stillWaiting&&t.retryCount===t.originalRetries&&t.stillWaiting();const s={...t,retryCount:t.retryCount-1};return n(c(u(t.originalRetries-s.retryCount),l,e,s))}return n(s)}return n(s)})).catch((e=>s(e)))})),c=(e,t,...n)=>new Promise((s=>{setTimeout((()=>{s(t(...n))}),e)})),u=e=>{switch(e){case 1:return 1e3;case 2:return 2e3;case 3:return 5e3;case 4:return 1e4;default:return 3e4}}},47:(e,t,n)=>{n.d(t,{b:()=>o,u:()=>a});var s=n(440),r=n(147);const a=(e,t=!1)=>new Promise((n=>{const s=new Image;if(s.onload=e=>{n(e.target)},e instanceof Blob)s.src=window.URL.createObjectURL(e);else{let n=e;t&&(n=(0,r.O)(e)),s.src=n}})),i=[],o=e=>!i.includes(e)&&((0,s.av)(e),i.push(e),!0)},430:(e,t,n)=>{n.d(t,{A:()=>a});let s=!1;const r=(e=!1)=>(r.controller||(r.controller=new NoSleep),s!==e&&(s=e,e?r.controller.enable():r.controller.disable())),a=r},891:(e,t,n)=>{n.d(t,{C:()=>s});const s=e=>[/^[ A-Za-z]+ \/ /,/^[ A-Za-z]+\//,/^[ A-Za-z]+, /].reduce(((e,t)=>e.replace(t,"")),e)},413:(e,t,n)=>{n.d(t,{Q8:()=>o,X4:()=>s,Yy:()=>r,lt:()=>i,sz:()=>a,yX:()=>l});const s=(e,t)=>Math.trunc(e*10**t)/10**t,r=e=>Math.round(e/1.60934),a=e=>Math.round(9*e/5+32),i=e=>Math.round(e/1.60934),o=e=>Math.round(e/.3048),l=e=>s(2953e-7*e,2)},348:(e,t,n)=>{n.d(t,{f:()=>r});var s=n(440);const r=async(e,t)=>{try{return await(0,s.Pq)(`https://api.weather.gov/points/${e},${t}`)}catch(n){return console.log(`Unable to get point ${e}, ${t}`),console.error(n),!1}}},24:(e,t,n)=>{n.d(t,{A:()=>l});var s=n(592),r=n(125),a=n(211),i=n(999),o=n(302);const l=class{constructor(e,t,n,r){this.navId=e,this.elemId=void 0,this.data=void 0,this.loadingStatus=s.Ay.loading,this.name=n??t,this.getDataCallbacks=[],this.stillWaitingCallbacks=[],this.defaultEnabled=r,this.okToDrawCurrentConditions=!0,this.okToDrawCurrentDateTime=!0,this.showOnProgress=!0,this.timing={totalScreens:1,baseDelay:9e3,delay:1},this.navBaseCount=0,this.screenIndex=-1,this.storeElemId(t),this.isEnabled?this.setStatus(s.Ay.loading):this.setStatus(s.Ay.disabled),this.startNavCount(),document.addEventListener("DOMContentLoaded",(()=>{this.loadTemplates()}))}generateCheckbox(e=!0){if("progress"===this.elemId)return!1;const t=(0,i.J)()?.[`${this.elemId}-checkbox`];let n;void 0!==t&&(n="true"===t);let s=n??window.localStorage.getItem(`display-enabled: ${this.elemId}`);null===s&&(s=e),this.isEnabled=!("true"!==s&&!0!==s),window.localStorage.setItem(`display-enabled: ${this.elemId}`,this.isEnabled);const r=document.createElement("label");r.for=`${this.elemId}-checkbox`,r.id=`${this.elemId}-label`;const a=document.createElement("input");a.type="checkbox",a.value=!0,a.id=`${this.elemId}-checkbox`,a.name=`${this.elemId}-checkbox`,a.checked=this.isEnabled,a.addEventListener("change",(e=>this.checkboxChange(e)));const o=document.createElement("span");o.innerHTML=this.name;const l=document.createElement("span");return l.innerHTML="!!!",l.classList.add("alert"),r.append(a,o,l),this.checkbox=r,r}checkboxChange(e){this.isEnabled=e.target.checked,window.localStorage.setItem(`display-enabled: ${this.elemId}`,this.isEnabled),this.getData()}setStatus(e){this.status=e,(0,a.yB)({id:this.navId,status:this.status}),this.checkbox&&(this.checkbox.classList.remove(...s.LR),this.checkbox.classList.add((0,s.qx)(e)))}get status(){return this.loadingStatus}set status(e){this.loadingStatus=e}storeElemId(e){this.elemId||(this.elemId=e)}getData(e){return this.data=void 0,e&&(this.weatherParameters=e),this.isEnabled?(this.setStatus(s.Ay.loading),this.calcNavTiming(),!0):(this.setStatus(s.Ay.disabled),!1)}getDataCallback(){this.getDataCallbacks.forEach((e=>e(this.data))),this.getDataCallbacks=[]}drawCanvas(){this.screenIndex<0&&(this.screenIndex=0),this.okToDrawCurrentDateTime&&this.drawCurrentDateTime()}finishDraw(){this.okToDrawCurrentDateTime&&(this.drawCurrentDateTime(),this.dateTimeInterval||(this.dateTimeInterval=setInterval((()=>this.active&&this.drawCurrentDateTime()),100)))}drawCurrentDateTime(){const e=r.c9.local().setZone((0,a.eB)()),t=e.toLocaleString(r.c9.TIME_WITH_SECONDS).padStart(11," "),n=e.toFormat(" ccc LLL ")+e.day.toString().padStart(2," "),s=this.elem.querySelector(".date-time.date"),i=this.elem.querySelector(".date-time.time");i&&this.lastTime!==t&&(i.innerHTML=t.toUpperCase()),this.lastTime=t,s&&this.lastDate!==n&&(s.innerHTML=n.toUpperCase()),this.lastDate=n}showCanvas(e){e===a.ab.command.firstFrame&&this.navNext(e),e===a.ab.command.lastFrame&&this.navPrev(e),this.startNavCount(),this.elem.classList.add("show"),document.querySelector("#divTwc").classList.add(this.elemId)}hideCanvas(){this.resetNavBaseCount(),this.elem.classList.remove("show"),document.querySelector("#divTwc").classList.remove(this.elemId)}get active(){return 0!==this.elem.offsetHeight}get enabled(){return this.isEnabled}navBaseTime(){(0,a.F4)()&&this.active&&(this.navBaseCount+=1,this.baseCountChange&&this.baseCountChange(this.navBaseCount),this.updateScreenFromBaseCount())}async updateScreenFromBaseCount(){const e=this.screenIndexFromBaseCount();!1!==e?e!==this.screenIndex&&(this.screenIndex=-1===e?0:e,this.screenIndexChange?this.screenIndexChange(this.screenIndex):await this.drawCanvas(),this.showCanvas()):this.sendNavDisplayMessage(a.ab.response.next)}calcNavTiming(){if(!1===this.timing)return;Array.isArray(this.timing.delay)&&(this.timing.totalScreens=this.timing.delay.length);let e=[];if("number"==typeof this.timing.delay)for(let t=0;t"object"==typeof e?e.time:e));let t=0;if(this.timing.fullDelay=e.map((e=>{const n=t+e;return t+=e,n})),Array.isArray(this.timing.delay)&&"object"==typeof this.timing.delay[0])this.timing.screenIndexes=this.timing.delay.map((e=>e.si));else{this.timing.screenIndexes=[];for(let e=0;ee>this.navBaseCount));this.navBaseCount=e}this.updateScreenFromBaseCount()}navPrev(e){if(e===a.ab.command.lastFrame)this.navBaseCount=this.timing.fullDelay[this.timing.totalScreens-1]-1;else{const e=this.timing.fullDelay.reduce(((e,t)=>te>this.navBaseCount));return-1!==e&&this.timing.screenIndexes[e]}startNavCount(){this.navInterval||(this.navInterval=setInterval((()=>this.navBaseTime()),this.timing.baseDelay*o.A.speed.value))}resetNavBaseCount(){this.navBaseCount=0,this.screenIndex=-1,this.navInterval&&(clearInterval(this.navInterval),this.navInterval=void 0)}sendNavDisplayMessage(e){(0,a.Ju)({id:this.navId,type:e})}loadTemplates(){if(this.templates={},this.elem=document.querySelector(`#${this.elemId}-html`),!this.elem)return;this.elem.querySelectorAll(".template").forEach((e=>{const t=e.classList[0],n=e.cloneNode(!0);n.classList.remove("template"),this.templates[t]=n,e.remove()}))}fillTemplate(e,t){const n=this.templates[e];if(!n)return!1;const s=n.cloneNode(!0);return Object.entries(t).forEach((([e,t])=>{const n=s.querySelector(`.${e}`);n&&("string"==typeof t||"number"==typeof t?n.innerHTML=t:"img"===t?.type&&(n.querySelector("img").src=t.src))})),s}stillWaiting(){this.isEnabled&&this.setStatus(s.Ay.retrying),this.stillWaitingCallbacks.forEach((e=>e())),this.stillWaitingCallbacks=[]}}},125:(e,t,n)=>{n.d(t,{IX:()=>xn,c9:()=>gs,dw:()=>Cn});class s extends Error{}class r extends s{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class a extends s{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class i extends s{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class o extends s{}class l extends s{constructor(e){super(`Invalid unit ${e}`)}}class c extends s{}class u extends s{constructor(){super("Zone is an abstract class")}}const d="numeric",h="short",m="long",f={year:d,month:d,day:d},g={year:d,month:h,day:d},y={year:d,month:h,day:d,weekday:h},p={year:d,month:m,day:d},w={year:d,month:m,day:d,weekday:m},v={hour:d,minute:d},S={hour:d,minute:d,second:d},b={hour:d,minute:d,second:d,timeZoneName:h},k={hour:d,minute:d,second:d,timeZoneName:m},C={hour:d,minute:d,hourCycle:"h23"},T={hour:d,minute:d,second:d,hourCycle:"h23"},x={hour:d,minute:d,second:d,hourCycle:"h23",timeZoneName:h},L={hour:d,minute:d,second:d,hourCycle:"h23",timeZoneName:m},D={year:d,month:d,day:d,hour:d,minute:d},M={year:d,month:d,day:d,hour:d,minute:d,second:d},I={year:d,month:h,day:d,hour:d,minute:d},N={year:d,month:h,day:d,hour:d,minute:d,second:d},O={year:d,month:h,day:d,weekday:h,hour:d,minute:d},E={year:d,month:m,day:d,hour:d,minute:d,timeZoneName:h},$={year:d,month:m,day:d,hour:d,minute:d,second:d,timeZoneName:h},F={year:d,month:m,day:d,weekday:m,hour:d,minute:d,timeZoneName:m},q={year:d,month:m,day:d,weekday:m,hour:d,minute:d,second:d,timeZoneName:m};class W{get type(){throw new u}get name(){throw new u}get ianaName(){return this.name}get isUniversal(){throw new u}offsetName(e,t){throw new u}formatOffset(e,t){throw new u}offset(e){throw new u}equals(e){throw new u}get isValid(){throw new u}}let A=null;class V extends W{static get instance(){return null===A&&(A=new V),A}get type(){return"system"}get name(){return(new Intl.DateTimeFormat).resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return nt(e,t,n)}formatOffset(e,t){return it(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return"system"===e.type}get isValid(){return!0}}let _={};const P={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};let H={};class z extends W{static create(e){return H[e]||(H[e]=new z(e)),H[e]}static resetCache(){H={},_={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch(e){return!1}}constructor(e){super(),this.zoneName=e,this.valid=z.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return nt(e,t,n,this.name)}formatOffset(e,t){return it(this.offset(e),t)}offset(e){const t=new Date(e);if(isNaN(t))return NaN;const n=(s=this.name,_[s]||(_[s]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:s,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),_[s]);var s;let[r,a,i,o,l,c,u]=n.formatToParts?function(e,t){const n=e.formatToParts(t),s=[];for(let e=0;e=0?h:1e3+h,(Qe({year:r,month:a,day:i,hour:24===l?0:l,minute:c,second:u,millisecond:0})-d)/6e4}equals(e){return"iana"===e.type&&e.name===this.name}get isValid(){return this.valid}}let Z={};let R={};function U(e,t={}){const n=JSON.stringify([e,t]);let s=R[n];return s||(s=new Intl.DateTimeFormat(e,t),R[n]=s),s}let j={};let B={};let J=null;let G={};function Y(e,t,n,s){const r=e.listingMode();return"error"===r?null:"en"===r?n(t):s(t)}class K{constructor(e,t,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;const{padTo:s,floor:r,...a}=n;if(!t||Object.keys(a).length>0){const t={useGrouping:!1,...n};n.padTo>0&&(t.minimumIntegerDigits=n.padTo),this.inf=function(e,t={}){const n=JSON.stringify([e,t]);let s=j[n];return s||(s=new Intl.NumberFormat(e,t),j[n]=s),s}(e,t)}}format(e){if(this.inf){const t=this.floor?Math.floor(e):e;return this.inf.format(t)}return Re(this.floor?Math.floor(e):Je(e,3),this.padTo)}}class Q{constructor(e,t,n){let s;if(this.opts=n,this.originalZone=void 0,this.opts.timeZone)this.dt=e;else if("fixed"===e.zone.type){const t=e.offset/60*-1,n=t>=0?`Etc/GMT+${t}`:`Etc/GMT${t}`;0!==e.offset&&z.create(n).valid?(s=n,this.dt=e):(s="UTC",this.dt=0===e.offset?e:e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone)}else"system"===e.zone.type?this.dt=e:"iana"===e.zone.type?(this.dt=e,s=e.zone.name):(s="UTC",this.dt=e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone);const r={...this.opts};r.timeZone=r.timeZone||s,this.dtf=U(t,r)}format(){return this.originalZone?this.formatToParts().map((({value:e})=>e)).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){const e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map((e=>{if("timeZoneName"===e.type){const t=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...e,value:t}}return e})):e}resolvedOptions(){return this.dtf.resolvedOptions()}}class X{constructor(e,t,n){this.opts={style:"long",...n},!t&&Ve()&&(this.rtf=function(e,t={}){const{base:n,...s}=t,r=JSON.stringify([e,s]);let a=B[r];return a||(a=new Intl.RelativeTimeFormat(e,t),B[r]=a),a}(e,n))}format(e,t){return this.rtf?this.rtf.format(e,t):function(e,t,n="always",s=!1){const r={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},a=-1===["hours","minutes","seconds"].indexOf(e);if("auto"===n&&a){const n="days"===e;switch(t){case 1:return n?"tomorrow":`next ${r[e][0]}`;case-1:return n?"yesterday":`last ${r[e][0]}`;case 0:return n?"today":`this ${r[e][0]}`}}const i=Object.is(t,-0)||t<0,o=Math.abs(t),l=1===o,c=r[e],u=s?l?c[1]:c[2]||c[1]:l?r[e][0]:e;return i?`${o} ${u} ago`:`in ${o} ${u}`}(t,e,this.opts.numeric,"long"!==this.opts.style)}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}}const ee={firstDay:1,minimalDays:4,weekend:[6,7]};class te{static fromOpts(e){return te.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,t,n,s,r=!1){const a=e||ve.defaultLocale,i=a||(r?"en-US":J||(J=(new Intl.DateTimeFormat).resolvedOptions().locale,J)),o=t||ve.defaultNumberingSystem,l=n||ve.defaultOutputCalendar,c=ze(s)||ve.defaultWeekSettings;return new te(i,o,l,c,a)}static resetCache(){J=null,R={},j={},B={}}static fromObject({locale:e,numberingSystem:t,outputCalendar:n,weekSettings:s}={}){return te.create(e,t,n,s)}constructor(e,t,n,s,r){const[a,i,o]=function(e){const t=e.indexOf("-x-");-1!==t&&(e=e.substring(0,t));const n=e.indexOf("-u-");if(-1===n)return[e];{let t,s;try{t=U(e).resolvedOptions(),s=e}catch(r){const a=e.substring(0,n);t=U(a).resolvedOptions(),s=a}const{numberingSystem:r,calendar:a}=t;return[s,r,a]}}(e);this.locale=a,this.numberingSystem=t||i||null,this.outputCalendar=n||o||null,this.weekSettings=s,this.intl=function(e,t,n){return n||t?(e.includes("-u-")||(e+="-u"),n&&(e+=`-ca-${n}`),t&&(e+=`-nu-${t}`),e):e}(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=r,this.fastNumbersCached=null}get fastNumbers(){var e;return null==this.fastNumbersCached&&(this.fastNumbersCached=(!(e=this).numberingSystem||"latn"===e.numberingSystem)&&("latn"===e.numberingSystem||!e.locale||e.locale.startsWith("en")||"latn"===new Intl.DateTimeFormat(e.intl).resolvedOptions().numberingSystem)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),t=!(null!==this.numberingSystem&&"latn"!==this.numberingSystem||null!==this.outputCalendar&&"gregory"!==this.outputCalendar);return e&&t?"en":"intl"}clone(e){return e&&0!==Object.getOwnPropertyNames(e).length?te.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,ze(e.weekSettings)||this.weekSettings,e.defaultToEN||!1):this}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,t=!1){return Y(this,e,dt,(()=>{const n=t?{month:e,day:"numeric"}:{month:e},s=t?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=function(e){const t=[];for(let n=1;n<=12;n++){const s=gs.utc(2009,n,1);t.push(e(s))}return t}((e=>this.extract(e,n,"month")))),this.monthsCache[s][e]}))}weekdays(e,t=!1){return Y(this,e,gt,(()=>{const n=t?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},s=t?"format":"standalone";return this.weekdaysCache[s][e]||(this.weekdaysCache[s][e]=function(e){const t=[];for(let n=1;n<=7;n++){const s=gs.utc(2016,11,13+n);t.push(e(s))}return t}((e=>this.extract(e,n,"weekday")))),this.weekdaysCache[s][e]}))}meridiems(){return Y(this,void 0,(()=>yt),(()=>{if(!this.meridiemCache){const e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[gs.utc(2016,11,13,9),gs.utc(2016,11,13,19)].map((t=>this.extract(t,e,"dayperiod")))}return this.meridiemCache}))}eras(e){return Y(this,e,St,(()=>{const t={era:e};return this.eraCache[e]||(this.eraCache[e]=[gs.utc(-40,1,1),gs.utc(2017,1,1)].map((e=>this.extract(e,t,"era")))),this.eraCache[e]}))}extract(e,t,n){const s=this.dtFormatter(e,t).formatToParts().find((e=>e.type.toLowerCase()===n));return s?s.value:null}numberFormatter(e={}){return new K(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new Q(e,this.intl,t)}relFormatter(e={}){return new X(this.intl,this.isEnglish(),e)}listFormatter(e={}){return function(e,t={}){const n=JSON.stringify([e,t]);let s=Z[n];return s||(s=new Intl.ListFormat(e,t),Z[n]=s),s}(this.intl,e)}isEnglish(){return"en"===this.locale||"en-us"===this.locale.toLowerCase()||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:_e()?function(e){let t=G[e];if(!t){const n=new Intl.Locale(e);t="getWeekInfo"in n?n.getWeekInfo():n.weekInfo,G[e]=t}return t}(this.locale):ee}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}}let ne=null;class se extends W{static get utcInstance(){return null===ne&&(ne=new se(0)),ne}static instance(e){return 0===e?se.utcInstance:new se(e)}static parseSpecifier(e){if(e){const t=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(t)return new se(st(t[1],t[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return 0===this.fixed?"UTC":`UTC${it(this.fixed,"narrow")}`}get ianaName(){return 0===this.fixed?"Etc/UTC":`Etc/GMT${it(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,t){return it(this.fixed,t)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return"fixed"===e.type&&e.fixed===this.fixed}get isValid(){return!0}}class re extends W{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function ae(e,t){if(qe(e)||null===e)return t;if(e instanceof W)return e;if("string"==typeof e){const n=e.toLowerCase();return"default"===n?t:"local"===n||"system"===n?V.instance:"utc"===n||"gmt"===n?se.utcInstance:se.parseSpecifier(n)||z.create(e)}return We(e)?se.instance(e):"object"==typeof e&&"offset"in e&&"function"==typeof e.offset?e:new re(e)}const ie={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},oe={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},le=ie.hanidec.replace(/[\[|\]]/g,"").split("");let ce={};function ue({numberingSystem:e},t=""){const n=e||"latn";return ce[n]||(ce[n]={}),ce[n][t]||(ce[n][t]=new RegExp(`${ie[n]}${t}`)),ce[n][t]}let de,he=()=>Date.now(),me="system",fe=null,ge=null,ye=null,pe=60,we=null;class ve{static get now(){return he}static set now(e){he=e}static set defaultZone(e){me=e}static get defaultZone(){return ae(me,V.instance)}static get defaultLocale(){return fe}static set defaultLocale(e){fe=e}static get defaultNumberingSystem(){return ge}static set defaultNumberingSystem(e){ge=e}static get defaultOutputCalendar(){return ye}static set defaultOutputCalendar(e){ye=e}static get defaultWeekSettings(){return we}static set defaultWeekSettings(e){we=ze(e)}static get twoDigitCutoffYear(){return pe}static set twoDigitCutoffYear(e){pe=e%100}static get throwOnInvalid(){return de}static set throwOnInvalid(e){de=e}static resetCaches(){te.resetCache(),z.resetCache(),gs.resetCache(),ce={}}}class Se{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}const be=[0,31,59,90,120,151,181,212,243,273,304,334],ke=[0,31,60,91,121,152,182,213,244,274,305,335];function Ce(e,t){return new Se("unit out of range",`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function Te(e,t,n){const s=new Date(Date.UTC(e,t-1,n));e<100&&e>=0&&s.setUTCFullYear(s.getUTCFullYear()-1900);const r=s.getUTCDay();return 0===r?7:r}function xe(e,t,n){return n+(Ge(e)?ke:be)[t-1]}function Le(e,t){const n=Ge(e)?ke:be,s=n.findIndex((e=>eet(s,t,n)?(l=s+1,c=1):l=s,{weekYear:l,weekNumber:c,weekday:o,...ot(e)}}function Ie(e,t=4,n=1){const{weekYear:s,weekNumber:r,weekday:a}=e,i=De(Te(s,1,t),n),o=Ye(s);let l,c=7*r+a-i-7+t;c<1?(l=s-1,c+=Ye(l)):c>o?(l=s+1,c-=Ye(s)):l=s;const{month:u,day:d}=Le(l,c);return{year:l,month:u,day:d,...ot(e)}}function Ne(e){const{year:t,month:n,day:s}=e;return{year:t,ordinal:xe(t,n,s),...ot(e)}}function Oe(e){const{year:t,ordinal:n}=e,{month:s,day:r}=Le(t,n);return{year:t,month:s,day:r,...ot(e)}}function Ee(e,t){if(!qe(e.localWeekday)||!qe(e.localWeekNumber)||!qe(e.localWeekYear)){if(!qe(e.weekday)||!qe(e.weekNumber)||!qe(e.weekYear))throw new o("Cannot mix locale-based week fields with ISO-based week fields");return qe(e.localWeekday)||(e.weekday=e.localWeekday),qe(e.localWeekNumber)||(e.weekNumber=e.localWeekNumber),qe(e.localWeekYear)||(e.weekYear=e.localWeekYear),delete e.localWeekday,delete e.localWeekNumber,delete e.localWeekYear,{minDaysInFirstWeek:t.getMinDaysInFirstWeek(),startOfWeek:t.getStartOfWeek()}}return{minDaysInFirstWeek:4,startOfWeek:1}}function $e(e){const t=Ae(e.year),n=Ze(e.month,1,12),s=Ze(e.day,1,Ke(e.year,e.month));return t?n?!s&&Ce("day",e.day):Ce("month",e.month):Ce("year",e.year)}function Fe(e){const{hour:t,minute:n,second:s,millisecond:r}=e,a=Ze(t,0,23)||24===t&&0===n&&0===s&&0===r,i=Ze(n,0,59),o=Ze(s,0,59),l=Ze(r,0,999);return a?i?o?!l&&Ce("millisecond",r):Ce("second",s):Ce("minute",n):Ce("hour",t)}function qe(e){return void 0===e}function We(e){return"number"==typeof e}function Ae(e){return"number"==typeof e&&e%1==0}function Ve(){try{return"undefined"!=typeof Intl&&!!Intl.RelativeTimeFormat}catch(e){return!1}}function _e(){try{return"undefined"!=typeof Intl&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch(e){return!1}}function Pe(e,t,n){if(0!==e.length)return e.reduce(((e,s)=>{const r=[t(s),s];return e&&n(e[0],r[0])===e[0]?e:r}),null)[1]}function He(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function ze(e){if(null==e)return null;if("object"!=typeof e)throw new c("Week settings must be an object");if(!Ze(e.firstDay,1,7)||!Ze(e.minimalDays,1,7)||!Array.isArray(e.weekend)||e.weekend.some((e=>!Ze(e,1,7))))throw new c("Invalid week settings");return{firstDay:e.firstDay,minimalDays:e.minimalDays,weekend:Array.from(e.weekend)}}function Ze(e,t,n){return Ae(e)&&e>=t&&e<=n}function Re(e,t=2){let n;return n=e<0?"-"+(""+-e).padStart(t,"0"):(""+e).padStart(t,"0"),n}function Ue(e){return qe(e)||null===e||""===e?void 0:parseInt(e,10)}function je(e){return qe(e)||null===e||""===e?void 0:parseFloat(e)}function Be(e){if(!qe(e)&&null!==e&&""!==e){const t=1e3*parseFloat("0."+e);return Math.floor(t)}}function Je(e,t,n=!1){const s=10**t;return(n?Math.trunc:Math.round)(e*s)/s}function Ge(e){return e%4==0&&(e%100!=0||e%400==0)}function Ye(e){return Ge(e)?366:365}function Ke(e,t){const n=function(e,t){return e-t*Math.floor(e/t)}(t-1,12)+1;return 2===n?Ge(e+(t-n)/12)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function Qe(e){let t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&e.year>=0&&(t=new Date(t),t.setUTCFullYear(e.year,e.month-1,e.day)),+t}function Xe(e,t,n){return-De(Te(e,1,t),n)+t-1}function et(e,t=4,n=1){const s=Xe(e,t,n),r=Xe(e+1,t,n);return(Ye(e)-s+r)/7}function tt(e){return e>99?e:e>ve.twoDigitCutoffYear?1900+e:2e3+e}function nt(e,t,n,s=null){const r=new Date(e),a={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};s&&(a.timeZone=s);const i={timeZoneName:t,...a},o=new Intl.DateTimeFormat(n,i).formatToParts(r).find((e=>"timezonename"===e.type.toLowerCase()));return o?o.value:null}function st(e,t){let n=parseInt(e,10);Number.isNaN(n)&&(n=0);const s=parseInt(t,10)||0;return 60*n+(n<0||Object.is(n,-0)?-s:s)}function rt(e){const t=Number(e);if("boolean"==typeof e||""===e||Number.isNaN(t))throw new c(`Invalid unit value ${e}`);return t}function at(e,t){const n={};for(const s in e)if(He(e,s)){const r=e[s];if(null==r)continue;n[t(s)]=rt(r)}return n}function it(e,t){const n=Math.trunc(Math.abs(e/60)),s=Math.trunc(Math.abs(e%60)),r=e>=0?"+":"-";switch(t){case"short":return`${r}${Re(n,2)}:${Re(s,2)}`;case"narrow":return`${r}${n}${s>0?`:${s}`:""}`;case"techie":return`${r}${Re(n,2)}${Re(s,2)}`;default:throw new RangeError(`Value format ${t} is out of range for property format`)}}function ot(e){return function(e,t){return t.reduce(((t,n)=>(t[n]=e[n],t)),{})}(e,["hour","minute","second","millisecond"])}const lt=["January","February","March","April","May","June","July","August","September","October","November","December"],ct=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],ut=["J","F","M","A","M","J","J","A","S","O","N","D"];function dt(e){switch(e){case"narrow":return[...ut];case"short":return[...ct];case"long":return[...lt];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const ht=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],mt=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],ft=["M","T","W","T","F","S","S"];function gt(e){switch(e){case"narrow":return[...ft];case"short":return[...mt];case"long":return[...ht];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const yt=["AM","PM"],pt=["Before Christ","Anno Domini"],wt=["BC","AD"],vt=["B","A"];function St(e){switch(e){case"narrow":return[...vt];case"short":return[...wt];case"long":return[...pt];default:return null}}function bt(e,t){let n="";for(const s of e)s.literal?n+=s.val:n+=t(s.val);return n}const kt={D:f,DD:g,DDD:p,DDDD:w,t:v,tt:S,ttt:b,tttt:k,T:C,TT:T,TTT:x,TTTT:L,f:D,ff:I,fff:E,ffff:F,F:M,FF:N,FFF:$,FFFF:q};class Ct{static create(e,t={}){return new Ct(e,t)}static parseFormat(e){let t=null,n="",s=!1;const r=[];for(let a=0;a0&&r.push({literal:s||/^\s+$/.test(n),val:n}),t=null,n="",s=!s):s||i===t?n+=i:(n.length>0&&r.push({literal:/^\s+$/.test(n),val:n}),n=i,t=i)}return n.length>0&&r.push({literal:s||/^\s+$/.test(n),val:n}),r}static macroTokenToFormatOpts(e){return kt[e]}constructor(e,t){this.opts=t,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,t){null===this.systemLoc&&(this.systemLoc=this.loc.redefaultToSystem());return this.systemLoc.dtFormatter(e,{...this.opts,...t}).format()}dtFormatter(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t})}formatDateTime(e,t){return this.dtFormatter(e,t).format()}formatDateTimeParts(e,t){return this.dtFormatter(e,t).formatToParts()}formatInterval(e,t){return this.dtFormatter(e.start,t).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,t){return this.dtFormatter(e,t).resolvedOptions()}num(e,t=0){if(this.opts.forceSimple)return Re(e,t);const n={...this.opts};return t>0&&(n.padTo=t),this.loc.numberFormatter(n).format(e)}formatDateTimeFromString(e,t){const n="en"===this.loc.listingMode(),s=this.loc.outputCalendar&&"gregory"!==this.loc.outputCalendar,r=(t,n)=>this.loc.extract(e,t,n),a=t=>e.isOffsetFixed&&0===e.offset&&t.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,t.format):"",i=()=>n?function(e){return yt[e.hour<12?0:1]}(e):r({hour:"numeric",hourCycle:"h12"},"dayperiod"),o=(t,s)=>n?function(e,t){return dt(t)[e.month-1]}(e,t):r(s?{month:t}:{month:t,day:"numeric"},"month"),l=(t,s)=>n?function(e,t){return gt(t)[e.weekday-1]}(e,t):r(s?{weekday:t}:{weekday:t,month:"long",day:"numeric"},"weekday"),c=t=>{const n=Ct.macroTokenToFormatOpts(t);return n?this.formatWithSystemDefault(e,n):t},u=t=>n?function(e,t){return St(t)[e.year<0?0:1]}(e,t):r({era:t},"era");return bt(Ct.parseFormat(t),(t=>{switch(t){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12==0?12:e.hour%12);case"hh":return this.num(e.hour%12==0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return a({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return a({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return a({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return i();case"d":return s?r({day:"numeric"},"day"):this.num(e.day);case"dd":return s?r({day:"2-digit"},"day"):this.num(e.day,2);case"c":case"E":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return s?r({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return s?r({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return o("short",!0);case"LLLL":return o("long",!0);case"LLLLL":return o("narrow",!0);case"M":return s?r({month:"numeric"},"month"):this.num(e.month);case"MM":return s?r({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return o("short",!1);case"MMMM":return o("long",!1);case"MMMMM":return o("narrow",!1);case"y":return s?r({year:"numeric"},"year"):this.num(e.year);case"yy":return s?r({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return s?r({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return s?r({year:"numeric"},"year"):this.num(e.year,6);case"G":return u("short");case"GG":return u("long");case"GGGGG":return u("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"n":return this.num(e.localWeekNumber);case"nn":return this.num(e.localWeekNumber,2);case"ii":return this.num(e.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(e.localWeekYear,4);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return c(t)}}))}formatDurationFromString(e,t){const n=e=>{switch(e[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},s=Ct.parseFormat(t),r=s.reduce(((e,{literal:t,val:n})=>t?e:e.concat(n)),[]);return bt(s,(e=>t=>{const s=n(t);return s?this.num(e.get(s),t.length):t})(e.shiftTo(...r.map(n).filter((e=>e)))))}}const Tt=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function xt(...e){const t=e.reduce(((e,t)=>e+t.source),"");return RegExp(`^${t}$`)}function Lt(...e){return t=>e.reduce((([e,n,s],r)=>{const[a,i,o]=r(t,s);return[{...e,...a},i||n,o]}),[{},null,1]).slice(0,2)}function Dt(e,...t){if(null==e)return[null,null];for(const[n,s]of t){const t=n.exec(e);if(t)return s(t)}return[null,null]}function Mt(...e){return(t,n)=>{const s={};let r;for(r=0;rvoid 0!==e&&(t||e&&u)?-e:e;return[{years:h(je(n)),months:h(je(s)),weeks:h(je(r)),days:h(je(a)),hours:h(je(i)),minutes:h(je(o)),seconds:h(je(l),"-0"===l),milliseconds:h(Be(c),d)}]}const Rt={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Ut(e,t,n,s,r,a,i){const o={year:2===t.length?tt(Ue(t)):Ue(t),month:ct.indexOf(n)+1,day:Ue(s),hour:Ue(r),minute:Ue(a)};return i&&(o.second=Ue(i)),e&&(o.weekday=e.length>3?ht.indexOf(e)+1:mt.indexOf(e)+1),o}const jt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function Bt(e){const[,t,n,s,r,a,i,o,l,c,u,d]=e,h=Ut(t,r,s,n,a,i,o);let m;return m=l?Rt[l]:c?0:st(u,d),[h,new se(m)]}const Jt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,Gt=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,Yt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function Kt(e){const[,t,n,s,r,a,i,o]=e;return[Ut(t,r,s,n,a,i,o),se.utcInstance]}function Qt(e){const[,t,n,s,r,a,i,o]=e;return[Ut(t,o,n,s,r,a,i),se.utcInstance]}const Xt=xt(/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,Et),en=xt(/(\d{4})-?W(\d\d)(?:-?(\d))?/,Et),tn=xt(/(\d{4})-?(\d{3})/,Et),nn=xt(Ot),sn=Lt((function(e,t){return[{year:At(e,t),month:At(e,t+1,1),day:At(e,t+2,1)},null,t+3]}),Vt,_t,Pt),rn=Lt($t,Vt,_t,Pt),an=Lt(Ft,Vt,_t,Pt),on=Lt(Vt,_t,Pt);const ln=Lt(Vt);const cn=xt(/(\d{4})-(\d\d)-(\d\d)/,Wt),un=xt(qt),dn=Lt(Vt,_t,Pt);const hn="Invalid Duration",mn={weeks:{days:7,hours:168,minutes:10080,seconds:604800,milliseconds:6048e5},days:{hours:24,minutes:1440,seconds:86400,milliseconds:864e5},hours:{minutes:60,seconds:3600,milliseconds:36e5},minutes:{seconds:60,milliseconds:6e4},seconds:{milliseconds:1e3}},fn={years:{quarters:4,months:12,weeks:52,days:365,hours:8760,minutes:525600,seconds:31536e3,milliseconds:31536e6},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:131040,seconds:7862400,milliseconds:78624e5},months:{weeks:4,days:30,hours:720,minutes:43200,seconds:2592e3,milliseconds:2592e6},...mn},gn=365.2425,yn=30.436875,pn={years:{quarters:4,months:12,weeks:52.1775,days:gn,hours:8765.82,minutes:525949.2,seconds:525949.2*60,milliseconds:525949.2*60*1e3},quarters:{months:3,weeks:13.044375,days:91.310625,hours:2191.455,minutes:131487.3,seconds:525949.2*60/4,milliseconds:7889237999.999999},months:{weeks:4.3481250000000005,days:yn,hours:730.485,minutes:43829.1,seconds:2629746,milliseconds:2629746e3},...mn},wn=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],vn=wn.slice(0).reverse();function Sn(e,t,n=!1){const s={values:n?t.values:{...e.values,...t.values||{}},loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy,matrix:t.matrix||e.matrix};return new Cn(s)}function bn(e,t){let n=t.milliseconds??0;for(const s of vn.slice(1))t[s]&&(n+=t[s]*e[s].milliseconds);return n}function kn(e,t){const n=bn(e,t)<0?-1:1;wn.reduceRight(((s,r)=>{if(qe(t[r]))return s;if(s){const a=t[s]*n,i=e[r][s],o=Math.floor(a/i);t[r]+=o*n,t[s]-=o*i*n}return r}),null),wn.reduce(((n,s)=>{if(qe(t[s]))return n;if(n){const r=t[n]%1;t[n]-=r,t[s]+=r*e[n][s]}return s}),null)}class Cn{constructor(e){const t="longterm"===e.conversionAccuracy||!1;let n=t?pn:fn;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||te.create(),this.conversionAccuracy=t?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(e,t){return Cn.fromObject({milliseconds:e},t)}static fromObject(e,t={}){if(null==e||"object"!=typeof e)throw new c("Duration.fromObject: argument expected to be an object, got "+(null===e?"null":typeof e));return new Cn({values:at(e,Cn.normalizeUnit),loc:te.fromObject(t),conversionAccuracy:t.conversionAccuracy,matrix:t.matrix})}static fromDurationLike(e){if(We(e))return Cn.fromMillis(e);if(Cn.isDuration(e))return e;if("object"==typeof e)return Cn.fromObject(e);throw new c(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,t){const[n]=function(e){return Dt(e,[zt,Zt])}(e);return n?Cn.fromObject(n,t):Cn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,t){const[n]=function(e){return Dt(e,[Ht,ln])}(e);return n?Cn.fromObject(n,t):Cn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the Duration is invalid");const n=e instanceof Se?e:new Se(e,t);if(ve.throwOnInvalid)throw new i(n);return new Cn({invalid:n})}static normalizeUnit(e){const t={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e?e.toLowerCase():e];if(!t)throw new l(e);return t}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,t={}){const n={...t,floor:!1!==t.round&&!1!==t.floor};return this.isValid?Ct.create(this.loc,n).formatDurationFromString(this,e):hn}toHuman(e={}){if(!this.isValid)return hn;const t=wn.map((t=>{const n=this.values[t];return qe(n)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:t.slice(0,-1)}).format(n)})).filter((e=>e));return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(t)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return 0!==this.years&&(e+=this.years+"Y"),0===this.months&&0===this.quarters||(e+=this.months+3*this.quarters+"M"),0!==this.weeks&&(e+=this.weeks+"W"),0!==this.days&&(e+=this.days+"D"),0===this.hours&&0===this.minutes&&0===this.seconds&&0===this.milliseconds||(e+="T"),0!==this.hours&&(e+=this.hours+"H"),0!==this.minutes&&(e+=this.minutes+"M"),0===this.seconds&&0===this.milliseconds||(e+=Je(this.seconds+this.milliseconds/1e3,3)+"S"),"P"===e&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const t=this.toMillis();if(t<0||t>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1};return gs.fromMillis(t,{zone:"UTC"}).toISOTime(e)}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?bn(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const t=Cn.fromDurationLike(e),n={};for(const e of wn)(He(t.values,e)||He(this.values,e))&&(n[e]=t.get(e)+this.get(e));return Sn(this,{values:n},!0)}minus(e){if(!this.isValid)return this;const t=Cn.fromDurationLike(e);return this.plus(t.negate())}mapUnits(e){if(!this.isValid)return this;const t={};for(const n of Object.keys(this.values))t[n]=rt(e(this.values[n],n));return Sn(this,{values:t},!0)}get(e){return this[Cn.normalizeUnit(e)]}set(e){if(!this.isValid)return this;return Sn(this,{values:{...this.values,...at(e,Cn.normalizeUnit)}})}reconfigure({locale:e,numberingSystem:t,conversionAccuracy:n,matrix:s}={}){return Sn(this,{loc:this.loc.clone({locale:e,numberingSystem:t}),matrix:s,conversionAccuracy:n})}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return kn(this.matrix,e),Sn(this,{values:e},!0)}rescale(){if(!this.isValid)return this;return Sn(this,{values:function(e){const t={};for(const[n,s]of Object.entries(e))0!==s&&(t[n]=s);return t}(this.normalize().shiftToAll().toObject())},!0)}shiftTo(...e){if(!this.isValid)return this;if(0===e.length)return this;e=e.map((e=>Cn.normalizeUnit(e)));const t={},n={},s=this.toObject();let r;for(const a of wn)if(e.indexOf(a)>=0){r=a;let e=0;for(const t in n)e+=this.matrix[t][a]*n[t],n[t]=0;We(s[a])&&(e+=s[a]);const i=Math.trunc(e);t[a]=i,n[a]=(1e3*e-1e3*i)/1e3}else We(s[a])&&(n[a]=s[a]);for(const e in n)0!==n[e]&&(t[r]+=e===r?n[e]:n[e]/this.matrix[r][e]);return kn(this.matrix,t),Sn(this,{values:t},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;const e={};for(const t of Object.keys(this.values))e[t]=0===this.values[t]?0:-this.values[t];return Sn(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return null===this.invalid}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid)return!1;if(!this.loc.equals(e.loc))return!1;for(const s of wn)if(t=this.values[s],n=e.values[s],!(void 0===t||0===t?void 0===n||0===n:t===n))return!1;var t,n;return!0}}const Tn="Invalid Interval";class xn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the Interval is invalid");const n=e instanceof Se?e:new Se(e,t);if(ve.throwOnInvalid)throw new a(n);return new xn({invalid:n})}static fromDateTimes(e,t){const n=ys(e),s=ys(t),r=function(e,t){return e&&e.isValid?t&&t.isValid?te}isBefore(e){return!!this.isValid&&this.e<=e}contains(e){return!!this.isValid&&(this.s<=e&&this.e>e)}set({start:e,end:t}={}){return this.isValid?xn.fromDateTimes(e||this.s,t||this.e):this}splitAt(...e){if(!this.isValid)return[];const t=e.map(ys).filter((e=>this.contains(e))).sort(((e,t)=>e.toMillis()-t.toMillis())),n=[];let{s}=this,r=0;for(;s+this.e?this.e:e;n.push(xn.fromDateTimes(s,a)),s=a,r+=1}return n}splitBy(e){const t=Cn.fromDurationLike(e);if(!this.isValid||!t.isValid||0===t.as("milliseconds"))return[];let n,{s}=this,r=1;const a=[];for(;se*r)));n=+e>+this.e?this.e:e,a.push(xn.fromDateTimes(s,n)),s=n,r+=1}return a}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s=e.e)}equals(e){return!(!this.isValid||!e.isValid)&&(this.s.equals(e.s)&&this.e.equals(e.e))}intersection(e){if(!this.isValid)return this;const t=this.s>e.s?this.s:e.s,n=this.e=n?null:xn.fromDateTimes(t,n)}union(e){if(!this.isValid)return this;const t=this.se.e?this.e:e.e;return xn.fromDateTimes(t,n)}static merge(e){const[t,n]=e.sort(((e,t)=>e.s-t.s)).reduce((([e,t],n)=>t?t.overlaps(n)||t.abutsStart(n)?[e,t.union(n)]:[e.concat([t]),n]:[e,n]),[[],null]);return n&&t.push(n),t}static xor(e){let t=null,n=0;const s=[],r=e.map((e=>[{time:e.s,type:"s"},{time:e.e,type:"e"}])),a=Array.prototype.concat(...r).sort(((e,t)=>e.time-t.time));for(const e of a)n+="s"===e.type?1:-1,1===n?t=e.time:(t&&+t!=+e.time&&s.push(xn.fromDateTimes(t,e.time)),t=null);return xn.merge(s)}difference(...e){return xn.xor([this].concat(e)).map((e=>this.intersection(e))).filter((e=>e&&!e.isEmpty()))}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:Tn}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=f,t={}){return this.isValid?Ct.create(this.s.loc.clone(t),e).formatInterval(this):Tn}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Tn}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Tn}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Tn}toFormat(e,{separator:t=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:Tn}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):Cn.invalid(this.invalidReason)}mapEndpoints(e){return xn.fromDateTimes(e(this.s),e(this.e))}}class Ln{static hasDST(e=ve.defaultZone){const t=gs.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return z.isValidZone(e)}static normalizeZone(e){return ae(e,ve.defaultZone)}static getStartOfWeek({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getWeekendDays().slice()}static months(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null,outputCalendar:r="gregory"}={}){return(s||te.create(t,n,r)).months(e)}static monthsFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null,outputCalendar:r="gregory"}={}){return(s||te.create(t,n,r)).months(e,!0)}static weekdays(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null}={}){return(s||te.create(t,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null}={}){return(s||te.create(t,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return te.create(e).meridiems()}static eras(e="short",{locale:t=null}={}){return te.create(t,null,"gregory").eras(e)}static features(){return{relative:Ve(),localeWeek:_e()}}}function Dn(e,t){const n=e=>e.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),s=n(t)-n(e);return Math.floor(Cn.fromMillis(s).as("days"))}function Mn(e,t,n,s){let[r,a,i,o]=function(e,t,n){const s=[["years",(e,t)=>t.year-e.year],["quarters",(e,t)=>t.quarter-e.quarter+4*(t.year-e.year)],["months",(e,t)=>t.month-e.month+12*(t.year-e.year)],["weeks",(e,t)=>{const n=Dn(e,t);return(n-n%7)/7}],["days",Dn]],r={},a=e;let i,o;for(const[l,c]of s)n.indexOf(l)>=0&&(i=l,r[l]=c(e,t),o=a.plus(r),o>t?(r[l]--,(e=a.plus(r))>t&&(o=e,r[l]--,e=a.plus(r))):e=o);return[e,r,o,i]}(e,t,n);const l=t-r,c=n.filter((e=>["hours","minutes","seconds","milliseconds"].indexOf(e)>=0));0===c.length&&(i0?Cn.fromMillis(l,s).shiftTo(...c).plus(u):u}function In(e,t=e=>e){return{regex:e,deser:([e])=>t(function(e){let t=parseInt(e,10);if(isNaN(t)){t="";for(let n=0;n=n&&s<=r&&(t+=s-n)}}return parseInt(t,10)}return t}(e))}}const Nn=`[ ${String.fromCharCode(160)}]`,On=new RegExp(Nn,"g");function En(e){return e.replace(/\./g,"\\.?").replace(On,Nn)}function $n(e){return e.replace(/\./g,"").replace(On," ").toLowerCase()}function Fn(e,t){return null===e?null:{regex:RegExp(e.map(En).join("|")),deser:([n])=>e.findIndex((e=>$n(n)===$n(e)))+t}}function qn(e,t){return{regex:e,deser:([,e,t])=>st(e,t),groups:t}}function Wn(e){return{regex:e,deser:([e])=>e}}const An={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};let Vn=null;function _n(e,t){return Array.prototype.concat(...e.map((e=>function(e,t){if(e.literal)return e;const n=zn(Ct.macroTokenToFormatOpts(e.val),t);return null==n||n.includes(void 0)?e:n}(e,t))))}class Pn{constructor(e,t){if(this.locale=e,this.format=t,this.tokens=_n(Ct.parseFormat(t),e),this.units=this.tokens.map((t=>function(e,t){const n=ue(t),s=ue(t,"{2}"),r=ue(t,"{3}"),a=ue(t,"{4}"),i=ue(t,"{6}"),o=ue(t,"{1,2}"),l=ue(t,"{1,3}"),c=ue(t,"{1,6}"),u=ue(t,"{1,9}"),d=ue(t,"{2,4}"),h=ue(t,"{4,6}"),m=e=>{return{regex:RegExp((t=e.val,t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"))),deser:([e])=>e,literal:!0};var t},f=(f=>{if(e.literal)return m(f);switch(f.val){case"G":return Fn(t.eras("short"),0);case"GG":return Fn(t.eras("long"),0);case"y":return In(c);case"yy":case"kk":return In(d,tt);case"yyyy":case"kkkk":return In(a);case"yyyyy":return In(h);case"yyyyyy":return In(i);case"M":case"L":case"d":case"H":case"h":case"m":case"q":case"s":case"W":return In(o);case"MM":case"LL":case"dd":case"HH":case"hh":case"mm":case"qq":case"ss":case"WW":return In(s);case"MMM":return Fn(t.months("short",!0),1);case"MMMM":return Fn(t.months("long",!0),1);case"LLL":return Fn(t.months("short",!1),1);case"LLLL":return Fn(t.months("long",!1),1);case"o":case"S":return In(l);case"ooo":case"SSS":return In(r);case"u":return Wn(u);case"uu":return Wn(o);case"uuu":case"E":case"c":return In(n);case"a":return Fn(t.meridiems(),0);case"EEE":return Fn(t.weekdays("short",!1),1);case"EEEE":return Fn(t.weekdays("long",!1),1);case"ccc":return Fn(t.weekdays("short",!0),1);case"cccc":return Fn(t.weekdays("long",!0),1);case"Z":case"ZZ":return qn(new RegExp(`([+-]${o.source})(?::(${s.source}))?`),2);case"ZZZ":return qn(new RegExp(`([+-]${o.source})(${s.source})?`),2);case"z":return Wn(/[a-z_+-/]{1,256}?/i);case" ":return Wn(/[^\S\n\r]/);default:return m(f)}})(e)||{invalidReason:"missing Intl.DateTimeFormat.formatToParts support"};return f.token=e,f}(t,e))),this.disqualifyingUnit=this.units.find((e=>e.invalidReason)),!this.disqualifyingUnit){const[e,t]=[`^${(n=this.units).map((e=>e.regex)).reduce(((e,t)=>`${e}(${t.source})`),"")}$`,n];this.regex=RegExp(e,"i"),this.handlers=t}var n}explainFromTokens(e){if(this.isValid){const[t,n]=function(e,t,n){const s=e.match(t);if(s){const e={};let t=1;for(const r in n)if(He(n,r)){const a=n[r],i=a.groups?a.groups+1:1;!a.literal&&a.token&&(e[a.token.val[0]]=a.deser(s.slice(t,t+i))),t+=i}return[s,e]}return[s,{}]}(e,this.regex,this.handlers),[s,r,a]=n?function(e){let t,n=null;return qe(e.z)||(n=z.create(e.z)),qe(e.Z)||(n||(n=new se(e.Z)),t=e.Z),qe(e.q)||(e.M=3*(e.q-1)+1),qe(e.h)||(e.h<12&&1===e.a?e.h+=12:12===e.h&&0===e.a&&(e.h=0)),0===e.G&&e.y&&(e.y=-e.y),qe(e.u)||(e.S=Be(e.u)),[Object.keys(e).reduce(((t,n)=>{const s=(e=>{switch(e){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}})(n);return s&&(t[s]=e[n]),t}),{}),n,t]}(n):[null,null,void 0];if(He(n,"a")&&He(n,"H"))throw new o("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:this.tokens,regex:this.regex,rawMatches:t,matches:n,result:s,zone:r,specificOffset:a}}return{input:e,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}}function Hn(e,t,n){return new Pn(e,n).explainFromTokens(t)}function zn(e,t){if(!e)return null;const n=Ct.create(t,e).dtFormatter((Vn||(Vn=gs.fromMillis(1555555555555)),Vn)),s=n.formatToParts(),r=n.resolvedOptions();return s.map((t=>function(e,t,n){const{type:s,value:r}=e;if("literal"===s){const e=/^\s+$/.test(r);return{literal:!e,val:e?" ":r}}const a=t[s];let i=s;"hour"===s&&(i=null!=t.hour12?t.hour12?"hour12":"hour24":null!=t.hourCycle?"h11"===t.hourCycle||"h12"===t.hourCycle?"hour12":"hour24":n.hour12?"hour12":"hour24");let o=An[i];if("object"==typeof o&&(o=o[a]),o)return{literal:!1,val:o}}(t,e,r)))}const Zn="Invalid DateTime",Rn=864e13;function Un(e){return new Se("unsupported zone",`the zone "${e.name}" is not supported`)}function jn(e){return null===e.weekData&&(e.weekData=Me(e.c)),e.weekData}function Bn(e){return null===e.localWeekData&&(e.localWeekData=Me(e.c,e.loc.getMinDaysInFirstWeek(),e.loc.getStartOfWeek())),e.localWeekData}function Jn(e,t){const n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new gs({...n,...t,old:n})}function Gn(e,t,n){let s=e-60*t*1e3;const r=n.offset(s);if(t===r)return[s,t];s-=60*(r-t)*1e3;const a=n.offset(s);return r===a?[s,r]:[e-60*Math.min(r,a)*1e3,Math.max(r,a)]}function Yn(e,t){const n=new Date(e+=60*t*1e3);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function Kn(e,t,n){return Gn(Qe(e),t,n)}function Qn(e,t){const n=e.o,s=e.c.year+Math.trunc(t.years),r=e.c.month+Math.trunc(t.months)+3*Math.trunc(t.quarters),a={...e.c,year:s,month:r,day:Math.min(e.c.day,Ke(s,r))+Math.trunc(t.days)+7*Math.trunc(t.weeks)},i=Cn.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as("milliseconds"),o=Qe(a);let[l,c]=Gn(o,n,e.zone);return 0!==i&&(l+=i,c=e.zone.offset(l)),{ts:l,o:c}}function Xn(e,t,n,s,r,a){const{setZone:i,zone:o}=n;if(e&&0!==Object.keys(e).length||t){const s=t||o,r=gs.fromObject(e,{...n,zone:s,specificOffset:a});return i?r:r.setZone(o)}return gs.invalid(new Se("unparsable",`the input "${r}" can't be parsed as ${s}`))}function es(e,t,n=!0){return e.isValid?Ct.create(te.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function ts(e,t){const n=e.c.year>9999||e.c.year<0;let s="";return n&&e.c.year>=0&&(s+="+"),s+=Re(e.c.year,n?6:4),t?(s+="-",s+=Re(e.c.month),s+="-",s+=Re(e.c.day)):(s+=Re(e.c.month),s+=Re(e.c.day)),s}function ns(e,t,n,s,r,a){let i=Re(e.c.hour);return t?(i+=":",i+=Re(e.c.minute),0===e.c.millisecond&&0===e.c.second&&n||(i+=":")):i+=Re(e.c.minute),0===e.c.millisecond&&0===e.c.second&&n||(i+=Re(e.c.second),0===e.c.millisecond&&s||(i+=".",i+=Re(e.c.millisecond,3))),r&&(e.isOffsetFixed&&0===e.offset&&!a?i+="Z":e.o<0?(i+="-",i+=Re(Math.trunc(-e.o/60)),i+=":",i+=Re(Math.trunc(-e.o%60))):(i+="+",i+=Re(Math.trunc(e.o/60)),i+=":",i+=Re(Math.trunc(e.o%60)))),a&&(i+="["+e.zone.ianaName+"]"),i}const ss={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},rs={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},as={ordinal:1,hour:0,minute:0,second:0,millisecond:0},is=["year","month","day","hour","minute","second","millisecond"],os=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],ls=["year","ordinal","hour","minute","second","millisecond"];function cs(e){switch(e.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return function(e){const t={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[e.toLowerCase()];if(!t)throw new l(e);return t}(e)}}function us(e,t){const n=ae(t.zone,ve.defaultZone);if(!n.isValid)return gs.invalid(Un(n));const s=te.fromObject(t);let r,a;if(qe(e.year))r=ve.now();else{for(const t of is)qe(e[t])&&(e[t]=ss[t]);const t=$e(e)||Fe(e);if(t)return gs.invalid(t);const s=function(e){return fs[e]||(void 0===ms&&(ms=ve.now()),fs[e]=e.offset(ms)),fs[e]}(n);[r,a]=Kn(e,s,n)}return new gs({ts:r,zone:n,loc:s,o:a})}function ds(e,t,n){const s=!!qe(n.round)||n.round,r=(e,r)=>{e=Je(e,s||n.calendary?0:2,!0);return t.loc.clone(n).relFormatter(n).format(e,r)},a=s=>n.calendary?t.hasSame(e,s)?0:t.startOf(s).diff(e.startOf(s),s).get(s):t.diff(e,s).get(s);if(n.unit)return r(a(n.unit),n.unit);for(const e of n.units){const t=a(e);if(Math.abs(t)>=1)return r(t,e)}return r(e>t?-0:0,n.units[n.units.length-1])}function hs(e){let t,n={};return e.length>0&&"object"==typeof e[e.length-1]?(n=e[e.length-1],t=Array.from(e).slice(0,e.length-1)):t=Array.from(e),[n,t]}let ms,fs={};class gs{constructor(e){const t=e.zone||ve.defaultZone;let n=e.invalid||(Number.isNaN(e.ts)?new Se("invalid input"):null)||(t.isValid?null:Un(t));this.ts=qe(e.ts)?ve.now():e.ts;let s=null,r=null;if(!n){if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t))[s,r]=[e.old.c,e.old.o];else{const a=We(e.o)&&!e.old?e.o:t.offset(this.ts);s=Yn(this.ts,a),n=Number.isNaN(s.year)?new Se("invalid input"):null,s=n?null:s,r=n?null:a}}this._zone=t,this.loc=e.loc||te.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=s,this.o=r,this.isLuxonDateTime=!0}static now(){return new gs({})}static local(){const[e,t]=hs(arguments),[n,s,r,a,i,o,l]=t;return us({year:n,month:s,day:r,hour:a,minute:i,second:o,millisecond:l},e)}static utc(){const[e,t]=hs(arguments),[n,s,r,a,i,o,l]=t;return e.zone=se.utcInstance,us({year:n,month:s,day:r,hour:a,minute:i,second:o,millisecond:l},e)}static fromJSDate(e,t={}){const n=(s=e,"[object Date]"===Object.prototype.toString.call(s)?e.valueOf():NaN);var s;if(Number.isNaN(n))return gs.invalid("invalid input");const r=ae(t.zone,ve.defaultZone);return r.isValid?new gs({ts:n,zone:r,loc:te.fromObject(t)}):gs.invalid(Un(r))}static fromMillis(e,t={}){if(We(e))return e<-Rn||e>Rn?gs.invalid("Timestamp out of range"):new gs({ts:e,zone:ae(t.zone,ve.defaultZone),loc:te.fromObject(t)});throw new c(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,t={}){if(We(e))return new gs({ts:1e3*e,zone:ae(t.zone,ve.defaultZone),loc:te.fromObject(t)});throw new c("fromSeconds requires a numerical input")}static fromObject(e,t={}){e=e||{};const n=ae(t.zone,ve.defaultZone);if(!n.isValid)return gs.invalid(Un(n));const s=te.fromObject(t),r=at(e,cs),{minDaysInFirstWeek:a,startOfWeek:i}=Ee(r,s),l=ve.now(),c=qe(t.specificOffset)?n.offset(l):t.specificOffset,u=!qe(r.ordinal),d=!qe(r.year),h=!qe(r.month)||!qe(r.day),m=d||h,f=r.weekYear||r.weekNumber;if((m||u)&&f)throw new o("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(h&&u)throw new o("Can't mix ordinal dates with month/day");const g=f||r.weekday&&!m;let y,p,w=Yn(l,c);g?(y=os,p=rs,w=Me(w,a,i)):u?(y=ls,p=as,w=Ne(w)):(y=is,p=ss);let v=!1;for(const e of y){qe(r[e])?r[e]=v?p[e]:w[e]:v=!0}const S=g?function(e,t=4,n=1){const s=Ae(e.weekYear),r=Ze(e.weekNumber,1,et(e.weekYear,t,n)),a=Ze(e.weekday,1,7);return s?r?!a&&Ce("weekday",e.weekday):Ce("week",e.weekNumber):Ce("weekYear",e.weekYear)}(r,a,i):u?function(e){const t=Ae(e.year),n=Ze(e.ordinal,1,Ye(e.year));return t?!n&&Ce("ordinal",e.ordinal):Ce("year",e.year)}(r):$e(r),b=S||Fe(r);if(b)return gs.invalid(b);const k=g?Ie(r,a,i):u?Oe(r):r,[C,T]=Kn(k,c,n),x=new gs({ts:C,zone:n,o:T,loc:s});return r.weekday&&m&&e.weekday!==x.weekday?gs.invalid("mismatched weekday",`you can't specify both a weekday of ${r.weekday} and a date of ${x.toISO()}`):x.isValid?x:gs.invalid(x.invalid)}static fromISO(e,t={}){const[n,s]=function(e){return Dt(e,[Xt,sn],[en,rn],[tn,an],[nn,on])}(e);return Xn(n,s,t,"ISO 8601",e)}static fromRFC2822(e,t={}){const[n,s]=function(e){return Dt(function(e){return e.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}(e),[jt,Bt])}(e);return Xn(n,s,t,"RFC 2822",e)}static fromHTTP(e,t={}){const[n,s]=function(e){return Dt(e,[Jt,Kt],[Gt,Kt],[Yt,Qt])}(e);return Xn(n,s,t,"HTTP",t)}static fromFormat(e,t,n={}){if(qe(e)||qe(t))throw new c("fromFormat requires an input string and a format");const{locale:s=null,numberingSystem:r=null}=n,a=te.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0}),[i,o,l,u]=function(e,t,n){const{result:s,zone:r,specificOffset:a,invalidReason:i}=Hn(e,t,n);return[s,r,a,i]}(a,e,t);return u?gs.invalid(u):Xn(i,o,n,`format ${t}`,e,l)}static fromString(e,t,n={}){return gs.fromFormat(e,t,n)}static fromSQL(e,t={}){const[n,s]=function(e){return Dt(e,[cn,sn],[un,dn])}(e);return Xn(n,s,t,"SQL",e)}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the DateTime is invalid");const n=e instanceof Se?e:new Se(e,t);if(ve.throwOnInvalid)throw new r(n);return new gs({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,t={}){const n=zn(e,te.fromObject(t));return n?n.map((e=>e?e.val:null)).join(""):null}static expandFormat(e,t={}){return _n(Ct.parseFormat(e),te.fromObject(t)).map((e=>e.val)).join("")}static resetCache(){ms=void 0,fs={}}get(e){return this[e]}get isValid(){return null===this.invalid}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?jn(this).weekYear:NaN}get weekNumber(){return this.isValid?jn(this).weekNumber:NaN}get weekday(){return this.isValid?jn(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?Bn(this).weekday:NaN}get localWeekNumber(){return this.isValid?Bn(this).weekNumber:NaN}get localWeekYear(){return this.isValid?Bn(this).weekYear:NaN}get ordinal(){return this.isValid?Ne(this.c).ordinal:NaN}get monthShort(){return this.isValid?Ln.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Ln.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Ln.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Ln.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return!this.isOffsetFixed&&(this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset)}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];const e=864e5,t=6e4,n=Qe(this.c),s=this.zone.offset(n-e),r=this.zone.offset(n+e),a=this.zone.offset(n-s*t),i=this.zone.offset(n-r*t);if(a===i)return[this];const o=n-a*t,l=n-i*t,c=Yn(o,a),u=Yn(l,i);return c.hour===u.hour&&c.minute===u.minute&&c.second===u.second&&c.millisecond===u.millisecond?[Jn(this,{ts:o}),Jn(this,{ts:l})]:[this]}get isInLeapYear(){return Ge(this.year)}get daysInMonth(){return Ke(this.year,this.month)}get daysInYear(){return this.isValid?Ye(this.year):NaN}get weeksInWeekYear(){return this.isValid?et(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?et(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){const{locale:t,numberingSystem:n,calendar:s}=Ct.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:n,outputCalendar:s}}toUTC(e=0,t={}){return this.setZone(se.instance(e),t)}toLocal(){return this.setZone(ve.defaultZone)}setZone(e,{keepLocalTime:t=!1,keepCalendarTime:n=!1}={}){if((e=ae(e,ve.defaultZone)).equals(this.zone))return this;if(e.isValid){let s=this.ts;if(t||n){const t=e.offset(this.ts),n=this.toObject();[s]=Kn(n,t,e)}return Jn(this,{ts:s,zone:e})}return gs.invalid(Un(e))}reconfigure({locale:e,numberingSystem:t,outputCalendar:n}={}){return Jn(this,{loc:this.loc.clone({locale:e,numberingSystem:t,outputCalendar:n})})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const t=at(e,cs),{minDaysInFirstWeek:n,startOfWeek:s}=Ee(t,this.loc),r=!qe(t.weekYear)||!qe(t.weekNumber)||!qe(t.weekday),a=!qe(t.ordinal),i=!qe(t.year),l=!qe(t.month)||!qe(t.day),c=i||l,u=t.weekYear||t.weekNumber;if((c||a)&&u)throw new o("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&a)throw new o("Can't mix ordinal dates with month/day");let d;r?d=Ie({...Me(this.c,n,s),...t},n,s):qe(t.ordinal)?(d={...this.toObject(),...t},qe(t.day)&&(d.day=Math.min(Ke(d.year,d.month),d.day))):d=Oe({...Ne(this.c),...t});const[h,m]=Kn(d,this.o,this.zone);return Jn(this,{ts:h,o:m})}plus(e){if(!this.isValid)return this;return Jn(this,Qn(this,Cn.fromDurationLike(e)))}minus(e){if(!this.isValid)return this;return Jn(this,Qn(this,Cn.fromDurationLike(e).negate()))}startOf(e,{useLocaleWeeks:t=!1}={}){if(!this.isValid)return this;const n={},s=Cn.normalizeUnit(e);switch(s){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0}if("weeks"===s)if(t){const e=this.loc.getStartOfWeek(),{weekday:t}=this;tthis.valueOf(),i=Mn(a?this:e,a?e:this,r,s);var o;return a?i.negate():i}diffNow(e="milliseconds",t={}){return this.diff(gs.now(),e,t)}until(e){return this.isValid?xn.fromDateTimes(this,e):this}hasSame(e,t,n){if(!this.isValid)return!1;const s=e.valueOf(),r=this.setZone(e.zone,{keepLocalTime:!0});return r.startOf(t,n)<=s&&s<=r.endOf(t,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const t=e.base||gs.fromObject({},{zone:this.zone}),n=e.padding?thise.valueOf()),Math.min)}static max(...e){if(!e.every(gs.isDateTime))throw new c("max requires all arguments be DateTimes");return Pe(e,(e=>e.valueOf()),Math.max)}static fromFormatExplain(e,t,n={}){const{locale:s=null,numberingSystem:r=null}=n;return Hn(te.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0}),e,t)}static fromStringExplain(e,t,n={}){return gs.fromFormatExplain(e,t,n)}static buildFormatParser(e,t={}){const{locale:n=null,numberingSystem:s=null}=t,r=te.fromOpts({locale:n,numberingSystem:s,defaultToEN:!0});return new Pn(r,e)}static fromFormatParser(e,t,n={}){if(qe(e)||qe(t))throw new c("fromFormatParser requires an input string and a format parser");const{locale:s=null,numberingSystem:r=null}=n,a=te.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0});if(!a.equals(t.locale))throw new c(`fromFormatParser called with a locale of ${a}, but the format parser was created for ${t.locale}`);const{result:i,zone:o,specificOffset:l,invalidReason:u}=t.explainFromTokens(e);return u?gs.invalid(u):Xn(i,o,n,`format ${t.format}`,e,l)}static get DATE_SHORT(){return f}static get DATE_MED(){return g}static get DATE_MED_WITH_WEEKDAY(){return y}static get DATE_FULL(){return p}static get DATE_HUGE(){return w}static get TIME_SIMPLE(){return v}static get TIME_WITH_SECONDS(){return S}static get TIME_WITH_SHORT_OFFSET(){return b}static get TIME_WITH_LONG_OFFSET(){return k}static get TIME_24_SIMPLE(){return C}static get TIME_24_WITH_SECONDS(){return T}static get TIME_24_WITH_SHORT_OFFSET(){return x}static get TIME_24_WITH_LONG_OFFSET(){return L}static get DATETIME_SHORT(){return D}static get DATETIME_SHORT_WITH_SECONDS(){return M}static get DATETIME_MED(){return I}static get DATETIME_MED_WITH_SECONDS(){return N}static get DATETIME_MED_WITH_WEEKDAY(){return O}static get DATETIME_FULL(){return E}static get DATETIME_FULL_WITH_SECONDS(){return $}static get DATETIME_HUGE(){return F}static get DATETIME_HUGE_WITH_SECONDS(){return q}}function ys(e){if(gs.isDateTime(e))return e;if(e&&e.valueOf&&We(e.valueOf()))return gs.fromJSDate(e);if(e&&"object"==typeof e)return gs.fromObject(e);throw new c(`Unknown datetime argument: ${e}, of type ${typeof e}`)}}},t={};function n(s){var r=t[s];if(void 0!==r)return r.exports;var a=t[s]={exports:{}};return e[s](a,a.exports,n),a.exports}n.d=(e,t)=>{for(var s in t)n.o(t,s)&&!n.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n(516),n(749),n(423),n(247),n(716),n(498),n(73),n(2),n(94),n(704),n(503),n(187),n(709),n(951);n(652)})(); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ba67a0d..750ab44 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ws4kp", - "version": "5.13.0", + "version": "5.13.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ws4kp", - "version": "5.13.0", + "version": "5.13.1", "license": "MIT", "dependencies": { "ejs": "^3.1.5", diff --git a/package.json b/package.json index 9c7d01e..d5bb689 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ws4kp", - "version": "5.13.0", + "version": "5.13.1", "description": "Welcome to the WeatherStar 4000+ project page!", "main": "index.js", "scripts": { diff --git a/server/scripts/modules/icons.mjs b/server/scripts/modules/icons.mjs index d1cc5eb..43c8d45 100644 --- a/server/scripts/modules/icons.mjs +++ b/server/scripts/modules/icons.mjs @@ -72,14 +72,14 @@ const getWeatherRegionalIconFromIconLink = (link, _isNightTime) => { case 'rain-n': return addPath('Rain-1992.gif'); - // case 'snow': - // return addPath('Light-Snow.gif'); - // break; + // case 'snow': + // return addPath('Light-Snow.gif'); + // break; - // case 'cc_snowshowers.gif': - // //case "heavy-snow.gif": - // return addPath('AM-Snow-1994.gif'); - // break; + // case 'cc_snowshowers.gif': + // //case "heavy-snow.gif": + // return addPath('AM-Snow-1994.gif'); + // break; case 'snow': case 'snow-n': @@ -120,6 +120,8 @@ const getWeatherRegionalIconFromIconLink = (link, _isNightTime) => { case 'tsra_hi-n': case 'hurricane': case 'tropical_storm': + case 'hurricane-n': + case 'tropical_storm-n': return addPath('Thunderstorm.gif'); case 'wind': @@ -228,14 +230,14 @@ const getWeatherIconFromIconLink = (link, _isNightTime) => { case 'rain-n': return addPath('CC_Rain.gif'); - // case 'snow': - // return addPath('Light-Snow.gif'); - // break; + // case 'snow': + // return addPath('Light-Snow.gif'); + // break; - // case 'cc_snowshowers.gif': - // //case "heavy-snow.gif": - // return addPath('AM-Snow-1994.gif'); - // break; + // case 'cc_snowshowers.gif': + // //case "heavy-snow.gif": + // return addPath('AM-Snow-1994.gif'); + // break; case 'snow': case 'snow-n': From 20d2516820f7754bb53f536a9eba3f159d52d934 Mon Sep 17 00:00:00 2001 From: Matt Walsh Date: Wed, 9 Oct 2024 21:29:12 -0500 Subject: [PATCH 3/3] fix radar timestamp 5.13.2 --- dist/index.html | 2 +- dist/resources/ws.min.js | 2 +- package-lock.json | 4 ++-- package.json | 2 +- server/scripts/modules/radar.mjs | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dist/index.html b/dist/index.html index b43fb28..6da6467 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1 +1 @@ -WeatherStar 4000+
WeatherStar 4000+
v5.13.1
Enter your location above to continue
WeatherStar
4000+ v5.13.1
Current Conditions
Hourly Forecast
TEMP
WIND
Hourly Graph
Temperature
Cloud %
Precip %
75
65
55
12a
6a
12p
6p
12a
Travel Forecast
For
LOW
HIGH
Current
Conditions
Wind:
Humidity:
Dewpoint:
Ceiling:
Visibility:
Pressure:
Local
Forecast
Latest
Observations
°F
°C
Weather
Wind
Regional
Observations
Almanac
Monday
Tuesday
Sunrise:
6:24 am
6:25 am
Sunset:
6:24 am
6:25 am
Moon Data:
Extended
Forecast
Lo
Hi
Local
Radar
PRECIP
Light
Heavy

Selected displays
Settings
Sharing
Copy Permalink Link copied to clipboard!
Forecast Information
Location:
Station Id:
Radar Id:
Zone Id:
Last Update: (None)
\ No newline at end of file +WeatherStar 4000+
WeatherStar 4000+
v5.13.2
Enter your location above to continue
WeatherStar
4000+ v5.13.2
Current Conditions
Hourly Forecast
TEMP
WIND
Hourly Graph
Temperature
Cloud %
Precip %
75
65
55
12a
6a
12p
6p
12a
Travel Forecast
For
LOW
HIGH
Current
Conditions
Wind:
Humidity:
Dewpoint:
Ceiling:
Visibility:
Pressure:
Local
Forecast
Latest
Observations
°F
°C
Weather
Wind
Regional
Observations
Almanac
Monday
Tuesday
Sunrise:
6:24 am
6:25 am
Sunset:
6:24 am
6:25 am
Moon Data:
Extended
Forecast
Lo
Hi
Local
Radar
PRECIP
Light
Heavy

Selected displays
Settings
Sharing
Copy Permalink Link copied to clipboard!
Forecast Information
Location:
Station Id:
Radar Id:
Zone Id:
Last Update: (None)
\ No newline at end of file diff --git a/dist/resources/ws.min.js b/dist/resources/ws.min.js index 6a7547d..4bd2432 100644 --- a/dist/resources/ws.min.js +++ b/dist/resources/ws.min.js @@ -1 +1 @@ -(()=>{"use strict";var e={652:(e,t,n)=>{var s=n(440),r=n(430),a=n(211),i=n(413),o=n(999),l=n(302);document.addEventListener("DOMContentLoaded",(()=>{m()}));const c=["Land Features","Bay","Channel","Cove","Dam","Delta","Gulf","Lagoon","Lake","Ocean","Reef","Reservoir","Sea","Sound","Strait","Waterfall","Wharf","Amusement Park","Historical Monument","Landmark","Tourist Attraction","Zoo","College","Beach","Campground","Golf Course","Harbor","Nature Reserve","Other Parks and Outdoors","Park","Racetrack","Scenic Overlook","Ski Resort","Sports Center","Sports Field","Wildlife Reserve","Airport","Ferry","Marina","Pier","Port","Resort","Postal","Populated Place"].join(","),u="#txtAddress",d="#ToggleFullScreen",h="#btnGetGps",m=()=>{document.querySelector(u).addEventListener("focus",(e=>{e.target.select()})),(0,a.Fx)(b),document.querySelector("#NavigateMenu").addEventListener("click",S),document.querySelector("#NavigateRefresh").addEventListener("click",C),document.querySelector("#NavigateNext").addEventListener("click",T),document.querySelector("#NavigatePrevious").addEventListener("click",x),document.querySelector("#NavigatePlay").addEventListener("click",I),document.querySelector(d).addEventListener("click",y);const e=document.querySelector(h);e.addEventListener("click",O),navigator.geolocation||(e.style.display="none"),document.querySelector("#divTwc").addEventListener("mousemove",(()=>{document.fullscreenElement&&D()})),window.addEventListener("resize",E),E.wasFull=!1,document.querySelector(u).addEventListener("keydown",(e=>{"Enter"===e.code&&t()})),document.querySelector("#btnGetLatLng").addEventListener("click",(()=>t())),document.addEventListener("keydown",M),document.addEventListener("touchmove",(e=>{document.fullscreenElement&&e.preventDefault()})),$(u).devbridgeAutocomplete({serviceUrl:"https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/suggest",deferRequestBy:300,paramName:"text",params:{f:"json",countryCode:"USA",category:c,maxSuggestions:10},dataType:"json",transformResult:e=>({suggestions:e.suggestions.map((e=>({value:e.text,data:e.magicKey})))}),minChars:3,showNoSuggestionNotice:!0,noSuggestionNotice:"No results found. Please try a different search string.",onSelect(e){f(e,this)},width:490});const t=()=>{const e=$(u).devbridgeAutocomplete();return e.suggestions[0]&&$(e.suggestionsContainer.children[0]).trigger("click"),!1},n=(0,o.J)(),s=n.latLonQuery&&n.latLon,r=n.latLonQuery??localStorage.getItem("latLonQuery"),i=n.latLon??localStorage.getItem("latLon"),m=localStorage.getItem("latLonFromGPS")&&!s;if(r&&i&&!m){document.querySelector(u).value=r,b(JSON.parse(i))}m&&O(),l.A.kiosk.value="true"===n["settings-kiosk-checkbox"];const g=n["settings-kiosk-checkbox"]??localStorage.getItem("play");null!==g&&"true"!==g||N("navButton","play"),document.querySelector("#btnClearQuery").addEventListener("click",(()=>{document.querySelector("#spanCity").innerHTML="",document.querySelector("#spanState").innerHTML="",document.querySelector("#spanStationId").innerHTML="",document.querySelector("#spanRadarId").innerHTML="",document.querySelector("#spanZoneId").innerHTML="",document.querySelector("#chkAutoRefresh").checked=!0,localStorage.removeItem("autoRefresh"),localStorage.removeItem("play"),N("navButton","play"),localStorage.removeItem("latLonQuery"),localStorage.removeItem("latLon"),localStorage.removeItem("latLonFromGPS"),document.querySelector(h).classList.remove("active")})),document.querySelector("#container").addEventListener("swiped-left",(()=>k("left"))),document.querySelector("#container").addEventListener("swiped-right",(()=>k("right")))},f=async(e,t)=>{if(t.previousSuggestionValue===e.value)return;const n=(await(0,s.Pq)("https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/find",{data:{text:e.value,magicKey:e.data,f:"json"}})).locations[0];n?(localStorage.removeItem("latLonFromGPS"),document.querySelector(h).classList.remove("active"),g(n.feature.geometry)):console.error("An unexpected error occurred. Please try a different search string.")},g=(e,t)=>{const n={lat:(0,i.X4)(e.y,4),lon:(0,i.X4)(e.x,4)};localStorage.setItem("latLonQuery",document.querySelector(u).value),localStorage.setItem("latLon",JSON.stringify(n)),b(n,t)},y=()=>(document.fullscreenElement?w():p(),(0,a.F4)()?(0,r.A)(!0):(0,r.A)(!1),D(),!1),p=()=>{const e=document.querySelector("#divTwc"),t=e.requestFullScreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullscreen;t?t.call(e,{navigationUI:"hide"}):window.scrollTo(0,0),(0,a.XR)(),D();const n=document.querySelector(d);n.src="images/nav/ic_fullscreen_exit_white_24dp_2x.png",n.title="Exit fullscreen"},w=()=>{document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen(),(0,a.XR)(),v()},v=()=>{const e=document.querySelector(d);e.src="images/nav/ic_fullscreen_white_24dp_2x.png",e.title="Enter fullscreen",document.querySelector("#divTwc").classList.remove("no-cursor");const t=document.querySelector("#divTwcBottom");t.classList.remove("hidden"),t.classList.add("visible")},S=()=>(N("navButton","menu"),!1),b=(e,t)=>{e&&(b.latLon=e);const{latLon:n}=b;n&&(document.querySelector(u).blur(),(0,a.K$)(),(0,a.u6)(n,t))},k=e=>{if("left"===e)T();else x()},C=()=>((0,a.kY)(),b(),!1),T=()=>(N("navButton","next"),!1),x=()=>(N("navButton","previous"),!1);let L=null;const D=()=>{document.activeElement.blur();const e=document.querySelector("#divTwcBottom");e.classList.remove("hidden"),e.classList.add("visible"),document.querySelector("#divTwc").classList.remove("no-cursor"),L&&(clearTimeout(L),L=null),L=setTimeout((()=>{document.fullscreenElement&&(e.classList.remove("visible"),e.classList.add("hidden"),document.querySelector("#divTwc").classList.add("no-cursor"))}),2e3)},M=e=>{const{key:t}=e;if(document.fullscreenElement||document.activeElement===document.body)switch(t){case" ":return e.preventDefault(),I(),!1;case"ArrowRight":case"PageDown":return e.preventDefault(),T(),!1;case"ArrowLeft":case"PageUp":return e.preventDefault(),x(),!1;case"ArrowUp":return e.preventDefault(),S(),!1;case"0":return C(),!1;case"F":case"f":return y(),!1}return!1},I=()=>(N("navButton","playToggle"),!1),N=(e,t={})=>{(0,a.iU)({type:e,message:t})},O=async()=>{if(!navigator.geolocation)return;const e=document.querySelector(h);if(e.classList.contains("active"))return e.classList.remove("active"),void localStorage.removeItem("latLonFromGPS");e.classList.add("active");const t=await(async()=>new Promise((e=>{navigator.geolocation.getCurrentPosition(e)})))(),{latitude:n,longitude:s}=t.coords,r=document.querySelector(u);r.value=`${(0,i.X4)(n,4)}, ${(0,i.X4)(s,4)}`,g({y:n,x:s},(e=>{const t=e.properties.relativeLocation.properties,a=`${t.city}, ${t.state}`;localStorage.setItem("latLon",JSON.stringify({lat:n,lon:s})),localStorage.setItem("latLonQuery",a),localStorage.setItem("latLonFromGPS",!0),r.value=`${t.city}, ${t.state}`}))},E=()=>{E.wasFull&&!document.fullscreenElement&&v(),!E.wasFull&&document.fullscreenElement,E.wasFull=!!document.fullscreenElement}},247:(e,t,n)=>{n.d(t,{A:()=>d});var s=n(47),r=n(125),a=n(592),i=n(24),o=n(211);class l extends i.A{constructor(e,t){super(e,t,"Almanac",!0),this.backgroundImage0=(0,s.u)("images/BackGround3_1.png"),(0,s.b)("images/2/Full-Moon.gif"),(0,s.b)("images/2/Last-Quarter.gif"),(0,s.b)("images/2/New-Moon.gif"),(0,s.b)("images/2/First-Quarter.gif"),this.timing.totalScreens=1}async getData(e){const t=super.getData(e),n=e??this.weatherParameters,{sun:s,moon:r}=this.calcSunMoonData(n);this.data={sun:s,moon:r},this.getDataCallback(),t&&this.setStatus(a.Ay.loaded)}calcSunMoonData(e){const t=[SunCalc.getTimes(new Date,e.latitude,e.longitude),SunCalc.getTimes(r.c9.local().plus({days:1}).toJSDate(),e.latitude,e.longitude)],n=[];let s=r.c9.local().minus({days:1}),{phase:a}=SunCalc.getMoonIllumination(s.toJSDate()),i=0;do{const e=a;s=s.plus({days:1}),a=SunCalc.getMoonIllumination(s.toJSDate()).phase,e<.25&&a>=.25&&n.push(this.getMoonTransition(.25,"First",s)),e<.5&&a>=.5&&n.push(this.getMoonTransition(.5,"Full",s)),e<.75&&a>=.75&&n.push(this.getMoonTransition(.75,"Last",s)),e>a&&n.push(this.getMoonTransition(0,"New",s)),i+=1}while(i<=30&&n.length<4);return{sun:t,moon:n}}getMoonTransition(e,t,n,s=0){let r=n,{phase:a}=SunCalc.getMoonIllumination(r.toJSDate()),i=0;const o={hours:0===s?-1:0,minutes:1===s?1:0,seconds:2===s?-1:0,milliseconds:3===s?1:0};let l=(t,n)=>t=e;s%2==0&&(l=(t,n)=>t>e&&n<=e);do{const n=a;if(r=r.plus(o),a=SunCalc.getMoonIllumination(r.toJSDate()).phase,a>.9&&(a-=1),l(n,a)){if(s>=3)break;return this.getMoonTransition(e,t,r,s+1)}i+=1}while(i<1e3);return{phase:t,date:r}}async drawCanvas(){super.drawCanvas();const e=this.data,t=r.c9.local(),n=t.plus({days:1});this.elem.querySelector(".day-1").innerHTML=t.toLocaleString({weekday:"long"}),this.elem.querySelector(".day-2").innerHTML=n.toLocaleString({weekday:"long"}),this.elem.querySelector(".rise-1").innerHTML=r.c9.fromJSDate(e.sun[0].sunrise).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".rise-2").innerHTML=r.c9.fromJSDate(e.sun[1].sunrise).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".set-1").innerHTML=r.c9.fromJSDate(e.sun[0].sunset).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".set-2").innerHTML=r.c9.fromJSDate(e.sun[1].sunset).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase();const s=e.moon.map((e=>{const t={},n=e.date.toLocaleString({month:"short",day:"numeric"});return t.date=n,t.type=e.phase,t.icon={type:"img",src:c(e.phase)},this.fillTemplate("day",t)})),a=this.elem.querySelector(".moon .days");a.innerHTML="",a.append(...s),this.finishDraw()}async getSun(){return new Promise((e=>{this.data&&e(this.data),this.getDataCallbacks.push(e)}))}}const c=e=>{switch(e){case"Full":return"images/2/Full-Moon.gif";case"Last":return"images/2/Last-Quarter.gif";case"New":return"images/2/New-Moon.gif";default:return"images/2/First-Quarter.gif"}},u=new l(9,"almanac");(0,o.Kb)(u);const d=u.getSun.bind(u)},423:(e,t,n)=>{n.d(t,{A:()=>p});var s=n(592),r=n(47),a=n(440),i=n(519),o=n(891),l=n(716),c=n(24),u=n(211),d=n(413);const h=["U","C","H","W","Y","T","S","M","O","L","A","F","B","N","V","R","D","E","I","G","J"];class m extends c.A{constructor(e,t){super(e,t,"Current Conditions",!0),this.backgroundImage=(0,r.u)("images/BackGround1_1.png")}async getData(e){const t=super.getData(e),n=(e??this.weatherParameters).stations.filter((e=>4===e?.properties?.stationIdentifier?.length&&!h.includes(e.properties.stationIdentifier.slice(0,1))));let i,o,c=0;for(;!i&&cthis.stillWaiting()}),null===i.features[0].properties.temperature.value||null===i.features[0].properties.windSpeed.value||null===i.features[0].properties.textDescription||""===i.features[0].properties.textDescription||null===i.features[0].properties.icon)throw i=void 0,new Error(`Unable to get observations: ${o.properties.stationIdentifier}, trying next station`)}catch(e){console.error(e)}}if(!i)return console.error("All current weather stations exhausted"),this.isEnabled&&this.setStatus(s.Ay.failed),void this.getDataCallback(void 0);this.data=g({...i,station:o}),this.getDataCallback(),t&&((0,r.b)((0,l.XV)(i.features[0].properties.icon)),this.setStatus(s.Ay.loaded))}async drawCanvas(){super.drawCanvas();let e=this.data.observations.textDescription;e.length>15&&(e=f(e));const t={temp:this.data.Temperature+String.fromCharCode(176),condition:e,wind:this.data.WindDirection.padEnd(3,"")+this.data.WindSpeed.toString().padStart(3," "),location:(0,o.C)(this.data.station.properties.name).substr(0,20),humidity:`${this.data.Humidity}%`,dewpoint:this.data.DewPoint+String.fromCharCode(176),ceiling:0===this.data.Ceiling?"Unlimited":this.data.Ceiling+this.data.CeilingUnit,visibility:this.data.Visibility+this.data.VisibilityUnit,pressure:`${this.data.Pressure} ${this.data.PressureDirection}`,icon:{type:"img",src:this.data.Icon}};this.data.WindGust&&(t["wind-gusts"]=`Gusts to ${this.data.WindGust}`),this.data.observations.heatIndex.value&&this.data.HeatIndex!==this.data.Temperature?(t["heat-index-label"]="Heat Index:",t["heat-index"]=this.data.HeatIndex+String.fromCharCode(176)):this.data.observations.windChill.value&&""!==this.data.WindChill&&this.data.WindChill{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}}const f=e=>{let t=e;return t=t.replace(/Light/g,"L"),t=t.replace(/Heavy/g,"H"),t=t.replace(/Partly/g,"P"),t=t.replace(/Mostly/g,"M"),t=t.replace(/Few/g,"F"),t=t.replace(/Thunderstorm/g,"T'storm"),t=t.replace(/ in /g,""),t=t.replace(/Vicinity/g,""),t=t.replace(/ and /g," "),t=t.replace(/Freezing Rain/g,"Frz Rn"),t=t.replace(/Freezing/g,"Frz"),t=t.replace(/Unknown Precip/g,""),t=t.replace(/L Snow Fog/g,"L Snw/Fog"),t=t.replace(/ with /g,"/"),t},g=e=>{const t=e.features[0].properties;e.observations=t,e.Temperature=Math.round(t.temperature.value),e.TemperatureUnit="C",e.DewPoint=Math.round(t.dewpoint.value),e.Ceiling=Math.round(t.cloudLayers[0]?.base?.value??0),e.CeilingUnit="m.",e.Visibility=Math.round(t.visibility.value/1e3),e.VisibilityUnit=" km.",e.WindSpeed=Math.round(t.windSpeed.value),e.WindDirection=(0,i.Up)(t.windDirection.value),e.Pressure=Math.round(t.barometricPressure.value),e.HeatIndex=Math.round(t.heatIndex.value),e.WindChill=Math.round(t.windChill.value),e.WindGust=Math.round(t.windGust.value),e.WindUnit="KPH",e.Humidity=Math.round(t.relativeHumidity.value),e.Icon=(0,l.XV)(t.icon),e.PressureDirection="",e.TextConditions=t.textDescription;const n=t.barometricPressure.value-e.features[1].properties.barometricPressure.value;return n>150&&(e.PressureDirection="R"),n<-150&&(e.PressureDirection="F"),e.Temperature=(0,d.sz)(e.Temperature),e.TemperatureUnit="F",e.DewPoint=(0,d.sz)(e.DewPoint),e.Ceiling=100*Math.round((0,d.Q8)(e.Ceiling)/100),e.CeilingUnit="ft.",e.Visibility=(0,d.lt)(t.visibility.value/1e3),e.VisibilityUnit=" mi.",e.WindSpeed=(0,d.Yy)(e.WindSpeed),e.WindUnit="MPH",e.Pressure=(0,d.yX)(e.Pressure).toFixed(2),e.HeatIndex=(0,d.sz)(e.HeatIndex),e.WindChill=(0,d.sz)(e.WindChill),e.WindGust=(0,d.Yy)(e.WindGust),e},y=new m(1,"current-weather");(0,u.Kb)(y);const p=y.getCurrentWeather.bind(y)},516:(e,t,n)=>{var s=n(891);var r=n(423),a=n(211);const i=String.fromCharCode(176);let o,l=0;const c=()=>{const e=(0,a.q)();e?.okToDrawCurrentConditions?(l=(l+1)%d.length,u()):"progress"===e?.elemId&&(l=0)},u=async()=>{const e=await(0,r.A)();e&&h(d[l](e))},d=[e=>`Conditions at ${(0,s.C)(e.station.properties.name).substr(0,20)}`,e=>{let t=`Temp: ${e.Temperature}${i}${e.TemperatureUnit}`;return e.observations.heatIndex.value?t+=` Heat Index: ${e.HeatIndex}${i}${e.TemperatureUnit}`:e.observations.windChill.value&&(t+=` Wind Chill: ${e.WindChill}${i}${e.TemperatureUnit}`),t},e=>`Humidity: ${e.Humidity}% Dewpoint: ${e.DewPoint}${i}${e.TemperatureUnit}`,e=>`Barometric Pressure: ${e.Pressure} ${e.PressureDirection}`,e=>{let t=e.WindSpeed>0?`Wind: ${e.WindDirection} ${e.WindSpeed} ${e.WindUnit}`:"Wind: Calm";return e.WindGust>0&&(t+=` Gusts to ${e.WindGust}`),t},e=>{const t=`${e.Ceiling} ${e.CeilingUnit}`;return`Visib: ${e.Visibility} ${e.VisibilityUnit} Ceiling: ${0===e.Ceiling?"Unlimited":t}`}],h=e=>{var t,n;t=".weather-display .scroll .fixed",n=t=>{t.innerHTML=e},[...document.querySelectorAll(t)].forEach(n)};document.addEventListener("DOMContentLoaded",(()=>{o||(o=setInterval(c,4e3)),u()}))},498:(e,t,n)=>{var s=n(592),r=n(440),a=n(125),i=n(716),o=n(47),l=n(24),c=n(211);class u extends l.A{constructor(e,t){super(e,t,"Extended Forecast",!0),this.timing.totalScreens=2}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;let n;try{n=await(0,r.Pq)(t.forecast,{data:{units:"us"},retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(e){return console.error("Unable to get extended forecast"),console.error(e.status,e.responseJSON),void this.setStatus(s.Ay.failed)}this.data=d(n.properties.periods),this.screenIndex=0,this.setStatus(s.Ay.loaded)}async drawCanvas(){super.drawCanvas();const e=this.data.slice(0+3*this.screenIndex,3+3*this.screenIndex).map((e=>{const t={icon:{type:"img",src:e.icon},condition:e.text,date:e.dayName},{low:n}=e;void 0!==n&&(t["value-lo"]=Math.round(n));const{high:s}=e;return t["value-hi"]=Math.round(s),this.fillTemplate("day",t)})),t=this.elem.querySelector(".day-container");t.innerHTML="",t.append(...e),this.finishDraw()}}const d=e=>{const t=[0,1,2,3,4,5,6].map((e=>a.c9.local().startOf("day").plus({days:e}).toLocaleString({weekday:"short"})));let n=0;const s=[];return e.forEach((e=>{s[n]||s.push({dayName:"",low:void 0,high:void 0,text:void 0,icon:void 0});const r=s[n];r.icon=(0,i.XV)(e.icon),r.text=h(e.shortForecast),r.dayName=t[n],(0,o.b)(r.icon),e.isDaytime?(r.high=e.temperature,n+=1):r.low=e.temperature})),s},h=e=>{const t=[[/ and /gi," "],[/slight /gi,""],[/chance /gi,""],[/very /gi,""],[/patchy /gi,""],[/areas /gi,""],[/dense /gi,""],[/Thunderstorm/g,"T'Storm"]].reduce(((e,[t,n])=>e.replace(t,n)),e);let n=t.split(" ");-1!==t.indexOf("then")&&(n=t.split(" then "),n=n[1].split(" "));let s=n[0].substr(0,10),r="";n[1]&&(s.endsWith(".")?s=s.replace(/\./,""):r=n[1].substr(0,10),"Blowing"===r&&(r=""));let a=s;return""!==r&&(a+=` ${r}`),a};(0,c.Kb)(new u(8,"extended-forecast"))},749:(e,t,n)=>{var s=n(592),r=n(440),a=n(24),i=n(211);const o={Extreme:10,Severe:5},l={"Hurricane Warning":2,"Tornado Warning":3,"Severe Thunderstorm Warning":1};class c extends a.A{constructor(e,t,n){super(e,t,"Hazards",n),this.showOnProgress=!1,this.timing.totalScreens=0}async getData(e){const t=super.getData(e),n=this.checkbox.querySelector(".alert");n.classList.remove("show");try{const e=new URL("https://api.weather.gov/alerts/active");e.searchParams.append("point",`${this.weatherParameters.latitude},${this.weatherParameters.longitude}`),e.searchParams.append("limit",5);const t=(await(0,r.Pq)(e,{retryCount:3,stillWaiting:()=>this.stillWaiting()})).features??[],s=t.reduce(((e,t)=>e||"Immediate"===t.properties.urgency),!1),a=t.sort(((e,t)=>u(t.properties.severity,t.properties.event)-u(e.properties.severity,e.properties.event))).filter((e=>"Unknown"!==e.properties.severity&&(!s||"Immediate"===e.properties.urgency)));this.data=a,this.data.length>0&&n.classList.add("show")}catch(e){return console.error("Get hourly forecast failed"),console.error(e.status,e.responseJSON),this.isEnabled&&this.setStatus(s.Ay.failed),void this.getDataCallback(void 0)}this.getDataCallback(),t?this.drawLongCanvas():this.setStatus(s.Ay.loaded)}async drawLongCanvas(){const e=this.elem.querySelector(".hazard-lines");e.innerHTML="";const t=this.data.map((e=>{const t={};return t["hazard-text"]=`${e.properties.event}

${e.properties.description.replaceAll("\n\n","

").replaceAll("\n"," ")}`,this.fillTemplate("hazard",t)}));if(e.append(...t),0===t.length)return this.setStatus(s.Ay.loaded),this.timing.totalScreens=0,void this.setStatus(s.Ay.loaded);this.timing.baseDelay=20;const n=Math.max(Math.ceil(e.scrollHeight/400)-3,1);this.timing.delay=[550];for(let e=0;e{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}screenIndexFromBaseCount(){const e=super.screenIndexFromBaseCount();return!1===e&&(this.timing.totalScreens=0),e}}const u=(e,t)=>(o[e]??0)+(l[t]??0);(0,i.Kb)(new c(0,"hazards",!0))},2:(e,t,n)=>{var s=n(592),r=n(73),a=n(24),i=n(211),o=n(125);class l extends a.A{constructor(e,t,n){super(e,t,"Hourly Graph",n),document.addEventListener("DOMContentLoaded",(()=>{this.moveHeader()}))}moveHeader(){const e=this.fillTemplate("top-right",{});this.elem.querySelector(".header .right").append(e)}async getData(){if(!super.getData())return;const e=await(0,r.A)((()=>this.stillWaiting()));if(void 0===e)return void this.setStatus(s.Ay.failed);const t=e.map((e=>e.temperature)),n=e.map((e=>e.probabilityOfPrecipitation)),a=e.map((e=>e.skyCover));this.data={skyCover:a,temperature:t,probabilityOfPrecipitation:n},this.setStatus(s.Ay.loaded)}drawCanvas(){this.image||(this.image=this.elem.querySelector(".chart img"));const e=285;this.image.width=532,this.image.height=e;const t=document.createElement("canvas");t.width=532,t.height=e;const n=t.getContext("2d");n.imageSmoothingEnabled=!1;const s=c(0,5,this.data.temperature.length-1,532),r=o.c9.now().startOf("hour");document.querySelector(".x-axis .l-1").innerHTML=h(r),document.querySelector(".x-axis .l-2").innerHTML=h(r.plus({hour:6})),document.querySelector(".x-axis .l-3").innerHTML=h(r.plus({hour:12})),document.querySelector(".x-axis .l-4").innerHTML=h(r.plus({hour:18})),document.querySelector(".x-axis .l-5").innerHTML=h(r.plus({hour:24}));const a=c(0,275,100,10),i=u(this.data.skyCover,s,a);d(i,n,{strokeStyle:"lightgrey",lineWidth:3});const l=u(this.data.probabilityOfPrecipitation,s,a);d(l,n,{strokeStyle:"aqua",lineWidth:3});const m=Math.min(...this.data.temperature),f=Math.max(...this.data.temperature),g=Math.round((m+f)/2),y=c(m,275,f,10),p=u(this.data.temperature,s,y);d(p,n,{strokeStyle:"red",lineWidth:3});const w=String.fromCharCode(176);this.elem.querySelector(".y-axis .l-1").innerHTML=(f+w).substring(0,3),this.elem.querySelector(".y-axis .l-2").innerHTML=(g+w).substring(0,3),this.elem.querySelector(".y-axis .l-3").innerHTML=(m+w).substring(0,3),this.image.src=t.toDataURL(),super.drawCanvas(),this.finishDraw()}}const c=(e,t,n,s)=>{const r=(s-t)/(n-e),a=t-r*e;return e=>r*e+a},u=(e,t,n)=>e.map(((e,s)=>[t(s),n(e)])),d=(e,t,n)=>{t.beginPath(),t.strokeStyle="black",t.lineWidth=(n?.lineWidth??2)+2,t.moveTo(e[0][0],e[0][1]),e.slice(1).forEach((e=>t.lineTo(e[0],e[1]+2))),t.stroke(),t.beginPath(),t.strokeStyle=n?.strokeStyle??"red",t.lineWidth=n?.lineWidth??2,t.moveTo(e[0][0],e[0][1]),e.slice(1).forEach((e=>t.lineTo(e[0],e[1]))),t.stroke()},h=e=>e.toFormat("ha").slice(0,-1);(0,i.Kb)(new l(4,"hourly-graph"))},73:(e,t,n)=>{n.d(t,{A:()=>p});var s=n(592),r=n(125),a=n(440),i=n(413),o=n(716),l=n(519),c=n(24),u=n(211),d=n(247);class h extends c.A{constructor(e,t,n){super(e,t,"Hourly Forecast",n),this.timing.baseDelay=20;this.timing.delay=[450];for(let e=0;e<4;e+=1)this.timing.delay.push(300);this.timing.delay.push(150)}async getData(e){const t=super.getData(e);let n;try{n=await(0,a.Pq)(e.forecastGridData,{retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(e){return console.error("Get hourly forecast failed"),console.error(e.status,e.responseJSON),this.isEnabled&&this.setStatus(s.Ay.failed),void this.getDataCallback(void 0)}this.data=await m(n.properties),this.getDataCallback(),t&&(this.setStatus(s.Ay.loaded),this.drawLongCanvas())}async drawLongCanvas(){const e=this.elem.querySelector(".hourly-lines");e.innerHTML="";const t=r.c9.local(),n=this.data.map(((e,n)=>{const s={},r=t.plus({hours:n}).toLocaleString({weekday:"short",hour:"numeric"});s.hour=r;const a=Math.round(e.temperature).toString().padStart(3),i=Math.round(e.apparentTemperature).toString().padStart(3);s.temp=a,a!==i&&(s.like=i);let o="Calm";if(e.windSpeed>0){const t=Math.round(e.windSpeed).toString();o=e.windDirection+Array(6-e.windDirection.length-t.length).join(" ")+t}return s.wind=o,s.icon={type:"img",src:e.icon},this.fillTemplate("hourly-row",s)}));e.append(...n)}drawCanvas(){super.drawCanvas(),this.finishDraw()}showCanvas(){this.drawCanvas(),super.showCanvas()}screenIndexChange(){this.baseCountChange(this.navBaseCount)}baseCountChange(e){let t=Math.min(this.elem.querySelector(".hourly-lines").getBoundingClientRect().height-289,e-150);t<0&&(t=0),this.elem.querySelector(".main").scrollTo(0,t)}async getCurrentData(e){return e&&this.stillWaitingCallbacks.push(e),new Promise((e=>{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}}const m=async e=>{const t=g(e.temperature.values),n=g(e.apparentTemperature.values),s=g(e.windSpeed.values),r=g(e.windDirection.values),a=g(e.skyCover.values),o=g(e.weather.values),c=g(e.iceAccumulation.values),u=g(e.probabilityOfPrecipitation.values),d=g(e.snowfallAmount.values),h=await f(a,o,c,u,d,s);return t.map(((e,o)=>({temperature:(0,i.sz)(t[o]),apparentTemperature:(0,i.sz)(n[o]),windSpeed:(0,i.lt)(s[o]),windDirection:(0,l.Up)(r[o]),probabilityOfPrecipitation:u[o],skyCover:a[o],icon:h[o]})))},f=async(e,t,n,s,a,i)=>{const l=r.c9.local().startOf("hour"),c=(await(0,d.A)()).sun,u=r.IX.fromDateTimes(r.c9.fromJSDate(c[0].sunset),r.c9.fromJSDate(c[1].sunrise)),h=r.c9.fromJSDate(c[1].sunset);return e.map(((r,c)=>{const d=l.plus({hours:c}),m=u.contains(d)||d>h;return(0,o.ZJ)(e[c],t[c],n[c],s[c],a[c],i[c],m)}))},g=e=>{const t=r.c9.utc().startOf("hour").toMillis(),n=[];return e.forEach((e=>{let s=Date.parse(e.validTime.substr(0,e.validTime.indexOf("/")));const a=s+r.dw.fromISO(e.validTime.substr(e.validTime.indexOf("/")+1)).shiftTo("milliseconds").values.milliseconds;do{s>=t&&n.length<24&&n.push(e.value),s+=36e5}while(s{n.d(t,{Wu:()=>s,XV:()=>r,ZJ:()=>a});const s=(e,t)=>{const n=t??e.indexOf("/night/")>=0,s=e=>`images/r/${e}`;let r=e.toLowerCase().match(/[^/]+$/)[0].match(/(.*?)[&,.?]/)[1];const a=+(e.match(/,(\d{2,3})/)??[0,100])[1];if("dualimage"===r){const t=e.match(/&j=(.*)&/);[,r]=t}switch(r+(n?"-n":"")){case"skc":case"hot":case"haze":return s("Sunny.gif");case"skc-n":case"nskc":case"nskc-n":case"cold-n":return s("Clear-1992.gif");case"bkn":return s("Mostly-Cloudy-1994-2.gif");case"bkn-n":case"few-n":case"nfew-n":case"nfew":return s("Partly-Clear-1994-2.gif");case"sct":case"few":return s("Partly-Cloudy.gif");case"sct-n":case"nsct":case"nsct-n":return s("Mostly-Clear.gif");case"ovc":case"ovc-n":return s("Cloudy.gif");case"fog":case"fog-n":return s("Fog.gif");case"rain_sleet":case"sleet":case"sleet-n":return s("Sleet.gif");case"rain_showers":case"rain_showers_high":return s("Scattered-Showers-1994-2.gif");case"rain_showers-n":case"rain_showers_high-n":return s("Scattered-Showers-Night-1994-2.gif");case"rain":case"rain-n":return s("Rain-1992.gif");case"snow":case"snow-n":return s(a>50?"Heavy-Snow-1994-2.gif":"Light-Snow.gif");case"rain_snow":case"rain_snow-n":return s("Rain-Snow-1992.gif");case"snow_fzra":case"snow_fzra-n":return s("Freezing-Rain-Snow-1992.gif");case"fzra":case"fzra-n":case"rain_fzra":case"rain_fzra-n":return s("Freezing-Rain-1992.gif");case"snow_sleet":case"snow_sleet-n":return s("Snow and Sleet.gif");case"tsra_sct":case"tsra":return s("Scattered-Tstorms-1994-2.gif");case"tsra_sct-n":case"tsra-n":return s("Scattered-Tstorms-Night-1994-2.gif");case"tsra_hi":case"tsra_hi-n":case"hurricane":case"tropical_storm":case"hurricane-n":case"tropical_storm-n":return s("Thunderstorm.gif");case"wind":case"wind_few":case"wind_sct":case"wind_bkn":case"wind_ovc":case"wind-n":case"wind_few-n":case"wind_bkn-n":case"wind_ovc-n":return s("Wind.gif");case"wind_skc":return s("Sunny-Wind-1994.gif");case"wind_skc-n":case"wind_sct-n":return s("Clear-Wind-1994.gif");case"blizzard":case"blizzard-n":return s("Blowing Snow.gif");case"cold":return s("cold.gif");default:return console.log(`Unable to locate regional icon for ${r} ${e} ${n}`),!1}},r=(e,t)=>{if(!e)return!1;const n=e=>`images/${e}`,s=t??e.indexOf("/night/")>=0;let r=e.toLowerCase().match(/[^/]+$/)[0].match(/(.*?)[&,.?]/)[1];const a=+(e.match(/,(\d{2,3})/)??[0,100])[1];if("dualimage"===r){const t=e.match(/&j=(.*)&/);[,r]=t}switch(r+(s?"-n":"")){case"skc":case"hot":case"haze":case"cold":return n("CC_Clear1.gif");case"skc-n":case"nskc":case"nskc-n":case"cold-n":return n("CC_Clear0.gif");case"sct":case"few":case"bkn":return n("CC_PartlyCloudy1.gif");case"bkn-n":case"few-n":case"nfew-n":case"nfew":case"sct-n":case"nsct":case"nsct-n":return n("CC_PartlyCloudy0.gif");case"ovc":case"novc":case"ovc-n":return n("CC_Cloudy.gif");case"fog":case"fog-n":return n("CC_Fog.gif");case"rain_sleet":case"rain_sleet-n":case"sleet":case"sleet-n":return n("Sleet.gif");case"rain_showers":case"rain_showers_high":case"rain_showers-n":case"rain_showers_high-n":return n("CC_Showers.gif");case"rain":case"rain-n":return n("CC_Rain.gif");case"snow":case"snow-n":return n(a>50?"CC_Snow.gif":"CC_SnowShowers.gif");case"rain_snow":return n("CC_RainSnow.gif");case"snow_fzra":case"snow_fzra-n":case"fzra":case"fzra-n":case"rain_fzra":case"rain_fzra-n":return n("CC_FreezingRain.gif");case"snow_sleet":return n("Snow-Sleet.gif");case"tsra_sct":case"tsra":return n("EF_ScatTstorms.gif");case"tsra_sct-n":case"tsra-n":case"tsra_hi":case"tsra_hi-n":case"hurricane":case"tropical_storm":case"hurricane-n":case"tropical_storm-n":return n("CC_TStorm.gif");case"wind_few":case"wind_sct":case"wind_bkn":case"wind_ovc":case"wind_skc":case"wind_few-n":case"wind_bkn-n":case"wind_ovc-n":case"wind_skc-n":case"wind_sct-n":return n("CC_Windy.gif");case"blizzard":case"blizzard-n":return n("Blowing-Snow.gif");default:return console.log(`Unable to locate icon for ${r} ${e} ${s}`),!1}},a=(e,t,n,s,r,a,i=!1)=>{const o=e=>`images/r/${e}`;let l=!1,c=!1,u=!1,d=!1,h=!1;return t.forEach((e=>{e.weather&&(e.weather.toLowerCase().includes("thunder")&&(l=!0),e.weather.toLowerCase().includes("snow")&&(c=!0),e.weather.toLowerCase().includes("ice")&&(u=!0),e.weather.toLowerCase().includes("fog")&&(d=!0),e.weather.toLowerCase().includes("wind")&&(h=!0))})),o(n>0||u?"Freezing-Rain-1992.gif":r>10?a>30||h?"Blowing Snow.gif":"Heavy-Snow-1994.gif":(r>0||c)&&l?"ThunderSnow.gif":r>0||c?"Light-Snow.gif":l?"Thunderstorm.gif":s>70?"Rain-1992.gif":s>50?"Shower.gif":s>30?i?"Scattered-Showers-Night.gif":"Scattered-Showers-1994.gif":d?"Fog.gif":e>70?"Cloudy.gif":e>50?i?"Partly-Clear-1994.gif":"Mostly-Cloudy-1994.gif":e>30?i?"Mostly-Clear.gif":"Partly-Cloudy.gif":i?"Clear-1992.gif":"Sunny.gif")}},94:(e,t,n)=>{var s=n(519),r=n(440),a=n(592),i=n(891),o=n(413),l=n(24),c=n(211);class u extends l.A{constructor(e,t){super(e,t,"Latest Observations",!0),this.MaximumRegionalStations=7}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters,n=Object.keys(StationInfo).map((e=>{const n=StationInfo[e],r=(0,s.Io)(n.lat,n.lon,t.latitude,t.longitude);return{...n,distance:r}})).sort(((e,t)=>e.distance-t.distance)).slice(0,30),r=[];let i=Math.min(n.length,7),o=0;for(;r.length<7&&i<=n.length;){const e=await h(n.slice(o,i));r.push(...e),o+=i,i=Math.min(n.length+1,o+7-r.length)}this.data=r.slice(0,this.MaximumRegionalStations),0!==this.data.length?this.setStatus(a.Ay.loaded):this.setStatus(a.Ay.noData)}async drawCanvas(){super.drawCanvas();const e=this.data.sort(((e,t)=>e.Name{const t=(0,s.Up)(e.windDirection.value),n=Math.round((0,o.sz)(e.temperature.value)),r=Math.round((0,o.Yy)(e.windSpeed.value)),a={location:(0,i.C)(e.city).substr(0,14),temp:n,weather:d(e.textDescription).substr(0,9)};return a.wind=r>0?t+Array(6-t.length-r.toString().length).join(" ")+r.toString():"NA"===r?"NA":"Calm",this.fillTemplate("observation-row",a)})),n=this.elem.querySelector(".observation-lines");n.innerHTML="",n.append(...t),this.finishDraw()}}const d=e=>{let t=e;return t=t.replace(/Light/,"L"),t=t.replace(/Heavy/,"H"),t=t.replace(/Partly/,"P"),t=t.replace(/Mostly/,"M"),t=t.replace(/Few/,"F"),t=t.replace(/Thunderstorm/,"T'storm"),t=t.replace(/ in /,""),t=t.replace(/Vicinity/,""),t=t.replace(/ and /," "),t=t.replace(/Freezing Rain/,"Frz Rn"),t=t.replace(/Freezing/,"Frz"),t=t.replace(/Unknown Precip/,""),t=t.replace(/L Snow Fog/,"L Snw/Fog"),t=t.replace(/ with /,"/"),t},h=async e=>(await Promise.all(e.map((async e=>{try{const t=await(0,r.Pq)(`https://api.weather.gov/stations/${e.id}/observations/latest`,{retryCount:1,stillWaiting:()=>(void 0).stillWaiting()});return null!==t.properties.temperature.value&&""!==t.properties.textDescription&&null!==t.properties.windSpeed.value&&{...t.properties,StationId:e.id,city:e.city}}catch(t){return console.log(`Unable to get latest observations for ${e.id}`),!1}})))).filter((e=>e));(0,c.Kb)(new u(2,"latest-observations"))},704:(e,t,n)=>{var s=n(592),r=n(440),a=n(24),i=n(211);class o extends a.A{constructor(e,t){super(e,t,"Local Forecast",!0),this.timing.baseDelay=5e3}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters,n=await this.getRawData(t);if(!n)return void this.setStatus(s.Ay.failed);const r=l(n);this.screenTexts=r.map((e=>{let t=`${e.DayName.toUpperCase()}...`;return t+=e.Text.toUpperCase().replace("..."," "),t}));const a=this.screenTexts.map((e=>this.fillTemplate("forecast",{text:e}))),i=this.elem.querySelector(".forecasts");i.innerHTML="",i.append(...a),this.pageHeight=i.parentNode.scrollHeight,a.forEach((e=>{const t=Math.ceil(e.scrollHeight/this.pageHeight)*this.pageHeight;e.style.height=`${t}px`})),this.timing.totalScreens=i.scrollHeight/this.pageHeight,this.calcNavTiming(),this.setStatus(s.Ay.loaded)}async getRawData(e){try{return await(0,r.Pq)(e.forecast,{data:{units:"us"},retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(t){return console.error(`GetWeatherForecast failed: ${e.forecast}`),console.error(t.status,t.responseJSON),this.setStatus(s.Ay.failed),!1}}async drawCanvas(){super.drawCanvas();const e=-this.screenIndex*this.pageHeight;this.elem.querySelector(".forecasts").style.top=`${e}px`,this.finishDraw()}}const l=e=>e.properties.periods.slice(0,6).map((e=>({DayName:e.name.toUpperCase(),Text:e.detailedForecast})));(0,i.Kb)(new o(7,"local-forecast"))},211:(e,t,n)=>{n.d(t,{F4:()=>k,Fx:()=>U,Ju:()=>T,K$:()=>z,Kb:()=>F,Lg:()=>W,XR:()=>E,ab:()=>C,eB:()=>j,iU:()=>w,kY:()=>$,pv:()=>O,q:()=>M,u6:()=>P,yB:()=>v});var s=n(430),r=n(592),a=n(519),i=n(440),o=n(348),l=n(302);document.addEventListener("DOMContentLoaded",(()=>{p()}));const c=[];let u,d=!1;const h={},m=6e5,f="#chkAutoRefresh";let g=null,y=0;const p=async()=>{window.addEventListener("resize",E),E();const e=localStorage.getItem("autoRefresh");document.querySelector(f).checked=!e||"true"===e,document.querySelector(f).addEventListener("change",V),q()},w=e=>!!e.type&&("navButton"===e.type?N(e.message):console.error(`Unknown event ${e.type}`)),v=e=>{if(e.id<0)return;if(!u)return;if(u.drawCanvas(c,S()),c[0].status===r.Ay.loading)return;const t=c.findIndex((e=>e.enabled&&e.timing.totalScreens>0));0!==e.id||e.status!==r.Ay.failed&&e.status!==r.Ay.retrying||(e.id=t,e.status=c[t].status),0===e.id&&e.status===r.Ay.loaded&&0===c[0].timing.totalScreens&&(e.id=t,e.status=c[t].status),k()&&e.id===t&&e.status===r.Ay.loaded&&x(C.command.firstFrame),S()c.reduce(((e,t)=>t.status!==r.Ay.loading?e+1:e),0),b=()=>{c.forEach((e=>e.hideCanvas()))},k=()=>d,C={response:{previous:Symbol("previous"),inProgress:Symbol("inProgress"),next:Symbol("next")},command:{firstFrame:Symbol("firstFrame"),previousFrame:Symbol("previousFrame"),nextFrame:Symbol("nextFrame"),lastFrame:Symbol("lastFrame")}},T=e=>{e.type===C.response.previous&&L(-1),e.type===C.response.next&&L(1)},x=e=>{const t=M();if(u.hideCanvas(),!t){let e,t=0;do{c[t].status===r.Ay.loaded&&c[t].timing.totalScreens>0&&(e=c[t]),t+=1}while(!e&&t{const t=c.length,n=D();let s;for(let i=0;i0));i+=1);if(s<=n&&Z())return;const i=c[s];b(),e<0&&i.showCanvas(C.command.lastFrame),e>0&&i.showCanvas(C.command.firstFrame)},D=()=>c.findIndex((e=>e.active)),M=()=>c[D()],I=e=>{d=e;const t=document.querySelector("#NavigatePlay");localStorage.setItem("play",d),d?((0,s.A)(!0),t.title="Pause",t.src="images/nav/ic_pause_white_24dp_2x.png"):((0,s.A)(!1),t.title="Play",t.src="images/nav/ic_play_arrow_white_24dp_2x.png"),u&&d&&!M()&&x(C.command.firstFrame)},N=e=>{switch(e){case"play":I(!0);break;case"playToggle":I(!d);break;case"stop":I(!1);break;case"next":I(!1),x(C.command.nextFrame);break;case"previous":I(!1),x(C.command.previousFrame);break;case"menu":I(!1),u.showCanvas(),b();break;default:console.error(`Unknown navButton ${e}`)}},O=e=>c[e],E=()=>{const e=l.A.wide.value?854:640,t=document.querySelector("#divTwcBottom").getBoundingClientRect().width/e,n=window.innerHeight/480,s=Math.min(t,n);s<1||document.fullscreenElement||l.A.kiosk?document.querySelector("#container").style.transform=`scale(${s})`:document.querySelector("#container").style.transform="unset"},$=()=>{c.forEach((e=>{e.status=r.Ay.loading}))},F=e=>{c[e.navId]=e,q()},q=()=>{const e=document.querySelector("#enabledDisplays");if(!e)return;const t=c.map((e=>e.generateCheckbox(e.defaultEnabled))).filter((e=>e));e.innerHTML="",e.append(...t)},W=e=>{u=e},A=e=>{document.querySelector("#spanCity").innerHTML=`${e.city}, `,document.querySelector("#spanState").innerHTML=e.state,document.querySelector("#spanStationId").innerHTML=e.stationId,document.querySelector("#spanRadarId").innerHTML=e.radarId,document.querySelector("#spanZoneId").innerHTML=e.zoneId},V=e=>{const{checked:t}=e.target;t?H():z(),localStorage.setItem("autoRefresh",t)},_=e=>{e?(document.querySelector("#spanLastRefresh").innerHTML=e.toLocaleString("en-US",{weekday:"short",month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short"}),document.querySelector(f).checked&&H()):document.querySelector("#spanLastRefresh").innerHTML="(none)"},P=(e,t)=>{(async(e,t)=>{const n=await(0,o.f)(e.lat,e.lon);"function"==typeof t&&t(n);const s=await(0,i.Pq)(n.properties.observationStations),r=s.features[0].properties.stationIdentifier;let{city:a}=n.properties.relativeLocation.properties;const{state:l}=n.properties.relativeLocation.properties;r in StationInfo&&(a=StationInfo[r].city,[a]=a.split("/"),a=a.replace(/\s+$/,"")),h.latitude=e.lat,h.longitude=e.lon,h.zoneId=n.properties.forecastZone.substr(-6),h.radarId=n.properties.radarStation.substr(-3),h.stationId=r,h.weatherOffice=n.properties.cwa,h.city=a,h.state=l,h.timeZone=n.properties.timeZone,h.forecast=n.properties.forecast,h.forecastGridData=n.properties.forecastGridData,h.stations=s.features,A(h),b(),document.querySelector("#loading").style.display="none",u&&(await u.drawCanvas(),u.showCanvas()),c.forEach((e=>e.getData(h)))})(e,t),_(null)},H=()=>{if(g)return;y=0;const e=()=>{y+=500;let e=m-y;e<0&&(e=0);const t=new Date(e);document.querySelector("#spanRefreshCountDown").innerHTML=`${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}`,y>=m&&!k()&&R()};g=window.setInterval(e,500),e()},z=()=>{g&&(window.clearInterval(g),document.querySelector("#spanRefreshCountDown").innerHTML="--:--",g=null)},Z=()=>!!(y>=m&&k())&&(R(),!0),R=()=>{R.callback&&R.callback()},U=e=>{R.callback=e},j=()=>h.timeZone},951:(e,t,n)=>{var s=n(47),r=n(592),a=n(24),i=n(211);class o extends a.A{constructor(e,t){super(e,t,"",!1),this.backgroundImage=(0,s.u)("images/BackGround1_1.png"),this.timing=!1,document.addEventListener("DOMContentLoaded",(()=>{this.version=document.querySelector("#version").innerHTML,this.elem.querySelector(".container").addEventListener("click",this.lineClick.bind(this))})),this.okToDrawCurrentConditions=!1}async drawCanvas(e,t){if(!this.elem)return;if(super.drawCanvas(),this.progressCover||(this.progressCover=this.elem.querySelector(".scroll .cover")),!e)return;const n=e.map(((e,t)=>{if(!1===e.showOnProgress)return!1;const n={name:e.name},s=(0,r.qx)(e.status),a=this.fillTemplate("item",n);if(!a)return!1;const i=a.querySelector(".links");return i.classList.remove(...r.LR),i.classList.add(s),i.dataset.index=t,a})).filter((e=>e)),s=this.elem.querySelector(".container");s.innerHTML="",s.append(...n),this.finishDraw();const a=t/e.length;this.progressCover.style.width=100*(1-a)+"%",a<1?this.progressCover.parentNode.classList.add("show"):setTimeout((()=>this.progressCover.parentNode.classList.remove("show")),1e3)}lineClick(e){const t=e.target?.parentNode?.dataset?.index;if(void 0===t)return;const n=+t;(0,i.iU)("navButton");const s=(0,i.pv)(n);s&&s.status===r.Ay.loaded&&(s.showCanvas(i.ab.command.firstFrame),this.elem.classList.remove("show"))}}const l=new o(-1,"progress");(0,i.Lg)(l)},503:(e,t,n)=>{var s=n(592),r=n(125),a=n(47),i=n(440),o=n(147),l=n(24),c=n(211);class u extends l.A{constructor(e,t){super(e,t,"Local Radar",!0),this.okToDrawCurrentConditions=!1,this.okToDrawCurrentDateTime=!1,this.dopplerRadarImageMax=6,this.timing.baseDelay=350,this.timing.delay=[{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:12,si:5}]}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;if("AK"===t.state||"HI"===t.state)return void this.setStatus(s.Ay.noData);let n="images/4000RadarMap2.jpg";"HI"===t.State&&(n="images/HawaiiRadarMap2.png"),this.baseMap=await(0,a.u)(n);const l=[];let u=r.c9.utc().minus({days:1}).startOf("day");for(;u<=r.c9.utc().startOf("day");)l.push(`https://mesonet.agron.iastate.edu/archive/data/${u.toFormat("yyyy/LL/dd")}/GIS/uscomp/`),u=u.plus({days:1});const d=(await Promise.all(l.map((async e=>{try{return(0,i.Qq)(e,{cors:!0})}catch(e){return console.log("Unable to get list of radars"),console.error(e),this.setStatus(s.Ay.failed),!1}})))).filter((e=>e)).flatMap(((e,t)=>{const n=(new DOMParser).parseFromString(e,"text/html"),s=n.createElement("base");s.href=l[t],n.head.append(s);const r=n.querySelectorAll("a"),a=[];return Array.from(r).forEach((e=>{e.innerHTML?.match(/n0r_\d{12}\.png/)&&a.push(e.href)})),a})),h=/_(\d{12})\.png/,m=d.sort(((e,t)=>e.match(h)[1]{let s=0,r=0;return s=55.2*(51.75-e.latitude),s-=n,s>3200-2*n?s=3200-2*n:s<0&&(s=0),r=41.775*(-130.37-e.longitude)*-1,r-=t,r>5100-2*t?r=5100-2*t:r<0&&(r=0),{x:2*r,y:2*s}})(t,240,138),w=document.createElement("canvas");w.width=y,w.height=1600;const v=w.getContext("2d");v.imageSmoothingEnabled=!1;const S=((e,t,n)=>{let s=0,r=0;return s=61.4481*(51-e.latitude),s-=n,s>6e3-2*n?s=6e3-2*n:s<0&&(s=0),r=42.1768*(-129.138-e.longitude)*-1,r-=t,r>2800-2*t?r=2800-2*t:r<0&&(r=0),{x:2*r,y:2*s}})(t,240,138),b=S.x/2,k=S.y/2,C=await Promise.all(m.map((async e=>{const t=document.createElement("canvas");t.width=640,t.height=367;const n=t.getContext("2d");n.imageSmoothingEnabled=!1;const s=await fetch((0,o.O)(e));if(!s.ok)throw new Error(`Unable to fetch radar error ${s.status} ${s.statusText} from ${s.url}`);const i=await s.blob(),l=e.match(/_(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)\./);let u;if(l){const[,e,t,n,s,a]=l;u=r.c9.fromObject({year:e,month:t,day:n,hour:s,minute:a},{zone:"UTC"}).setZone()}else u=r.c9.fromHTTP(s.headers.get("last-modified")).setZone((0,c.eB)());const d=await(0,a.u)(i);v.clearRect(0,0,y,1600),v.drawImage(d,0,0,y,1600),n.drawImage(await this.baseMap,p.x,p.y,480,276,0,0,640,367);const h=document.createElement("canvas");h.width=640,h.height=367;const m=h.getContext("2d",{willReadFrequently:!0});m.imageSmoothingEnabled=!1,m.drawImage(w,b,k,240,163.1,0,0,640,367),(e=>{const t=e.getImageData(0,0,e.canvas.width,e.canvas.height);for(let e=0;e{const n=e.getImageData(0,0,e.canvas.width,e.canvas.height),s=t.getImageData(0,0,t.canvas.width,t.canvas.height);for(let e=0;ee.elem))),this.timing.totalScreens=C.length,this.data=C.map((e=>e.canvas)),this.times=C.map((e=>e.time)),this.setStatus(s.Ay.loaded)}async drawCanvas(){super.drawCanvas();const e=this.times[this.screenIndex].toLocaleString(r.c9.TIME_SIMPLE),t=e.length>=8?e:` ${e}`;this.elem.querySelector(".header .right .time").innerHTML=t;const n=this.elem.querySelector(".frame").scrollHeight;this.elem.querySelector(".scroll-area").style.top=-this.screenIndex*n+"px",this.finishDraw()}}(0,c.Kb)(new u(10,"radar"))},187:(e,t,n)=>{var s=n(592),r=n(519),a=n(440),i=n(413),o=n(716),l=n(47),c=n(125),u=n(24),d=n(211);const h=(e,t,n)=>({daytime:e.isDaytime,temperature:e.temperature||0,name:v(t.city),icon:e.icon,x:n.x,y:n.y,time:e.startTime}),m=(e,t,n,s)=>{let r=0,a=0;return r=56*(73-e),r-=s,r>1142-2*s?r=1142-2*s:r<0&&(r=0),a=25*(-175-t)*-1,a-=n,a>1200-2*n?a=1200-2*n:a<0&&(a=0),{x:a,y:r}},f=(e,t,n,s)=>{let r=0,a=0;return r=55.2*(25-e),r-=s,r>571-2*s?r=571-2*s:r<0&&(r=0),a=41.775*(-164.5-t)*-1,a-=n,a>600-2*n?a=600-2*n:a<0&&(a=0),{x:a,y:r}},g=(e,t,n,s)=>({minLat:-1*((t+2*s)/56-73),maxLat:-1*(t/56-73),minLon:-1*(-1*e/25+175),maxLon:-1*(-1*(e+2*n)/25+175)}),y=(e,t,n,s)=>({minLat:-1*((t+2*s)/55.2-25),maxLat:-1*(t/55.2-25),minLon:-1*(-1*e/41.775+164.5),maxLon:-1*(-1*(e+2*n)/41.775+164.5)}),p=(e,t,n)=>{let s=37*(e.lon-n),r=70*(t-e.lat);return r<30&&(r=30),r>282&&(r=282),s<40&&(s=40),s>580&&(s=580),{x:s,y:r}},w=(e,t,n)=>{let s=57*(e.lon-n),r=70*(t-e.lat);return r<30&&(r=30),r>282&&(r=282),s<40&&(s=40),s>580&&(s=580),{x:s,y:r}},v=e=>e.match(/[^,/;\\-]*/)[0].substr(0,12);var S=n(348);class b extends u.A{constructor(e,t){super(e,t,"Regional Forecast",!0),this.timing.totalScreens=3}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;let n="images/Basemap2.png";"HI"===t.state?n="images/HawaiiRadarMap4.png":"AK"===t.state&&(n="images/AlaskaRadarMap6.png"),this.elem.querySelector(".map img").src=n;const c={x:240,y:117},u=((e,t,n,s,r)=>{if("AK"===r)return m(e,t,n,s);if("HI"===r)return f(e,t,n,s);let a=0,i=0;return a=55.2*(50.5-e),a-=s,a>1600-2*s?a=1600-2*s:a<0&&(a=0),i=41.775*(-127.5-t)*-1,i-=n,i>2550-2*n?i=2550-2*n:i<0&&(i=0),{x:i,y:a}})(t.latitude,t.longitude,c.x,c.y,t.state),d=(S=u.x,b=u.y,C=c.x,T=c.y,"AK"===(x=t.state)?g(S,b,C,T):"HI"===x?y(S,b,C,T):{minLat:-1*((b+2*T)/55.2-50.5),maxLat:-1*(b/55.2-50.5),minLon:-1*(-1*S/41.775+127.5),maxLon:-1*(-1*(S+2*C)/41.775+127.5)});var S,b,C,T,x;let L=2.5;"HI"===t.state&&(L=1);const D=Object.values(StationInfo).map((e=>({...e,targetDistance:L}))),M=[...RegionalCities,...D],I=[];M.forEach((e=>{if(e.lat>d.minLat&&e.latd.minLon&&e.lon{const a=(0,r.Io)(e.lon,e.lat,s.lon,s.lat);return n&&a>=t}),!0)&&I.push(e)}}));const N=await Promise.all(I.map((async e=>{try{const n=e?.point??await k(e.lat,e.lon);if(!n)throw new Error("No pre-loaded point");const s=(async(e,t)=>{try{const t=(await(0,a.Pq)(`https://api.weather.gov/gridpoints/${e.wfo}/${e.x},${e.y}/stations`)).features[0].id,n=await(0,a.Pq)(`${t}/observations/latest`);if(!n.properties.icon)return!1;const s=(0,o.Wu)(n.properties.icon,!n.properties.daytime);return!!s&&((0,l.b)(s),n.properties)}catch(e){return console.log(`Unable to get regional observations for ${t.Name??t.city}`),console.error(e.status,e.responseJSON),!1}})(n,e),r=await(0,a.Pq)(`https://api.weather.gov/gridpoints/${n.wfo}/${n.x},${n.y}/forecast`),c=((e,t,n,s)=>{"AK"===s&&p(e,t,n),"HI"===s&&w(e,t,n);let r=57*(e.lon-n),a=70*(t-e.lat);return a<30&&(a=30),a>282&&(a=282),r<40&&(r=40),r>580&&(r=580),{x:r,y:a}})(e,d.maxLat,d.minLon,t.state),u=await s;if(!u)return!1;const m={daytime:!!/\/day\//.test(u.icon),temperature:(0,i.sz)(u.temperature.value),name:v(e.city),icon:u.icon,x:c.x,y:c.y};return(0,l.b)((0,o.Wu)(m.icon,!m.daytime)),[m,h(r.properties.periods[1],e,c),h(r.properties.periods[2],e,c)]}catch(t){return console.log(`No regional forecast data for '${e.name??e.city}'`),console.log(t),!1}}))),O=N.filter((e=>e));0!==O.length?(this.data={regionalData:O,offsetXY:c,sourceXY:u},this.setStatus(s.Ay.loaded)):this.setStatus(s.Ay.noData)}drawCanvas(){super.drawCanvas();const{regionalData:e,sourceXY:t,offsetXY:n}=this.data,s=this.elem.querySelector(".title.dual .top"),r=this.elem.querySelector(".title.dual .bottom");if(0===this.screenIndex)s.innerHTML="Regional",r.innerHTML="Observations";else{const t=c.c9.fromISO(e[0][this.screenIndex].time).toLocaleString({weekday:"long"});s.innerHTML="Forecast for",r.innerHTML=e[0][this.screenIndex].daytime?t:`${t} Night`}const a=640/(2*n.x);this.elem.querySelector(".map").style.transform=`scale(${a}) translate(-${t.x}px, -${t.y}px)`;const i=e.map((e=>{const t={},n=e[this.screenIndex];t.icon={type:"img",src:(0,o.Wu)(n.icon,!n.daytime)},t.city=n.name;const{temperature:s}=n;t.temp=s;const{x:r,y:a}=n,i=this.fillTemplate("location",t);return i.style.left=`${r}px`,i.style.top=`${a}px`,i})),l=this.elem.querySelector(".location-container");l.innerHTML="",l.append(...i),this.finishDraw()}}const k=async(e,t)=>{const n=await(0,S.f)(e,t);return{x:n.properties.gridX,y:n.properties.gridY,wfo:n.properties.gridId}};(0,d.Kb)(new b(6,"regional-forecast"))},302:(e,t,n)=>{n.d(t,{A:()=>u});var s=n(999);const r="Settings";const a=class{constructor(e,t,n,r,a,i,o){this.shortName=e,this.name=t,this.defaultValue=r,this.myValue=r,this.type=n??"checkbox",this.sticky=i,this.values=o,this.changeAction=a??(()=>{});const l=(0,s.J)()?.[`settings-${e}-${n}`];let c;"checkbox"===n&&void 0!==l&&(c="true"===l),"select"===n&&void 0!==l&&(c=parseFloat(l));const u=c??this.getFromLocalStorage();if(i&&null!==u&&(this.myValue=u),"select"===n)this.selectChange({target:{value:this.myValue}});else this.checkboxChange({target:{checked:this.myValue}})}generateSelect(){const e=document.createElement("label");e.for=`settings-${this.shortName}-select`,e.id=`settings-${this.shortName}-label`;const t=document.createElement("span");t.innerHTML=`${this.name} `,e.append(t);const n=document.createElement("select");return n.id=`settings-${this.shortName}-select`,n.name=`settings-${this.shortName}-select`,n.addEventListener("change",(e=>this.selectChange(e))),this.values.forEach((([e,t])=>{const s=document.createElement("option");s.value=e.toFixed(2),s.innerHTML=t,n.append(s)})),e.append(n),this.element=e,this.selectHighlight(this.myValue),e}generateCheckbox(){const e=document.createElement("label");e.for=`settings-${this.shortName}-checkbox`,e.id=`settings-${this.shortName}-label`;const t=document.createElement("input");t.type="checkbox",t.value=!0,t.id=`settings-${this.shortName}-checkbox`,t.name=`settings-${this.shortName}-checkbox`,t.checked=this.myValue,t.addEventListener("change",(e=>this.checkboxChange(e)));const n=document.createElement("span");return n.innerHTML=this.name,e.append(t,n),this.element=e,e}checkboxChange(e){this.myValue=e.target.checked,this.storeToLocalStorage(this.myValue),this.changeAction(this.myValue)}selectChange(e){this.myValue=parseFloat(e.target.value),this.storeToLocalStorage(this.myValue),this.changeAction(this.myValue)}storeToLocalStorage(e){if(!this.sticky)return;const t=localStorage?.getItem(r)??"{}",n=JSON.parse(t);n[this.shortName]=e,localStorage?.setItem(r,JSON.stringify(n))}getFromLocalStorage(){const e=localStorage?.getItem(r);try{if(e){const t=JSON.parse(e)?.[this.shortName];if(void 0!==t)switch(this.type){case"boolean":case"select":return t;default:return null}}}catch{return null}return null}get value(){return this.myValue}set value(e){if(this.myValue=e,"select"===this.type)this.selectHighlight(e);else this.element.checked=e;this.storeToLocalStorage(this.myValue),this.changeAction(this.myValue)}selectHighlight(e){this.element.querySelectorAll("option").forEach((t=>{t.selected=e.toFixed(2)===t.value}))}generate(){return"select"===this.type?this.generateSelect():this.generateCheckbox()}};document.addEventListener("DOMContentLoaded",(()=>{o()}));const i={speed:{value:1}},o=()=>{i.wide=new a("wide","Widescreen","boolean",!1,l,!0),i.kiosk=new a("kiosk","Kiosk","boolean",!1,c,!1),i.speed=new a("speed","Speed","select",1,null,!0,[[.5,"Very Fast"],[.75,"Fast"],[1,"Normal"],[1.25,"Slow"],[1.5,"Very Slow"]]);const e=Object.values(i).map((e=>e.generate())),t=document.querySelector("#settings");t.innerHTML="",t.append(...e)},l=e=>{const t=document.querySelector("#divTwc");e?t.classList.add("wide"):t.classList.remove("wide")},c=e=>{const t=document.querySelector("body");e?(t.classList.add("kiosk"),window.dispatchEvent(new Event("resize"))):t.classList.remove("kiosk")},u=i},999:(e,t,n)=>{n.d(t,{J:()=>l}),document.addEventListener("DOMContentLoaded",(()=>r()));const s={kiosk:"settings-kiosk-checkbox"},r=()=>{const e=document.querySelector("#share-link");e.addEventListener("click",a),navigator?.clipboard||(e.textContent="Get Permalink")},a=async e=>{e.preventDefault();const t=document.querySelectorAll("input[type=checkbox]"),n={};[...t].forEach((e=>{e?.id&&(n[e.id]=e?.checked??!1)}));[...document.querySelectorAll("select")].forEach((e=>{e?.id&&(n[e.id]=e?.value??0)})),n.latLonQuery=localStorage.getItem("latLonQuery"),n.latLon=localStorage.getItem("latLon");const s=new URLSearchParams(n).toString(),r=new URL(`?${s}`,document.location.href);navigator?.clipboard?i(r):o(r)},i=async e=>{try{await navigator.clipboard.writeText(e.toString());const t=document.querySelector("#share-link-copied");t.style.display="inline",setTimeout((()=>{t.style.display="none"}),5e3)}catch(e){console.error(e)}},o=e=>{const t=document.querySelector("#share-link-instructions"),n=t.querySelector("#share-link-url");n.value=e,t.style.display="inline",n.focus(),n.select()},l=()=>{if(l.params)return l.params;const e=[...new URLSearchParams(window.location.search)];return e.forEach((t=>{const n=s[t[0]];n&&e.push([n,t[1]])})),l.params=Object.fromEntries(e),l.params}},592:(e,t,n)=>{n.d(t,{Ay:()=>i,LR:()=>a,qx:()=>r});const s={loading:Symbol("loading"),loaded:Symbol("loaded"),failed:Symbol("failed"),noData:Symbol("noData"),disabled:Symbol("disabled"),retrying:Symbol("retrying")},r=e=>{switch(e){case s.loading:return"loading";case s.loaded:return"press-here";case s.failed:return"failed";case s.noData:return"no-data";case s.disabled:return"disabled";case s.retrying:return"retrying";default:return""}},a=["loading","press-here","failed","no-data","disabled","retrying"],i=s},709:(e,t,n)=>{var s=n(592),r=n(440),a=n(716),i=n(125),o=n(24),l=n(211);class c extends o.A{constructor(e,t,n){super(e,t,"Travel Forecast",n),this.timing.baseDelay=20;const s=TravelCities.length/4,r=Math.floor(s)-2,a=r%1;this.timing.delay=[450];for(let e=0;e{try{if(!e.point)throw new Error("No pre-loaded point");const t=await(0,r.Pq)(`https://api.weather.gov/gridpoints/${e.point.wfo}/${e.point.x},${e.point.y}/forecast`),n=t.properties.periods[0].isDaytime?0:1;return{today:0===n,high:t.properties.periods[n].temperature,low:t.properties.periods[n+1].temperature,name:e.Name,icon:(0,a.Wu)(t.properties.periods[n].icon)}}catch(t){return console.error(`GetTravelWeather for ${e.Name} failed`),console.error(t.status,t.responseJSON),{name:e.Name,error:!0}}})),t=await Promise.all(e);this.data=t;this.data.some((e=>e.high))?(this.setStatus(s.Ay.loaded),this.drawLongCanvas()):this.setStatus(s.Ay.noData)}async drawLongCanvas(){const e=this.elem.querySelector(".travel-lines");e.innerHTML="";const t=this.data.map((e=>{if(e.error)return!1;const t={city:e};if(e.icon){t.city=e.name;const{low:n,high:s}=e,r=Math.round(n).toString(),a=Math.round(s).toString();t.low=r,t.high=a;const{icon:i}=e;t.icon={type:"img",src:i}}else t.error="NO TRAVEL DATA AVAILABLE";return this.fillTemplate("travel-row",t)})).filter((e=>e));e.append(...t)}async drawCanvas(){super.drawCanvas();const e=this.data;this.elem.querySelector(".header .title.dual .bottom").innerHTML=`For ${u(e)}`,this.finishDraw()}async showCanvas(){await this.drawCanvas(),super.showCanvas()}screenIndexChange(){this.baseCountChange(this.navBaseCount)}baseCountChange(e){let t=Math.min(this.elem.querySelector(".travel-lines").getBoundingClientRect().height-289,e-150);t<0&&(t=0),this.elem.querySelector(".main").scrollTo(0,t)}getLongCanvas(){return this.longCanvas}}const u=e=>e.reduce(((e,t)=>{if(t&&""===e){return i.c9.local().plus({days:t.today?0:1}).toLocaleString({weekday:"long"})}return e}),"");(0,l.Kb)(new c(5,"travel",!1))},519:(e,t,n)=>{n.d(t,{Io:()=>r,LV:()=>a,Up:()=>s});const s=e=>["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"][Math.floor(e/22.5+.5)%16],r=(e,t,n,s)=>Math.sqrt((n-e)**2+(s-t)**2),a=(e,t)=>(e%t+t)%t},147:(e,t,n)=>{n.d(t,{O:()=>s});const s=e=>{let t=e;return t=t.replace("https://api.weather.gov/",`${window.location.protocol}//${window.location.host}/`),t=t.replace("https://www.cpc.ncep.noaa.gov/",`${window.location.protocol}//${window.location.host}/`),t}},440:(e,t,n)=>{n.d(t,{Pq:()=>r,Qq:()=>a,av:()=>i});var s=n(147);const r=(e,t)=>o(e,"json",t),a=(e,t)=>o(e,"text",t),i=(e,t)=>o(e,"blob",t),o=async(e,t,n={})=>{const r={method:"GET",mode:"cors",type:"GET",retryCount:0,...n};r.originalRetries=r.retryCount;let a=e;!0===r.cors&&(a=(0,s.O)(e));const i=new URL(a,`${window.location.origin}/`);r.data&&Object.keys(r.data).forEach((e=>{const t=r.data[e];i.searchParams.append(e,t)}));const o=await l(i,r);if(!o.ok)throw new Error(`Fetch error ${o.status} ${o.statusText} while fetching ${o.url}`);switch(t){case"json":return o.json();case"text":return o.text();case"blob":return o.blob();default:return o}},l=(e,t)=>new Promise(((n,s)=>{fetch(e,t).then((s=>{if(t.retryCount>0){if(s.status>=500&&s.status<=599&&t.retryCount>0){"function"==typeof t.stillWaiting&&t.retryCount===t.originalRetries&&t.stillWaiting();const s={...t,retryCount:t.retryCount-1};return n(c(u(t.originalRetries-s.retryCount),l,e,s))}return n(s)}return n(s)})).catch((e=>s(e)))})),c=(e,t,...n)=>new Promise((s=>{setTimeout((()=>{s(t(...n))}),e)})),u=e=>{switch(e){case 1:return 1e3;case 2:return 2e3;case 3:return 5e3;case 4:return 1e4;default:return 3e4}}},47:(e,t,n)=>{n.d(t,{b:()=>o,u:()=>a});var s=n(440),r=n(147);const a=(e,t=!1)=>new Promise((n=>{const s=new Image;if(s.onload=e=>{n(e.target)},e instanceof Blob)s.src=window.URL.createObjectURL(e);else{let n=e;t&&(n=(0,r.O)(e)),s.src=n}})),i=[],o=e=>!i.includes(e)&&((0,s.av)(e),i.push(e),!0)},430:(e,t,n)=>{n.d(t,{A:()=>a});let s=!1;const r=(e=!1)=>(r.controller||(r.controller=new NoSleep),s!==e&&(s=e,e?r.controller.enable():r.controller.disable())),a=r},891:(e,t,n)=>{n.d(t,{C:()=>s});const s=e=>[/^[ A-Za-z]+ \/ /,/^[ A-Za-z]+\//,/^[ A-Za-z]+, /].reduce(((e,t)=>e.replace(t,"")),e)},413:(e,t,n)=>{n.d(t,{Q8:()=>o,X4:()=>s,Yy:()=>r,lt:()=>i,sz:()=>a,yX:()=>l});const s=(e,t)=>Math.trunc(e*10**t)/10**t,r=e=>Math.round(e/1.60934),a=e=>Math.round(9*e/5+32),i=e=>Math.round(e/1.60934),o=e=>Math.round(e/.3048),l=e=>s(2953e-7*e,2)},348:(e,t,n)=>{n.d(t,{f:()=>r});var s=n(440);const r=async(e,t)=>{try{return await(0,s.Pq)(`https://api.weather.gov/points/${e},${t}`)}catch(n){return console.log(`Unable to get point ${e}, ${t}`),console.error(n),!1}}},24:(e,t,n)=>{n.d(t,{A:()=>l});var s=n(592),r=n(125),a=n(211),i=n(999),o=n(302);const l=class{constructor(e,t,n,r){this.navId=e,this.elemId=void 0,this.data=void 0,this.loadingStatus=s.Ay.loading,this.name=n??t,this.getDataCallbacks=[],this.stillWaitingCallbacks=[],this.defaultEnabled=r,this.okToDrawCurrentConditions=!0,this.okToDrawCurrentDateTime=!0,this.showOnProgress=!0,this.timing={totalScreens:1,baseDelay:9e3,delay:1},this.navBaseCount=0,this.screenIndex=-1,this.storeElemId(t),this.isEnabled?this.setStatus(s.Ay.loading):this.setStatus(s.Ay.disabled),this.startNavCount(),document.addEventListener("DOMContentLoaded",(()=>{this.loadTemplates()}))}generateCheckbox(e=!0){if("progress"===this.elemId)return!1;const t=(0,i.J)()?.[`${this.elemId}-checkbox`];let n;void 0!==t&&(n="true"===t);let s=n??window.localStorage.getItem(`display-enabled: ${this.elemId}`);null===s&&(s=e),this.isEnabled=!("true"!==s&&!0!==s),window.localStorage.setItem(`display-enabled: ${this.elemId}`,this.isEnabled);const r=document.createElement("label");r.for=`${this.elemId}-checkbox`,r.id=`${this.elemId}-label`;const a=document.createElement("input");a.type="checkbox",a.value=!0,a.id=`${this.elemId}-checkbox`,a.name=`${this.elemId}-checkbox`,a.checked=this.isEnabled,a.addEventListener("change",(e=>this.checkboxChange(e)));const o=document.createElement("span");o.innerHTML=this.name;const l=document.createElement("span");return l.innerHTML="!!!",l.classList.add("alert"),r.append(a,o,l),this.checkbox=r,r}checkboxChange(e){this.isEnabled=e.target.checked,window.localStorage.setItem(`display-enabled: ${this.elemId}`,this.isEnabled),this.getData()}setStatus(e){this.status=e,(0,a.yB)({id:this.navId,status:this.status}),this.checkbox&&(this.checkbox.classList.remove(...s.LR),this.checkbox.classList.add((0,s.qx)(e)))}get status(){return this.loadingStatus}set status(e){this.loadingStatus=e}storeElemId(e){this.elemId||(this.elemId=e)}getData(e){return this.data=void 0,e&&(this.weatherParameters=e),this.isEnabled?(this.setStatus(s.Ay.loading),this.calcNavTiming(),!0):(this.setStatus(s.Ay.disabled),!1)}getDataCallback(){this.getDataCallbacks.forEach((e=>e(this.data))),this.getDataCallbacks=[]}drawCanvas(){this.screenIndex<0&&(this.screenIndex=0),this.okToDrawCurrentDateTime&&this.drawCurrentDateTime()}finishDraw(){this.okToDrawCurrentDateTime&&(this.drawCurrentDateTime(),this.dateTimeInterval||(this.dateTimeInterval=setInterval((()=>this.active&&this.drawCurrentDateTime()),100)))}drawCurrentDateTime(){const e=r.c9.local().setZone((0,a.eB)()),t=e.toLocaleString(r.c9.TIME_WITH_SECONDS).padStart(11," "),n=e.toFormat(" ccc LLL ")+e.day.toString().padStart(2," "),s=this.elem.querySelector(".date-time.date"),i=this.elem.querySelector(".date-time.time");i&&this.lastTime!==t&&(i.innerHTML=t.toUpperCase()),this.lastTime=t,s&&this.lastDate!==n&&(s.innerHTML=n.toUpperCase()),this.lastDate=n}showCanvas(e){e===a.ab.command.firstFrame&&this.navNext(e),e===a.ab.command.lastFrame&&this.navPrev(e),this.startNavCount(),this.elem.classList.add("show"),document.querySelector("#divTwc").classList.add(this.elemId)}hideCanvas(){this.resetNavBaseCount(),this.elem.classList.remove("show"),document.querySelector("#divTwc").classList.remove(this.elemId)}get active(){return 0!==this.elem.offsetHeight}get enabled(){return this.isEnabled}navBaseTime(){(0,a.F4)()&&this.active&&(this.navBaseCount+=1,this.baseCountChange&&this.baseCountChange(this.navBaseCount),this.updateScreenFromBaseCount())}async updateScreenFromBaseCount(){const e=this.screenIndexFromBaseCount();!1!==e?e!==this.screenIndex&&(this.screenIndex=-1===e?0:e,this.screenIndexChange?this.screenIndexChange(this.screenIndex):await this.drawCanvas(),this.showCanvas()):this.sendNavDisplayMessage(a.ab.response.next)}calcNavTiming(){if(!1===this.timing)return;Array.isArray(this.timing.delay)&&(this.timing.totalScreens=this.timing.delay.length);let e=[];if("number"==typeof this.timing.delay)for(let t=0;t"object"==typeof e?e.time:e));let t=0;if(this.timing.fullDelay=e.map((e=>{const n=t+e;return t+=e,n})),Array.isArray(this.timing.delay)&&"object"==typeof this.timing.delay[0])this.timing.screenIndexes=this.timing.delay.map((e=>e.si));else{this.timing.screenIndexes=[];for(let e=0;ee>this.navBaseCount));this.navBaseCount=e}this.updateScreenFromBaseCount()}navPrev(e){if(e===a.ab.command.lastFrame)this.navBaseCount=this.timing.fullDelay[this.timing.totalScreens-1]-1;else{const e=this.timing.fullDelay.reduce(((e,t)=>te>this.navBaseCount));return-1!==e&&this.timing.screenIndexes[e]}startNavCount(){this.navInterval||(this.navInterval=setInterval((()=>this.navBaseTime()),this.timing.baseDelay*o.A.speed.value))}resetNavBaseCount(){this.navBaseCount=0,this.screenIndex=-1,this.navInterval&&(clearInterval(this.navInterval),this.navInterval=void 0)}sendNavDisplayMessage(e){(0,a.Ju)({id:this.navId,type:e})}loadTemplates(){if(this.templates={},this.elem=document.querySelector(`#${this.elemId}-html`),!this.elem)return;this.elem.querySelectorAll(".template").forEach((e=>{const t=e.classList[0],n=e.cloneNode(!0);n.classList.remove("template"),this.templates[t]=n,e.remove()}))}fillTemplate(e,t){const n=this.templates[e];if(!n)return!1;const s=n.cloneNode(!0);return Object.entries(t).forEach((([e,t])=>{const n=s.querySelector(`.${e}`);n&&("string"==typeof t||"number"==typeof t?n.innerHTML=t:"img"===t?.type&&(n.querySelector("img").src=t.src))})),s}stillWaiting(){this.isEnabled&&this.setStatus(s.Ay.retrying),this.stillWaitingCallbacks.forEach((e=>e())),this.stillWaitingCallbacks=[]}}},125:(e,t,n)=>{n.d(t,{IX:()=>xn,c9:()=>gs,dw:()=>Cn});class s extends Error{}class r extends s{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class a extends s{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class i extends s{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class o extends s{}class l extends s{constructor(e){super(`Invalid unit ${e}`)}}class c extends s{}class u extends s{constructor(){super("Zone is an abstract class")}}const d="numeric",h="short",m="long",f={year:d,month:d,day:d},g={year:d,month:h,day:d},y={year:d,month:h,day:d,weekday:h},p={year:d,month:m,day:d},w={year:d,month:m,day:d,weekday:m},v={hour:d,minute:d},S={hour:d,minute:d,second:d},b={hour:d,minute:d,second:d,timeZoneName:h},k={hour:d,minute:d,second:d,timeZoneName:m},C={hour:d,minute:d,hourCycle:"h23"},T={hour:d,minute:d,second:d,hourCycle:"h23"},x={hour:d,minute:d,second:d,hourCycle:"h23",timeZoneName:h},L={hour:d,minute:d,second:d,hourCycle:"h23",timeZoneName:m},D={year:d,month:d,day:d,hour:d,minute:d},M={year:d,month:d,day:d,hour:d,minute:d,second:d},I={year:d,month:h,day:d,hour:d,minute:d},N={year:d,month:h,day:d,hour:d,minute:d,second:d},O={year:d,month:h,day:d,weekday:h,hour:d,minute:d},E={year:d,month:m,day:d,hour:d,minute:d,timeZoneName:h},$={year:d,month:m,day:d,hour:d,minute:d,second:d,timeZoneName:h},F={year:d,month:m,day:d,weekday:m,hour:d,minute:d,timeZoneName:m},q={year:d,month:m,day:d,weekday:m,hour:d,minute:d,second:d,timeZoneName:m};class W{get type(){throw new u}get name(){throw new u}get ianaName(){return this.name}get isUniversal(){throw new u}offsetName(e,t){throw new u}formatOffset(e,t){throw new u}offset(e){throw new u}equals(e){throw new u}get isValid(){throw new u}}let A=null;class V extends W{static get instance(){return null===A&&(A=new V),A}get type(){return"system"}get name(){return(new Intl.DateTimeFormat).resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return nt(e,t,n)}formatOffset(e,t){return it(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return"system"===e.type}get isValid(){return!0}}let _={};const P={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};let H={};class z extends W{static create(e){return H[e]||(H[e]=new z(e)),H[e]}static resetCache(){H={},_={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch(e){return!1}}constructor(e){super(),this.zoneName=e,this.valid=z.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return nt(e,t,n,this.name)}formatOffset(e,t){return it(this.offset(e),t)}offset(e){const t=new Date(e);if(isNaN(t))return NaN;const n=(s=this.name,_[s]||(_[s]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:s,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),_[s]);var s;let[r,a,i,o,l,c,u]=n.formatToParts?function(e,t){const n=e.formatToParts(t),s=[];for(let e=0;e=0?h:1e3+h,(Qe({year:r,month:a,day:i,hour:24===l?0:l,minute:c,second:u,millisecond:0})-d)/6e4}equals(e){return"iana"===e.type&&e.name===this.name}get isValid(){return this.valid}}let Z={};let R={};function U(e,t={}){const n=JSON.stringify([e,t]);let s=R[n];return s||(s=new Intl.DateTimeFormat(e,t),R[n]=s),s}let j={};let B={};let J=null;let G={};function Y(e,t,n,s){const r=e.listingMode();return"error"===r?null:"en"===r?n(t):s(t)}class K{constructor(e,t,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;const{padTo:s,floor:r,...a}=n;if(!t||Object.keys(a).length>0){const t={useGrouping:!1,...n};n.padTo>0&&(t.minimumIntegerDigits=n.padTo),this.inf=function(e,t={}){const n=JSON.stringify([e,t]);let s=j[n];return s||(s=new Intl.NumberFormat(e,t),j[n]=s),s}(e,t)}}format(e){if(this.inf){const t=this.floor?Math.floor(e):e;return this.inf.format(t)}return Re(this.floor?Math.floor(e):Je(e,3),this.padTo)}}class Q{constructor(e,t,n){let s;if(this.opts=n,this.originalZone=void 0,this.opts.timeZone)this.dt=e;else if("fixed"===e.zone.type){const t=e.offset/60*-1,n=t>=0?`Etc/GMT+${t}`:`Etc/GMT${t}`;0!==e.offset&&z.create(n).valid?(s=n,this.dt=e):(s="UTC",this.dt=0===e.offset?e:e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone)}else"system"===e.zone.type?this.dt=e:"iana"===e.zone.type?(this.dt=e,s=e.zone.name):(s="UTC",this.dt=e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone);const r={...this.opts};r.timeZone=r.timeZone||s,this.dtf=U(t,r)}format(){return this.originalZone?this.formatToParts().map((({value:e})=>e)).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){const e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map((e=>{if("timeZoneName"===e.type){const t=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...e,value:t}}return e})):e}resolvedOptions(){return this.dtf.resolvedOptions()}}class X{constructor(e,t,n){this.opts={style:"long",...n},!t&&Ve()&&(this.rtf=function(e,t={}){const{base:n,...s}=t,r=JSON.stringify([e,s]);let a=B[r];return a||(a=new Intl.RelativeTimeFormat(e,t),B[r]=a),a}(e,n))}format(e,t){return this.rtf?this.rtf.format(e,t):function(e,t,n="always",s=!1){const r={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},a=-1===["hours","minutes","seconds"].indexOf(e);if("auto"===n&&a){const n="days"===e;switch(t){case 1:return n?"tomorrow":`next ${r[e][0]}`;case-1:return n?"yesterday":`last ${r[e][0]}`;case 0:return n?"today":`this ${r[e][0]}`}}const i=Object.is(t,-0)||t<0,o=Math.abs(t),l=1===o,c=r[e],u=s?l?c[1]:c[2]||c[1]:l?r[e][0]:e;return i?`${o} ${u} ago`:`in ${o} ${u}`}(t,e,this.opts.numeric,"long"!==this.opts.style)}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}}const ee={firstDay:1,minimalDays:4,weekend:[6,7]};class te{static fromOpts(e){return te.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,t,n,s,r=!1){const a=e||ve.defaultLocale,i=a||(r?"en-US":J||(J=(new Intl.DateTimeFormat).resolvedOptions().locale,J)),o=t||ve.defaultNumberingSystem,l=n||ve.defaultOutputCalendar,c=ze(s)||ve.defaultWeekSettings;return new te(i,o,l,c,a)}static resetCache(){J=null,R={},j={},B={}}static fromObject({locale:e,numberingSystem:t,outputCalendar:n,weekSettings:s}={}){return te.create(e,t,n,s)}constructor(e,t,n,s,r){const[a,i,o]=function(e){const t=e.indexOf("-x-");-1!==t&&(e=e.substring(0,t));const n=e.indexOf("-u-");if(-1===n)return[e];{let t,s;try{t=U(e).resolvedOptions(),s=e}catch(r){const a=e.substring(0,n);t=U(a).resolvedOptions(),s=a}const{numberingSystem:r,calendar:a}=t;return[s,r,a]}}(e);this.locale=a,this.numberingSystem=t||i||null,this.outputCalendar=n||o||null,this.weekSettings=s,this.intl=function(e,t,n){return n||t?(e.includes("-u-")||(e+="-u"),n&&(e+=`-ca-${n}`),t&&(e+=`-nu-${t}`),e):e}(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=r,this.fastNumbersCached=null}get fastNumbers(){var e;return null==this.fastNumbersCached&&(this.fastNumbersCached=(!(e=this).numberingSystem||"latn"===e.numberingSystem)&&("latn"===e.numberingSystem||!e.locale||e.locale.startsWith("en")||"latn"===new Intl.DateTimeFormat(e.intl).resolvedOptions().numberingSystem)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),t=!(null!==this.numberingSystem&&"latn"!==this.numberingSystem||null!==this.outputCalendar&&"gregory"!==this.outputCalendar);return e&&t?"en":"intl"}clone(e){return e&&0!==Object.getOwnPropertyNames(e).length?te.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,ze(e.weekSettings)||this.weekSettings,e.defaultToEN||!1):this}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,t=!1){return Y(this,e,dt,(()=>{const n=t?{month:e,day:"numeric"}:{month:e},s=t?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=function(e){const t=[];for(let n=1;n<=12;n++){const s=gs.utc(2009,n,1);t.push(e(s))}return t}((e=>this.extract(e,n,"month")))),this.monthsCache[s][e]}))}weekdays(e,t=!1){return Y(this,e,gt,(()=>{const n=t?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},s=t?"format":"standalone";return this.weekdaysCache[s][e]||(this.weekdaysCache[s][e]=function(e){const t=[];for(let n=1;n<=7;n++){const s=gs.utc(2016,11,13+n);t.push(e(s))}return t}((e=>this.extract(e,n,"weekday")))),this.weekdaysCache[s][e]}))}meridiems(){return Y(this,void 0,(()=>yt),(()=>{if(!this.meridiemCache){const e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[gs.utc(2016,11,13,9),gs.utc(2016,11,13,19)].map((t=>this.extract(t,e,"dayperiod")))}return this.meridiemCache}))}eras(e){return Y(this,e,St,(()=>{const t={era:e};return this.eraCache[e]||(this.eraCache[e]=[gs.utc(-40,1,1),gs.utc(2017,1,1)].map((e=>this.extract(e,t,"era")))),this.eraCache[e]}))}extract(e,t,n){const s=this.dtFormatter(e,t).formatToParts().find((e=>e.type.toLowerCase()===n));return s?s.value:null}numberFormatter(e={}){return new K(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new Q(e,this.intl,t)}relFormatter(e={}){return new X(this.intl,this.isEnglish(),e)}listFormatter(e={}){return function(e,t={}){const n=JSON.stringify([e,t]);let s=Z[n];return s||(s=new Intl.ListFormat(e,t),Z[n]=s),s}(this.intl,e)}isEnglish(){return"en"===this.locale||"en-us"===this.locale.toLowerCase()||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:_e()?function(e){let t=G[e];if(!t){const n=new Intl.Locale(e);t="getWeekInfo"in n?n.getWeekInfo():n.weekInfo,G[e]=t}return t}(this.locale):ee}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}}let ne=null;class se extends W{static get utcInstance(){return null===ne&&(ne=new se(0)),ne}static instance(e){return 0===e?se.utcInstance:new se(e)}static parseSpecifier(e){if(e){const t=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(t)return new se(st(t[1],t[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return 0===this.fixed?"UTC":`UTC${it(this.fixed,"narrow")}`}get ianaName(){return 0===this.fixed?"Etc/UTC":`Etc/GMT${it(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,t){return it(this.fixed,t)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return"fixed"===e.type&&e.fixed===this.fixed}get isValid(){return!0}}class re extends W{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function ae(e,t){if(qe(e)||null===e)return t;if(e instanceof W)return e;if("string"==typeof e){const n=e.toLowerCase();return"default"===n?t:"local"===n||"system"===n?V.instance:"utc"===n||"gmt"===n?se.utcInstance:se.parseSpecifier(n)||z.create(e)}return We(e)?se.instance(e):"object"==typeof e&&"offset"in e&&"function"==typeof e.offset?e:new re(e)}const ie={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},oe={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},le=ie.hanidec.replace(/[\[|\]]/g,"").split("");let ce={};function ue({numberingSystem:e},t=""){const n=e||"latn";return ce[n]||(ce[n]={}),ce[n][t]||(ce[n][t]=new RegExp(`${ie[n]}${t}`)),ce[n][t]}let de,he=()=>Date.now(),me="system",fe=null,ge=null,ye=null,pe=60,we=null;class ve{static get now(){return he}static set now(e){he=e}static set defaultZone(e){me=e}static get defaultZone(){return ae(me,V.instance)}static get defaultLocale(){return fe}static set defaultLocale(e){fe=e}static get defaultNumberingSystem(){return ge}static set defaultNumberingSystem(e){ge=e}static get defaultOutputCalendar(){return ye}static set defaultOutputCalendar(e){ye=e}static get defaultWeekSettings(){return we}static set defaultWeekSettings(e){we=ze(e)}static get twoDigitCutoffYear(){return pe}static set twoDigitCutoffYear(e){pe=e%100}static get throwOnInvalid(){return de}static set throwOnInvalid(e){de=e}static resetCaches(){te.resetCache(),z.resetCache(),gs.resetCache(),ce={}}}class Se{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}const be=[0,31,59,90,120,151,181,212,243,273,304,334],ke=[0,31,60,91,121,152,182,213,244,274,305,335];function Ce(e,t){return new Se("unit out of range",`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function Te(e,t,n){const s=new Date(Date.UTC(e,t-1,n));e<100&&e>=0&&s.setUTCFullYear(s.getUTCFullYear()-1900);const r=s.getUTCDay();return 0===r?7:r}function xe(e,t,n){return n+(Ge(e)?ke:be)[t-1]}function Le(e,t){const n=Ge(e)?ke:be,s=n.findIndex((e=>eet(s,t,n)?(l=s+1,c=1):l=s,{weekYear:l,weekNumber:c,weekday:o,...ot(e)}}function Ie(e,t=4,n=1){const{weekYear:s,weekNumber:r,weekday:a}=e,i=De(Te(s,1,t),n),o=Ye(s);let l,c=7*r+a-i-7+t;c<1?(l=s-1,c+=Ye(l)):c>o?(l=s+1,c-=Ye(s)):l=s;const{month:u,day:d}=Le(l,c);return{year:l,month:u,day:d,...ot(e)}}function Ne(e){const{year:t,month:n,day:s}=e;return{year:t,ordinal:xe(t,n,s),...ot(e)}}function Oe(e){const{year:t,ordinal:n}=e,{month:s,day:r}=Le(t,n);return{year:t,month:s,day:r,...ot(e)}}function Ee(e,t){if(!qe(e.localWeekday)||!qe(e.localWeekNumber)||!qe(e.localWeekYear)){if(!qe(e.weekday)||!qe(e.weekNumber)||!qe(e.weekYear))throw new o("Cannot mix locale-based week fields with ISO-based week fields");return qe(e.localWeekday)||(e.weekday=e.localWeekday),qe(e.localWeekNumber)||(e.weekNumber=e.localWeekNumber),qe(e.localWeekYear)||(e.weekYear=e.localWeekYear),delete e.localWeekday,delete e.localWeekNumber,delete e.localWeekYear,{minDaysInFirstWeek:t.getMinDaysInFirstWeek(),startOfWeek:t.getStartOfWeek()}}return{minDaysInFirstWeek:4,startOfWeek:1}}function $e(e){const t=Ae(e.year),n=Ze(e.month,1,12),s=Ze(e.day,1,Ke(e.year,e.month));return t?n?!s&&Ce("day",e.day):Ce("month",e.month):Ce("year",e.year)}function Fe(e){const{hour:t,minute:n,second:s,millisecond:r}=e,a=Ze(t,0,23)||24===t&&0===n&&0===s&&0===r,i=Ze(n,0,59),o=Ze(s,0,59),l=Ze(r,0,999);return a?i?o?!l&&Ce("millisecond",r):Ce("second",s):Ce("minute",n):Ce("hour",t)}function qe(e){return void 0===e}function We(e){return"number"==typeof e}function Ae(e){return"number"==typeof e&&e%1==0}function Ve(){try{return"undefined"!=typeof Intl&&!!Intl.RelativeTimeFormat}catch(e){return!1}}function _e(){try{return"undefined"!=typeof Intl&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch(e){return!1}}function Pe(e,t,n){if(0!==e.length)return e.reduce(((e,s)=>{const r=[t(s),s];return e&&n(e[0],r[0])===e[0]?e:r}),null)[1]}function He(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function ze(e){if(null==e)return null;if("object"!=typeof e)throw new c("Week settings must be an object");if(!Ze(e.firstDay,1,7)||!Ze(e.minimalDays,1,7)||!Array.isArray(e.weekend)||e.weekend.some((e=>!Ze(e,1,7))))throw new c("Invalid week settings");return{firstDay:e.firstDay,minimalDays:e.minimalDays,weekend:Array.from(e.weekend)}}function Ze(e,t,n){return Ae(e)&&e>=t&&e<=n}function Re(e,t=2){let n;return n=e<0?"-"+(""+-e).padStart(t,"0"):(""+e).padStart(t,"0"),n}function Ue(e){return qe(e)||null===e||""===e?void 0:parseInt(e,10)}function je(e){return qe(e)||null===e||""===e?void 0:parseFloat(e)}function Be(e){if(!qe(e)&&null!==e&&""!==e){const t=1e3*parseFloat("0."+e);return Math.floor(t)}}function Je(e,t,n=!1){const s=10**t;return(n?Math.trunc:Math.round)(e*s)/s}function Ge(e){return e%4==0&&(e%100!=0||e%400==0)}function Ye(e){return Ge(e)?366:365}function Ke(e,t){const n=function(e,t){return e-t*Math.floor(e/t)}(t-1,12)+1;return 2===n?Ge(e+(t-n)/12)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function Qe(e){let t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&e.year>=0&&(t=new Date(t),t.setUTCFullYear(e.year,e.month-1,e.day)),+t}function Xe(e,t,n){return-De(Te(e,1,t),n)+t-1}function et(e,t=4,n=1){const s=Xe(e,t,n),r=Xe(e+1,t,n);return(Ye(e)-s+r)/7}function tt(e){return e>99?e:e>ve.twoDigitCutoffYear?1900+e:2e3+e}function nt(e,t,n,s=null){const r=new Date(e),a={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};s&&(a.timeZone=s);const i={timeZoneName:t,...a},o=new Intl.DateTimeFormat(n,i).formatToParts(r).find((e=>"timezonename"===e.type.toLowerCase()));return o?o.value:null}function st(e,t){let n=parseInt(e,10);Number.isNaN(n)&&(n=0);const s=parseInt(t,10)||0;return 60*n+(n<0||Object.is(n,-0)?-s:s)}function rt(e){const t=Number(e);if("boolean"==typeof e||""===e||Number.isNaN(t))throw new c(`Invalid unit value ${e}`);return t}function at(e,t){const n={};for(const s in e)if(He(e,s)){const r=e[s];if(null==r)continue;n[t(s)]=rt(r)}return n}function it(e,t){const n=Math.trunc(Math.abs(e/60)),s=Math.trunc(Math.abs(e%60)),r=e>=0?"+":"-";switch(t){case"short":return`${r}${Re(n,2)}:${Re(s,2)}`;case"narrow":return`${r}${n}${s>0?`:${s}`:""}`;case"techie":return`${r}${Re(n,2)}${Re(s,2)}`;default:throw new RangeError(`Value format ${t} is out of range for property format`)}}function ot(e){return function(e,t){return t.reduce(((t,n)=>(t[n]=e[n],t)),{})}(e,["hour","minute","second","millisecond"])}const lt=["January","February","March","April","May","June","July","August","September","October","November","December"],ct=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],ut=["J","F","M","A","M","J","J","A","S","O","N","D"];function dt(e){switch(e){case"narrow":return[...ut];case"short":return[...ct];case"long":return[...lt];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const ht=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],mt=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],ft=["M","T","W","T","F","S","S"];function gt(e){switch(e){case"narrow":return[...ft];case"short":return[...mt];case"long":return[...ht];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const yt=["AM","PM"],pt=["Before Christ","Anno Domini"],wt=["BC","AD"],vt=["B","A"];function St(e){switch(e){case"narrow":return[...vt];case"short":return[...wt];case"long":return[...pt];default:return null}}function bt(e,t){let n="";for(const s of e)s.literal?n+=s.val:n+=t(s.val);return n}const kt={D:f,DD:g,DDD:p,DDDD:w,t:v,tt:S,ttt:b,tttt:k,T:C,TT:T,TTT:x,TTTT:L,f:D,ff:I,fff:E,ffff:F,F:M,FF:N,FFF:$,FFFF:q};class Ct{static create(e,t={}){return new Ct(e,t)}static parseFormat(e){let t=null,n="",s=!1;const r=[];for(let a=0;a0&&r.push({literal:s||/^\s+$/.test(n),val:n}),t=null,n="",s=!s):s||i===t?n+=i:(n.length>0&&r.push({literal:/^\s+$/.test(n),val:n}),n=i,t=i)}return n.length>0&&r.push({literal:s||/^\s+$/.test(n),val:n}),r}static macroTokenToFormatOpts(e){return kt[e]}constructor(e,t){this.opts=t,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,t){null===this.systemLoc&&(this.systemLoc=this.loc.redefaultToSystem());return this.systemLoc.dtFormatter(e,{...this.opts,...t}).format()}dtFormatter(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t})}formatDateTime(e,t){return this.dtFormatter(e,t).format()}formatDateTimeParts(e,t){return this.dtFormatter(e,t).formatToParts()}formatInterval(e,t){return this.dtFormatter(e.start,t).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,t){return this.dtFormatter(e,t).resolvedOptions()}num(e,t=0){if(this.opts.forceSimple)return Re(e,t);const n={...this.opts};return t>0&&(n.padTo=t),this.loc.numberFormatter(n).format(e)}formatDateTimeFromString(e,t){const n="en"===this.loc.listingMode(),s=this.loc.outputCalendar&&"gregory"!==this.loc.outputCalendar,r=(t,n)=>this.loc.extract(e,t,n),a=t=>e.isOffsetFixed&&0===e.offset&&t.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,t.format):"",i=()=>n?function(e){return yt[e.hour<12?0:1]}(e):r({hour:"numeric",hourCycle:"h12"},"dayperiod"),o=(t,s)=>n?function(e,t){return dt(t)[e.month-1]}(e,t):r(s?{month:t}:{month:t,day:"numeric"},"month"),l=(t,s)=>n?function(e,t){return gt(t)[e.weekday-1]}(e,t):r(s?{weekday:t}:{weekday:t,month:"long",day:"numeric"},"weekday"),c=t=>{const n=Ct.macroTokenToFormatOpts(t);return n?this.formatWithSystemDefault(e,n):t},u=t=>n?function(e,t){return St(t)[e.year<0?0:1]}(e,t):r({era:t},"era");return bt(Ct.parseFormat(t),(t=>{switch(t){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12==0?12:e.hour%12);case"hh":return this.num(e.hour%12==0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return a({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return a({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return a({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return i();case"d":return s?r({day:"numeric"},"day"):this.num(e.day);case"dd":return s?r({day:"2-digit"},"day"):this.num(e.day,2);case"c":case"E":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return s?r({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return s?r({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return o("short",!0);case"LLLL":return o("long",!0);case"LLLLL":return o("narrow",!0);case"M":return s?r({month:"numeric"},"month"):this.num(e.month);case"MM":return s?r({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return o("short",!1);case"MMMM":return o("long",!1);case"MMMMM":return o("narrow",!1);case"y":return s?r({year:"numeric"},"year"):this.num(e.year);case"yy":return s?r({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return s?r({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return s?r({year:"numeric"},"year"):this.num(e.year,6);case"G":return u("short");case"GG":return u("long");case"GGGGG":return u("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"n":return this.num(e.localWeekNumber);case"nn":return this.num(e.localWeekNumber,2);case"ii":return this.num(e.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(e.localWeekYear,4);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return c(t)}}))}formatDurationFromString(e,t){const n=e=>{switch(e[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},s=Ct.parseFormat(t),r=s.reduce(((e,{literal:t,val:n})=>t?e:e.concat(n)),[]);return bt(s,(e=>t=>{const s=n(t);return s?this.num(e.get(s),t.length):t})(e.shiftTo(...r.map(n).filter((e=>e)))))}}const Tt=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function xt(...e){const t=e.reduce(((e,t)=>e+t.source),"");return RegExp(`^${t}$`)}function Lt(...e){return t=>e.reduce((([e,n,s],r)=>{const[a,i,o]=r(t,s);return[{...e,...a},i||n,o]}),[{},null,1]).slice(0,2)}function Dt(e,...t){if(null==e)return[null,null];for(const[n,s]of t){const t=n.exec(e);if(t)return s(t)}return[null,null]}function Mt(...e){return(t,n)=>{const s={};let r;for(r=0;rvoid 0!==e&&(t||e&&u)?-e:e;return[{years:h(je(n)),months:h(je(s)),weeks:h(je(r)),days:h(je(a)),hours:h(je(i)),minutes:h(je(o)),seconds:h(je(l),"-0"===l),milliseconds:h(Be(c),d)}]}const Rt={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Ut(e,t,n,s,r,a,i){const o={year:2===t.length?tt(Ue(t)):Ue(t),month:ct.indexOf(n)+1,day:Ue(s),hour:Ue(r),minute:Ue(a)};return i&&(o.second=Ue(i)),e&&(o.weekday=e.length>3?ht.indexOf(e)+1:mt.indexOf(e)+1),o}const jt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function Bt(e){const[,t,n,s,r,a,i,o,l,c,u,d]=e,h=Ut(t,r,s,n,a,i,o);let m;return m=l?Rt[l]:c?0:st(u,d),[h,new se(m)]}const Jt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,Gt=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,Yt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function Kt(e){const[,t,n,s,r,a,i,o]=e;return[Ut(t,r,s,n,a,i,o),se.utcInstance]}function Qt(e){const[,t,n,s,r,a,i,o]=e;return[Ut(t,o,n,s,r,a,i),se.utcInstance]}const Xt=xt(/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,Et),en=xt(/(\d{4})-?W(\d\d)(?:-?(\d))?/,Et),tn=xt(/(\d{4})-?(\d{3})/,Et),nn=xt(Ot),sn=Lt((function(e,t){return[{year:At(e,t),month:At(e,t+1,1),day:At(e,t+2,1)},null,t+3]}),Vt,_t,Pt),rn=Lt($t,Vt,_t,Pt),an=Lt(Ft,Vt,_t,Pt),on=Lt(Vt,_t,Pt);const ln=Lt(Vt);const cn=xt(/(\d{4})-(\d\d)-(\d\d)/,Wt),un=xt(qt),dn=Lt(Vt,_t,Pt);const hn="Invalid Duration",mn={weeks:{days:7,hours:168,minutes:10080,seconds:604800,milliseconds:6048e5},days:{hours:24,minutes:1440,seconds:86400,milliseconds:864e5},hours:{minutes:60,seconds:3600,milliseconds:36e5},minutes:{seconds:60,milliseconds:6e4},seconds:{milliseconds:1e3}},fn={years:{quarters:4,months:12,weeks:52,days:365,hours:8760,minutes:525600,seconds:31536e3,milliseconds:31536e6},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:131040,seconds:7862400,milliseconds:78624e5},months:{weeks:4,days:30,hours:720,minutes:43200,seconds:2592e3,milliseconds:2592e6},...mn},gn=365.2425,yn=30.436875,pn={years:{quarters:4,months:12,weeks:52.1775,days:gn,hours:8765.82,minutes:525949.2,seconds:525949.2*60,milliseconds:525949.2*60*1e3},quarters:{months:3,weeks:13.044375,days:91.310625,hours:2191.455,minutes:131487.3,seconds:525949.2*60/4,milliseconds:7889237999.999999},months:{weeks:4.3481250000000005,days:yn,hours:730.485,minutes:43829.1,seconds:2629746,milliseconds:2629746e3},...mn},wn=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],vn=wn.slice(0).reverse();function Sn(e,t,n=!1){const s={values:n?t.values:{...e.values,...t.values||{}},loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy,matrix:t.matrix||e.matrix};return new Cn(s)}function bn(e,t){let n=t.milliseconds??0;for(const s of vn.slice(1))t[s]&&(n+=t[s]*e[s].milliseconds);return n}function kn(e,t){const n=bn(e,t)<0?-1:1;wn.reduceRight(((s,r)=>{if(qe(t[r]))return s;if(s){const a=t[s]*n,i=e[r][s],o=Math.floor(a/i);t[r]+=o*n,t[s]-=o*i*n}return r}),null),wn.reduce(((n,s)=>{if(qe(t[s]))return n;if(n){const r=t[n]%1;t[n]-=r,t[s]+=r*e[n][s]}return s}),null)}class Cn{constructor(e){const t="longterm"===e.conversionAccuracy||!1;let n=t?pn:fn;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||te.create(),this.conversionAccuracy=t?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(e,t){return Cn.fromObject({milliseconds:e},t)}static fromObject(e,t={}){if(null==e||"object"!=typeof e)throw new c("Duration.fromObject: argument expected to be an object, got "+(null===e?"null":typeof e));return new Cn({values:at(e,Cn.normalizeUnit),loc:te.fromObject(t),conversionAccuracy:t.conversionAccuracy,matrix:t.matrix})}static fromDurationLike(e){if(We(e))return Cn.fromMillis(e);if(Cn.isDuration(e))return e;if("object"==typeof e)return Cn.fromObject(e);throw new c(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,t){const[n]=function(e){return Dt(e,[zt,Zt])}(e);return n?Cn.fromObject(n,t):Cn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,t){const[n]=function(e){return Dt(e,[Ht,ln])}(e);return n?Cn.fromObject(n,t):Cn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the Duration is invalid");const n=e instanceof Se?e:new Se(e,t);if(ve.throwOnInvalid)throw new i(n);return new Cn({invalid:n})}static normalizeUnit(e){const t={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e?e.toLowerCase():e];if(!t)throw new l(e);return t}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,t={}){const n={...t,floor:!1!==t.round&&!1!==t.floor};return this.isValid?Ct.create(this.loc,n).formatDurationFromString(this,e):hn}toHuman(e={}){if(!this.isValid)return hn;const t=wn.map((t=>{const n=this.values[t];return qe(n)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:t.slice(0,-1)}).format(n)})).filter((e=>e));return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(t)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return 0!==this.years&&(e+=this.years+"Y"),0===this.months&&0===this.quarters||(e+=this.months+3*this.quarters+"M"),0!==this.weeks&&(e+=this.weeks+"W"),0!==this.days&&(e+=this.days+"D"),0===this.hours&&0===this.minutes&&0===this.seconds&&0===this.milliseconds||(e+="T"),0!==this.hours&&(e+=this.hours+"H"),0!==this.minutes&&(e+=this.minutes+"M"),0===this.seconds&&0===this.milliseconds||(e+=Je(this.seconds+this.milliseconds/1e3,3)+"S"),"P"===e&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const t=this.toMillis();if(t<0||t>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1};return gs.fromMillis(t,{zone:"UTC"}).toISOTime(e)}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?bn(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const t=Cn.fromDurationLike(e),n={};for(const e of wn)(He(t.values,e)||He(this.values,e))&&(n[e]=t.get(e)+this.get(e));return Sn(this,{values:n},!0)}minus(e){if(!this.isValid)return this;const t=Cn.fromDurationLike(e);return this.plus(t.negate())}mapUnits(e){if(!this.isValid)return this;const t={};for(const n of Object.keys(this.values))t[n]=rt(e(this.values[n],n));return Sn(this,{values:t},!0)}get(e){return this[Cn.normalizeUnit(e)]}set(e){if(!this.isValid)return this;return Sn(this,{values:{...this.values,...at(e,Cn.normalizeUnit)}})}reconfigure({locale:e,numberingSystem:t,conversionAccuracy:n,matrix:s}={}){return Sn(this,{loc:this.loc.clone({locale:e,numberingSystem:t}),matrix:s,conversionAccuracy:n})}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return kn(this.matrix,e),Sn(this,{values:e},!0)}rescale(){if(!this.isValid)return this;return Sn(this,{values:function(e){const t={};for(const[n,s]of Object.entries(e))0!==s&&(t[n]=s);return t}(this.normalize().shiftToAll().toObject())},!0)}shiftTo(...e){if(!this.isValid)return this;if(0===e.length)return this;e=e.map((e=>Cn.normalizeUnit(e)));const t={},n={},s=this.toObject();let r;for(const a of wn)if(e.indexOf(a)>=0){r=a;let e=0;for(const t in n)e+=this.matrix[t][a]*n[t],n[t]=0;We(s[a])&&(e+=s[a]);const i=Math.trunc(e);t[a]=i,n[a]=(1e3*e-1e3*i)/1e3}else We(s[a])&&(n[a]=s[a]);for(const e in n)0!==n[e]&&(t[r]+=e===r?n[e]:n[e]/this.matrix[r][e]);return kn(this.matrix,t),Sn(this,{values:t},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;const e={};for(const t of Object.keys(this.values))e[t]=0===this.values[t]?0:-this.values[t];return Sn(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return null===this.invalid}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid)return!1;if(!this.loc.equals(e.loc))return!1;for(const s of wn)if(t=this.values[s],n=e.values[s],!(void 0===t||0===t?void 0===n||0===n:t===n))return!1;var t,n;return!0}}const Tn="Invalid Interval";class xn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the Interval is invalid");const n=e instanceof Se?e:new Se(e,t);if(ve.throwOnInvalid)throw new a(n);return new xn({invalid:n})}static fromDateTimes(e,t){const n=ys(e),s=ys(t),r=function(e,t){return e&&e.isValid?t&&t.isValid?te}isBefore(e){return!!this.isValid&&this.e<=e}contains(e){return!!this.isValid&&(this.s<=e&&this.e>e)}set({start:e,end:t}={}){return this.isValid?xn.fromDateTimes(e||this.s,t||this.e):this}splitAt(...e){if(!this.isValid)return[];const t=e.map(ys).filter((e=>this.contains(e))).sort(((e,t)=>e.toMillis()-t.toMillis())),n=[];let{s}=this,r=0;for(;s+this.e?this.e:e;n.push(xn.fromDateTimes(s,a)),s=a,r+=1}return n}splitBy(e){const t=Cn.fromDurationLike(e);if(!this.isValid||!t.isValid||0===t.as("milliseconds"))return[];let n,{s}=this,r=1;const a=[];for(;se*r)));n=+e>+this.e?this.e:e,a.push(xn.fromDateTimes(s,n)),s=n,r+=1}return a}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s=e.e)}equals(e){return!(!this.isValid||!e.isValid)&&(this.s.equals(e.s)&&this.e.equals(e.e))}intersection(e){if(!this.isValid)return this;const t=this.s>e.s?this.s:e.s,n=this.e=n?null:xn.fromDateTimes(t,n)}union(e){if(!this.isValid)return this;const t=this.se.e?this.e:e.e;return xn.fromDateTimes(t,n)}static merge(e){const[t,n]=e.sort(((e,t)=>e.s-t.s)).reduce((([e,t],n)=>t?t.overlaps(n)||t.abutsStart(n)?[e,t.union(n)]:[e.concat([t]),n]:[e,n]),[[],null]);return n&&t.push(n),t}static xor(e){let t=null,n=0;const s=[],r=e.map((e=>[{time:e.s,type:"s"},{time:e.e,type:"e"}])),a=Array.prototype.concat(...r).sort(((e,t)=>e.time-t.time));for(const e of a)n+="s"===e.type?1:-1,1===n?t=e.time:(t&&+t!=+e.time&&s.push(xn.fromDateTimes(t,e.time)),t=null);return xn.merge(s)}difference(...e){return xn.xor([this].concat(e)).map((e=>this.intersection(e))).filter((e=>e&&!e.isEmpty()))}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:Tn}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=f,t={}){return this.isValid?Ct.create(this.s.loc.clone(t),e).formatInterval(this):Tn}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Tn}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Tn}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Tn}toFormat(e,{separator:t=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:Tn}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):Cn.invalid(this.invalidReason)}mapEndpoints(e){return xn.fromDateTimes(e(this.s),e(this.e))}}class Ln{static hasDST(e=ve.defaultZone){const t=gs.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return z.isValidZone(e)}static normalizeZone(e){return ae(e,ve.defaultZone)}static getStartOfWeek({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getWeekendDays().slice()}static months(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null,outputCalendar:r="gregory"}={}){return(s||te.create(t,n,r)).months(e)}static monthsFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null,outputCalendar:r="gregory"}={}){return(s||te.create(t,n,r)).months(e,!0)}static weekdays(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null}={}){return(s||te.create(t,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null}={}){return(s||te.create(t,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return te.create(e).meridiems()}static eras(e="short",{locale:t=null}={}){return te.create(t,null,"gregory").eras(e)}static features(){return{relative:Ve(),localeWeek:_e()}}}function Dn(e,t){const n=e=>e.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),s=n(t)-n(e);return Math.floor(Cn.fromMillis(s).as("days"))}function Mn(e,t,n,s){let[r,a,i,o]=function(e,t,n){const s=[["years",(e,t)=>t.year-e.year],["quarters",(e,t)=>t.quarter-e.quarter+4*(t.year-e.year)],["months",(e,t)=>t.month-e.month+12*(t.year-e.year)],["weeks",(e,t)=>{const n=Dn(e,t);return(n-n%7)/7}],["days",Dn]],r={},a=e;let i,o;for(const[l,c]of s)n.indexOf(l)>=0&&(i=l,r[l]=c(e,t),o=a.plus(r),o>t?(r[l]--,(e=a.plus(r))>t&&(o=e,r[l]--,e=a.plus(r))):e=o);return[e,r,o,i]}(e,t,n);const l=t-r,c=n.filter((e=>["hours","minutes","seconds","milliseconds"].indexOf(e)>=0));0===c.length&&(i0?Cn.fromMillis(l,s).shiftTo(...c).plus(u):u}function In(e,t=e=>e){return{regex:e,deser:([e])=>t(function(e){let t=parseInt(e,10);if(isNaN(t)){t="";for(let n=0;n=n&&s<=r&&(t+=s-n)}}return parseInt(t,10)}return t}(e))}}const Nn=`[ ${String.fromCharCode(160)}]`,On=new RegExp(Nn,"g");function En(e){return e.replace(/\./g,"\\.?").replace(On,Nn)}function $n(e){return e.replace(/\./g,"").replace(On," ").toLowerCase()}function Fn(e,t){return null===e?null:{regex:RegExp(e.map(En).join("|")),deser:([n])=>e.findIndex((e=>$n(n)===$n(e)))+t}}function qn(e,t){return{regex:e,deser:([,e,t])=>st(e,t),groups:t}}function Wn(e){return{regex:e,deser:([e])=>e}}const An={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};let Vn=null;function _n(e,t){return Array.prototype.concat(...e.map((e=>function(e,t){if(e.literal)return e;const n=zn(Ct.macroTokenToFormatOpts(e.val),t);return null==n||n.includes(void 0)?e:n}(e,t))))}class Pn{constructor(e,t){if(this.locale=e,this.format=t,this.tokens=_n(Ct.parseFormat(t),e),this.units=this.tokens.map((t=>function(e,t){const n=ue(t),s=ue(t,"{2}"),r=ue(t,"{3}"),a=ue(t,"{4}"),i=ue(t,"{6}"),o=ue(t,"{1,2}"),l=ue(t,"{1,3}"),c=ue(t,"{1,6}"),u=ue(t,"{1,9}"),d=ue(t,"{2,4}"),h=ue(t,"{4,6}"),m=e=>{return{regex:RegExp((t=e.val,t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"))),deser:([e])=>e,literal:!0};var t},f=(f=>{if(e.literal)return m(f);switch(f.val){case"G":return Fn(t.eras("short"),0);case"GG":return Fn(t.eras("long"),0);case"y":return In(c);case"yy":case"kk":return In(d,tt);case"yyyy":case"kkkk":return In(a);case"yyyyy":return In(h);case"yyyyyy":return In(i);case"M":case"L":case"d":case"H":case"h":case"m":case"q":case"s":case"W":return In(o);case"MM":case"LL":case"dd":case"HH":case"hh":case"mm":case"qq":case"ss":case"WW":return In(s);case"MMM":return Fn(t.months("short",!0),1);case"MMMM":return Fn(t.months("long",!0),1);case"LLL":return Fn(t.months("short",!1),1);case"LLLL":return Fn(t.months("long",!1),1);case"o":case"S":return In(l);case"ooo":case"SSS":return In(r);case"u":return Wn(u);case"uu":return Wn(o);case"uuu":case"E":case"c":return In(n);case"a":return Fn(t.meridiems(),0);case"EEE":return Fn(t.weekdays("short",!1),1);case"EEEE":return Fn(t.weekdays("long",!1),1);case"ccc":return Fn(t.weekdays("short",!0),1);case"cccc":return Fn(t.weekdays("long",!0),1);case"Z":case"ZZ":return qn(new RegExp(`([+-]${o.source})(?::(${s.source}))?`),2);case"ZZZ":return qn(new RegExp(`([+-]${o.source})(${s.source})?`),2);case"z":return Wn(/[a-z_+-/]{1,256}?/i);case" ":return Wn(/[^\S\n\r]/);default:return m(f)}})(e)||{invalidReason:"missing Intl.DateTimeFormat.formatToParts support"};return f.token=e,f}(t,e))),this.disqualifyingUnit=this.units.find((e=>e.invalidReason)),!this.disqualifyingUnit){const[e,t]=[`^${(n=this.units).map((e=>e.regex)).reduce(((e,t)=>`${e}(${t.source})`),"")}$`,n];this.regex=RegExp(e,"i"),this.handlers=t}var n}explainFromTokens(e){if(this.isValid){const[t,n]=function(e,t,n){const s=e.match(t);if(s){const e={};let t=1;for(const r in n)if(He(n,r)){const a=n[r],i=a.groups?a.groups+1:1;!a.literal&&a.token&&(e[a.token.val[0]]=a.deser(s.slice(t,t+i))),t+=i}return[s,e]}return[s,{}]}(e,this.regex,this.handlers),[s,r,a]=n?function(e){let t,n=null;return qe(e.z)||(n=z.create(e.z)),qe(e.Z)||(n||(n=new se(e.Z)),t=e.Z),qe(e.q)||(e.M=3*(e.q-1)+1),qe(e.h)||(e.h<12&&1===e.a?e.h+=12:12===e.h&&0===e.a&&(e.h=0)),0===e.G&&e.y&&(e.y=-e.y),qe(e.u)||(e.S=Be(e.u)),[Object.keys(e).reduce(((t,n)=>{const s=(e=>{switch(e){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}})(n);return s&&(t[s]=e[n]),t}),{}),n,t]}(n):[null,null,void 0];if(He(n,"a")&&He(n,"H"))throw new o("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:this.tokens,regex:this.regex,rawMatches:t,matches:n,result:s,zone:r,specificOffset:a}}return{input:e,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}}function Hn(e,t,n){return new Pn(e,n).explainFromTokens(t)}function zn(e,t){if(!e)return null;const n=Ct.create(t,e).dtFormatter((Vn||(Vn=gs.fromMillis(1555555555555)),Vn)),s=n.formatToParts(),r=n.resolvedOptions();return s.map((t=>function(e,t,n){const{type:s,value:r}=e;if("literal"===s){const e=/^\s+$/.test(r);return{literal:!e,val:e?" ":r}}const a=t[s];let i=s;"hour"===s&&(i=null!=t.hour12?t.hour12?"hour12":"hour24":null!=t.hourCycle?"h11"===t.hourCycle||"h12"===t.hourCycle?"hour12":"hour24":n.hour12?"hour12":"hour24");let o=An[i];if("object"==typeof o&&(o=o[a]),o)return{literal:!1,val:o}}(t,e,r)))}const Zn="Invalid DateTime",Rn=864e13;function Un(e){return new Se("unsupported zone",`the zone "${e.name}" is not supported`)}function jn(e){return null===e.weekData&&(e.weekData=Me(e.c)),e.weekData}function Bn(e){return null===e.localWeekData&&(e.localWeekData=Me(e.c,e.loc.getMinDaysInFirstWeek(),e.loc.getStartOfWeek())),e.localWeekData}function Jn(e,t){const n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new gs({...n,...t,old:n})}function Gn(e,t,n){let s=e-60*t*1e3;const r=n.offset(s);if(t===r)return[s,t];s-=60*(r-t)*1e3;const a=n.offset(s);return r===a?[s,r]:[e-60*Math.min(r,a)*1e3,Math.max(r,a)]}function Yn(e,t){const n=new Date(e+=60*t*1e3);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function Kn(e,t,n){return Gn(Qe(e),t,n)}function Qn(e,t){const n=e.o,s=e.c.year+Math.trunc(t.years),r=e.c.month+Math.trunc(t.months)+3*Math.trunc(t.quarters),a={...e.c,year:s,month:r,day:Math.min(e.c.day,Ke(s,r))+Math.trunc(t.days)+7*Math.trunc(t.weeks)},i=Cn.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as("milliseconds"),o=Qe(a);let[l,c]=Gn(o,n,e.zone);return 0!==i&&(l+=i,c=e.zone.offset(l)),{ts:l,o:c}}function Xn(e,t,n,s,r,a){const{setZone:i,zone:o}=n;if(e&&0!==Object.keys(e).length||t){const s=t||o,r=gs.fromObject(e,{...n,zone:s,specificOffset:a});return i?r:r.setZone(o)}return gs.invalid(new Se("unparsable",`the input "${r}" can't be parsed as ${s}`))}function es(e,t,n=!0){return e.isValid?Ct.create(te.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function ts(e,t){const n=e.c.year>9999||e.c.year<0;let s="";return n&&e.c.year>=0&&(s+="+"),s+=Re(e.c.year,n?6:4),t?(s+="-",s+=Re(e.c.month),s+="-",s+=Re(e.c.day)):(s+=Re(e.c.month),s+=Re(e.c.day)),s}function ns(e,t,n,s,r,a){let i=Re(e.c.hour);return t?(i+=":",i+=Re(e.c.minute),0===e.c.millisecond&&0===e.c.second&&n||(i+=":")):i+=Re(e.c.minute),0===e.c.millisecond&&0===e.c.second&&n||(i+=Re(e.c.second),0===e.c.millisecond&&s||(i+=".",i+=Re(e.c.millisecond,3))),r&&(e.isOffsetFixed&&0===e.offset&&!a?i+="Z":e.o<0?(i+="-",i+=Re(Math.trunc(-e.o/60)),i+=":",i+=Re(Math.trunc(-e.o%60))):(i+="+",i+=Re(Math.trunc(e.o/60)),i+=":",i+=Re(Math.trunc(e.o%60)))),a&&(i+="["+e.zone.ianaName+"]"),i}const ss={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},rs={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},as={ordinal:1,hour:0,minute:0,second:0,millisecond:0},is=["year","month","day","hour","minute","second","millisecond"],os=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],ls=["year","ordinal","hour","minute","second","millisecond"];function cs(e){switch(e.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return function(e){const t={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[e.toLowerCase()];if(!t)throw new l(e);return t}(e)}}function us(e,t){const n=ae(t.zone,ve.defaultZone);if(!n.isValid)return gs.invalid(Un(n));const s=te.fromObject(t);let r,a;if(qe(e.year))r=ve.now();else{for(const t of is)qe(e[t])&&(e[t]=ss[t]);const t=$e(e)||Fe(e);if(t)return gs.invalid(t);const s=function(e){return fs[e]||(void 0===ms&&(ms=ve.now()),fs[e]=e.offset(ms)),fs[e]}(n);[r,a]=Kn(e,s,n)}return new gs({ts:r,zone:n,loc:s,o:a})}function ds(e,t,n){const s=!!qe(n.round)||n.round,r=(e,r)=>{e=Je(e,s||n.calendary?0:2,!0);return t.loc.clone(n).relFormatter(n).format(e,r)},a=s=>n.calendary?t.hasSame(e,s)?0:t.startOf(s).diff(e.startOf(s),s).get(s):t.diff(e,s).get(s);if(n.unit)return r(a(n.unit),n.unit);for(const e of n.units){const t=a(e);if(Math.abs(t)>=1)return r(t,e)}return r(e>t?-0:0,n.units[n.units.length-1])}function hs(e){let t,n={};return e.length>0&&"object"==typeof e[e.length-1]?(n=e[e.length-1],t=Array.from(e).slice(0,e.length-1)):t=Array.from(e),[n,t]}let ms,fs={};class gs{constructor(e){const t=e.zone||ve.defaultZone;let n=e.invalid||(Number.isNaN(e.ts)?new Se("invalid input"):null)||(t.isValid?null:Un(t));this.ts=qe(e.ts)?ve.now():e.ts;let s=null,r=null;if(!n){if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t))[s,r]=[e.old.c,e.old.o];else{const a=We(e.o)&&!e.old?e.o:t.offset(this.ts);s=Yn(this.ts,a),n=Number.isNaN(s.year)?new Se("invalid input"):null,s=n?null:s,r=n?null:a}}this._zone=t,this.loc=e.loc||te.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=s,this.o=r,this.isLuxonDateTime=!0}static now(){return new gs({})}static local(){const[e,t]=hs(arguments),[n,s,r,a,i,o,l]=t;return us({year:n,month:s,day:r,hour:a,minute:i,second:o,millisecond:l},e)}static utc(){const[e,t]=hs(arguments),[n,s,r,a,i,o,l]=t;return e.zone=se.utcInstance,us({year:n,month:s,day:r,hour:a,minute:i,second:o,millisecond:l},e)}static fromJSDate(e,t={}){const n=(s=e,"[object Date]"===Object.prototype.toString.call(s)?e.valueOf():NaN);var s;if(Number.isNaN(n))return gs.invalid("invalid input");const r=ae(t.zone,ve.defaultZone);return r.isValid?new gs({ts:n,zone:r,loc:te.fromObject(t)}):gs.invalid(Un(r))}static fromMillis(e,t={}){if(We(e))return e<-Rn||e>Rn?gs.invalid("Timestamp out of range"):new gs({ts:e,zone:ae(t.zone,ve.defaultZone),loc:te.fromObject(t)});throw new c(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,t={}){if(We(e))return new gs({ts:1e3*e,zone:ae(t.zone,ve.defaultZone),loc:te.fromObject(t)});throw new c("fromSeconds requires a numerical input")}static fromObject(e,t={}){e=e||{};const n=ae(t.zone,ve.defaultZone);if(!n.isValid)return gs.invalid(Un(n));const s=te.fromObject(t),r=at(e,cs),{minDaysInFirstWeek:a,startOfWeek:i}=Ee(r,s),l=ve.now(),c=qe(t.specificOffset)?n.offset(l):t.specificOffset,u=!qe(r.ordinal),d=!qe(r.year),h=!qe(r.month)||!qe(r.day),m=d||h,f=r.weekYear||r.weekNumber;if((m||u)&&f)throw new o("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(h&&u)throw new o("Can't mix ordinal dates with month/day");const g=f||r.weekday&&!m;let y,p,w=Yn(l,c);g?(y=os,p=rs,w=Me(w,a,i)):u?(y=ls,p=as,w=Ne(w)):(y=is,p=ss);let v=!1;for(const e of y){qe(r[e])?r[e]=v?p[e]:w[e]:v=!0}const S=g?function(e,t=4,n=1){const s=Ae(e.weekYear),r=Ze(e.weekNumber,1,et(e.weekYear,t,n)),a=Ze(e.weekday,1,7);return s?r?!a&&Ce("weekday",e.weekday):Ce("week",e.weekNumber):Ce("weekYear",e.weekYear)}(r,a,i):u?function(e){const t=Ae(e.year),n=Ze(e.ordinal,1,Ye(e.year));return t?!n&&Ce("ordinal",e.ordinal):Ce("year",e.year)}(r):$e(r),b=S||Fe(r);if(b)return gs.invalid(b);const k=g?Ie(r,a,i):u?Oe(r):r,[C,T]=Kn(k,c,n),x=new gs({ts:C,zone:n,o:T,loc:s});return r.weekday&&m&&e.weekday!==x.weekday?gs.invalid("mismatched weekday",`you can't specify both a weekday of ${r.weekday} and a date of ${x.toISO()}`):x.isValid?x:gs.invalid(x.invalid)}static fromISO(e,t={}){const[n,s]=function(e){return Dt(e,[Xt,sn],[en,rn],[tn,an],[nn,on])}(e);return Xn(n,s,t,"ISO 8601",e)}static fromRFC2822(e,t={}){const[n,s]=function(e){return Dt(function(e){return e.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}(e),[jt,Bt])}(e);return Xn(n,s,t,"RFC 2822",e)}static fromHTTP(e,t={}){const[n,s]=function(e){return Dt(e,[Jt,Kt],[Gt,Kt],[Yt,Qt])}(e);return Xn(n,s,t,"HTTP",t)}static fromFormat(e,t,n={}){if(qe(e)||qe(t))throw new c("fromFormat requires an input string and a format");const{locale:s=null,numberingSystem:r=null}=n,a=te.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0}),[i,o,l,u]=function(e,t,n){const{result:s,zone:r,specificOffset:a,invalidReason:i}=Hn(e,t,n);return[s,r,a,i]}(a,e,t);return u?gs.invalid(u):Xn(i,o,n,`format ${t}`,e,l)}static fromString(e,t,n={}){return gs.fromFormat(e,t,n)}static fromSQL(e,t={}){const[n,s]=function(e){return Dt(e,[cn,sn],[un,dn])}(e);return Xn(n,s,t,"SQL",e)}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the DateTime is invalid");const n=e instanceof Se?e:new Se(e,t);if(ve.throwOnInvalid)throw new r(n);return new gs({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,t={}){const n=zn(e,te.fromObject(t));return n?n.map((e=>e?e.val:null)).join(""):null}static expandFormat(e,t={}){return _n(Ct.parseFormat(e),te.fromObject(t)).map((e=>e.val)).join("")}static resetCache(){ms=void 0,fs={}}get(e){return this[e]}get isValid(){return null===this.invalid}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?jn(this).weekYear:NaN}get weekNumber(){return this.isValid?jn(this).weekNumber:NaN}get weekday(){return this.isValid?jn(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?Bn(this).weekday:NaN}get localWeekNumber(){return this.isValid?Bn(this).weekNumber:NaN}get localWeekYear(){return this.isValid?Bn(this).weekYear:NaN}get ordinal(){return this.isValid?Ne(this.c).ordinal:NaN}get monthShort(){return this.isValid?Ln.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Ln.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Ln.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Ln.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return!this.isOffsetFixed&&(this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset)}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];const e=864e5,t=6e4,n=Qe(this.c),s=this.zone.offset(n-e),r=this.zone.offset(n+e),a=this.zone.offset(n-s*t),i=this.zone.offset(n-r*t);if(a===i)return[this];const o=n-a*t,l=n-i*t,c=Yn(o,a),u=Yn(l,i);return c.hour===u.hour&&c.minute===u.minute&&c.second===u.second&&c.millisecond===u.millisecond?[Jn(this,{ts:o}),Jn(this,{ts:l})]:[this]}get isInLeapYear(){return Ge(this.year)}get daysInMonth(){return Ke(this.year,this.month)}get daysInYear(){return this.isValid?Ye(this.year):NaN}get weeksInWeekYear(){return this.isValid?et(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?et(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){const{locale:t,numberingSystem:n,calendar:s}=Ct.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:n,outputCalendar:s}}toUTC(e=0,t={}){return this.setZone(se.instance(e),t)}toLocal(){return this.setZone(ve.defaultZone)}setZone(e,{keepLocalTime:t=!1,keepCalendarTime:n=!1}={}){if((e=ae(e,ve.defaultZone)).equals(this.zone))return this;if(e.isValid){let s=this.ts;if(t||n){const t=e.offset(this.ts),n=this.toObject();[s]=Kn(n,t,e)}return Jn(this,{ts:s,zone:e})}return gs.invalid(Un(e))}reconfigure({locale:e,numberingSystem:t,outputCalendar:n}={}){return Jn(this,{loc:this.loc.clone({locale:e,numberingSystem:t,outputCalendar:n})})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const t=at(e,cs),{minDaysInFirstWeek:n,startOfWeek:s}=Ee(t,this.loc),r=!qe(t.weekYear)||!qe(t.weekNumber)||!qe(t.weekday),a=!qe(t.ordinal),i=!qe(t.year),l=!qe(t.month)||!qe(t.day),c=i||l,u=t.weekYear||t.weekNumber;if((c||a)&&u)throw new o("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&a)throw new o("Can't mix ordinal dates with month/day");let d;r?d=Ie({...Me(this.c,n,s),...t},n,s):qe(t.ordinal)?(d={...this.toObject(),...t},qe(t.day)&&(d.day=Math.min(Ke(d.year,d.month),d.day))):d=Oe({...Ne(this.c),...t});const[h,m]=Kn(d,this.o,this.zone);return Jn(this,{ts:h,o:m})}plus(e){if(!this.isValid)return this;return Jn(this,Qn(this,Cn.fromDurationLike(e)))}minus(e){if(!this.isValid)return this;return Jn(this,Qn(this,Cn.fromDurationLike(e).negate()))}startOf(e,{useLocaleWeeks:t=!1}={}){if(!this.isValid)return this;const n={},s=Cn.normalizeUnit(e);switch(s){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0}if("weeks"===s)if(t){const e=this.loc.getStartOfWeek(),{weekday:t}=this;tthis.valueOf(),i=Mn(a?this:e,a?e:this,r,s);var o;return a?i.negate():i}diffNow(e="milliseconds",t={}){return this.diff(gs.now(),e,t)}until(e){return this.isValid?xn.fromDateTimes(this,e):this}hasSame(e,t,n){if(!this.isValid)return!1;const s=e.valueOf(),r=this.setZone(e.zone,{keepLocalTime:!0});return r.startOf(t,n)<=s&&s<=r.endOf(t,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const t=e.base||gs.fromObject({},{zone:this.zone}),n=e.padding?thise.valueOf()),Math.min)}static max(...e){if(!e.every(gs.isDateTime))throw new c("max requires all arguments be DateTimes");return Pe(e,(e=>e.valueOf()),Math.max)}static fromFormatExplain(e,t,n={}){const{locale:s=null,numberingSystem:r=null}=n;return Hn(te.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0}),e,t)}static fromStringExplain(e,t,n={}){return gs.fromFormatExplain(e,t,n)}static buildFormatParser(e,t={}){const{locale:n=null,numberingSystem:s=null}=t,r=te.fromOpts({locale:n,numberingSystem:s,defaultToEN:!0});return new Pn(r,e)}static fromFormatParser(e,t,n={}){if(qe(e)||qe(t))throw new c("fromFormatParser requires an input string and a format parser");const{locale:s=null,numberingSystem:r=null}=n,a=te.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0});if(!a.equals(t.locale))throw new c(`fromFormatParser called with a locale of ${a}, but the format parser was created for ${t.locale}`);const{result:i,zone:o,specificOffset:l,invalidReason:u}=t.explainFromTokens(e);return u?gs.invalid(u):Xn(i,o,n,`format ${t.format}`,e,l)}static get DATE_SHORT(){return f}static get DATE_MED(){return g}static get DATE_MED_WITH_WEEKDAY(){return y}static get DATE_FULL(){return p}static get DATE_HUGE(){return w}static get TIME_SIMPLE(){return v}static get TIME_WITH_SECONDS(){return S}static get TIME_WITH_SHORT_OFFSET(){return b}static get TIME_WITH_LONG_OFFSET(){return k}static get TIME_24_SIMPLE(){return C}static get TIME_24_WITH_SECONDS(){return T}static get TIME_24_WITH_SHORT_OFFSET(){return x}static get TIME_24_WITH_LONG_OFFSET(){return L}static get DATETIME_SHORT(){return D}static get DATETIME_SHORT_WITH_SECONDS(){return M}static get DATETIME_MED(){return I}static get DATETIME_MED_WITH_SECONDS(){return N}static get DATETIME_MED_WITH_WEEKDAY(){return O}static get DATETIME_FULL(){return E}static get DATETIME_FULL_WITH_SECONDS(){return $}static get DATETIME_HUGE(){return F}static get DATETIME_HUGE_WITH_SECONDS(){return q}}function ys(e){if(gs.isDateTime(e))return e;if(e&&e.valueOf&&We(e.valueOf()))return gs.fromJSDate(e);if(e&&"object"==typeof e)return gs.fromObject(e);throw new c(`Unknown datetime argument: ${e}, of type ${typeof e}`)}}},t={};function n(s){var r=t[s];if(void 0!==r)return r.exports;var a=t[s]={exports:{}};return e[s](a,a.exports,n),a.exports}n.d=(e,t)=>{for(var s in t)n.o(t,s)&&!n.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n(516),n(749),n(423),n(247),n(716),n(498),n(73),n(2),n(94),n(704),n(503),n(187),n(709),n(951);n(652)})(); \ No newline at end of file +(()=>{"use strict";var e={652:(e,t,n)=>{var s=n(440),r=n(430),a=n(211),i=n(413),o=n(999),l=n(302);document.addEventListener("DOMContentLoaded",(()=>{m()}));const c=["Land Features","Bay","Channel","Cove","Dam","Delta","Gulf","Lagoon","Lake","Ocean","Reef","Reservoir","Sea","Sound","Strait","Waterfall","Wharf","Amusement Park","Historical Monument","Landmark","Tourist Attraction","Zoo","College","Beach","Campground","Golf Course","Harbor","Nature Reserve","Other Parks and Outdoors","Park","Racetrack","Scenic Overlook","Ski Resort","Sports Center","Sports Field","Wildlife Reserve","Airport","Ferry","Marina","Pier","Port","Resort","Postal","Populated Place"].join(","),u="#txtAddress",d="#ToggleFullScreen",h="#btnGetGps",m=()=>{document.querySelector(u).addEventListener("focus",(e=>{e.target.select()})),(0,a.Fx)(b),document.querySelector("#NavigateMenu").addEventListener("click",S),document.querySelector("#NavigateRefresh").addEventListener("click",C),document.querySelector("#NavigateNext").addEventListener("click",T),document.querySelector("#NavigatePrevious").addEventListener("click",x),document.querySelector("#NavigatePlay").addEventListener("click",I),document.querySelector(d).addEventListener("click",y);const e=document.querySelector(h);e.addEventListener("click",O),navigator.geolocation||(e.style.display="none"),document.querySelector("#divTwc").addEventListener("mousemove",(()=>{document.fullscreenElement&&D()})),window.addEventListener("resize",E),E.wasFull=!1,document.querySelector(u).addEventListener("keydown",(e=>{"Enter"===e.code&&t()})),document.querySelector("#btnGetLatLng").addEventListener("click",(()=>t())),document.addEventListener("keydown",M),document.addEventListener("touchmove",(e=>{document.fullscreenElement&&e.preventDefault()})),$(u).devbridgeAutocomplete({serviceUrl:"https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/suggest",deferRequestBy:300,paramName:"text",params:{f:"json",countryCode:"USA",category:c,maxSuggestions:10},dataType:"json",transformResult:e=>({suggestions:e.suggestions.map((e=>({value:e.text,data:e.magicKey})))}),minChars:3,showNoSuggestionNotice:!0,noSuggestionNotice:"No results found. Please try a different search string.",onSelect(e){f(e,this)},width:490});const t=()=>{const e=$(u).devbridgeAutocomplete();return e.suggestions[0]&&$(e.suggestionsContainer.children[0]).trigger("click"),!1},n=(0,o.J)(),s=n.latLonQuery&&n.latLon,r=n.latLonQuery??localStorage.getItem("latLonQuery"),i=n.latLon??localStorage.getItem("latLon"),m=localStorage.getItem("latLonFromGPS")&&!s;if(r&&i&&!m){document.querySelector(u).value=r,b(JSON.parse(i))}m&&O(),l.A.kiosk.value="true"===n["settings-kiosk-checkbox"];const g=n["settings-kiosk-checkbox"]??localStorage.getItem("play");null!==g&&"true"!==g||N("navButton","play"),document.querySelector("#btnClearQuery").addEventListener("click",(()=>{document.querySelector("#spanCity").innerHTML="",document.querySelector("#spanState").innerHTML="",document.querySelector("#spanStationId").innerHTML="",document.querySelector("#spanRadarId").innerHTML="",document.querySelector("#spanZoneId").innerHTML="",document.querySelector("#chkAutoRefresh").checked=!0,localStorage.removeItem("autoRefresh"),localStorage.removeItem("play"),N("navButton","play"),localStorage.removeItem("latLonQuery"),localStorage.removeItem("latLon"),localStorage.removeItem("latLonFromGPS"),document.querySelector(h).classList.remove("active")})),document.querySelector("#container").addEventListener("swiped-left",(()=>k("left"))),document.querySelector("#container").addEventListener("swiped-right",(()=>k("right")))},f=async(e,t)=>{if(t.previousSuggestionValue===e.value)return;const n=(await(0,s.Pq)("https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/find",{data:{text:e.value,magicKey:e.data,f:"json"}})).locations[0];n?(localStorage.removeItem("latLonFromGPS"),document.querySelector(h).classList.remove("active"),g(n.feature.geometry)):console.error("An unexpected error occurred. Please try a different search string.")},g=(e,t)=>{const n={lat:(0,i.X4)(e.y,4),lon:(0,i.X4)(e.x,4)};localStorage.setItem("latLonQuery",document.querySelector(u).value),localStorage.setItem("latLon",JSON.stringify(n)),b(n,t)},y=()=>(document.fullscreenElement?w():p(),(0,a.F4)()?(0,r.A)(!0):(0,r.A)(!1),D(),!1),p=()=>{const e=document.querySelector("#divTwc"),t=e.requestFullScreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullscreen;t?t.call(e,{navigationUI:"hide"}):window.scrollTo(0,0),(0,a.XR)(),D();const n=document.querySelector(d);n.src="images/nav/ic_fullscreen_exit_white_24dp_2x.png",n.title="Exit fullscreen"},w=()=>{document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen(),(0,a.XR)(),v()},v=()=>{const e=document.querySelector(d);e.src="images/nav/ic_fullscreen_white_24dp_2x.png",e.title="Enter fullscreen",document.querySelector("#divTwc").classList.remove("no-cursor");const t=document.querySelector("#divTwcBottom");t.classList.remove("hidden"),t.classList.add("visible")},S=()=>(N("navButton","menu"),!1),b=(e,t)=>{e&&(b.latLon=e);const{latLon:n}=b;n&&(document.querySelector(u).blur(),(0,a.K$)(),(0,a.u6)(n,t))},k=e=>{if("left"===e)T();else x()},C=()=>((0,a.kY)(),b(),!1),T=()=>(N("navButton","next"),!1),x=()=>(N("navButton","previous"),!1);let L=null;const D=()=>{document.activeElement.blur();const e=document.querySelector("#divTwcBottom");e.classList.remove("hidden"),e.classList.add("visible"),document.querySelector("#divTwc").classList.remove("no-cursor"),L&&(clearTimeout(L),L=null),L=setTimeout((()=>{document.fullscreenElement&&(e.classList.remove("visible"),e.classList.add("hidden"),document.querySelector("#divTwc").classList.add("no-cursor"))}),2e3)},M=e=>{const{key:t}=e;if(document.fullscreenElement||document.activeElement===document.body)switch(t){case" ":return e.preventDefault(),I(),!1;case"ArrowRight":case"PageDown":return e.preventDefault(),T(),!1;case"ArrowLeft":case"PageUp":return e.preventDefault(),x(),!1;case"ArrowUp":return e.preventDefault(),S(),!1;case"0":return C(),!1;case"F":case"f":return y(),!1}return!1},I=()=>(N("navButton","playToggle"),!1),N=(e,t={})=>{(0,a.iU)({type:e,message:t})},O=async()=>{if(!navigator.geolocation)return;const e=document.querySelector(h);if(e.classList.contains("active"))return e.classList.remove("active"),void localStorage.removeItem("latLonFromGPS");e.classList.add("active");const t=await(async()=>new Promise((e=>{navigator.geolocation.getCurrentPosition(e)})))(),{latitude:n,longitude:s}=t.coords,r=document.querySelector(u);r.value=`${(0,i.X4)(n,4)}, ${(0,i.X4)(s,4)}`,g({y:n,x:s},(e=>{const t=e.properties.relativeLocation.properties,a=`${t.city}, ${t.state}`;localStorage.setItem("latLon",JSON.stringify({lat:n,lon:s})),localStorage.setItem("latLonQuery",a),localStorage.setItem("latLonFromGPS",!0),r.value=`${t.city}, ${t.state}`}))},E=()=>{E.wasFull&&!document.fullscreenElement&&v(),!E.wasFull&&document.fullscreenElement,E.wasFull=!!document.fullscreenElement}},247:(e,t,n)=>{n.d(t,{A:()=>d});var s=n(47),r=n(125),a=n(592),i=n(24),o=n(211);class l extends i.A{constructor(e,t){super(e,t,"Almanac",!0),this.backgroundImage0=(0,s.u)("images/BackGround3_1.png"),(0,s.b)("images/2/Full-Moon.gif"),(0,s.b)("images/2/Last-Quarter.gif"),(0,s.b)("images/2/New-Moon.gif"),(0,s.b)("images/2/First-Quarter.gif"),this.timing.totalScreens=1}async getData(e){const t=super.getData(e),n=e??this.weatherParameters,{sun:s,moon:r}=this.calcSunMoonData(n);this.data={sun:s,moon:r},this.getDataCallback(),t&&this.setStatus(a.Ay.loaded)}calcSunMoonData(e){const t=[SunCalc.getTimes(new Date,e.latitude,e.longitude),SunCalc.getTimes(r.c9.local().plus({days:1}).toJSDate(),e.latitude,e.longitude)],n=[];let s=r.c9.local().minus({days:1}),{phase:a}=SunCalc.getMoonIllumination(s.toJSDate()),i=0;do{const e=a;s=s.plus({days:1}),a=SunCalc.getMoonIllumination(s.toJSDate()).phase,e<.25&&a>=.25&&n.push(this.getMoonTransition(.25,"First",s)),e<.5&&a>=.5&&n.push(this.getMoonTransition(.5,"Full",s)),e<.75&&a>=.75&&n.push(this.getMoonTransition(.75,"Last",s)),e>a&&n.push(this.getMoonTransition(0,"New",s)),i+=1}while(i<=30&&n.length<4);return{sun:t,moon:n}}getMoonTransition(e,t,n,s=0){let r=n,{phase:a}=SunCalc.getMoonIllumination(r.toJSDate()),i=0;const o={hours:0===s?-1:0,minutes:1===s?1:0,seconds:2===s?-1:0,milliseconds:3===s?1:0};let l=(t,n)=>t=e;s%2==0&&(l=(t,n)=>t>e&&n<=e);do{const n=a;if(r=r.plus(o),a=SunCalc.getMoonIllumination(r.toJSDate()).phase,a>.9&&(a-=1),l(n,a)){if(s>=3)break;return this.getMoonTransition(e,t,r,s+1)}i+=1}while(i<1e3);return{phase:t,date:r}}async drawCanvas(){super.drawCanvas();const e=this.data,t=r.c9.local(),n=t.plus({days:1});this.elem.querySelector(".day-1").innerHTML=t.toLocaleString({weekday:"long"}),this.elem.querySelector(".day-2").innerHTML=n.toLocaleString({weekday:"long"}),this.elem.querySelector(".rise-1").innerHTML=r.c9.fromJSDate(e.sun[0].sunrise).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".rise-2").innerHTML=r.c9.fromJSDate(e.sun[1].sunrise).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".set-1").innerHTML=r.c9.fromJSDate(e.sun[0].sunset).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".set-2").innerHTML=r.c9.fromJSDate(e.sun[1].sunset).toLocaleString(r.c9.TIME_SIMPLE).toLowerCase();const s=e.moon.map((e=>{const t={},n=e.date.toLocaleString({month:"short",day:"numeric"});return t.date=n,t.type=e.phase,t.icon={type:"img",src:c(e.phase)},this.fillTemplate("day",t)})),a=this.elem.querySelector(".moon .days");a.innerHTML="",a.append(...s),this.finishDraw()}async getSun(){return new Promise((e=>{this.data&&e(this.data),this.getDataCallbacks.push(e)}))}}const c=e=>{switch(e){case"Full":return"images/2/Full-Moon.gif";case"Last":return"images/2/Last-Quarter.gif";case"New":return"images/2/New-Moon.gif";default:return"images/2/First-Quarter.gif"}},u=new l(9,"almanac");(0,o.Kb)(u);const d=u.getSun.bind(u)},423:(e,t,n)=>{n.d(t,{A:()=>p});var s=n(592),r=n(47),a=n(440),i=n(519),o=n(891),l=n(716),c=n(24),u=n(211),d=n(413);const h=["U","C","H","W","Y","T","S","M","O","L","A","F","B","N","V","R","D","E","I","G","J"];class m extends c.A{constructor(e,t){super(e,t,"Current Conditions",!0),this.backgroundImage=(0,r.u)("images/BackGround1_1.png")}async getData(e){const t=super.getData(e),n=(e??this.weatherParameters).stations.filter((e=>4===e?.properties?.stationIdentifier?.length&&!h.includes(e.properties.stationIdentifier.slice(0,1))));let i,o,c=0;for(;!i&&cthis.stillWaiting()}),null===i.features[0].properties.temperature.value||null===i.features[0].properties.windSpeed.value||null===i.features[0].properties.textDescription||""===i.features[0].properties.textDescription||null===i.features[0].properties.icon)throw i=void 0,new Error(`Unable to get observations: ${o.properties.stationIdentifier}, trying next station`)}catch(e){console.error(e)}}if(!i)return console.error("All current weather stations exhausted"),this.isEnabled&&this.setStatus(s.Ay.failed),void this.getDataCallback(void 0);this.data=g({...i,station:o}),this.getDataCallback(),t&&((0,r.b)((0,l.XV)(i.features[0].properties.icon)),this.setStatus(s.Ay.loaded))}async drawCanvas(){super.drawCanvas();let e=this.data.observations.textDescription;e.length>15&&(e=f(e));const t={temp:this.data.Temperature+String.fromCharCode(176),condition:e,wind:this.data.WindDirection.padEnd(3,"")+this.data.WindSpeed.toString().padStart(3," "),location:(0,o.C)(this.data.station.properties.name).substr(0,20),humidity:`${this.data.Humidity}%`,dewpoint:this.data.DewPoint+String.fromCharCode(176),ceiling:0===this.data.Ceiling?"Unlimited":this.data.Ceiling+this.data.CeilingUnit,visibility:this.data.Visibility+this.data.VisibilityUnit,pressure:`${this.data.Pressure} ${this.data.PressureDirection}`,icon:{type:"img",src:this.data.Icon}};this.data.WindGust&&(t["wind-gusts"]=`Gusts to ${this.data.WindGust}`),this.data.observations.heatIndex.value&&this.data.HeatIndex!==this.data.Temperature?(t["heat-index-label"]="Heat Index:",t["heat-index"]=this.data.HeatIndex+String.fromCharCode(176)):this.data.observations.windChill.value&&""!==this.data.WindChill&&this.data.WindChill{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}}const f=e=>{let t=e;return t=t.replace(/Light/g,"L"),t=t.replace(/Heavy/g,"H"),t=t.replace(/Partly/g,"P"),t=t.replace(/Mostly/g,"M"),t=t.replace(/Few/g,"F"),t=t.replace(/Thunderstorm/g,"T'storm"),t=t.replace(/ in /g,""),t=t.replace(/Vicinity/g,""),t=t.replace(/ and /g," "),t=t.replace(/Freezing Rain/g,"Frz Rn"),t=t.replace(/Freezing/g,"Frz"),t=t.replace(/Unknown Precip/g,""),t=t.replace(/L Snow Fog/g,"L Snw/Fog"),t=t.replace(/ with /g,"/"),t},g=e=>{const t=e.features[0].properties;e.observations=t,e.Temperature=Math.round(t.temperature.value),e.TemperatureUnit="C",e.DewPoint=Math.round(t.dewpoint.value),e.Ceiling=Math.round(t.cloudLayers[0]?.base?.value??0),e.CeilingUnit="m.",e.Visibility=Math.round(t.visibility.value/1e3),e.VisibilityUnit=" km.",e.WindSpeed=Math.round(t.windSpeed.value),e.WindDirection=(0,i.Up)(t.windDirection.value),e.Pressure=Math.round(t.barometricPressure.value),e.HeatIndex=Math.round(t.heatIndex.value),e.WindChill=Math.round(t.windChill.value),e.WindGust=Math.round(t.windGust.value),e.WindUnit="KPH",e.Humidity=Math.round(t.relativeHumidity.value),e.Icon=(0,l.XV)(t.icon),e.PressureDirection="",e.TextConditions=t.textDescription;const n=t.barometricPressure.value-e.features[1].properties.barometricPressure.value;return n>150&&(e.PressureDirection="R"),n<-150&&(e.PressureDirection="F"),e.Temperature=(0,d.sz)(e.Temperature),e.TemperatureUnit="F",e.DewPoint=(0,d.sz)(e.DewPoint),e.Ceiling=100*Math.round((0,d.Q8)(e.Ceiling)/100),e.CeilingUnit="ft.",e.Visibility=(0,d.lt)(t.visibility.value/1e3),e.VisibilityUnit=" mi.",e.WindSpeed=(0,d.Yy)(e.WindSpeed),e.WindUnit="MPH",e.Pressure=(0,d.yX)(e.Pressure).toFixed(2),e.HeatIndex=(0,d.sz)(e.HeatIndex),e.WindChill=(0,d.sz)(e.WindChill),e.WindGust=(0,d.Yy)(e.WindGust),e},y=new m(1,"current-weather");(0,u.Kb)(y);const p=y.getCurrentWeather.bind(y)},516:(e,t,n)=>{var s=n(891);var r=n(423),a=n(211);const i=String.fromCharCode(176);let o,l=0;const c=()=>{const e=(0,a.q)();e?.okToDrawCurrentConditions?(l=(l+1)%d.length,u()):"progress"===e?.elemId&&(l=0)},u=async()=>{const e=await(0,r.A)();e&&h(d[l](e))},d=[e=>`Conditions at ${(0,s.C)(e.station.properties.name).substr(0,20)}`,e=>{let t=`Temp: ${e.Temperature}${i}${e.TemperatureUnit}`;return e.observations.heatIndex.value?t+=` Heat Index: ${e.HeatIndex}${i}${e.TemperatureUnit}`:e.observations.windChill.value&&(t+=` Wind Chill: ${e.WindChill}${i}${e.TemperatureUnit}`),t},e=>`Humidity: ${e.Humidity}% Dewpoint: ${e.DewPoint}${i}${e.TemperatureUnit}`,e=>`Barometric Pressure: ${e.Pressure} ${e.PressureDirection}`,e=>{let t=e.WindSpeed>0?`Wind: ${e.WindDirection} ${e.WindSpeed} ${e.WindUnit}`:"Wind: Calm";return e.WindGust>0&&(t+=` Gusts to ${e.WindGust}`),t},e=>{const t=`${e.Ceiling} ${e.CeilingUnit}`;return`Visib: ${e.Visibility} ${e.VisibilityUnit} Ceiling: ${0===e.Ceiling?"Unlimited":t}`}],h=e=>{var t,n;t=".weather-display .scroll .fixed",n=t=>{t.innerHTML=e},[...document.querySelectorAll(t)].forEach(n)};document.addEventListener("DOMContentLoaded",(()=>{o||(o=setInterval(c,4e3)),u()}))},498:(e,t,n)=>{var s=n(592),r=n(440),a=n(125),i=n(716),o=n(47),l=n(24),c=n(211);class u extends l.A{constructor(e,t){super(e,t,"Extended Forecast",!0),this.timing.totalScreens=2}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;let n;try{n=await(0,r.Pq)(t.forecast,{data:{units:"us"},retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(e){return console.error("Unable to get extended forecast"),console.error(e.status,e.responseJSON),void this.setStatus(s.Ay.failed)}this.data=d(n.properties.periods),this.screenIndex=0,this.setStatus(s.Ay.loaded)}async drawCanvas(){super.drawCanvas();const e=this.data.slice(0+3*this.screenIndex,3+3*this.screenIndex).map((e=>{const t={icon:{type:"img",src:e.icon},condition:e.text,date:e.dayName},{low:n}=e;void 0!==n&&(t["value-lo"]=Math.round(n));const{high:s}=e;return t["value-hi"]=Math.round(s),this.fillTemplate("day",t)})),t=this.elem.querySelector(".day-container");t.innerHTML="",t.append(...e),this.finishDraw()}}const d=e=>{const t=[0,1,2,3,4,5,6].map((e=>a.c9.local().startOf("day").plus({days:e}).toLocaleString({weekday:"short"})));let n=0;const s=[];return e.forEach((e=>{s[n]||s.push({dayName:"",low:void 0,high:void 0,text:void 0,icon:void 0});const r=s[n];r.icon=(0,i.XV)(e.icon),r.text=h(e.shortForecast),r.dayName=t[n],(0,o.b)(r.icon),e.isDaytime?(r.high=e.temperature,n+=1):r.low=e.temperature})),s},h=e=>{const t=[[/ and /gi," "],[/slight /gi,""],[/chance /gi,""],[/very /gi,""],[/patchy /gi,""],[/areas /gi,""],[/dense /gi,""],[/Thunderstorm/g,"T'Storm"]].reduce(((e,[t,n])=>e.replace(t,n)),e);let n=t.split(" ");-1!==t.indexOf("then")&&(n=t.split(" then "),n=n[1].split(" "));let s=n[0].substr(0,10),r="";n[1]&&(s.endsWith(".")?s=s.replace(/\./,""):r=n[1].substr(0,10),"Blowing"===r&&(r=""));let a=s;return""!==r&&(a+=` ${r}`),a};(0,c.Kb)(new u(8,"extended-forecast"))},749:(e,t,n)=>{var s=n(592),r=n(440),a=n(24),i=n(211);const o={Extreme:10,Severe:5},l={"Hurricane Warning":2,"Tornado Warning":3,"Severe Thunderstorm Warning":1};class c extends a.A{constructor(e,t,n){super(e,t,"Hazards",n),this.showOnProgress=!1,this.timing.totalScreens=0}async getData(e){const t=super.getData(e),n=this.checkbox.querySelector(".alert");n.classList.remove("show");try{const e=new URL("https://api.weather.gov/alerts/active");e.searchParams.append("point",`${this.weatherParameters.latitude},${this.weatherParameters.longitude}`),e.searchParams.append("limit",5);const t=(await(0,r.Pq)(e,{retryCount:3,stillWaiting:()=>this.stillWaiting()})).features??[],s=t.reduce(((e,t)=>e||"Immediate"===t.properties.urgency),!1),a=t.sort(((e,t)=>u(t.properties.severity,t.properties.event)-u(e.properties.severity,e.properties.event))).filter((e=>"Unknown"!==e.properties.severity&&(!s||"Immediate"===e.properties.urgency)));this.data=a,this.data.length>0&&n.classList.add("show")}catch(e){return console.error("Get hourly forecast failed"),console.error(e.status,e.responseJSON),this.isEnabled&&this.setStatus(s.Ay.failed),void this.getDataCallback(void 0)}this.getDataCallback(),t?this.drawLongCanvas():this.setStatus(s.Ay.loaded)}async drawLongCanvas(){const e=this.elem.querySelector(".hazard-lines");e.innerHTML="";const t=this.data.map((e=>{const t={};return t["hazard-text"]=`${e.properties.event}

${e.properties.description.replaceAll("\n\n","

").replaceAll("\n"," ")}`,this.fillTemplate("hazard",t)}));if(e.append(...t),0===t.length)return this.setStatus(s.Ay.loaded),this.timing.totalScreens=0,void this.setStatus(s.Ay.loaded);this.timing.baseDelay=20;const n=Math.max(Math.ceil(e.scrollHeight/400)-3,1);this.timing.delay=[550];for(let e=0;e{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}screenIndexFromBaseCount(){const e=super.screenIndexFromBaseCount();return!1===e&&(this.timing.totalScreens=0),e}}const u=(e,t)=>(o[e]??0)+(l[t]??0);(0,i.Kb)(new c(0,"hazards",!0))},2:(e,t,n)=>{var s=n(592),r=n(73),a=n(24),i=n(211),o=n(125);class l extends a.A{constructor(e,t,n){super(e,t,"Hourly Graph",n),document.addEventListener("DOMContentLoaded",(()=>{this.moveHeader()}))}moveHeader(){const e=this.fillTemplate("top-right",{});this.elem.querySelector(".header .right").append(e)}async getData(){if(!super.getData())return;const e=await(0,r.A)((()=>this.stillWaiting()));if(void 0===e)return void this.setStatus(s.Ay.failed);const t=e.map((e=>e.temperature)),n=e.map((e=>e.probabilityOfPrecipitation)),a=e.map((e=>e.skyCover));this.data={skyCover:a,temperature:t,probabilityOfPrecipitation:n},this.setStatus(s.Ay.loaded)}drawCanvas(){this.image||(this.image=this.elem.querySelector(".chart img"));const e=285;this.image.width=532,this.image.height=e;const t=document.createElement("canvas");t.width=532,t.height=e;const n=t.getContext("2d");n.imageSmoothingEnabled=!1;const s=c(0,5,this.data.temperature.length-1,532),r=o.c9.now().startOf("hour");document.querySelector(".x-axis .l-1").innerHTML=h(r),document.querySelector(".x-axis .l-2").innerHTML=h(r.plus({hour:6})),document.querySelector(".x-axis .l-3").innerHTML=h(r.plus({hour:12})),document.querySelector(".x-axis .l-4").innerHTML=h(r.plus({hour:18})),document.querySelector(".x-axis .l-5").innerHTML=h(r.plus({hour:24}));const a=c(0,275,100,10),i=u(this.data.skyCover,s,a);d(i,n,{strokeStyle:"lightgrey",lineWidth:3});const l=u(this.data.probabilityOfPrecipitation,s,a);d(l,n,{strokeStyle:"aqua",lineWidth:3});const m=Math.min(...this.data.temperature),f=Math.max(...this.data.temperature),g=Math.round((m+f)/2),y=c(m,275,f,10),p=u(this.data.temperature,s,y);d(p,n,{strokeStyle:"red",lineWidth:3});const w=String.fromCharCode(176);this.elem.querySelector(".y-axis .l-1").innerHTML=(f+w).substring(0,3),this.elem.querySelector(".y-axis .l-2").innerHTML=(g+w).substring(0,3),this.elem.querySelector(".y-axis .l-3").innerHTML=(m+w).substring(0,3),this.image.src=t.toDataURL(),super.drawCanvas(),this.finishDraw()}}const c=(e,t,n,s)=>{const r=(s-t)/(n-e),a=t-r*e;return e=>r*e+a},u=(e,t,n)=>e.map(((e,s)=>[t(s),n(e)])),d=(e,t,n)=>{t.beginPath(),t.strokeStyle="black",t.lineWidth=(n?.lineWidth??2)+2,t.moveTo(e[0][0],e[0][1]),e.slice(1).forEach((e=>t.lineTo(e[0],e[1]+2))),t.stroke(),t.beginPath(),t.strokeStyle=n?.strokeStyle??"red",t.lineWidth=n?.lineWidth??2,t.moveTo(e[0][0],e[0][1]),e.slice(1).forEach((e=>t.lineTo(e[0],e[1]))),t.stroke()},h=e=>e.toFormat("ha").slice(0,-1);(0,i.Kb)(new l(4,"hourly-graph"))},73:(e,t,n)=>{n.d(t,{A:()=>p});var s=n(592),r=n(125),a=n(440),i=n(413),o=n(716),l=n(519),c=n(24),u=n(211),d=n(247);class h extends c.A{constructor(e,t,n){super(e,t,"Hourly Forecast",n),this.timing.baseDelay=20;this.timing.delay=[450];for(let e=0;e<4;e+=1)this.timing.delay.push(300);this.timing.delay.push(150)}async getData(e){const t=super.getData(e);let n;try{n=await(0,a.Pq)(e.forecastGridData,{retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(e){return console.error("Get hourly forecast failed"),console.error(e.status,e.responseJSON),this.isEnabled&&this.setStatus(s.Ay.failed),void this.getDataCallback(void 0)}this.data=await m(n.properties),this.getDataCallback(),t&&(this.setStatus(s.Ay.loaded),this.drawLongCanvas())}async drawLongCanvas(){const e=this.elem.querySelector(".hourly-lines");e.innerHTML="";const t=r.c9.local(),n=this.data.map(((e,n)=>{const s={},r=t.plus({hours:n}).toLocaleString({weekday:"short",hour:"numeric"});s.hour=r;const a=Math.round(e.temperature).toString().padStart(3),i=Math.round(e.apparentTemperature).toString().padStart(3);s.temp=a,a!==i&&(s.like=i);let o="Calm";if(e.windSpeed>0){const t=Math.round(e.windSpeed).toString();o=e.windDirection+Array(6-e.windDirection.length-t.length).join(" ")+t}return s.wind=o,s.icon={type:"img",src:e.icon},this.fillTemplate("hourly-row",s)}));e.append(...n)}drawCanvas(){super.drawCanvas(),this.finishDraw()}showCanvas(){this.drawCanvas(),super.showCanvas()}screenIndexChange(){this.baseCountChange(this.navBaseCount)}baseCountChange(e){let t=Math.min(this.elem.querySelector(".hourly-lines").getBoundingClientRect().height-289,e-150);t<0&&(t=0),this.elem.querySelector(".main").scrollTo(0,t)}async getCurrentData(e){return e&&this.stillWaitingCallbacks.push(e),new Promise((e=>{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}}const m=async e=>{const t=g(e.temperature.values),n=g(e.apparentTemperature.values),s=g(e.windSpeed.values),r=g(e.windDirection.values),a=g(e.skyCover.values),o=g(e.weather.values),c=g(e.iceAccumulation.values),u=g(e.probabilityOfPrecipitation.values),d=g(e.snowfallAmount.values),h=await f(a,o,c,u,d,s);return t.map(((e,o)=>({temperature:(0,i.sz)(t[o]),apparentTemperature:(0,i.sz)(n[o]),windSpeed:(0,i.lt)(s[o]),windDirection:(0,l.Up)(r[o]),probabilityOfPrecipitation:u[o],skyCover:a[o],icon:h[o]})))},f=async(e,t,n,s,a,i)=>{const l=r.c9.local().startOf("hour"),c=(await(0,d.A)()).sun,u=r.IX.fromDateTimes(r.c9.fromJSDate(c[0].sunset),r.c9.fromJSDate(c[1].sunrise)),h=r.c9.fromJSDate(c[1].sunset);return e.map(((r,c)=>{const d=l.plus({hours:c}),m=u.contains(d)||d>h;return(0,o.ZJ)(e[c],t[c],n[c],s[c],a[c],i[c],m)}))},g=e=>{const t=r.c9.utc().startOf("hour").toMillis(),n=[];return e.forEach((e=>{let s=Date.parse(e.validTime.substr(0,e.validTime.indexOf("/")));const a=s+r.dw.fromISO(e.validTime.substr(e.validTime.indexOf("/")+1)).shiftTo("milliseconds").values.milliseconds;do{s>=t&&n.length<24&&n.push(e.value),s+=36e5}while(s{n.d(t,{Wu:()=>s,XV:()=>r,ZJ:()=>a});const s=(e,t)=>{const n=t??e.indexOf("/night/")>=0,s=e=>`images/r/${e}`;let r=e.toLowerCase().match(/[^/]+$/)[0].match(/(.*?)[&,.?]/)[1];const a=+(e.match(/,(\d{2,3})/)??[0,100])[1];if("dualimage"===r){const t=e.match(/&j=(.*)&/);[,r]=t}switch(r+(n?"-n":"")){case"skc":case"hot":case"haze":return s("Sunny.gif");case"skc-n":case"nskc":case"nskc-n":case"cold-n":return s("Clear-1992.gif");case"bkn":return s("Mostly-Cloudy-1994-2.gif");case"bkn-n":case"few-n":case"nfew-n":case"nfew":return s("Partly-Clear-1994-2.gif");case"sct":case"few":return s("Partly-Cloudy.gif");case"sct-n":case"nsct":case"nsct-n":return s("Mostly-Clear.gif");case"ovc":case"ovc-n":return s("Cloudy.gif");case"fog":case"fog-n":return s("Fog.gif");case"rain_sleet":case"sleet":case"sleet-n":return s("Sleet.gif");case"rain_showers":case"rain_showers_high":return s("Scattered-Showers-1994-2.gif");case"rain_showers-n":case"rain_showers_high-n":return s("Scattered-Showers-Night-1994-2.gif");case"rain":case"rain-n":return s("Rain-1992.gif");case"snow":case"snow-n":return s(a>50?"Heavy-Snow-1994-2.gif":"Light-Snow.gif");case"rain_snow":case"rain_snow-n":return s("Rain-Snow-1992.gif");case"snow_fzra":case"snow_fzra-n":return s("Freezing-Rain-Snow-1992.gif");case"fzra":case"fzra-n":case"rain_fzra":case"rain_fzra-n":return s("Freezing-Rain-1992.gif");case"snow_sleet":case"snow_sleet-n":return s("Snow and Sleet.gif");case"tsra_sct":case"tsra":return s("Scattered-Tstorms-1994-2.gif");case"tsra_sct-n":case"tsra-n":return s("Scattered-Tstorms-Night-1994-2.gif");case"tsra_hi":case"tsra_hi-n":case"hurricane":case"tropical_storm":case"hurricane-n":case"tropical_storm-n":return s("Thunderstorm.gif");case"wind":case"wind_few":case"wind_sct":case"wind_bkn":case"wind_ovc":case"wind-n":case"wind_few-n":case"wind_bkn-n":case"wind_ovc-n":return s("Wind.gif");case"wind_skc":return s("Sunny-Wind-1994.gif");case"wind_skc-n":case"wind_sct-n":return s("Clear-Wind-1994.gif");case"blizzard":case"blizzard-n":return s("Blowing Snow.gif");case"cold":return s("cold.gif");default:return console.log(`Unable to locate regional icon for ${r} ${e} ${n}`),!1}},r=(e,t)=>{if(!e)return!1;const n=e=>`images/${e}`,s=t??e.indexOf("/night/")>=0;let r=e.toLowerCase().match(/[^/]+$/)[0].match(/(.*?)[&,.?]/)[1];const a=+(e.match(/,(\d{2,3})/)??[0,100])[1];if("dualimage"===r){const t=e.match(/&j=(.*)&/);[,r]=t}switch(r+(s?"-n":"")){case"skc":case"hot":case"haze":case"cold":return n("CC_Clear1.gif");case"skc-n":case"nskc":case"nskc-n":case"cold-n":return n("CC_Clear0.gif");case"sct":case"few":case"bkn":return n("CC_PartlyCloudy1.gif");case"bkn-n":case"few-n":case"nfew-n":case"nfew":case"sct-n":case"nsct":case"nsct-n":return n("CC_PartlyCloudy0.gif");case"ovc":case"novc":case"ovc-n":return n("CC_Cloudy.gif");case"fog":case"fog-n":return n("CC_Fog.gif");case"rain_sleet":case"rain_sleet-n":case"sleet":case"sleet-n":return n("Sleet.gif");case"rain_showers":case"rain_showers_high":case"rain_showers-n":case"rain_showers_high-n":return n("CC_Showers.gif");case"rain":case"rain-n":return n("CC_Rain.gif");case"snow":case"snow-n":return n(a>50?"CC_Snow.gif":"CC_SnowShowers.gif");case"rain_snow":return n("CC_RainSnow.gif");case"snow_fzra":case"snow_fzra-n":case"fzra":case"fzra-n":case"rain_fzra":case"rain_fzra-n":return n("CC_FreezingRain.gif");case"snow_sleet":return n("Snow-Sleet.gif");case"tsra_sct":case"tsra":return n("EF_ScatTstorms.gif");case"tsra_sct-n":case"tsra-n":case"tsra_hi":case"tsra_hi-n":case"hurricane":case"tropical_storm":case"hurricane-n":case"tropical_storm-n":return n("CC_TStorm.gif");case"wind_few":case"wind_sct":case"wind_bkn":case"wind_ovc":case"wind_skc":case"wind_few-n":case"wind_bkn-n":case"wind_ovc-n":case"wind_skc-n":case"wind_sct-n":return n("CC_Windy.gif");case"blizzard":case"blizzard-n":return n("Blowing-Snow.gif");default:return console.log(`Unable to locate icon for ${r} ${e} ${s}`),!1}},a=(e,t,n,s,r,a,i=!1)=>{const o=e=>`images/r/${e}`;let l=!1,c=!1,u=!1,d=!1,h=!1;return t.forEach((e=>{e.weather&&(e.weather.toLowerCase().includes("thunder")&&(l=!0),e.weather.toLowerCase().includes("snow")&&(c=!0),e.weather.toLowerCase().includes("ice")&&(u=!0),e.weather.toLowerCase().includes("fog")&&(d=!0),e.weather.toLowerCase().includes("wind")&&(h=!0))})),o(n>0||u?"Freezing-Rain-1992.gif":r>10?a>30||h?"Blowing Snow.gif":"Heavy-Snow-1994.gif":(r>0||c)&&l?"ThunderSnow.gif":r>0||c?"Light-Snow.gif":l?"Thunderstorm.gif":s>70?"Rain-1992.gif":s>50?"Shower.gif":s>30?i?"Scattered-Showers-Night.gif":"Scattered-Showers-1994.gif":d?"Fog.gif":e>70?"Cloudy.gif":e>50?i?"Partly-Clear-1994.gif":"Mostly-Cloudy-1994.gif":e>30?i?"Mostly-Clear.gif":"Partly-Cloudy.gif":i?"Clear-1992.gif":"Sunny.gif")}},94:(e,t,n)=>{var s=n(519),r=n(440),a=n(592),i=n(891),o=n(413),l=n(24),c=n(211);class u extends l.A{constructor(e,t){super(e,t,"Latest Observations",!0),this.MaximumRegionalStations=7}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters,n=Object.keys(StationInfo).map((e=>{const n=StationInfo[e],r=(0,s.Io)(n.lat,n.lon,t.latitude,t.longitude);return{...n,distance:r}})).sort(((e,t)=>e.distance-t.distance)).slice(0,30),r=[];let i=Math.min(n.length,7),o=0;for(;r.length<7&&i<=n.length;){const e=await h(n.slice(o,i));r.push(...e),o+=i,i=Math.min(n.length+1,o+7-r.length)}this.data=r.slice(0,this.MaximumRegionalStations),0!==this.data.length?this.setStatus(a.Ay.loaded):this.setStatus(a.Ay.noData)}async drawCanvas(){super.drawCanvas();const e=this.data.sort(((e,t)=>e.Name{const t=(0,s.Up)(e.windDirection.value),n=Math.round((0,o.sz)(e.temperature.value)),r=Math.round((0,o.Yy)(e.windSpeed.value)),a={location:(0,i.C)(e.city).substr(0,14),temp:n,weather:d(e.textDescription).substr(0,9)};return a.wind=r>0?t+Array(6-t.length-r.toString().length).join(" ")+r.toString():"NA"===r?"NA":"Calm",this.fillTemplate("observation-row",a)})),n=this.elem.querySelector(".observation-lines");n.innerHTML="",n.append(...t),this.finishDraw()}}const d=e=>{let t=e;return t=t.replace(/Light/,"L"),t=t.replace(/Heavy/,"H"),t=t.replace(/Partly/,"P"),t=t.replace(/Mostly/,"M"),t=t.replace(/Few/,"F"),t=t.replace(/Thunderstorm/,"T'storm"),t=t.replace(/ in /,""),t=t.replace(/Vicinity/,""),t=t.replace(/ and /," "),t=t.replace(/Freezing Rain/,"Frz Rn"),t=t.replace(/Freezing/,"Frz"),t=t.replace(/Unknown Precip/,""),t=t.replace(/L Snow Fog/,"L Snw/Fog"),t=t.replace(/ with /,"/"),t},h=async e=>(await Promise.all(e.map((async e=>{try{const t=await(0,r.Pq)(`https://api.weather.gov/stations/${e.id}/observations/latest`,{retryCount:1,stillWaiting:()=>(void 0).stillWaiting()});return null!==t.properties.temperature.value&&""!==t.properties.textDescription&&null!==t.properties.windSpeed.value&&{...t.properties,StationId:e.id,city:e.city}}catch(t){return console.log(`Unable to get latest observations for ${e.id}`),!1}})))).filter((e=>e));(0,c.Kb)(new u(2,"latest-observations"))},704:(e,t,n)=>{var s=n(592),r=n(440),a=n(24),i=n(211);class o extends a.A{constructor(e,t){super(e,t,"Local Forecast",!0),this.timing.baseDelay=5e3}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters,n=await this.getRawData(t);if(!n)return void this.setStatus(s.Ay.failed);const r=l(n);this.screenTexts=r.map((e=>{let t=`${e.DayName.toUpperCase()}...`;return t+=e.Text.toUpperCase().replace("..."," "),t}));const a=this.screenTexts.map((e=>this.fillTemplate("forecast",{text:e}))),i=this.elem.querySelector(".forecasts");i.innerHTML="",i.append(...a),this.pageHeight=i.parentNode.scrollHeight,a.forEach((e=>{const t=Math.ceil(e.scrollHeight/this.pageHeight)*this.pageHeight;e.style.height=`${t}px`})),this.timing.totalScreens=i.scrollHeight/this.pageHeight,this.calcNavTiming(),this.setStatus(s.Ay.loaded)}async getRawData(e){try{return await(0,r.Pq)(e.forecast,{data:{units:"us"},retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(t){return console.error(`GetWeatherForecast failed: ${e.forecast}`),console.error(t.status,t.responseJSON),this.setStatus(s.Ay.failed),!1}}async drawCanvas(){super.drawCanvas();const e=-this.screenIndex*this.pageHeight;this.elem.querySelector(".forecasts").style.top=`${e}px`,this.finishDraw()}}const l=e=>e.properties.periods.slice(0,6).map((e=>({DayName:e.name.toUpperCase(),Text:e.detailedForecast})));(0,i.Kb)(new o(7,"local-forecast"))},211:(e,t,n)=>{n.d(t,{F4:()=>k,Fx:()=>U,Ju:()=>T,K$:()=>z,Kb:()=>F,Lg:()=>W,XR:()=>E,ab:()=>C,eB:()=>j,iU:()=>w,kY:()=>$,pv:()=>O,q:()=>M,u6:()=>P,yB:()=>v});var s=n(430),r=n(592),a=n(519),i=n(440),o=n(348),l=n(302);document.addEventListener("DOMContentLoaded",(()=>{p()}));const c=[];let u,d=!1;const h={},m=6e5,f="#chkAutoRefresh";let g=null,y=0;const p=async()=>{window.addEventListener("resize",E),E();const e=localStorage.getItem("autoRefresh");document.querySelector(f).checked=!e||"true"===e,document.querySelector(f).addEventListener("change",V),q()},w=e=>!!e.type&&("navButton"===e.type?N(e.message):console.error(`Unknown event ${e.type}`)),v=e=>{if(e.id<0)return;if(!u)return;if(u.drawCanvas(c,S()),c[0].status===r.Ay.loading)return;const t=c.findIndex((e=>e.enabled&&e.timing.totalScreens>0));0!==e.id||e.status!==r.Ay.failed&&e.status!==r.Ay.retrying||(e.id=t,e.status=c[t].status),0===e.id&&e.status===r.Ay.loaded&&0===c[0].timing.totalScreens&&(e.id=t,e.status=c[t].status),k()&&e.id===t&&e.status===r.Ay.loaded&&x(C.command.firstFrame),S()c.reduce(((e,t)=>t.status!==r.Ay.loading?e+1:e),0),b=()=>{c.forEach((e=>e.hideCanvas()))},k=()=>d,C={response:{previous:Symbol("previous"),inProgress:Symbol("inProgress"),next:Symbol("next")},command:{firstFrame:Symbol("firstFrame"),previousFrame:Symbol("previousFrame"),nextFrame:Symbol("nextFrame"),lastFrame:Symbol("lastFrame")}},T=e=>{e.type===C.response.previous&&L(-1),e.type===C.response.next&&L(1)},x=e=>{const t=M();if(u.hideCanvas(),!t){let e,t=0;do{c[t].status===r.Ay.loaded&&c[t].timing.totalScreens>0&&(e=c[t]),t+=1}while(!e&&t{const t=c.length,n=D();let s;for(let i=0;i0));i+=1);if(s<=n&&Z())return;const i=c[s];b(),e<0&&i.showCanvas(C.command.lastFrame),e>0&&i.showCanvas(C.command.firstFrame)},D=()=>c.findIndex((e=>e.active)),M=()=>c[D()],I=e=>{d=e;const t=document.querySelector("#NavigatePlay");localStorage.setItem("play",d),d?((0,s.A)(!0),t.title="Pause",t.src="images/nav/ic_pause_white_24dp_2x.png"):((0,s.A)(!1),t.title="Play",t.src="images/nav/ic_play_arrow_white_24dp_2x.png"),u&&d&&!M()&&x(C.command.firstFrame)},N=e=>{switch(e){case"play":I(!0);break;case"playToggle":I(!d);break;case"stop":I(!1);break;case"next":I(!1),x(C.command.nextFrame);break;case"previous":I(!1),x(C.command.previousFrame);break;case"menu":I(!1),u.showCanvas(),b();break;default:console.error(`Unknown navButton ${e}`)}},O=e=>c[e],E=()=>{const e=l.A.wide.value?854:640,t=document.querySelector("#divTwcBottom").getBoundingClientRect().width/e,n=window.innerHeight/480,s=Math.min(t,n);s<1||document.fullscreenElement||l.A.kiosk?document.querySelector("#container").style.transform=`scale(${s})`:document.querySelector("#container").style.transform="unset"},$=()=>{c.forEach((e=>{e.status=r.Ay.loading}))},F=e=>{c[e.navId]=e,q()},q=()=>{const e=document.querySelector("#enabledDisplays");if(!e)return;const t=c.map((e=>e.generateCheckbox(e.defaultEnabled))).filter((e=>e));e.innerHTML="",e.append(...t)},W=e=>{u=e},A=e=>{document.querySelector("#spanCity").innerHTML=`${e.city}, `,document.querySelector("#spanState").innerHTML=e.state,document.querySelector("#spanStationId").innerHTML=e.stationId,document.querySelector("#spanRadarId").innerHTML=e.radarId,document.querySelector("#spanZoneId").innerHTML=e.zoneId},V=e=>{const{checked:t}=e.target;t?H():z(),localStorage.setItem("autoRefresh",t)},_=e=>{e?(document.querySelector("#spanLastRefresh").innerHTML=e.toLocaleString("en-US",{weekday:"short",month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short"}),document.querySelector(f).checked&&H()):document.querySelector("#spanLastRefresh").innerHTML="(none)"},P=(e,t)=>{(async(e,t)=>{const n=await(0,o.f)(e.lat,e.lon);"function"==typeof t&&t(n);const s=await(0,i.Pq)(n.properties.observationStations),r=s.features[0].properties.stationIdentifier;let{city:a}=n.properties.relativeLocation.properties;const{state:l}=n.properties.relativeLocation.properties;r in StationInfo&&(a=StationInfo[r].city,[a]=a.split("/"),a=a.replace(/\s+$/,"")),h.latitude=e.lat,h.longitude=e.lon,h.zoneId=n.properties.forecastZone.substr(-6),h.radarId=n.properties.radarStation.substr(-3),h.stationId=r,h.weatherOffice=n.properties.cwa,h.city=a,h.state=l,h.timeZone=n.properties.timeZone,h.forecast=n.properties.forecast,h.forecastGridData=n.properties.forecastGridData,h.stations=s.features,A(h),b(),document.querySelector("#loading").style.display="none",u&&(await u.drawCanvas(),u.showCanvas()),c.forEach((e=>e.getData(h)))})(e,t),_(null)},H=()=>{if(g)return;y=0;const e=()=>{y+=500;let e=m-y;e<0&&(e=0);const t=new Date(e);document.querySelector("#spanRefreshCountDown").innerHTML=`${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}`,y>=m&&!k()&&R()};g=window.setInterval(e,500),e()},z=()=>{g&&(window.clearInterval(g),document.querySelector("#spanRefreshCountDown").innerHTML="--:--",g=null)},Z=()=>!!(y>=m&&k())&&(R(),!0),R=()=>{R.callback&&R.callback()},U=e=>{R.callback=e},j=()=>h.timeZone},951:(e,t,n)=>{var s=n(47),r=n(592),a=n(24),i=n(211);class o extends a.A{constructor(e,t){super(e,t,"",!1),this.backgroundImage=(0,s.u)("images/BackGround1_1.png"),this.timing=!1,document.addEventListener("DOMContentLoaded",(()=>{this.version=document.querySelector("#version").innerHTML,this.elem.querySelector(".container").addEventListener("click",this.lineClick.bind(this))})),this.okToDrawCurrentConditions=!1}async drawCanvas(e,t){if(!this.elem)return;if(super.drawCanvas(),this.progressCover||(this.progressCover=this.elem.querySelector(".scroll .cover")),!e)return;const n=e.map(((e,t)=>{if(!1===e.showOnProgress)return!1;const n={name:e.name},s=(0,r.qx)(e.status),a=this.fillTemplate("item",n);if(!a)return!1;const i=a.querySelector(".links");return i.classList.remove(...r.LR),i.classList.add(s),i.dataset.index=t,a})).filter((e=>e)),s=this.elem.querySelector(".container");s.innerHTML="",s.append(...n),this.finishDraw();const a=t/e.length;this.progressCover.style.width=100*(1-a)+"%",a<1?this.progressCover.parentNode.classList.add("show"):setTimeout((()=>this.progressCover.parentNode.classList.remove("show")),1e3)}lineClick(e){const t=e.target?.parentNode?.dataset?.index;if(void 0===t)return;const n=+t;(0,i.iU)("navButton");const s=(0,i.pv)(n);s&&s.status===r.Ay.loaded&&(s.showCanvas(i.ab.command.firstFrame),this.elem.classList.remove("show"))}}const l=new o(-1,"progress");(0,i.Lg)(l)},503:(e,t,n)=>{var s=n(592),r=n(125),a=n(47),i=n(440),o=n(147),l=n(24),c=n(211);class u extends l.A{constructor(e,t){super(e,t,"Local Radar",!0),this.okToDrawCurrentConditions=!1,this.okToDrawCurrentDateTime=!1,this.dopplerRadarImageMax=6,this.timing.baseDelay=350,this.timing.delay=[{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:12,si:5}]}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;if("AK"===t.state||"HI"===t.state)return void this.setStatus(s.Ay.noData);let n="images/4000RadarMap2.jpg";"HI"===t.State&&(n="images/HawaiiRadarMap2.png"),this.baseMap=await(0,a.u)(n);const l=[];let u=r.c9.utc().minus({days:1}).startOf("day");for(;u<=r.c9.utc().startOf("day");)l.push(`https://mesonet.agron.iastate.edu/archive/data/${u.toFormat("yyyy/LL/dd")}/GIS/uscomp/`),u=u.plus({days:1});const d=(await Promise.all(l.map((async e=>{try{return(0,i.Qq)(e,{cors:!0})}catch(e){return console.log("Unable to get list of radars"),console.error(e),this.setStatus(s.Ay.failed),!1}})))).filter((e=>e)).flatMap(((e,t)=>{const n=(new DOMParser).parseFromString(e,"text/html"),s=n.createElement("base");s.href=l[t],n.head.append(s);const r=n.querySelectorAll("a"),a=[];return Array.from(r).forEach((e=>{e.innerHTML?.match(/n0r_\d{12}\.png/)&&a.push(e.href)})),a})),h=/_(\d{12})\.png/,m=d.sort(((e,t)=>e.match(h)[1]{let s=0,r=0;return s=55.2*(51.75-e.latitude),s-=n,s>3200-2*n?s=3200-2*n:s<0&&(s=0),r=41.775*(-130.37-e.longitude)*-1,r-=t,r>5100-2*t?r=5100-2*t:r<0&&(r=0),{x:2*r,y:2*s}})(t,240,138),w=document.createElement("canvas");w.width=y,w.height=1600;const v=w.getContext("2d");v.imageSmoothingEnabled=!1;const S=((e,t,n)=>{let s=0,r=0;return s=61.4481*(51-e.latitude),s-=n,s>6e3-2*n?s=6e3-2*n:s<0&&(s=0),r=42.1768*(-129.138-e.longitude)*-1,r-=t,r>2800-2*t?r=2800-2*t:r<0&&(r=0),{x:2*r,y:2*s}})(t,240,138),b=S.x/2,k=S.y/2,C=await Promise.all(m.map((async e=>{const t=document.createElement("canvas");t.width=640,t.height=367;const n=t.getContext("2d");n.imageSmoothingEnabled=!1;const s=await fetch((0,o.O)(e));if(!s.ok)throw new Error(`Unable to fetch radar error ${s.status} ${s.statusText} from ${s.url}`);const i=await s.blob(),l=e.match(/_(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)\./);let u;if(l){const[,e,t,n,s,a]=l;u=r.c9.fromObject({year:e,month:t,day:n,hour:s,minute:a},{zone:"UTC"}).setZone((0,c.eB)())}else u=r.c9.fromHTTP(s.headers.get("last-modified")).setZone((0,c.eB)());const d=await(0,a.u)(i);v.clearRect(0,0,y,1600),v.drawImage(d,0,0,y,1600),n.drawImage(await this.baseMap,p.x,p.y,480,276,0,0,640,367);const h=document.createElement("canvas");h.width=640,h.height=367;const m=h.getContext("2d",{willReadFrequently:!0});m.imageSmoothingEnabled=!1,m.drawImage(w,b,k,240,163.1,0,0,640,367),(e=>{const t=e.getImageData(0,0,e.canvas.width,e.canvas.height);for(let e=0;e{const n=e.getImageData(0,0,e.canvas.width,e.canvas.height),s=t.getImageData(0,0,t.canvas.width,t.canvas.height);for(let e=0;ee.elem))),this.timing.totalScreens=C.length,this.data=C.map((e=>e.canvas)),this.times=C.map((e=>e.time)),this.setStatus(s.Ay.loaded)}async drawCanvas(){super.drawCanvas();const e=this.times[this.screenIndex].toLocaleString(r.c9.TIME_SIMPLE),t=e.length>=8?e:` ${e}`;this.elem.querySelector(".header .right .time").innerHTML=t;const n=this.elem.querySelector(".frame").scrollHeight;this.elem.querySelector(".scroll-area").style.top=-this.screenIndex*n+"px",this.finishDraw()}}(0,c.Kb)(new u(10,"radar"))},187:(e,t,n)=>{var s=n(592),r=n(519),a=n(440),i=n(413),o=n(716),l=n(47),c=n(125),u=n(24),d=n(211);const h=(e,t,n)=>({daytime:e.isDaytime,temperature:e.temperature||0,name:v(t.city),icon:e.icon,x:n.x,y:n.y,time:e.startTime}),m=(e,t,n,s)=>{let r=0,a=0;return r=56*(73-e),r-=s,r>1142-2*s?r=1142-2*s:r<0&&(r=0),a=25*(-175-t)*-1,a-=n,a>1200-2*n?a=1200-2*n:a<0&&(a=0),{x:a,y:r}},f=(e,t,n,s)=>{let r=0,a=0;return r=55.2*(25-e),r-=s,r>571-2*s?r=571-2*s:r<0&&(r=0),a=41.775*(-164.5-t)*-1,a-=n,a>600-2*n?a=600-2*n:a<0&&(a=0),{x:a,y:r}},g=(e,t,n,s)=>({minLat:-1*((t+2*s)/56-73),maxLat:-1*(t/56-73),minLon:-1*(-1*e/25+175),maxLon:-1*(-1*(e+2*n)/25+175)}),y=(e,t,n,s)=>({minLat:-1*((t+2*s)/55.2-25),maxLat:-1*(t/55.2-25),minLon:-1*(-1*e/41.775+164.5),maxLon:-1*(-1*(e+2*n)/41.775+164.5)}),p=(e,t,n)=>{let s=37*(e.lon-n),r=70*(t-e.lat);return r<30&&(r=30),r>282&&(r=282),s<40&&(s=40),s>580&&(s=580),{x:s,y:r}},w=(e,t,n)=>{let s=57*(e.lon-n),r=70*(t-e.lat);return r<30&&(r=30),r>282&&(r=282),s<40&&(s=40),s>580&&(s=580),{x:s,y:r}},v=e=>e.match(/[^,/;\\-]*/)[0].substr(0,12);var S=n(348);class b extends u.A{constructor(e,t){super(e,t,"Regional Forecast",!0),this.timing.totalScreens=3}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;let n="images/Basemap2.png";"HI"===t.state?n="images/HawaiiRadarMap4.png":"AK"===t.state&&(n="images/AlaskaRadarMap6.png"),this.elem.querySelector(".map img").src=n;const c={x:240,y:117},u=((e,t,n,s,r)=>{if("AK"===r)return m(e,t,n,s);if("HI"===r)return f(e,t,n,s);let a=0,i=0;return a=55.2*(50.5-e),a-=s,a>1600-2*s?a=1600-2*s:a<0&&(a=0),i=41.775*(-127.5-t)*-1,i-=n,i>2550-2*n?i=2550-2*n:i<0&&(i=0),{x:i,y:a}})(t.latitude,t.longitude,c.x,c.y,t.state),d=(S=u.x,b=u.y,C=c.x,T=c.y,"AK"===(x=t.state)?g(S,b,C,T):"HI"===x?y(S,b,C,T):{minLat:-1*((b+2*T)/55.2-50.5),maxLat:-1*(b/55.2-50.5),minLon:-1*(-1*S/41.775+127.5),maxLon:-1*(-1*(S+2*C)/41.775+127.5)});var S,b,C,T,x;let L=2.5;"HI"===t.state&&(L=1);const D=Object.values(StationInfo).map((e=>({...e,targetDistance:L}))),M=[...RegionalCities,...D],I=[];M.forEach((e=>{if(e.lat>d.minLat&&e.latd.minLon&&e.lon{const a=(0,r.Io)(e.lon,e.lat,s.lon,s.lat);return n&&a>=t}),!0)&&I.push(e)}}));const N=await Promise.all(I.map((async e=>{try{const n=e?.point??await k(e.lat,e.lon);if(!n)throw new Error("No pre-loaded point");const s=(async(e,t)=>{try{const t=(await(0,a.Pq)(`https://api.weather.gov/gridpoints/${e.wfo}/${e.x},${e.y}/stations`)).features[0].id,n=await(0,a.Pq)(`${t}/observations/latest`);if(!n.properties.icon)return!1;const s=(0,o.Wu)(n.properties.icon,!n.properties.daytime);return!!s&&((0,l.b)(s),n.properties)}catch(e){return console.log(`Unable to get regional observations for ${t.Name??t.city}`),console.error(e.status,e.responseJSON),!1}})(n,e),r=await(0,a.Pq)(`https://api.weather.gov/gridpoints/${n.wfo}/${n.x},${n.y}/forecast`),c=((e,t,n,s)=>{"AK"===s&&p(e,t,n),"HI"===s&&w(e,t,n);let r=57*(e.lon-n),a=70*(t-e.lat);return a<30&&(a=30),a>282&&(a=282),r<40&&(r=40),r>580&&(r=580),{x:r,y:a}})(e,d.maxLat,d.minLon,t.state),u=await s;if(!u)return!1;const m={daytime:!!/\/day\//.test(u.icon),temperature:(0,i.sz)(u.temperature.value),name:v(e.city),icon:u.icon,x:c.x,y:c.y};return(0,l.b)((0,o.Wu)(m.icon,!m.daytime)),[m,h(r.properties.periods[1],e,c),h(r.properties.periods[2],e,c)]}catch(t){return console.log(`No regional forecast data for '${e.name??e.city}'`),console.log(t),!1}}))),O=N.filter((e=>e));0!==O.length?(this.data={regionalData:O,offsetXY:c,sourceXY:u},this.setStatus(s.Ay.loaded)):this.setStatus(s.Ay.noData)}drawCanvas(){super.drawCanvas();const{regionalData:e,sourceXY:t,offsetXY:n}=this.data,s=this.elem.querySelector(".title.dual .top"),r=this.elem.querySelector(".title.dual .bottom");if(0===this.screenIndex)s.innerHTML="Regional",r.innerHTML="Observations";else{const t=c.c9.fromISO(e[0][this.screenIndex].time).toLocaleString({weekday:"long"});s.innerHTML="Forecast for",r.innerHTML=e[0][this.screenIndex].daytime?t:`${t} Night`}const a=640/(2*n.x);this.elem.querySelector(".map").style.transform=`scale(${a}) translate(-${t.x}px, -${t.y}px)`;const i=e.map((e=>{const t={},n=e[this.screenIndex];t.icon={type:"img",src:(0,o.Wu)(n.icon,!n.daytime)},t.city=n.name;const{temperature:s}=n;t.temp=s;const{x:r,y:a}=n,i=this.fillTemplate("location",t);return i.style.left=`${r}px`,i.style.top=`${a}px`,i})),l=this.elem.querySelector(".location-container");l.innerHTML="",l.append(...i),this.finishDraw()}}const k=async(e,t)=>{const n=await(0,S.f)(e,t);return{x:n.properties.gridX,y:n.properties.gridY,wfo:n.properties.gridId}};(0,d.Kb)(new b(6,"regional-forecast"))},302:(e,t,n)=>{n.d(t,{A:()=>u});var s=n(999);const r="Settings";const a=class{constructor(e,t,n,r,a,i,o){this.shortName=e,this.name=t,this.defaultValue=r,this.myValue=r,this.type=n??"checkbox",this.sticky=i,this.values=o,this.changeAction=a??(()=>{});const l=(0,s.J)()?.[`settings-${e}-${n}`];let c;"checkbox"===n&&void 0!==l&&(c="true"===l),"select"===n&&void 0!==l&&(c=parseFloat(l));const u=c??this.getFromLocalStorage();if(i&&null!==u&&(this.myValue=u),"select"===n)this.selectChange({target:{value:this.myValue}});else this.checkboxChange({target:{checked:this.myValue}})}generateSelect(){const e=document.createElement("label");e.for=`settings-${this.shortName}-select`,e.id=`settings-${this.shortName}-label`;const t=document.createElement("span");t.innerHTML=`${this.name} `,e.append(t);const n=document.createElement("select");return n.id=`settings-${this.shortName}-select`,n.name=`settings-${this.shortName}-select`,n.addEventListener("change",(e=>this.selectChange(e))),this.values.forEach((([e,t])=>{const s=document.createElement("option");s.value=e.toFixed(2),s.innerHTML=t,n.append(s)})),e.append(n),this.element=e,this.selectHighlight(this.myValue),e}generateCheckbox(){const e=document.createElement("label");e.for=`settings-${this.shortName}-checkbox`,e.id=`settings-${this.shortName}-label`;const t=document.createElement("input");t.type="checkbox",t.value=!0,t.id=`settings-${this.shortName}-checkbox`,t.name=`settings-${this.shortName}-checkbox`,t.checked=this.myValue,t.addEventListener("change",(e=>this.checkboxChange(e)));const n=document.createElement("span");return n.innerHTML=this.name,e.append(t,n),this.element=e,e}checkboxChange(e){this.myValue=e.target.checked,this.storeToLocalStorage(this.myValue),this.changeAction(this.myValue)}selectChange(e){this.myValue=parseFloat(e.target.value),this.storeToLocalStorage(this.myValue),this.changeAction(this.myValue)}storeToLocalStorage(e){if(!this.sticky)return;const t=localStorage?.getItem(r)??"{}",n=JSON.parse(t);n[this.shortName]=e,localStorage?.setItem(r,JSON.stringify(n))}getFromLocalStorage(){const e=localStorage?.getItem(r);try{if(e){const t=JSON.parse(e)?.[this.shortName];if(void 0!==t)switch(this.type){case"boolean":case"select":return t;default:return null}}}catch{return null}return null}get value(){return this.myValue}set value(e){if(this.myValue=e,"select"===this.type)this.selectHighlight(e);else this.element.checked=e;this.storeToLocalStorage(this.myValue),this.changeAction(this.myValue)}selectHighlight(e){this.element.querySelectorAll("option").forEach((t=>{t.selected=e.toFixed(2)===t.value}))}generate(){return"select"===this.type?this.generateSelect():this.generateCheckbox()}};document.addEventListener("DOMContentLoaded",(()=>{o()}));const i={speed:{value:1}},o=()=>{i.wide=new a("wide","Widescreen","boolean",!1,l,!0),i.kiosk=new a("kiosk","Kiosk","boolean",!1,c,!1),i.speed=new a("speed","Speed","select",1,null,!0,[[.5,"Very Fast"],[.75,"Fast"],[1,"Normal"],[1.25,"Slow"],[1.5,"Very Slow"]]);const e=Object.values(i).map((e=>e.generate())),t=document.querySelector("#settings");t.innerHTML="",t.append(...e)},l=e=>{const t=document.querySelector("#divTwc");e?t.classList.add("wide"):t.classList.remove("wide")},c=e=>{const t=document.querySelector("body");e?(t.classList.add("kiosk"),window.dispatchEvent(new Event("resize"))):t.classList.remove("kiosk")},u=i},999:(e,t,n)=>{n.d(t,{J:()=>l}),document.addEventListener("DOMContentLoaded",(()=>r()));const s={kiosk:"settings-kiosk-checkbox"},r=()=>{const e=document.querySelector("#share-link");e.addEventListener("click",a),navigator?.clipboard||(e.textContent="Get Permalink")},a=async e=>{e.preventDefault();const t=document.querySelectorAll("input[type=checkbox]"),n={};[...t].forEach((e=>{e?.id&&(n[e.id]=e?.checked??!1)}));[...document.querySelectorAll("select")].forEach((e=>{e?.id&&(n[e.id]=e?.value??0)})),n.latLonQuery=localStorage.getItem("latLonQuery"),n.latLon=localStorage.getItem("latLon");const s=new URLSearchParams(n).toString(),r=new URL(`?${s}`,document.location.href);navigator?.clipboard?i(r):o(r)},i=async e=>{try{await navigator.clipboard.writeText(e.toString());const t=document.querySelector("#share-link-copied");t.style.display="inline",setTimeout((()=>{t.style.display="none"}),5e3)}catch(e){console.error(e)}},o=e=>{const t=document.querySelector("#share-link-instructions"),n=t.querySelector("#share-link-url");n.value=e,t.style.display="inline",n.focus(),n.select()},l=()=>{if(l.params)return l.params;const e=[...new URLSearchParams(window.location.search)];return e.forEach((t=>{const n=s[t[0]];n&&e.push([n,t[1]])})),l.params=Object.fromEntries(e),l.params}},592:(e,t,n)=>{n.d(t,{Ay:()=>i,LR:()=>a,qx:()=>r});const s={loading:Symbol("loading"),loaded:Symbol("loaded"),failed:Symbol("failed"),noData:Symbol("noData"),disabled:Symbol("disabled"),retrying:Symbol("retrying")},r=e=>{switch(e){case s.loading:return"loading";case s.loaded:return"press-here";case s.failed:return"failed";case s.noData:return"no-data";case s.disabled:return"disabled";case s.retrying:return"retrying";default:return""}},a=["loading","press-here","failed","no-data","disabled","retrying"],i=s},709:(e,t,n)=>{var s=n(592),r=n(440),a=n(716),i=n(125),o=n(24),l=n(211);class c extends o.A{constructor(e,t,n){super(e,t,"Travel Forecast",n),this.timing.baseDelay=20;const s=TravelCities.length/4,r=Math.floor(s)-2,a=r%1;this.timing.delay=[450];for(let e=0;e{try{if(!e.point)throw new Error("No pre-loaded point");const t=await(0,r.Pq)(`https://api.weather.gov/gridpoints/${e.point.wfo}/${e.point.x},${e.point.y}/forecast`),n=t.properties.periods[0].isDaytime?0:1;return{today:0===n,high:t.properties.periods[n].temperature,low:t.properties.periods[n+1].temperature,name:e.Name,icon:(0,a.Wu)(t.properties.periods[n].icon)}}catch(t){return console.error(`GetTravelWeather for ${e.Name} failed`),console.error(t.status,t.responseJSON),{name:e.Name,error:!0}}})),t=await Promise.all(e);this.data=t;this.data.some((e=>e.high))?(this.setStatus(s.Ay.loaded),this.drawLongCanvas()):this.setStatus(s.Ay.noData)}async drawLongCanvas(){const e=this.elem.querySelector(".travel-lines");e.innerHTML="";const t=this.data.map((e=>{if(e.error)return!1;const t={city:e};if(e.icon){t.city=e.name;const{low:n,high:s}=e,r=Math.round(n).toString(),a=Math.round(s).toString();t.low=r,t.high=a;const{icon:i}=e;t.icon={type:"img",src:i}}else t.error="NO TRAVEL DATA AVAILABLE";return this.fillTemplate("travel-row",t)})).filter((e=>e));e.append(...t)}async drawCanvas(){super.drawCanvas();const e=this.data;this.elem.querySelector(".header .title.dual .bottom").innerHTML=`For ${u(e)}`,this.finishDraw()}async showCanvas(){await this.drawCanvas(),super.showCanvas()}screenIndexChange(){this.baseCountChange(this.navBaseCount)}baseCountChange(e){let t=Math.min(this.elem.querySelector(".travel-lines").getBoundingClientRect().height-289,e-150);t<0&&(t=0),this.elem.querySelector(".main").scrollTo(0,t)}getLongCanvas(){return this.longCanvas}}const u=e=>e.reduce(((e,t)=>{if(t&&""===e){return i.c9.local().plus({days:t.today?0:1}).toLocaleString({weekday:"long"})}return e}),"");(0,l.Kb)(new c(5,"travel",!1))},519:(e,t,n)=>{n.d(t,{Io:()=>r,LV:()=>a,Up:()=>s});const s=e=>["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"][Math.floor(e/22.5+.5)%16],r=(e,t,n,s)=>Math.sqrt((n-e)**2+(s-t)**2),a=(e,t)=>(e%t+t)%t},147:(e,t,n)=>{n.d(t,{O:()=>s});const s=e=>{let t=e;return t=t.replace("https://api.weather.gov/",`${window.location.protocol}//${window.location.host}/`),t=t.replace("https://www.cpc.ncep.noaa.gov/",`${window.location.protocol}//${window.location.host}/`),t}},440:(e,t,n)=>{n.d(t,{Pq:()=>r,Qq:()=>a,av:()=>i});var s=n(147);const r=(e,t)=>o(e,"json",t),a=(e,t)=>o(e,"text",t),i=(e,t)=>o(e,"blob",t),o=async(e,t,n={})=>{const r={method:"GET",mode:"cors",type:"GET",retryCount:0,...n};r.originalRetries=r.retryCount;let a=e;!0===r.cors&&(a=(0,s.O)(e));const i=new URL(a,`${window.location.origin}/`);r.data&&Object.keys(r.data).forEach((e=>{const t=r.data[e];i.searchParams.append(e,t)}));const o=await l(i,r);if(!o.ok)throw new Error(`Fetch error ${o.status} ${o.statusText} while fetching ${o.url}`);switch(t){case"json":return o.json();case"text":return o.text();case"blob":return o.blob();default:return o}},l=(e,t)=>new Promise(((n,s)=>{fetch(e,t).then((s=>{if(t.retryCount>0){if(s.status>=500&&s.status<=599&&t.retryCount>0){"function"==typeof t.stillWaiting&&t.retryCount===t.originalRetries&&t.stillWaiting();const s={...t,retryCount:t.retryCount-1};return n(c(u(t.originalRetries-s.retryCount),l,e,s))}return n(s)}return n(s)})).catch((e=>s(e)))})),c=(e,t,...n)=>new Promise((s=>{setTimeout((()=>{s(t(...n))}),e)})),u=e=>{switch(e){case 1:return 1e3;case 2:return 2e3;case 3:return 5e3;case 4:return 1e4;default:return 3e4}}},47:(e,t,n)=>{n.d(t,{b:()=>o,u:()=>a});var s=n(440),r=n(147);const a=(e,t=!1)=>new Promise((n=>{const s=new Image;if(s.onload=e=>{n(e.target)},e instanceof Blob)s.src=window.URL.createObjectURL(e);else{let n=e;t&&(n=(0,r.O)(e)),s.src=n}})),i=[],o=e=>!i.includes(e)&&((0,s.av)(e),i.push(e),!0)},430:(e,t,n)=>{n.d(t,{A:()=>a});let s=!1;const r=(e=!1)=>(r.controller||(r.controller=new NoSleep),s!==e&&(s=e,e?r.controller.enable():r.controller.disable())),a=r},891:(e,t,n)=>{n.d(t,{C:()=>s});const s=e=>[/^[ A-Za-z]+ \/ /,/^[ A-Za-z]+\//,/^[ A-Za-z]+, /].reduce(((e,t)=>e.replace(t,"")),e)},413:(e,t,n)=>{n.d(t,{Q8:()=>o,X4:()=>s,Yy:()=>r,lt:()=>i,sz:()=>a,yX:()=>l});const s=(e,t)=>Math.trunc(e*10**t)/10**t,r=e=>Math.round(e/1.60934),a=e=>Math.round(9*e/5+32),i=e=>Math.round(e/1.60934),o=e=>Math.round(e/.3048),l=e=>s(2953e-7*e,2)},348:(e,t,n)=>{n.d(t,{f:()=>r});var s=n(440);const r=async(e,t)=>{try{return await(0,s.Pq)(`https://api.weather.gov/points/${e},${t}`)}catch(n){return console.log(`Unable to get point ${e}, ${t}`),console.error(n),!1}}},24:(e,t,n)=>{n.d(t,{A:()=>l});var s=n(592),r=n(125),a=n(211),i=n(999),o=n(302);const l=class{constructor(e,t,n,r){this.navId=e,this.elemId=void 0,this.data=void 0,this.loadingStatus=s.Ay.loading,this.name=n??t,this.getDataCallbacks=[],this.stillWaitingCallbacks=[],this.defaultEnabled=r,this.okToDrawCurrentConditions=!0,this.okToDrawCurrentDateTime=!0,this.showOnProgress=!0,this.timing={totalScreens:1,baseDelay:9e3,delay:1},this.navBaseCount=0,this.screenIndex=-1,this.storeElemId(t),this.isEnabled?this.setStatus(s.Ay.loading):this.setStatus(s.Ay.disabled),this.startNavCount(),document.addEventListener("DOMContentLoaded",(()=>{this.loadTemplates()}))}generateCheckbox(e=!0){if("progress"===this.elemId)return!1;const t=(0,i.J)()?.[`${this.elemId}-checkbox`];let n;void 0!==t&&(n="true"===t);let s=n??window.localStorage.getItem(`display-enabled: ${this.elemId}`);null===s&&(s=e),this.isEnabled=!("true"!==s&&!0!==s),window.localStorage.setItem(`display-enabled: ${this.elemId}`,this.isEnabled);const r=document.createElement("label");r.for=`${this.elemId}-checkbox`,r.id=`${this.elemId}-label`;const a=document.createElement("input");a.type="checkbox",a.value=!0,a.id=`${this.elemId}-checkbox`,a.name=`${this.elemId}-checkbox`,a.checked=this.isEnabled,a.addEventListener("change",(e=>this.checkboxChange(e)));const o=document.createElement("span");o.innerHTML=this.name;const l=document.createElement("span");return l.innerHTML="!!!",l.classList.add("alert"),r.append(a,o,l),this.checkbox=r,r}checkboxChange(e){this.isEnabled=e.target.checked,window.localStorage.setItem(`display-enabled: ${this.elemId}`,this.isEnabled),this.getData()}setStatus(e){this.status=e,(0,a.yB)({id:this.navId,status:this.status}),this.checkbox&&(this.checkbox.classList.remove(...s.LR),this.checkbox.classList.add((0,s.qx)(e)))}get status(){return this.loadingStatus}set status(e){this.loadingStatus=e}storeElemId(e){this.elemId||(this.elemId=e)}getData(e){return this.data=void 0,e&&(this.weatherParameters=e),this.isEnabled?(this.setStatus(s.Ay.loading),this.calcNavTiming(),!0):(this.setStatus(s.Ay.disabled),!1)}getDataCallback(){this.getDataCallbacks.forEach((e=>e(this.data))),this.getDataCallbacks=[]}drawCanvas(){this.screenIndex<0&&(this.screenIndex=0),this.okToDrawCurrentDateTime&&this.drawCurrentDateTime()}finishDraw(){this.okToDrawCurrentDateTime&&(this.drawCurrentDateTime(),this.dateTimeInterval||(this.dateTimeInterval=setInterval((()=>this.active&&this.drawCurrentDateTime()),100)))}drawCurrentDateTime(){const e=r.c9.local().setZone((0,a.eB)()),t=e.toLocaleString(r.c9.TIME_WITH_SECONDS).padStart(11," "),n=e.toFormat(" ccc LLL ")+e.day.toString().padStart(2," "),s=this.elem.querySelector(".date-time.date"),i=this.elem.querySelector(".date-time.time");i&&this.lastTime!==t&&(i.innerHTML=t.toUpperCase()),this.lastTime=t,s&&this.lastDate!==n&&(s.innerHTML=n.toUpperCase()),this.lastDate=n}showCanvas(e){e===a.ab.command.firstFrame&&this.navNext(e),e===a.ab.command.lastFrame&&this.navPrev(e),this.startNavCount(),this.elem.classList.add("show"),document.querySelector("#divTwc").classList.add(this.elemId)}hideCanvas(){this.resetNavBaseCount(),this.elem.classList.remove("show"),document.querySelector("#divTwc").classList.remove(this.elemId)}get active(){return 0!==this.elem.offsetHeight}get enabled(){return this.isEnabled}navBaseTime(){(0,a.F4)()&&this.active&&(this.navBaseCount+=1,this.baseCountChange&&this.baseCountChange(this.navBaseCount),this.updateScreenFromBaseCount())}async updateScreenFromBaseCount(){const e=this.screenIndexFromBaseCount();!1!==e?e!==this.screenIndex&&(this.screenIndex=-1===e?0:e,this.screenIndexChange?this.screenIndexChange(this.screenIndex):await this.drawCanvas(),this.showCanvas()):this.sendNavDisplayMessage(a.ab.response.next)}calcNavTiming(){if(!1===this.timing)return;Array.isArray(this.timing.delay)&&(this.timing.totalScreens=this.timing.delay.length);let e=[];if("number"==typeof this.timing.delay)for(let t=0;t"object"==typeof e?e.time:e));let t=0;if(this.timing.fullDelay=e.map((e=>{const n=t+e;return t+=e,n})),Array.isArray(this.timing.delay)&&"object"==typeof this.timing.delay[0])this.timing.screenIndexes=this.timing.delay.map((e=>e.si));else{this.timing.screenIndexes=[];for(let e=0;ee>this.navBaseCount));this.navBaseCount=e}this.updateScreenFromBaseCount()}navPrev(e){if(e===a.ab.command.lastFrame)this.navBaseCount=this.timing.fullDelay[this.timing.totalScreens-1]-1;else{const e=this.timing.fullDelay.reduce(((e,t)=>te>this.navBaseCount));return-1!==e&&this.timing.screenIndexes[e]}startNavCount(){this.navInterval||(this.navInterval=setInterval((()=>this.navBaseTime()),this.timing.baseDelay*o.A.speed.value))}resetNavBaseCount(){this.navBaseCount=0,this.screenIndex=-1,this.navInterval&&(clearInterval(this.navInterval),this.navInterval=void 0)}sendNavDisplayMessage(e){(0,a.Ju)({id:this.navId,type:e})}loadTemplates(){if(this.templates={},this.elem=document.querySelector(`#${this.elemId}-html`),!this.elem)return;this.elem.querySelectorAll(".template").forEach((e=>{const t=e.classList[0],n=e.cloneNode(!0);n.classList.remove("template"),this.templates[t]=n,e.remove()}))}fillTemplate(e,t){const n=this.templates[e];if(!n)return!1;const s=n.cloneNode(!0);return Object.entries(t).forEach((([e,t])=>{const n=s.querySelector(`.${e}`);n&&("string"==typeof t||"number"==typeof t?n.innerHTML=t:"img"===t?.type&&(n.querySelector("img").src=t.src))})),s}stillWaiting(){this.isEnabled&&this.setStatus(s.Ay.retrying),this.stillWaitingCallbacks.forEach((e=>e())),this.stillWaitingCallbacks=[]}}},125:(e,t,n)=>{n.d(t,{IX:()=>xn,c9:()=>gs,dw:()=>Cn});class s extends Error{}class r extends s{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class a extends s{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class i extends s{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class o extends s{}class l extends s{constructor(e){super(`Invalid unit ${e}`)}}class c extends s{}class u extends s{constructor(){super("Zone is an abstract class")}}const d="numeric",h="short",m="long",f={year:d,month:d,day:d},g={year:d,month:h,day:d},y={year:d,month:h,day:d,weekday:h},p={year:d,month:m,day:d},w={year:d,month:m,day:d,weekday:m},v={hour:d,minute:d},S={hour:d,minute:d,second:d},b={hour:d,minute:d,second:d,timeZoneName:h},k={hour:d,minute:d,second:d,timeZoneName:m},C={hour:d,minute:d,hourCycle:"h23"},T={hour:d,minute:d,second:d,hourCycle:"h23"},x={hour:d,minute:d,second:d,hourCycle:"h23",timeZoneName:h},L={hour:d,minute:d,second:d,hourCycle:"h23",timeZoneName:m},D={year:d,month:d,day:d,hour:d,minute:d},M={year:d,month:d,day:d,hour:d,minute:d,second:d},I={year:d,month:h,day:d,hour:d,minute:d},N={year:d,month:h,day:d,hour:d,minute:d,second:d},O={year:d,month:h,day:d,weekday:h,hour:d,minute:d},E={year:d,month:m,day:d,hour:d,minute:d,timeZoneName:h},$={year:d,month:m,day:d,hour:d,minute:d,second:d,timeZoneName:h},F={year:d,month:m,day:d,weekday:m,hour:d,minute:d,timeZoneName:m},q={year:d,month:m,day:d,weekday:m,hour:d,minute:d,second:d,timeZoneName:m};class W{get type(){throw new u}get name(){throw new u}get ianaName(){return this.name}get isUniversal(){throw new u}offsetName(e,t){throw new u}formatOffset(e,t){throw new u}offset(e){throw new u}equals(e){throw new u}get isValid(){throw new u}}let A=null;class V extends W{static get instance(){return null===A&&(A=new V),A}get type(){return"system"}get name(){return(new Intl.DateTimeFormat).resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return nt(e,t,n)}formatOffset(e,t){return it(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return"system"===e.type}get isValid(){return!0}}let _={};const P={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};let H={};class z extends W{static create(e){return H[e]||(H[e]=new z(e)),H[e]}static resetCache(){H={},_={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch(e){return!1}}constructor(e){super(),this.zoneName=e,this.valid=z.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return nt(e,t,n,this.name)}formatOffset(e,t){return it(this.offset(e),t)}offset(e){const t=new Date(e);if(isNaN(t))return NaN;const n=(s=this.name,_[s]||(_[s]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:s,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),_[s]);var s;let[r,a,i,o,l,c,u]=n.formatToParts?function(e,t){const n=e.formatToParts(t),s=[];for(let e=0;e=0?h:1e3+h,(Qe({year:r,month:a,day:i,hour:24===l?0:l,minute:c,second:u,millisecond:0})-d)/6e4}equals(e){return"iana"===e.type&&e.name===this.name}get isValid(){return this.valid}}let Z={};let R={};function U(e,t={}){const n=JSON.stringify([e,t]);let s=R[n];return s||(s=new Intl.DateTimeFormat(e,t),R[n]=s),s}let j={};let B={};let J=null;let G={};function Y(e,t,n,s){const r=e.listingMode();return"error"===r?null:"en"===r?n(t):s(t)}class K{constructor(e,t,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;const{padTo:s,floor:r,...a}=n;if(!t||Object.keys(a).length>0){const t={useGrouping:!1,...n};n.padTo>0&&(t.minimumIntegerDigits=n.padTo),this.inf=function(e,t={}){const n=JSON.stringify([e,t]);let s=j[n];return s||(s=new Intl.NumberFormat(e,t),j[n]=s),s}(e,t)}}format(e){if(this.inf){const t=this.floor?Math.floor(e):e;return this.inf.format(t)}return Re(this.floor?Math.floor(e):Je(e,3),this.padTo)}}class Q{constructor(e,t,n){let s;if(this.opts=n,this.originalZone=void 0,this.opts.timeZone)this.dt=e;else if("fixed"===e.zone.type){const t=e.offset/60*-1,n=t>=0?`Etc/GMT+${t}`:`Etc/GMT${t}`;0!==e.offset&&z.create(n).valid?(s=n,this.dt=e):(s="UTC",this.dt=0===e.offset?e:e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone)}else"system"===e.zone.type?this.dt=e:"iana"===e.zone.type?(this.dt=e,s=e.zone.name):(s="UTC",this.dt=e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone);const r={...this.opts};r.timeZone=r.timeZone||s,this.dtf=U(t,r)}format(){return this.originalZone?this.formatToParts().map((({value:e})=>e)).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){const e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map((e=>{if("timeZoneName"===e.type){const t=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...e,value:t}}return e})):e}resolvedOptions(){return this.dtf.resolvedOptions()}}class X{constructor(e,t,n){this.opts={style:"long",...n},!t&&Ve()&&(this.rtf=function(e,t={}){const{base:n,...s}=t,r=JSON.stringify([e,s]);let a=B[r];return a||(a=new Intl.RelativeTimeFormat(e,t),B[r]=a),a}(e,n))}format(e,t){return this.rtf?this.rtf.format(e,t):function(e,t,n="always",s=!1){const r={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},a=-1===["hours","minutes","seconds"].indexOf(e);if("auto"===n&&a){const n="days"===e;switch(t){case 1:return n?"tomorrow":`next ${r[e][0]}`;case-1:return n?"yesterday":`last ${r[e][0]}`;case 0:return n?"today":`this ${r[e][0]}`}}const i=Object.is(t,-0)||t<0,o=Math.abs(t),l=1===o,c=r[e],u=s?l?c[1]:c[2]||c[1]:l?r[e][0]:e;return i?`${o} ${u} ago`:`in ${o} ${u}`}(t,e,this.opts.numeric,"long"!==this.opts.style)}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}}const ee={firstDay:1,minimalDays:4,weekend:[6,7]};class te{static fromOpts(e){return te.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,t,n,s,r=!1){const a=e||ve.defaultLocale,i=a||(r?"en-US":J||(J=(new Intl.DateTimeFormat).resolvedOptions().locale,J)),o=t||ve.defaultNumberingSystem,l=n||ve.defaultOutputCalendar,c=ze(s)||ve.defaultWeekSettings;return new te(i,o,l,c,a)}static resetCache(){J=null,R={},j={},B={}}static fromObject({locale:e,numberingSystem:t,outputCalendar:n,weekSettings:s}={}){return te.create(e,t,n,s)}constructor(e,t,n,s,r){const[a,i,o]=function(e){const t=e.indexOf("-x-");-1!==t&&(e=e.substring(0,t));const n=e.indexOf("-u-");if(-1===n)return[e];{let t,s;try{t=U(e).resolvedOptions(),s=e}catch(r){const a=e.substring(0,n);t=U(a).resolvedOptions(),s=a}const{numberingSystem:r,calendar:a}=t;return[s,r,a]}}(e);this.locale=a,this.numberingSystem=t||i||null,this.outputCalendar=n||o||null,this.weekSettings=s,this.intl=function(e,t,n){return n||t?(e.includes("-u-")||(e+="-u"),n&&(e+=`-ca-${n}`),t&&(e+=`-nu-${t}`),e):e}(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=r,this.fastNumbersCached=null}get fastNumbers(){var e;return null==this.fastNumbersCached&&(this.fastNumbersCached=(!(e=this).numberingSystem||"latn"===e.numberingSystem)&&("latn"===e.numberingSystem||!e.locale||e.locale.startsWith("en")||"latn"===new Intl.DateTimeFormat(e.intl).resolvedOptions().numberingSystem)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),t=!(null!==this.numberingSystem&&"latn"!==this.numberingSystem||null!==this.outputCalendar&&"gregory"!==this.outputCalendar);return e&&t?"en":"intl"}clone(e){return e&&0!==Object.getOwnPropertyNames(e).length?te.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,ze(e.weekSettings)||this.weekSettings,e.defaultToEN||!1):this}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,t=!1){return Y(this,e,dt,(()=>{const n=t?{month:e,day:"numeric"}:{month:e},s=t?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=function(e){const t=[];for(let n=1;n<=12;n++){const s=gs.utc(2009,n,1);t.push(e(s))}return t}((e=>this.extract(e,n,"month")))),this.monthsCache[s][e]}))}weekdays(e,t=!1){return Y(this,e,gt,(()=>{const n=t?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},s=t?"format":"standalone";return this.weekdaysCache[s][e]||(this.weekdaysCache[s][e]=function(e){const t=[];for(let n=1;n<=7;n++){const s=gs.utc(2016,11,13+n);t.push(e(s))}return t}((e=>this.extract(e,n,"weekday")))),this.weekdaysCache[s][e]}))}meridiems(){return Y(this,void 0,(()=>yt),(()=>{if(!this.meridiemCache){const e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[gs.utc(2016,11,13,9),gs.utc(2016,11,13,19)].map((t=>this.extract(t,e,"dayperiod")))}return this.meridiemCache}))}eras(e){return Y(this,e,St,(()=>{const t={era:e};return this.eraCache[e]||(this.eraCache[e]=[gs.utc(-40,1,1),gs.utc(2017,1,1)].map((e=>this.extract(e,t,"era")))),this.eraCache[e]}))}extract(e,t,n){const s=this.dtFormatter(e,t).formatToParts().find((e=>e.type.toLowerCase()===n));return s?s.value:null}numberFormatter(e={}){return new K(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new Q(e,this.intl,t)}relFormatter(e={}){return new X(this.intl,this.isEnglish(),e)}listFormatter(e={}){return function(e,t={}){const n=JSON.stringify([e,t]);let s=Z[n];return s||(s=new Intl.ListFormat(e,t),Z[n]=s),s}(this.intl,e)}isEnglish(){return"en"===this.locale||"en-us"===this.locale.toLowerCase()||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:_e()?function(e){let t=G[e];if(!t){const n=new Intl.Locale(e);t="getWeekInfo"in n?n.getWeekInfo():n.weekInfo,G[e]=t}return t}(this.locale):ee}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}}let ne=null;class se extends W{static get utcInstance(){return null===ne&&(ne=new se(0)),ne}static instance(e){return 0===e?se.utcInstance:new se(e)}static parseSpecifier(e){if(e){const t=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(t)return new se(st(t[1],t[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return 0===this.fixed?"UTC":`UTC${it(this.fixed,"narrow")}`}get ianaName(){return 0===this.fixed?"Etc/UTC":`Etc/GMT${it(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,t){return it(this.fixed,t)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return"fixed"===e.type&&e.fixed===this.fixed}get isValid(){return!0}}class re extends W{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function ae(e,t){if(qe(e)||null===e)return t;if(e instanceof W)return e;if("string"==typeof e){const n=e.toLowerCase();return"default"===n?t:"local"===n||"system"===n?V.instance:"utc"===n||"gmt"===n?se.utcInstance:se.parseSpecifier(n)||z.create(e)}return We(e)?se.instance(e):"object"==typeof e&&"offset"in e&&"function"==typeof e.offset?e:new re(e)}const ie={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},oe={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},le=ie.hanidec.replace(/[\[|\]]/g,"").split("");let ce={};function ue({numberingSystem:e},t=""){const n=e||"latn";return ce[n]||(ce[n]={}),ce[n][t]||(ce[n][t]=new RegExp(`${ie[n]}${t}`)),ce[n][t]}let de,he=()=>Date.now(),me="system",fe=null,ge=null,ye=null,pe=60,we=null;class ve{static get now(){return he}static set now(e){he=e}static set defaultZone(e){me=e}static get defaultZone(){return ae(me,V.instance)}static get defaultLocale(){return fe}static set defaultLocale(e){fe=e}static get defaultNumberingSystem(){return ge}static set defaultNumberingSystem(e){ge=e}static get defaultOutputCalendar(){return ye}static set defaultOutputCalendar(e){ye=e}static get defaultWeekSettings(){return we}static set defaultWeekSettings(e){we=ze(e)}static get twoDigitCutoffYear(){return pe}static set twoDigitCutoffYear(e){pe=e%100}static get throwOnInvalid(){return de}static set throwOnInvalid(e){de=e}static resetCaches(){te.resetCache(),z.resetCache(),gs.resetCache(),ce={}}}class Se{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}const be=[0,31,59,90,120,151,181,212,243,273,304,334],ke=[0,31,60,91,121,152,182,213,244,274,305,335];function Ce(e,t){return new Se("unit out of range",`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function Te(e,t,n){const s=new Date(Date.UTC(e,t-1,n));e<100&&e>=0&&s.setUTCFullYear(s.getUTCFullYear()-1900);const r=s.getUTCDay();return 0===r?7:r}function xe(e,t,n){return n+(Ge(e)?ke:be)[t-1]}function Le(e,t){const n=Ge(e)?ke:be,s=n.findIndex((e=>eet(s,t,n)?(l=s+1,c=1):l=s,{weekYear:l,weekNumber:c,weekday:o,...ot(e)}}function Ie(e,t=4,n=1){const{weekYear:s,weekNumber:r,weekday:a}=e,i=De(Te(s,1,t),n),o=Ye(s);let l,c=7*r+a-i-7+t;c<1?(l=s-1,c+=Ye(l)):c>o?(l=s+1,c-=Ye(s)):l=s;const{month:u,day:d}=Le(l,c);return{year:l,month:u,day:d,...ot(e)}}function Ne(e){const{year:t,month:n,day:s}=e;return{year:t,ordinal:xe(t,n,s),...ot(e)}}function Oe(e){const{year:t,ordinal:n}=e,{month:s,day:r}=Le(t,n);return{year:t,month:s,day:r,...ot(e)}}function Ee(e,t){if(!qe(e.localWeekday)||!qe(e.localWeekNumber)||!qe(e.localWeekYear)){if(!qe(e.weekday)||!qe(e.weekNumber)||!qe(e.weekYear))throw new o("Cannot mix locale-based week fields with ISO-based week fields");return qe(e.localWeekday)||(e.weekday=e.localWeekday),qe(e.localWeekNumber)||(e.weekNumber=e.localWeekNumber),qe(e.localWeekYear)||(e.weekYear=e.localWeekYear),delete e.localWeekday,delete e.localWeekNumber,delete e.localWeekYear,{minDaysInFirstWeek:t.getMinDaysInFirstWeek(),startOfWeek:t.getStartOfWeek()}}return{minDaysInFirstWeek:4,startOfWeek:1}}function $e(e){const t=Ae(e.year),n=Ze(e.month,1,12),s=Ze(e.day,1,Ke(e.year,e.month));return t?n?!s&&Ce("day",e.day):Ce("month",e.month):Ce("year",e.year)}function Fe(e){const{hour:t,minute:n,second:s,millisecond:r}=e,a=Ze(t,0,23)||24===t&&0===n&&0===s&&0===r,i=Ze(n,0,59),o=Ze(s,0,59),l=Ze(r,0,999);return a?i?o?!l&&Ce("millisecond",r):Ce("second",s):Ce("minute",n):Ce("hour",t)}function qe(e){return void 0===e}function We(e){return"number"==typeof e}function Ae(e){return"number"==typeof e&&e%1==0}function Ve(){try{return"undefined"!=typeof Intl&&!!Intl.RelativeTimeFormat}catch(e){return!1}}function _e(){try{return"undefined"!=typeof Intl&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch(e){return!1}}function Pe(e,t,n){if(0!==e.length)return e.reduce(((e,s)=>{const r=[t(s),s];return e&&n(e[0],r[0])===e[0]?e:r}),null)[1]}function He(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function ze(e){if(null==e)return null;if("object"!=typeof e)throw new c("Week settings must be an object");if(!Ze(e.firstDay,1,7)||!Ze(e.minimalDays,1,7)||!Array.isArray(e.weekend)||e.weekend.some((e=>!Ze(e,1,7))))throw new c("Invalid week settings");return{firstDay:e.firstDay,minimalDays:e.minimalDays,weekend:Array.from(e.weekend)}}function Ze(e,t,n){return Ae(e)&&e>=t&&e<=n}function Re(e,t=2){let n;return n=e<0?"-"+(""+-e).padStart(t,"0"):(""+e).padStart(t,"0"),n}function Ue(e){return qe(e)||null===e||""===e?void 0:parseInt(e,10)}function je(e){return qe(e)||null===e||""===e?void 0:parseFloat(e)}function Be(e){if(!qe(e)&&null!==e&&""!==e){const t=1e3*parseFloat("0."+e);return Math.floor(t)}}function Je(e,t,n=!1){const s=10**t;return(n?Math.trunc:Math.round)(e*s)/s}function Ge(e){return e%4==0&&(e%100!=0||e%400==0)}function Ye(e){return Ge(e)?366:365}function Ke(e,t){const n=function(e,t){return e-t*Math.floor(e/t)}(t-1,12)+1;return 2===n?Ge(e+(t-n)/12)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function Qe(e){let t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&e.year>=0&&(t=new Date(t),t.setUTCFullYear(e.year,e.month-1,e.day)),+t}function Xe(e,t,n){return-De(Te(e,1,t),n)+t-1}function et(e,t=4,n=1){const s=Xe(e,t,n),r=Xe(e+1,t,n);return(Ye(e)-s+r)/7}function tt(e){return e>99?e:e>ve.twoDigitCutoffYear?1900+e:2e3+e}function nt(e,t,n,s=null){const r=new Date(e),a={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};s&&(a.timeZone=s);const i={timeZoneName:t,...a},o=new Intl.DateTimeFormat(n,i).formatToParts(r).find((e=>"timezonename"===e.type.toLowerCase()));return o?o.value:null}function st(e,t){let n=parseInt(e,10);Number.isNaN(n)&&(n=0);const s=parseInt(t,10)||0;return 60*n+(n<0||Object.is(n,-0)?-s:s)}function rt(e){const t=Number(e);if("boolean"==typeof e||""===e||Number.isNaN(t))throw new c(`Invalid unit value ${e}`);return t}function at(e,t){const n={};for(const s in e)if(He(e,s)){const r=e[s];if(null==r)continue;n[t(s)]=rt(r)}return n}function it(e,t){const n=Math.trunc(Math.abs(e/60)),s=Math.trunc(Math.abs(e%60)),r=e>=0?"+":"-";switch(t){case"short":return`${r}${Re(n,2)}:${Re(s,2)}`;case"narrow":return`${r}${n}${s>0?`:${s}`:""}`;case"techie":return`${r}${Re(n,2)}${Re(s,2)}`;default:throw new RangeError(`Value format ${t} is out of range for property format`)}}function ot(e){return function(e,t){return t.reduce(((t,n)=>(t[n]=e[n],t)),{})}(e,["hour","minute","second","millisecond"])}const lt=["January","February","March","April","May","June","July","August","September","October","November","December"],ct=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],ut=["J","F","M","A","M","J","J","A","S","O","N","D"];function dt(e){switch(e){case"narrow":return[...ut];case"short":return[...ct];case"long":return[...lt];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const ht=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],mt=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],ft=["M","T","W","T","F","S","S"];function gt(e){switch(e){case"narrow":return[...ft];case"short":return[...mt];case"long":return[...ht];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const yt=["AM","PM"],pt=["Before Christ","Anno Domini"],wt=["BC","AD"],vt=["B","A"];function St(e){switch(e){case"narrow":return[...vt];case"short":return[...wt];case"long":return[...pt];default:return null}}function bt(e,t){let n="";for(const s of e)s.literal?n+=s.val:n+=t(s.val);return n}const kt={D:f,DD:g,DDD:p,DDDD:w,t:v,tt:S,ttt:b,tttt:k,T:C,TT:T,TTT:x,TTTT:L,f:D,ff:I,fff:E,ffff:F,F:M,FF:N,FFF:$,FFFF:q};class Ct{static create(e,t={}){return new Ct(e,t)}static parseFormat(e){let t=null,n="",s=!1;const r=[];for(let a=0;a0&&r.push({literal:s||/^\s+$/.test(n),val:n}),t=null,n="",s=!s):s||i===t?n+=i:(n.length>0&&r.push({literal:/^\s+$/.test(n),val:n}),n=i,t=i)}return n.length>0&&r.push({literal:s||/^\s+$/.test(n),val:n}),r}static macroTokenToFormatOpts(e){return kt[e]}constructor(e,t){this.opts=t,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,t){null===this.systemLoc&&(this.systemLoc=this.loc.redefaultToSystem());return this.systemLoc.dtFormatter(e,{...this.opts,...t}).format()}dtFormatter(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t})}formatDateTime(e,t){return this.dtFormatter(e,t).format()}formatDateTimeParts(e,t){return this.dtFormatter(e,t).formatToParts()}formatInterval(e,t){return this.dtFormatter(e.start,t).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,t){return this.dtFormatter(e,t).resolvedOptions()}num(e,t=0){if(this.opts.forceSimple)return Re(e,t);const n={...this.opts};return t>0&&(n.padTo=t),this.loc.numberFormatter(n).format(e)}formatDateTimeFromString(e,t){const n="en"===this.loc.listingMode(),s=this.loc.outputCalendar&&"gregory"!==this.loc.outputCalendar,r=(t,n)=>this.loc.extract(e,t,n),a=t=>e.isOffsetFixed&&0===e.offset&&t.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,t.format):"",i=()=>n?function(e){return yt[e.hour<12?0:1]}(e):r({hour:"numeric",hourCycle:"h12"},"dayperiod"),o=(t,s)=>n?function(e,t){return dt(t)[e.month-1]}(e,t):r(s?{month:t}:{month:t,day:"numeric"},"month"),l=(t,s)=>n?function(e,t){return gt(t)[e.weekday-1]}(e,t):r(s?{weekday:t}:{weekday:t,month:"long",day:"numeric"},"weekday"),c=t=>{const n=Ct.macroTokenToFormatOpts(t);return n?this.formatWithSystemDefault(e,n):t},u=t=>n?function(e,t){return St(t)[e.year<0?0:1]}(e,t):r({era:t},"era");return bt(Ct.parseFormat(t),(t=>{switch(t){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12==0?12:e.hour%12);case"hh":return this.num(e.hour%12==0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return a({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return a({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return a({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return i();case"d":return s?r({day:"numeric"},"day"):this.num(e.day);case"dd":return s?r({day:"2-digit"},"day"):this.num(e.day,2);case"c":case"E":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return s?r({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return s?r({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return o("short",!0);case"LLLL":return o("long",!0);case"LLLLL":return o("narrow",!0);case"M":return s?r({month:"numeric"},"month"):this.num(e.month);case"MM":return s?r({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return o("short",!1);case"MMMM":return o("long",!1);case"MMMMM":return o("narrow",!1);case"y":return s?r({year:"numeric"},"year"):this.num(e.year);case"yy":return s?r({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return s?r({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return s?r({year:"numeric"},"year"):this.num(e.year,6);case"G":return u("short");case"GG":return u("long");case"GGGGG":return u("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"n":return this.num(e.localWeekNumber);case"nn":return this.num(e.localWeekNumber,2);case"ii":return this.num(e.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(e.localWeekYear,4);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return c(t)}}))}formatDurationFromString(e,t){const n=e=>{switch(e[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},s=Ct.parseFormat(t),r=s.reduce(((e,{literal:t,val:n})=>t?e:e.concat(n)),[]);return bt(s,(e=>t=>{const s=n(t);return s?this.num(e.get(s),t.length):t})(e.shiftTo(...r.map(n).filter((e=>e)))))}}const Tt=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function xt(...e){const t=e.reduce(((e,t)=>e+t.source),"");return RegExp(`^${t}$`)}function Lt(...e){return t=>e.reduce((([e,n,s],r)=>{const[a,i,o]=r(t,s);return[{...e,...a},i||n,o]}),[{},null,1]).slice(0,2)}function Dt(e,...t){if(null==e)return[null,null];for(const[n,s]of t){const t=n.exec(e);if(t)return s(t)}return[null,null]}function Mt(...e){return(t,n)=>{const s={};let r;for(r=0;rvoid 0!==e&&(t||e&&u)?-e:e;return[{years:h(je(n)),months:h(je(s)),weeks:h(je(r)),days:h(je(a)),hours:h(je(i)),minutes:h(je(o)),seconds:h(je(l),"-0"===l),milliseconds:h(Be(c),d)}]}const Rt={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Ut(e,t,n,s,r,a,i){const o={year:2===t.length?tt(Ue(t)):Ue(t),month:ct.indexOf(n)+1,day:Ue(s),hour:Ue(r),minute:Ue(a)};return i&&(o.second=Ue(i)),e&&(o.weekday=e.length>3?ht.indexOf(e)+1:mt.indexOf(e)+1),o}const jt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function Bt(e){const[,t,n,s,r,a,i,o,l,c,u,d]=e,h=Ut(t,r,s,n,a,i,o);let m;return m=l?Rt[l]:c?0:st(u,d),[h,new se(m)]}const Jt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,Gt=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,Yt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function Kt(e){const[,t,n,s,r,a,i,o]=e;return[Ut(t,r,s,n,a,i,o),se.utcInstance]}function Qt(e){const[,t,n,s,r,a,i,o]=e;return[Ut(t,o,n,s,r,a,i),se.utcInstance]}const Xt=xt(/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,Et),en=xt(/(\d{4})-?W(\d\d)(?:-?(\d))?/,Et),tn=xt(/(\d{4})-?(\d{3})/,Et),nn=xt(Ot),sn=Lt((function(e,t){return[{year:At(e,t),month:At(e,t+1,1),day:At(e,t+2,1)},null,t+3]}),Vt,_t,Pt),rn=Lt($t,Vt,_t,Pt),an=Lt(Ft,Vt,_t,Pt),on=Lt(Vt,_t,Pt);const ln=Lt(Vt);const cn=xt(/(\d{4})-(\d\d)-(\d\d)/,Wt),un=xt(qt),dn=Lt(Vt,_t,Pt);const hn="Invalid Duration",mn={weeks:{days:7,hours:168,minutes:10080,seconds:604800,milliseconds:6048e5},days:{hours:24,minutes:1440,seconds:86400,milliseconds:864e5},hours:{minutes:60,seconds:3600,milliseconds:36e5},minutes:{seconds:60,milliseconds:6e4},seconds:{milliseconds:1e3}},fn={years:{quarters:4,months:12,weeks:52,days:365,hours:8760,minutes:525600,seconds:31536e3,milliseconds:31536e6},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:131040,seconds:7862400,milliseconds:78624e5},months:{weeks:4,days:30,hours:720,minutes:43200,seconds:2592e3,milliseconds:2592e6},...mn},gn=365.2425,yn=30.436875,pn={years:{quarters:4,months:12,weeks:52.1775,days:gn,hours:8765.82,minutes:525949.2,seconds:525949.2*60,milliseconds:525949.2*60*1e3},quarters:{months:3,weeks:13.044375,days:91.310625,hours:2191.455,minutes:131487.3,seconds:525949.2*60/4,milliseconds:7889237999.999999},months:{weeks:4.3481250000000005,days:yn,hours:730.485,minutes:43829.1,seconds:2629746,milliseconds:2629746e3},...mn},wn=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],vn=wn.slice(0).reverse();function Sn(e,t,n=!1){const s={values:n?t.values:{...e.values,...t.values||{}},loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy,matrix:t.matrix||e.matrix};return new Cn(s)}function bn(e,t){let n=t.milliseconds??0;for(const s of vn.slice(1))t[s]&&(n+=t[s]*e[s].milliseconds);return n}function kn(e,t){const n=bn(e,t)<0?-1:1;wn.reduceRight(((s,r)=>{if(qe(t[r]))return s;if(s){const a=t[s]*n,i=e[r][s],o=Math.floor(a/i);t[r]+=o*n,t[s]-=o*i*n}return r}),null),wn.reduce(((n,s)=>{if(qe(t[s]))return n;if(n){const r=t[n]%1;t[n]-=r,t[s]+=r*e[n][s]}return s}),null)}class Cn{constructor(e){const t="longterm"===e.conversionAccuracy||!1;let n=t?pn:fn;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||te.create(),this.conversionAccuracy=t?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(e,t){return Cn.fromObject({milliseconds:e},t)}static fromObject(e,t={}){if(null==e||"object"!=typeof e)throw new c("Duration.fromObject: argument expected to be an object, got "+(null===e?"null":typeof e));return new Cn({values:at(e,Cn.normalizeUnit),loc:te.fromObject(t),conversionAccuracy:t.conversionAccuracy,matrix:t.matrix})}static fromDurationLike(e){if(We(e))return Cn.fromMillis(e);if(Cn.isDuration(e))return e;if("object"==typeof e)return Cn.fromObject(e);throw new c(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,t){const[n]=function(e){return Dt(e,[zt,Zt])}(e);return n?Cn.fromObject(n,t):Cn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,t){const[n]=function(e){return Dt(e,[Ht,ln])}(e);return n?Cn.fromObject(n,t):Cn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the Duration is invalid");const n=e instanceof Se?e:new Se(e,t);if(ve.throwOnInvalid)throw new i(n);return new Cn({invalid:n})}static normalizeUnit(e){const t={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e?e.toLowerCase():e];if(!t)throw new l(e);return t}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,t={}){const n={...t,floor:!1!==t.round&&!1!==t.floor};return this.isValid?Ct.create(this.loc,n).formatDurationFromString(this,e):hn}toHuman(e={}){if(!this.isValid)return hn;const t=wn.map((t=>{const n=this.values[t];return qe(n)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:t.slice(0,-1)}).format(n)})).filter((e=>e));return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(t)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return 0!==this.years&&(e+=this.years+"Y"),0===this.months&&0===this.quarters||(e+=this.months+3*this.quarters+"M"),0!==this.weeks&&(e+=this.weeks+"W"),0!==this.days&&(e+=this.days+"D"),0===this.hours&&0===this.minutes&&0===this.seconds&&0===this.milliseconds||(e+="T"),0!==this.hours&&(e+=this.hours+"H"),0!==this.minutes&&(e+=this.minutes+"M"),0===this.seconds&&0===this.milliseconds||(e+=Je(this.seconds+this.milliseconds/1e3,3)+"S"),"P"===e&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const t=this.toMillis();if(t<0||t>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1};return gs.fromMillis(t,{zone:"UTC"}).toISOTime(e)}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?bn(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const t=Cn.fromDurationLike(e),n={};for(const e of wn)(He(t.values,e)||He(this.values,e))&&(n[e]=t.get(e)+this.get(e));return Sn(this,{values:n},!0)}minus(e){if(!this.isValid)return this;const t=Cn.fromDurationLike(e);return this.plus(t.negate())}mapUnits(e){if(!this.isValid)return this;const t={};for(const n of Object.keys(this.values))t[n]=rt(e(this.values[n],n));return Sn(this,{values:t},!0)}get(e){return this[Cn.normalizeUnit(e)]}set(e){if(!this.isValid)return this;return Sn(this,{values:{...this.values,...at(e,Cn.normalizeUnit)}})}reconfigure({locale:e,numberingSystem:t,conversionAccuracy:n,matrix:s}={}){return Sn(this,{loc:this.loc.clone({locale:e,numberingSystem:t}),matrix:s,conversionAccuracy:n})}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return kn(this.matrix,e),Sn(this,{values:e},!0)}rescale(){if(!this.isValid)return this;return Sn(this,{values:function(e){const t={};for(const[n,s]of Object.entries(e))0!==s&&(t[n]=s);return t}(this.normalize().shiftToAll().toObject())},!0)}shiftTo(...e){if(!this.isValid)return this;if(0===e.length)return this;e=e.map((e=>Cn.normalizeUnit(e)));const t={},n={},s=this.toObject();let r;for(const a of wn)if(e.indexOf(a)>=0){r=a;let e=0;for(const t in n)e+=this.matrix[t][a]*n[t],n[t]=0;We(s[a])&&(e+=s[a]);const i=Math.trunc(e);t[a]=i,n[a]=(1e3*e-1e3*i)/1e3}else We(s[a])&&(n[a]=s[a]);for(const e in n)0!==n[e]&&(t[r]+=e===r?n[e]:n[e]/this.matrix[r][e]);return kn(this.matrix,t),Sn(this,{values:t},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;const e={};for(const t of Object.keys(this.values))e[t]=0===this.values[t]?0:-this.values[t];return Sn(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return null===this.invalid}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid)return!1;if(!this.loc.equals(e.loc))return!1;for(const s of wn)if(t=this.values[s],n=e.values[s],!(void 0===t||0===t?void 0===n||0===n:t===n))return!1;var t,n;return!0}}const Tn="Invalid Interval";class xn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the Interval is invalid");const n=e instanceof Se?e:new Se(e,t);if(ve.throwOnInvalid)throw new a(n);return new xn({invalid:n})}static fromDateTimes(e,t){const n=ys(e),s=ys(t),r=function(e,t){return e&&e.isValid?t&&t.isValid?te}isBefore(e){return!!this.isValid&&this.e<=e}contains(e){return!!this.isValid&&(this.s<=e&&this.e>e)}set({start:e,end:t}={}){return this.isValid?xn.fromDateTimes(e||this.s,t||this.e):this}splitAt(...e){if(!this.isValid)return[];const t=e.map(ys).filter((e=>this.contains(e))).sort(((e,t)=>e.toMillis()-t.toMillis())),n=[];let{s}=this,r=0;for(;s+this.e?this.e:e;n.push(xn.fromDateTimes(s,a)),s=a,r+=1}return n}splitBy(e){const t=Cn.fromDurationLike(e);if(!this.isValid||!t.isValid||0===t.as("milliseconds"))return[];let n,{s}=this,r=1;const a=[];for(;se*r)));n=+e>+this.e?this.e:e,a.push(xn.fromDateTimes(s,n)),s=n,r+=1}return a}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s=e.e)}equals(e){return!(!this.isValid||!e.isValid)&&(this.s.equals(e.s)&&this.e.equals(e.e))}intersection(e){if(!this.isValid)return this;const t=this.s>e.s?this.s:e.s,n=this.e=n?null:xn.fromDateTimes(t,n)}union(e){if(!this.isValid)return this;const t=this.se.e?this.e:e.e;return xn.fromDateTimes(t,n)}static merge(e){const[t,n]=e.sort(((e,t)=>e.s-t.s)).reduce((([e,t],n)=>t?t.overlaps(n)||t.abutsStart(n)?[e,t.union(n)]:[e.concat([t]),n]:[e,n]),[[],null]);return n&&t.push(n),t}static xor(e){let t=null,n=0;const s=[],r=e.map((e=>[{time:e.s,type:"s"},{time:e.e,type:"e"}])),a=Array.prototype.concat(...r).sort(((e,t)=>e.time-t.time));for(const e of a)n+="s"===e.type?1:-1,1===n?t=e.time:(t&&+t!=+e.time&&s.push(xn.fromDateTimes(t,e.time)),t=null);return xn.merge(s)}difference(...e){return xn.xor([this].concat(e)).map((e=>this.intersection(e))).filter((e=>e&&!e.isEmpty()))}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:Tn}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=f,t={}){return this.isValid?Ct.create(this.s.loc.clone(t),e).formatInterval(this):Tn}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Tn}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Tn}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Tn}toFormat(e,{separator:t=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:Tn}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):Cn.invalid(this.invalidReason)}mapEndpoints(e){return xn.fromDateTimes(e(this.s),e(this.e))}}class Ln{static hasDST(e=ve.defaultZone){const t=gs.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return z.isValidZone(e)}static normalizeZone(e){return ae(e,ve.defaultZone)}static getStartOfWeek({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getWeekendDays().slice()}static months(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null,outputCalendar:r="gregory"}={}){return(s||te.create(t,n,r)).months(e)}static monthsFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null,outputCalendar:r="gregory"}={}){return(s||te.create(t,n,r)).months(e,!0)}static weekdays(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null}={}){return(s||te.create(t,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null}={}){return(s||te.create(t,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return te.create(e).meridiems()}static eras(e="short",{locale:t=null}={}){return te.create(t,null,"gregory").eras(e)}static features(){return{relative:Ve(),localeWeek:_e()}}}function Dn(e,t){const n=e=>e.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),s=n(t)-n(e);return Math.floor(Cn.fromMillis(s).as("days"))}function Mn(e,t,n,s){let[r,a,i,o]=function(e,t,n){const s=[["years",(e,t)=>t.year-e.year],["quarters",(e,t)=>t.quarter-e.quarter+4*(t.year-e.year)],["months",(e,t)=>t.month-e.month+12*(t.year-e.year)],["weeks",(e,t)=>{const n=Dn(e,t);return(n-n%7)/7}],["days",Dn]],r={},a=e;let i,o;for(const[l,c]of s)n.indexOf(l)>=0&&(i=l,r[l]=c(e,t),o=a.plus(r),o>t?(r[l]--,(e=a.plus(r))>t&&(o=e,r[l]--,e=a.plus(r))):e=o);return[e,r,o,i]}(e,t,n);const l=t-r,c=n.filter((e=>["hours","minutes","seconds","milliseconds"].indexOf(e)>=0));0===c.length&&(i0?Cn.fromMillis(l,s).shiftTo(...c).plus(u):u}function In(e,t=e=>e){return{regex:e,deser:([e])=>t(function(e){let t=parseInt(e,10);if(isNaN(t)){t="";for(let n=0;n=n&&s<=r&&(t+=s-n)}}return parseInt(t,10)}return t}(e))}}const Nn=`[ ${String.fromCharCode(160)}]`,On=new RegExp(Nn,"g");function En(e){return e.replace(/\./g,"\\.?").replace(On,Nn)}function $n(e){return e.replace(/\./g,"").replace(On," ").toLowerCase()}function Fn(e,t){return null===e?null:{regex:RegExp(e.map(En).join("|")),deser:([n])=>e.findIndex((e=>$n(n)===$n(e)))+t}}function qn(e,t){return{regex:e,deser:([,e,t])=>st(e,t),groups:t}}function Wn(e){return{regex:e,deser:([e])=>e}}const An={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};let Vn=null;function _n(e,t){return Array.prototype.concat(...e.map((e=>function(e,t){if(e.literal)return e;const n=zn(Ct.macroTokenToFormatOpts(e.val),t);return null==n||n.includes(void 0)?e:n}(e,t))))}class Pn{constructor(e,t){if(this.locale=e,this.format=t,this.tokens=_n(Ct.parseFormat(t),e),this.units=this.tokens.map((t=>function(e,t){const n=ue(t),s=ue(t,"{2}"),r=ue(t,"{3}"),a=ue(t,"{4}"),i=ue(t,"{6}"),o=ue(t,"{1,2}"),l=ue(t,"{1,3}"),c=ue(t,"{1,6}"),u=ue(t,"{1,9}"),d=ue(t,"{2,4}"),h=ue(t,"{4,6}"),m=e=>{return{regex:RegExp((t=e.val,t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"))),deser:([e])=>e,literal:!0};var t},f=(f=>{if(e.literal)return m(f);switch(f.val){case"G":return Fn(t.eras("short"),0);case"GG":return Fn(t.eras("long"),0);case"y":return In(c);case"yy":case"kk":return In(d,tt);case"yyyy":case"kkkk":return In(a);case"yyyyy":return In(h);case"yyyyyy":return In(i);case"M":case"L":case"d":case"H":case"h":case"m":case"q":case"s":case"W":return In(o);case"MM":case"LL":case"dd":case"HH":case"hh":case"mm":case"qq":case"ss":case"WW":return In(s);case"MMM":return Fn(t.months("short",!0),1);case"MMMM":return Fn(t.months("long",!0),1);case"LLL":return Fn(t.months("short",!1),1);case"LLLL":return Fn(t.months("long",!1),1);case"o":case"S":return In(l);case"ooo":case"SSS":return In(r);case"u":return Wn(u);case"uu":return Wn(o);case"uuu":case"E":case"c":return In(n);case"a":return Fn(t.meridiems(),0);case"EEE":return Fn(t.weekdays("short",!1),1);case"EEEE":return Fn(t.weekdays("long",!1),1);case"ccc":return Fn(t.weekdays("short",!0),1);case"cccc":return Fn(t.weekdays("long",!0),1);case"Z":case"ZZ":return qn(new RegExp(`([+-]${o.source})(?::(${s.source}))?`),2);case"ZZZ":return qn(new RegExp(`([+-]${o.source})(${s.source})?`),2);case"z":return Wn(/[a-z_+-/]{1,256}?/i);case" ":return Wn(/[^\S\n\r]/);default:return m(f)}})(e)||{invalidReason:"missing Intl.DateTimeFormat.formatToParts support"};return f.token=e,f}(t,e))),this.disqualifyingUnit=this.units.find((e=>e.invalidReason)),!this.disqualifyingUnit){const[e,t]=[`^${(n=this.units).map((e=>e.regex)).reduce(((e,t)=>`${e}(${t.source})`),"")}$`,n];this.regex=RegExp(e,"i"),this.handlers=t}var n}explainFromTokens(e){if(this.isValid){const[t,n]=function(e,t,n){const s=e.match(t);if(s){const e={};let t=1;for(const r in n)if(He(n,r)){const a=n[r],i=a.groups?a.groups+1:1;!a.literal&&a.token&&(e[a.token.val[0]]=a.deser(s.slice(t,t+i))),t+=i}return[s,e]}return[s,{}]}(e,this.regex,this.handlers),[s,r,a]=n?function(e){let t,n=null;return qe(e.z)||(n=z.create(e.z)),qe(e.Z)||(n||(n=new se(e.Z)),t=e.Z),qe(e.q)||(e.M=3*(e.q-1)+1),qe(e.h)||(e.h<12&&1===e.a?e.h+=12:12===e.h&&0===e.a&&(e.h=0)),0===e.G&&e.y&&(e.y=-e.y),qe(e.u)||(e.S=Be(e.u)),[Object.keys(e).reduce(((t,n)=>{const s=(e=>{switch(e){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}})(n);return s&&(t[s]=e[n]),t}),{}),n,t]}(n):[null,null,void 0];if(He(n,"a")&&He(n,"H"))throw new o("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:this.tokens,regex:this.regex,rawMatches:t,matches:n,result:s,zone:r,specificOffset:a}}return{input:e,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}}function Hn(e,t,n){return new Pn(e,n).explainFromTokens(t)}function zn(e,t){if(!e)return null;const n=Ct.create(t,e).dtFormatter((Vn||(Vn=gs.fromMillis(1555555555555)),Vn)),s=n.formatToParts(),r=n.resolvedOptions();return s.map((t=>function(e,t,n){const{type:s,value:r}=e;if("literal"===s){const e=/^\s+$/.test(r);return{literal:!e,val:e?" ":r}}const a=t[s];let i=s;"hour"===s&&(i=null!=t.hour12?t.hour12?"hour12":"hour24":null!=t.hourCycle?"h11"===t.hourCycle||"h12"===t.hourCycle?"hour12":"hour24":n.hour12?"hour12":"hour24");let o=An[i];if("object"==typeof o&&(o=o[a]),o)return{literal:!1,val:o}}(t,e,r)))}const Zn="Invalid DateTime",Rn=864e13;function Un(e){return new Se("unsupported zone",`the zone "${e.name}" is not supported`)}function jn(e){return null===e.weekData&&(e.weekData=Me(e.c)),e.weekData}function Bn(e){return null===e.localWeekData&&(e.localWeekData=Me(e.c,e.loc.getMinDaysInFirstWeek(),e.loc.getStartOfWeek())),e.localWeekData}function Jn(e,t){const n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new gs({...n,...t,old:n})}function Gn(e,t,n){let s=e-60*t*1e3;const r=n.offset(s);if(t===r)return[s,t];s-=60*(r-t)*1e3;const a=n.offset(s);return r===a?[s,r]:[e-60*Math.min(r,a)*1e3,Math.max(r,a)]}function Yn(e,t){const n=new Date(e+=60*t*1e3);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function Kn(e,t,n){return Gn(Qe(e),t,n)}function Qn(e,t){const n=e.o,s=e.c.year+Math.trunc(t.years),r=e.c.month+Math.trunc(t.months)+3*Math.trunc(t.quarters),a={...e.c,year:s,month:r,day:Math.min(e.c.day,Ke(s,r))+Math.trunc(t.days)+7*Math.trunc(t.weeks)},i=Cn.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as("milliseconds"),o=Qe(a);let[l,c]=Gn(o,n,e.zone);return 0!==i&&(l+=i,c=e.zone.offset(l)),{ts:l,o:c}}function Xn(e,t,n,s,r,a){const{setZone:i,zone:o}=n;if(e&&0!==Object.keys(e).length||t){const s=t||o,r=gs.fromObject(e,{...n,zone:s,specificOffset:a});return i?r:r.setZone(o)}return gs.invalid(new Se("unparsable",`the input "${r}" can't be parsed as ${s}`))}function es(e,t,n=!0){return e.isValid?Ct.create(te.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function ts(e,t){const n=e.c.year>9999||e.c.year<0;let s="";return n&&e.c.year>=0&&(s+="+"),s+=Re(e.c.year,n?6:4),t?(s+="-",s+=Re(e.c.month),s+="-",s+=Re(e.c.day)):(s+=Re(e.c.month),s+=Re(e.c.day)),s}function ns(e,t,n,s,r,a){let i=Re(e.c.hour);return t?(i+=":",i+=Re(e.c.minute),0===e.c.millisecond&&0===e.c.second&&n||(i+=":")):i+=Re(e.c.minute),0===e.c.millisecond&&0===e.c.second&&n||(i+=Re(e.c.second),0===e.c.millisecond&&s||(i+=".",i+=Re(e.c.millisecond,3))),r&&(e.isOffsetFixed&&0===e.offset&&!a?i+="Z":e.o<0?(i+="-",i+=Re(Math.trunc(-e.o/60)),i+=":",i+=Re(Math.trunc(-e.o%60))):(i+="+",i+=Re(Math.trunc(e.o/60)),i+=":",i+=Re(Math.trunc(e.o%60)))),a&&(i+="["+e.zone.ianaName+"]"),i}const ss={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},rs={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},as={ordinal:1,hour:0,minute:0,second:0,millisecond:0},is=["year","month","day","hour","minute","second","millisecond"],os=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],ls=["year","ordinal","hour","minute","second","millisecond"];function cs(e){switch(e.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return function(e){const t={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[e.toLowerCase()];if(!t)throw new l(e);return t}(e)}}function us(e,t){const n=ae(t.zone,ve.defaultZone);if(!n.isValid)return gs.invalid(Un(n));const s=te.fromObject(t);let r,a;if(qe(e.year))r=ve.now();else{for(const t of is)qe(e[t])&&(e[t]=ss[t]);const t=$e(e)||Fe(e);if(t)return gs.invalid(t);const s=function(e){return fs[e]||(void 0===ms&&(ms=ve.now()),fs[e]=e.offset(ms)),fs[e]}(n);[r,a]=Kn(e,s,n)}return new gs({ts:r,zone:n,loc:s,o:a})}function ds(e,t,n){const s=!!qe(n.round)||n.round,r=(e,r)=>{e=Je(e,s||n.calendary?0:2,!0);return t.loc.clone(n).relFormatter(n).format(e,r)},a=s=>n.calendary?t.hasSame(e,s)?0:t.startOf(s).diff(e.startOf(s),s).get(s):t.diff(e,s).get(s);if(n.unit)return r(a(n.unit),n.unit);for(const e of n.units){const t=a(e);if(Math.abs(t)>=1)return r(t,e)}return r(e>t?-0:0,n.units[n.units.length-1])}function hs(e){let t,n={};return e.length>0&&"object"==typeof e[e.length-1]?(n=e[e.length-1],t=Array.from(e).slice(0,e.length-1)):t=Array.from(e),[n,t]}let ms,fs={};class gs{constructor(e){const t=e.zone||ve.defaultZone;let n=e.invalid||(Number.isNaN(e.ts)?new Se("invalid input"):null)||(t.isValid?null:Un(t));this.ts=qe(e.ts)?ve.now():e.ts;let s=null,r=null;if(!n){if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t))[s,r]=[e.old.c,e.old.o];else{const a=We(e.o)&&!e.old?e.o:t.offset(this.ts);s=Yn(this.ts,a),n=Number.isNaN(s.year)?new Se("invalid input"):null,s=n?null:s,r=n?null:a}}this._zone=t,this.loc=e.loc||te.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=s,this.o=r,this.isLuxonDateTime=!0}static now(){return new gs({})}static local(){const[e,t]=hs(arguments),[n,s,r,a,i,o,l]=t;return us({year:n,month:s,day:r,hour:a,minute:i,second:o,millisecond:l},e)}static utc(){const[e,t]=hs(arguments),[n,s,r,a,i,o,l]=t;return e.zone=se.utcInstance,us({year:n,month:s,day:r,hour:a,minute:i,second:o,millisecond:l},e)}static fromJSDate(e,t={}){const n=(s=e,"[object Date]"===Object.prototype.toString.call(s)?e.valueOf():NaN);var s;if(Number.isNaN(n))return gs.invalid("invalid input");const r=ae(t.zone,ve.defaultZone);return r.isValid?new gs({ts:n,zone:r,loc:te.fromObject(t)}):gs.invalid(Un(r))}static fromMillis(e,t={}){if(We(e))return e<-Rn||e>Rn?gs.invalid("Timestamp out of range"):new gs({ts:e,zone:ae(t.zone,ve.defaultZone),loc:te.fromObject(t)});throw new c(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,t={}){if(We(e))return new gs({ts:1e3*e,zone:ae(t.zone,ve.defaultZone),loc:te.fromObject(t)});throw new c("fromSeconds requires a numerical input")}static fromObject(e,t={}){e=e||{};const n=ae(t.zone,ve.defaultZone);if(!n.isValid)return gs.invalid(Un(n));const s=te.fromObject(t),r=at(e,cs),{minDaysInFirstWeek:a,startOfWeek:i}=Ee(r,s),l=ve.now(),c=qe(t.specificOffset)?n.offset(l):t.specificOffset,u=!qe(r.ordinal),d=!qe(r.year),h=!qe(r.month)||!qe(r.day),m=d||h,f=r.weekYear||r.weekNumber;if((m||u)&&f)throw new o("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(h&&u)throw new o("Can't mix ordinal dates with month/day");const g=f||r.weekday&&!m;let y,p,w=Yn(l,c);g?(y=os,p=rs,w=Me(w,a,i)):u?(y=ls,p=as,w=Ne(w)):(y=is,p=ss);let v=!1;for(const e of y){qe(r[e])?r[e]=v?p[e]:w[e]:v=!0}const S=g?function(e,t=4,n=1){const s=Ae(e.weekYear),r=Ze(e.weekNumber,1,et(e.weekYear,t,n)),a=Ze(e.weekday,1,7);return s?r?!a&&Ce("weekday",e.weekday):Ce("week",e.weekNumber):Ce("weekYear",e.weekYear)}(r,a,i):u?function(e){const t=Ae(e.year),n=Ze(e.ordinal,1,Ye(e.year));return t?!n&&Ce("ordinal",e.ordinal):Ce("year",e.year)}(r):$e(r),b=S||Fe(r);if(b)return gs.invalid(b);const k=g?Ie(r,a,i):u?Oe(r):r,[C,T]=Kn(k,c,n),x=new gs({ts:C,zone:n,o:T,loc:s});return r.weekday&&m&&e.weekday!==x.weekday?gs.invalid("mismatched weekday",`you can't specify both a weekday of ${r.weekday} and a date of ${x.toISO()}`):x.isValid?x:gs.invalid(x.invalid)}static fromISO(e,t={}){const[n,s]=function(e){return Dt(e,[Xt,sn],[en,rn],[tn,an],[nn,on])}(e);return Xn(n,s,t,"ISO 8601",e)}static fromRFC2822(e,t={}){const[n,s]=function(e){return Dt(function(e){return e.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}(e),[jt,Bt])}(e);return Xn(n,s,t,"RFC 2822",e)}static fromHTTP(e,t={}){const[n,s]=function(e){return Dt(e,[Jt,Kt],[Gt,Kt],[Yt,Qt])}(e);return Xn(n,s,t,"HTTP",t)}static fromFormat(e,t,n={}){if(qe(e)||qe(t))throw new c("fromFormat requires an input string and a format");const{locale:s=null,numberingSystem:r=null}=n,a=te.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0}),[i,o,l,u]=function(e,t,n){const{result:s,zone:r,specificOffset:a,invalidReason:i}=Hn(e,t,n);return[s,r,a,i]}(a,e,t);return u?gs.invalid(u):Xn(i,o,n,`format ${t}`,e,l)}static fromString(e,t,n={}){return gs.fromFormat(e,t,n)}static fromSQL(e,t={}){const[n,s]=function(e){return Dt(e,[cn,sn],[un,dn])}(e);return Xn(n,s,t,"SQL",e)}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the DateTime is invalid");const n=e instanceof Se?e:new Se(e,t);if(ve.throwOnInvalid)throw new r(n);return new gs({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,t={}){const n=zn(e,te.fromObject(t));return n?n.map((e=>e?e.val:null)).join(""):null}static expandFormat(e,t={}){return _n(Ct.parseFormat(e),te.fromObject(t)).map((e=>e.val)).join("")}static resetCache(){ms=void 0,fs={}}get(e){return this[e]}get isValid(){return null===this.invalid}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?jn(this).weekYear:NaN}get weekNumber(){return this.isValid?jn(this).weekNumber:NaN}get weekday(){return this.isValid?jn(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?Bn(this).weekday:NaN}get localWeekNumber(){return this.isValid?Bn(this).weekNumber:NaN}get localWeekYear(){return this.isValid?Bn(this).weekYear:NaN}get ordinal(){return this.isValid?Ne(this.c).ordinal:NaN}get monthShort(){return this.isValid?Ln.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Ln.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Ln.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Ln.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return!this.isOffsetFixed&&(this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset)}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];const e=864e5,t=6e4,n=Qe(this.c),s=this.zone.offset(n-e),r=this.zone.offset(n+e),a=this.zone.offset(n-s*t),i=this.zone.offset(n-r*t);if(a===i)return[this];const o=n-a*t,l=n-i*t,c=Yn(o,a),u=Yn(l,i);return c.hour===u.hour&&c.minute===u.minute&&c.second===u.second&&c.millisecond===u.millisecond?[Jn(this,{ts:o}),Jn(this,{ts:l})]:[this]}get isInLeapYear(){return Ge(this.year)}get daysInMonth(){return Ke(this.year,this.month)}get daysInYear(){return this.isValid?Ye(this.year):NaN}get weeksInWeekYear(){return this.isValid?et(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?et(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){const{locale:t,numberingSystem:n,calendar:s}=Ct.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:n,outputCalendar:s}}toUTC(e=0,t={}){return this.setZone(se.instance(e),t)}toLocal(){return this.setZone(ve.defaultZone)}setZone(e,{keepLocalTime:t=!1,keepCalendarTime:n=!1}={}){if((e=ae(e,ve.defaultZone)).equals(this.zone))return this;if(e.isValid){let s=this.ts;if(t||n){const t=e.offset(this.ts),n=this.toObject();[s]=Kn(n,t,e)}return Jn(this,{ts:s,zone:e})}return gs.invalid(Un(e))}reconfigure({locale:e,numberingSystem:t,outputCalendar:n}={}){return Jn(this,{loc:this.loc.clone({locale:e,numberingSystem:t,outputCalendar:n})})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const t=at(e,cs),{minDaysInFirstWeek:n,startOfWeek:s}=Ee(t,this.loc),r=!qe(t.weekYear)||!qe(t.weekNumber)||!qe(t.weekday),a=!qe(t.ordinal),i=!qe(t.year),l=!qe(t.month)||!qe(t.day),c=i||l,u=t.weekYear||t.weekNumber;if((c||a)&&u)throw new o("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&a)throw new o("Can't mix ordinal dates with month/day");let d;r?d=Ie({...Me(this.c,n,s),...t},n,s):qe(t.ordinal)?(d={...this.toObject(),...t},qe(t.day)&&(d.day=Math.min(Ke(d.year,d.month),d.day))):d=Oe({...Ne(this.c),...t});const[h,m]=Kn(d,this.o,this.zone);return Jn(this,{ts:h,o:m})}plus(e){if(!this.isValid)return this;return Jn(this,Qn(this,Cn.fromDurationLike(e)))}minus(e){if(!this.isValid)return this;return Jn(this,Qn(this,Cn.fromDurationLike(e).negate()))}startOf(e,{useLocaleWeeks:t=!1}={}){if(!this.isValid)return this;const n={},s=Cn.normalizeUnit(e);switch(s){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0}if("weeks"===s)if(t){const e=this.loc.getStartOfWeek(),{weekday:t}=this;tthis.valueOf(),i=Mn(a?this:e,a?e:this,r,s);var o;return a?i.negate():i}diffNow(e="milliseconds",t={}){return this.diff(gs.now(),e,t)}until(e){return this.isValid?xn.fromDateTimes(this,e):this}hasSame(e,t,n){if(!this.isValid)return!1;const s=e.valueOf(),r=this.setZone(e.zone,{keepLocalTime:!0});return r.startOf(t,n)<=s&&s<=r.endOf(t,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const t=e.base||gs.fromObject({},{zone:this.zone}),n=e.padding?thise.valueOf()),Math.min)}static max(...e){if(!e.every(gs.isDateTime))throw new c("max requires all arguments be DateTimes");return Pe(e,(e=>e.valueOf()),Math.max)}static fromFormatExplain(e,t,n={}){const{locale:s=null,numberingSystem:r=null}=n;return Hn(te.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0}),e,t)}static fromStringExplain(e,t,n={}){return gs.fromFormatExplain(e,t,n)}static buildFormatParser(e,t={}){const{locale:n=null,numberingSystem:s=null}=t,r=te.fromOpts({locale:n,numberingSystem:s,defaultToEN:!0});return new Pn(r,e)}static fromFormatParser(e,t,n={}){if(qe(e)||qe(t))throw new c("fromFormatParser requires an input string and a format parser");const{locale:s=null,numberingSystem:r=null}=n,a=te.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0});if(!a.equals(t.locale))throw new c(`fromFormatParser called with a locale of ${a}, but the format parser was created for ${t.locale}`);const{result:i,zone:o,specificOffset:l,invalidReason:u}=t.explainFromTokens(e);return u?gs.invalid(u):Xn(i,o,n,`format ${t.format}`,e,l)}static get DATE_SHORT(){return f}static get DATE_MED(){return g}static get DATE_MED_WITH_WEEKDAY(){return y}static get DATE_FULL(){return p}static get DATE_HUGE(){return w}static get TIME_SIMPLE(){return v}static get TIME_WITH_SECONDS(){return S}static get TIME_WITH_SHORT_OFFSET(){return b}static get TIME_WITH_LONG_OFFSET(){return k}static get TIME_24_SIMPLE(){return C}static get TIME_24_WITH_SECONDS(){return T}static get TIME_24_WITH_SHORT_OFFSET(){return x}static get TIME_24_WITH_LONG_OFFSET(){return L}static get DATETIME_SHORT(){return D}static get DATETIME_SHORT_WITH_SECONDS(){return M}static get DATETIME_MED(){return I}static get DATETIME_MED_WITH_SECONDS(){return N}static get DATETIME_MED_WITH_WEEKDAY(){return O}static get DATETIME_FULL(){return E}static get DATETIME_FULL_WITH_SECONDS(){return $}static get DATETIME_HUGE(){return F}static get DATETIME_HUGE_WITH_SECONDS(){return q}}function ys(e){if(gs.isDateTime(e))return e;if(e&&e.valueOf&&We(e.valueOf()))return gs.fromJSDate(e);if(e&&"object"==typeof e)return gs.fromObject(e);throw new c(`Unknown datetime argument: ${e}, of type ${typeof e}`)}}},t={};function n(s){var r=t[s];if(void 0!==r)return r.exports;var a=t[s]={exports:{}};return e[s](a,a.exports,n),a.exports}n.d=(e,t)=>{for(var s in t)n.o(t,s)&&!n.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n(516),n(749),n(423),n(247),n(716),n(498),n(73),n(2),n(94),n(704),n(503),n(187),n(709),n(951);n(652)})(); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 750ab44..4088796 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ws4kp", - "version": "5.13.1", + "version": "5.13.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ws4kp", - "version": "5.13.1", + "version": "5.13.2", "license": "MIT", "dependencies": { "ejs": "^3.1.5", diff --git a/package.json b/package.json index d5bb689..3149a3c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ws4kp", - "version": "5.13.1", + "version": "5.13.2", "description": "Welcome to the WeatherStar 4000+ project page!", "main": "index.js", "scripts": { diff --git a/server/scripts/modules/radar.mjs b/server/scripts/modules/radar.mjs index 14fd717..7beac32 100644 --- a/server/scripts/modules/radar.mjs +++ b/server/scripts/modules/radar.mjs @@ -157,7 +157,7 @@ class Radar extends WeatherDisplay { minute, }, { zone: 'UTC', - }).setZone(); + }).setZone(timeZone()); } else { time = DateTime.fromHTTP(response.headers.get('last-modified')).setZone(timeZone()); }