console.log(" iRingo: \uD83C\uDF24 WeatherKit"),console.log("response.bundle.js"),console.log("Version: 3.1.0"),console.log("Date: 2026/3/12 10:11:08"),(()=>{"use strict";var t,e,i,a,s,n,r,o,d,c,l,u,p,b,h,m,_,y,f,g,N,C,x,A,I,T,v,S,O,F,w,P,E,M,R,U,W,L,D,B,$,H,K,V,k,G;let Q=(()=>{switch(!0){case"$task"in globalThis:return"Quantumult X";case"$loon"in globalThis:return"Loon";case"$rocket"in globalThis:return"Shadowrocket";case"Egern"in globalThis:return"Egern";case!!globalThis.$environment?.["surge-version"]:return"Surge";case!!globalThis.$environment?.["stash-version"]:return"Stash";case!!globalThis.process?.versions?.node:return"Node.js";default:return}})();class j{static #t=new Map([]);static #e=[];static #i=new Map([]);static clear=()=>{};static count=(t="default")=>{switch(j.#t.has(t)){case!0:j.#t.set(t,j.#t.get(t)+1);break;case!1:j.#t.set(t,0)}j.log(`${t}: ${j.#t.get(t)}`)};static countReset=(t="default")=>{switch(j.#t.has(t)){case!0:j.#t.set(t,0),j.log(`${t}: ${j.#t.get(t)}`);break;case!1:j.warn(`Counter "${t}" doesn’t exist`)}};static debug=(...t)=>{j.#a<4||(t=t.map(t=>`🅱️ ${t}`),j.log(...t))};static error(...t){if(!(j.#a<1)){switch(Q){case"Surge":case"Loon":case"Stash":case"Egern":case"Shadowrocket":case"Quantumult X":default:t=t.map(t=>`❌ ${t}`);break;case"Node.js":t=t.map(t=>`❌ ${t.stack}`)}j.log(...t)}}static exception=(...t)=>j.error(...t);static group=t=>j.#e.unshift(t);static groupEnd=()=>j.#e.shift();static info(...t){j.#a<3||(t=t.map(t=>`ℹ️ ${t}`),j.log(...t))}static #a=3;static get logLevel(){switch(j.#a){case 0:return"OFF";case 1:return"ERROR";case 2:return"WARN";case 3:default:return"INFO";case 4:return"DEBUG";case 5:return"ALL"}}static set logLevel(t){switch(typeof t){case"string":t=t.toLowerCase();break;case"number":break;default:t="warn"}switch(t){case 0:case"off":j.#a=0;break;case 1:case"error":j.#a=1;break;case 2:case"warn":case"warning":default:j.#a=2;break;case 3:case"info":j.#a=3;break;case 4:case"debug":j.#a=4;break;case 5:case"all":j.#a=5}}static log=(...t)=>{0!==j.#a&&(t=t.map(t=>{switch(typeof t){case"object":t=JSON.stringify(t);break;case"bigint":case"number":case"boolean":case"string":t=t.toString()}return t}),j.#e.forEach(e=>{(t=t.map(t=>` ${t}`)).unshift(`▼ ${e}:`)}),console.log((t=["",...t]).join("\n")))};static time=(t="default")=>j.#i.set(t,Date.now());static timeEnd=(t="default")=>j.#i.delete(t);static timeLog=(t="default")=>{let e=j.#i.get(t);e?j.log(`${t}: ${Date.now()-e}ms`):j.warn(`Timer "${t}" doesn’t exist`)};static warn(...t){j.#a<2||(t=t.map(t=>`⚠️ ${t}`),j.log(...t))}}class Y{static escape(t){let e={"&":"&","<":"<",">":">",'"':""","'":"'"};return t.replace(/[&<>"']/g,t=>e[t])}static get(t={},e="",i){Array.isArray(e)||(e=Y.toPath(e));let a=e.reduce((t,e)=>Object(t)[e],t);return void 0===a?i:a}static merge(t,...e){if(null==t)return t;for(let i of e)if(null!=i)for(let e of Object.keys(i)){let a=i[e],s=t[e];switch(!0){case Y.#s(a)&&Y.#s(s):t[e]=Y.merge(s,a);break;case a instanceof Map&&s instanceof Map:if(a.size>0)for(let[t,e]of a)s.set(t,e);break;case a instanceof Set&&s instanceof Set:if(a.size>0)for(let t of a)s.add(t);break;case Array.isArray(a)&&0===a.length&&void 0!==s:case a instanceof Map&&0===a.size&&void 0!==s:case a instanceof Set&&0===a.size&&void 0!==s:break;case void 0!==a:t[e]=a}}return t}static #s(t){if(null===t||"object"!=typeof t)return!1;let e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}static omit(t={},e=[]){return Array.isArray(e)||(e=[e.toString()]),e.forEach(e=>Y.unset(t,e)),t}static pick(t={},e=[]){return Array.isArray(e)||(e=[e.toString()]),Object.fromEntries(Object.entries(t).filter(([t,i])=>e.includes(t)))}static set(t,e,i){return Array.isArray(e)||(e=Y.toPath(e)),e.slice(0,-1).reduce((t,i,a)=>Object(t[i])===t[i]?t[i]:t[i]=/^\d+$/.test(e[a+1])?[]:{},t)[e[e.length-1]]=i,t}static toPath(t){return t.replace(/\[(\d+)\]/g,".$1").split(".").filter(Boolean)}static unescape(t){let e={"&":"&","<":"<",">":">",""":'"',"'":"'"};return t.replace(/&|<|>|"|'/g,t=>e[t])}static unset(t={},e=""){return Array.isArray(e)||(e=Y.toPath(e)),e.reduce((t,i,a)=>a===e.length-1?(delete t[i],!0):Object(t)[i],t)}}switch(j.debug("☑️ $argument"),typeof globalThis.$argument){case"string":{let t=Object.fromEntries(globalThis.$argument.split("&").map(t=>t.split("=",2).map(t=>t.replace(/\"/g,""))));globalThis.$argument={},Object.keys(t).forEach(e=>Y.set(globalThis.$argument,e,t[e]));break}case"object":{if(null===globalThis.$argument){globalThis.$argument={};break}let t={};Object.keys(globalThis.$argument).forEach(e=>Y.set(t,e,globalThis.$argument[e])),globalThis.$argument=t;break}case"undefined":globalThis.$argument={}}globalThis.$argument.LogLevel&&(j.logLevel=globalThis.$argument.LogLevel),j.debug("✅ $argument",`$argument: ${JSON.stringify(globalThis.$argument)}`);let J={100:"Continue",101:"Switching Protocols",102:"Processing",103:"Early Hints",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",304:"Not Modified",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Content Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Too Early",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",510:"Not Extended",511:"Network Authentication Required"};function q(t,e){let i=e?new Date(e):new Date;for(let[e,a]of Object.entries({YY:i.getFullYear().toString().substring(3),yyyy:i.getFullYear().toString(),MM:(i.getMonth()+1).toString().padStart(2,"0"),dd:i.getDate().toString().padStart(2,"0"),HH:i.getHours().toString().padStart(2,"0"),mm:i.getMinutes().toString().padStart(2,"0"),sss:i.getMilliseconds().toString().padStart(3,"0"),ss:i.getSeconds().toString().padStart(2,"0"),S:`${Math.floor(i.getMonth()/3)+1}`}))t=t.replace(e,a);return t}async function Z(t,e={}){switch(typeof t){case"object":t={...e,...t};break;case"string":t={...e,url:t};break;default:throw TypeError(`${Function.name}: 参数类型错误, resource 必须为对象或字符串`)}!t.method&&(t.method="GET",(t.body??t.bodyBytes)&&(t.method="POST")),delete t.headers?.Host,delete t.headers?.[":authority"],delete t.headers?.["Content-Length"],delete t.headers?.["content-length"];let i=t.method.toLocaleLowerCase();if(t.timeout||(t.timeout=5),t.timeout&&(t.timeout=Number.parseInt(t.timeout,10),t.timeout>500&&(t.timeout=Math.round(t.timeout/1e3))),t.timeout)switch(Q){case"Loon":case"Quantumult X":case"Node.js":t.timeout=1e3*t.timeout}switch(Q){case"Loon":case"Surge":case"Stash":case"Egern":case"Shadowrocket":default:if(t.policy)switch(Q){case"Loon":t.node=t.policy;break;case"Stash":Y.set(t,"headers.X-Stash-Selected-Proxy",encodeURI(t.policy));break;case"Shadowrocket":Y.set(t,"headers.X-Surge-Proxy",t.policy)}switch("boolean"==typeof t.redirection&&(t["auto-redirect"]=t.redirection),t.bodyBytes&&!t.body&&(t.body=t.bodyBytes,t.bodyBytes=void 0),(t.headers?.Accept||t.headers?.accept)?.split(";")?.[0]){case"application/protobuf":case"application/x-protobuf":case"application/vnd.google.protobuf":case"application/vnd.apple.flatbuffer":case"application/grpc":case"application/grpc+proto":case"application/octet-stream":t["binary-mode"]=!0}return new Promise((e,a)=>{globalThis.$httpClient[i](t,(i,s,n)=>{i?a(i):(s.ok=/^2\d\d$/.test(s.status),s.statusCode=s.status,s.statusText=J[s.status],n&&(s.body=n,!0==t["binary-mode"]&&(s.bodyBytes=n)),e(s))})});case"Quantumult X":return t.policy&&Y.set(t,"opts.policy",t.policy),"boolean"==typeof t["auto-redirect"]&&Y.set(t,"opts.redirection",t["auto-redirect"]),t.body instanceof ArrayBuffer?(t.bodyBytes=t.body,t.body=void 0):ArrayBuffer.isView(t.body)?(t.bodyBytes=t.body.buffer.slice(t.body.byteOffset,t.body.byteLength+t.body.byteOffset),t.body=void 0):t.body&&(t.bodyBytes=void 0),Promise.race([globalThis.$task.fetch(t).then(t=>{switch(t.ok=/^2\d\d$/.test(t.statusCode),t.status=t.statusCode,t.statusText=J[t.status],(t.headers?.["Content-Type"]??t.headers?.["content-type"])?.split(";")?.[0]){case"application/protobuf":case"application/x-protobuf":case"application/vnd.google.protobuf":case"application/vnd.apple.flatbuffer":case"application/grpc":case"application/grpc+proto":case"application/octet-stream":t.body=t.bodyBytes}return t.bodyBytes=void 0,t},t=>Promise.reject(t.error)),new Promise((e,i)=>{setTimeout(()=>{i(Error(`${Function.name}: 请求超时, 请检查网络后重试`))},t.timeout)})]);case"Node.js":{switch(!globalThis.fetch&&(globalThis.fetch=require("node-fetch")),t["auto-cookie"]){case void 0:case"true":case!0:case"1":case 1:default:globalThis.fetch?.cookieJar||(globalThis.fetch=require("fetch-cookie").default(globalThis.fetch));case"false":case!1:case"0":case 0:case"-1":case -1:}t.redirect=t.redirection?"follow":"manual";let{url:e,...i}=t;return Promise.race([globalThis.fetch(e,i).then(async t=>{let e,i=await t.arrayBuffer();try{e=t.headers.raw()}catch{e=Array.from(t.headers.entries()).reduce((t,[e,i])=>(t[e]=t[e]?[...t[e],i]:[i],t),{})}return{ok:t.ok??/^2\d\d$/.test(t.status),status:t.status,statusCode:t.status,statusText:t.statusText,body:new TextDecoder("utf-8").decode(i),bodyBytes:i,headers:Object.fromEntries(Object.entries(e).map(([t,e])=>[t,"set-cookie"!==t.toLowerCase()?e.toString():e]))}}).catch(t=>Promise.reject(t.message)),new Promise((e,i)=>{setTimeout(()=>{i(Error(`${Function.name}: 请求超时, 请检查网络后重试`))},t.timeout)})])}}}class X{static data=null;static dataFile="box.dat";static #n=/^@(?[^.]+)(?:\.(?.*))?$/;static getItem(t,e=null){let i=e;if(!0===t.startsWith("@")){let{key:e,path:a}=t.match(X.#n)?.groups;t=e;let s=X.getItem(t,{});"object"!=typeof s&&(s={}),i=Y.get(s,a);try{i=JSON.parse(i)}catch(t){}}else{switch(Q){case"Surge":case"Loon":case"Stash":case"Egern":case"Shadowrocket":i=$persistentStore.read(t);break;case"Quantumult X":i=$prefs.valueForKey(t);break;case"Node.js":X.data=X.#r(X.dataFile),i=X.data?.[t];break;default:i=X.data?.[t]||null}try{i=JSON.parse(i)}catch(t){}}return i??e}static setItem(t=new String,e=new String){let i=!1;if(e="object"==typeof e?JSON.stringify(e):String(e),!0===t.startsWith("@")){let{key:a,path:s}=t.match(X.#n)?.groups;t=a;let n=X.getItem(t,{});"object"!=typeof n&&(n={}),Y.set(n,s,e),i=X.setItem(t,n)}else switch(Q){case"Surge":case"Loon":case"Stash":case"Egern":case"Shadowrocket":i=$persistentStore.write(e,t);break;case"Quantumult X":i=$prefs.setValueForKey(e,t);break;case"Node.js":X.data=X.#r(X.dataFile),X.data[t]=e,X.#o(X.dataFile),i=!0;break;default:i=X.data?.[t]||null}return i}static removeItem(t){let e=!1;if(!0===t.startsWith("@")){let{key:i,path:a}=t.match(X.#n)?.groups;t=i;let s=X.getItem(t);"object"!=typeof s&&(s={}),keyValue=Y.unset(s,a),e=X.setItem(t,s)}else switch(Q){case"Surge":e=$persistentStore.write(null,t);break;case"Loon":case"Stash":case"Egern":case"Shadowrocket":default:e=!1;break;case"Quantumult X":e=$prefs.removeValueForKey(t);break;case"Node.js":X.data=X.#r(X.dataFile),delete X.data[t],X.#o(X.dataFile),e=!0}return e}static clear(){let t=!1;switch(Q){case"Surge":case"Loon":case"Stash":case"Egern":case"Shadowrocket":default:t=!1;break;case"Quantumult X":t=$prefs.removeAllValues();break;case"Node.js":X.data=X.#r(X.dataFile),X.data={},X.#o(X.dataFile),t=!0}return t}static #r=t=>{if("Node.js"!==Q)return{};{this.fs=this.fs?this.fs:require("node:fs"),this.path=this.path?this.path:require("node:path");let e=this.path.resolve(t),i=this.path.resolve(process.cwd(),t),a=this.fs.existsSync(e),s=!a&&this.fs.existsSync(i);if(!a&&!s)return{};try{return JSON.parse(this.fs.readFileSync(a?e:i))}catch(t){return{}}}};static #o=(t=this.dataFile)=>{if("Node.js"===Q){this.fs=this.fs?this.fs:require("node:fs"),this.path=this.path?this.path:require("node:path");let e=this.path.resolve(t),i=this.path.resolve(process.cwd(),t),a=this.fs.existsSync(e),s=!a&&this.fs.existsSync(i),n=JSON.stringify(this.data);a?this.fs.writeFileSync(e,n):s?this.fs.writeFileSync(i,n):this.fs.writeFileSync(e,n)}}}let z={WeatherKit:{Settings:{DataSets:["airQuality","currentWeather","forecastDaily","forecastHourly","forecastNextHour","locationInfo","news","historicalComparisons","weatherAlerts","weatherChanges"],Weather:{Replace:["CN"],Provider:"ColorfulClouds"},NextHour:{Provider:"ColorfulClouds"},AirQuality:{Current:{Pollutants:{Provider:"ColorfulClouds",Units:{Replace:[],Mode:"Scale"}},Index:{Replace:["HJ6332012"],Provider:"Calculate",ForceCNPrimaryPollutants:!0}},Comparison:{ReplaceWhenCurrentChange:!1,Yesterday:{PollutantsProvider:"QWeather",IndexProvider:"ColorfulCloudsUS"}},Calculate:{Algorithm:"EU_EAQI",AllowOverRange:!0}},API:{WAQI:{Token:null},QWeather:{Token:null,Host:"devapi.qweather.com"},ColorfulClouds:{Token:null}}},Configs:{Availability:{v1:["currentWeather","dailyForecast","hourlyForecast","minuteForecast","weatherAlerts"],v2:["airQuality","currentWeather","forecastDaily","forecastHourly","forecastPeriodic","historicalComparisons","weatherChanges","forecastNextHour","weatherAlerts","weatherAlertNotifications","news"]}}},Default:{Settings:{LogLevel:"WARN"},Configs:{Storefront:{AE:"143481",AF:"143610",AG:"143540",AI:"143538",AL:"143575",AM:"143524",AO:"143564",AR:"143505",AT:"143445",AU:"143460",AZ:"143568",BA:"143612",BB:"143541",BD:"143490",BE:"143446",BF:"143578",BG:"143526",BH:"143559",BJ:"143576",BM:"143542",BN:"143560",BO:"143556",BR:"143503",BS:"143539",BT:"143577",BW:"143525",BY:"143565",BZ:"143555",CA:"143455",CD:"143613",CG:"143582",CH:"143459",CI:"143527",CL:"143483",CM:"143574",CN:"143465",CO:"143501",CR:"143495",CV:"143580",CY:"143557",CZ:"143489",DE:"143443",DK:"143458",DM:"143545",DO:"143508",DZ:"143563",EC:"143509",EE:"143518",EG:"143516",ES:"143454",FI:"143447",FJ:"143583",FM:"143591",FR:"143442",GA:"143614",GB:"143444",GD:"143546",GF:"143615",GH:"143573",GM:"143584",GR:"143448",GT:"143504",GW:"143585",GY:"143553",HK:"143463",HN:"143510",HR:"143494",HU:"143482",ID:"143476",IE:"143449",IL:"143491",IN:"143467",IQ:"143617",IS:"143558",IT:"143450",JM:"143511",JO:"143528",JP:"143462",KE:"143529",KG:"143586",KH:"143579",KN:"143548",KP:"143466",KR:"143466",KW:"143493",KY:"143544",KZ:"143517",TC:"143552",TD:"143581",TJ:"143603",TH:"143475",TM:"143604",TN:"143536",TO:"143608",TR:"143480",TT:"143551",TW:"143470",TZ:"143572",LA:"143587",LB:"143497",LC:"143549",LI:"143522",LK:"143486",LR:"143588",LT:"143520",LU:"143451",LV:"143519",LY:"143567",MA:"143620",MD:"143523",ME:"143619",MG:"143531",MK:"143530",ML:"143532",MM:"143570",MN:"143592",MO:"143515",MR:"143590",MS:"143547",MT:"143521",MU:"143533",MV:"143488",MW:"143589",MX:"143468",MY:"143473",MZ:"143593",NA:"143594",NE:"143534",NG:"143561",NI:"143512",NL:"143452",NO:"143457",NP:"143484",NR:"143606",NZ:"143461",OM:"143562",PA:"143485",PE:"143507",PG:"143597",PH:"143474",PK:"143477",PL:"143478",PT:"143453",PW:"143595",PY:"143513",QA:"143498",RO:"143487",RS:"143500",RU:"143469",RW:"143621",SA:"143479",SB:"143601",SC:"143599",SE:"143456",SG:"143464",SI:"143499",SK:"143496",SL:"143600",SN:"143535",SR:"143554",ST:"143598",SV:"143506",SZ:"143602",UA:"143492",UG:"143537",US:"143441",UY:"143514",UZ:"143566",VC:"143550",VE:"143502",VG:"143543",VN:"143471",VU:"143609",XK:"143624",YE:"143571",ZA:"143472",ZM:"143622",ZW:"143605"}}}};function tt(t){return/^\d+$/.test(t)&&(t=Number.parseInt(t,10)),t}let te=new Int32Array(2),ti=new Float32Array(te.buffer),ta=new Float64Array(te.buffer),ts=1===new Uint16Array(new Uint8Array([1,0]).buffer)[0];(A=t||(t={}))[A.UTF8_BYTES=1]="UTF8_BYTES",A[A.UTF16_STRING=2]="UTF16_STRING";class tn{constructor(t){this.bytes_=t,this.position_=0,this.text_decoder_=new TextDecoder}static allocate(t){return new tn(new Uint8Array(t))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(t){this.position_=t}capacity(){return this.bytes_.length}readInt8(t){return this.readUint8(t)<<24>>24}readUint8(t){return this.bytes_[t]}readInt16(t){return this.readUint16(t)<<16>>16}readUint16(t){return this.bytes_[t]|this.bytes_[t+1]<<8}readInt32(t){return this.bytes_[t]|this.bytes_[t+1]<<8|this.bytes_[t+2]<<16|this.bytes_[t+3]<<24}readUint32(t){return this.readInt32(t)>>>0}readInt64(t){return BigInt.asIntN(64,BigInt(this.readUint32(t))+(BigInt(this.readUint32(t+4))<>8}writeUint16(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8}writeInt32(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8,this.bytes_[t+2]=e>>16,this.bytes_[t+3]=e>>24}writeUint32(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8,this.bytes_[t+2]=e>>16,this.bytes_[t+3]=e>>24}writeInt64(t,e){this.writeInt32(t,Number(BigInt.asIntN(32,e))),this.writeInt32(t+4,Number(BigInt.asIntN(32,e>>BigInt(32))))}writeUint64(t,e){this.writeUint32(t,Number(BigInt.asUintN(32,e))),this.writeUint32(t+4,Number(BigInt.asUintN(32,e>>BigInt(32))))}writeFloat32(t,e){ti["0"]=e,this.writeInt32(t,te["0"])}writeFloat64(t,e){ta["0"]=e,this.writeInt32(t,te[+!ts]),this.writeInt32(t+4,te[+!!ts])}getBufferIdentifier(){if(this.bytes_.lengththis.minalign&&(this.minalign=t);let i=~(this.bb.capacity()-this.space+e)+1&t-1;for(;this.space=0&&0==this.vtable[e];e--);let i=e+1;for(;e>=0;e--)this.addInt16(0!=this.vtable[e]?t-this.vtable[e]:0);this.addInt16(t-this.object_start);let a=(i+2)*2;this.addInt16(a);let s=0,n=this.space;t:for(e=0;e=0;t--)this.writeInt8(e.charCodeAt(t))}this.prep(this.minalign,4+a),this.addOffset(t),a&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(t,e){this.finish(t,e,!0)}requiredField(t,e){let i=this.bb.capacity()-t,a=i-this.bb.readInt32(i);if(!(e=0;i--)t.addOffset(e[i]);return t.endVector()}static startPollutantsVector(t,e){t.startVector(4,e,4)}static addPreviousDayComparison(t,i){t.addFieldInt8(5,i,e.UNKNOWN)}static addPrimaryPollutant(t,e){t.addFieldInt8(6,e,a.NOT_AVAILABLE)}static addScale(t,e){t.addFieldOffset(7,e,0)}static endAirQuality(t){return t.endObject()}static createAirQuality(t,e,i,a,s,n,r,o,d){return tc.startAirQuality(t),tc.addMetadata(t,e),tc.addCategoryIndex(t,i),tc.addIndex(t,a),tc.addIsSignificant(t,s),tc.addPollutants(t,n),tc.addPreviousDayComparison(t,r),tc.addPrimaryPollutant(t,o),tc.addScale(t,d),tc.endAirQuality(t)}}class tl{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsUUID(t,e){return(e||new tl).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsUUID(t,e){return t.setPosition(t.position()+4),(e||new tl).__init(t.readInt32(t.position())+t.position(),t)}bytes(t){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readUint8(this.bb.__vector(this.bb_pos+e)+t):0}bytesLength(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.__vector_len(this.bb_pos+t):0}bytesArray(){let t=this.bb.__offset(this.bb_pos,4);return t?new Uint8Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}static startUUID(t){t.startObject(1)}static addBytes(t,e){t.addFieldOffset(0,e,0)}static createBytesVector(t,e){t.startVector(1,e.length,1);for(let i=e.length-1;i>=0;i--)t.addInt8(e[i]);return t.endVector()}static startBytesVector(t,e){t.startVector(1,e,1)}static endUUID(t){return t.endObject()}static createUUID(t,e){return tl.startUUID(t),tl.addBytes(t,e),tl.endUUID(t)}}class tu{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsArticles(t,e){return(e||new tu).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsArticles(t,e){return t.setPosition(t.position()+4),(e||new tu).__init(t.readInt32(t.position())+t.position(),t)}id(t){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__string(this.bb_pos+e,t):null}supportedStorefronts(t,e){let i=this.bb.__offset(this.bb_pos,6);return i?this.bb.__string(this.bb.__vector(this.bb_pos+i)+4*t,e):null}supportedStorefrontsLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}alertIds(t,e){let i=this.bb.__offset(this.bb_pos,8);return i?(e||new tl).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}alertIdsLength(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.__vector_len(this.bb_pos+t):0}phenomena(t,e){let i=this.bb.__offset(this.bb_pos,10);return i?this.bb.__string(this.bb.__vector(this.bb_pos+i)+4*t,e):null}phenomenaLength(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.__vector_len(this.bb_pos+t):0}headlineOverride(t){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.__string(this.bb_pos+e,t):null}locale(t){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.__string(this.bb_pos+e,t):null}static startArticles(t){t.startObject(6)}static addId(t,e){t.addFieldOffset(0,e,0)}static addSupportedStorefronts(t,e){t.addFieldOffset(1,e,0)}static createSupportedStorefrontsVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startSupportedStorefrontsVector(t,e){t.startVector(4,e,4)}static addAlertIds(t,e){t.addFieldOffset(2,e,0)}static createAlertIdsVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startAlertIdsVector(t,e){t.startVector(4,e,4)}static addPhenomena(t,e){t.addFieldOffset(3,e,0)}static createPhenomenaVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startPhenomenaVector(t,e){t.startVector(4,e,4)}static addHeadlineOverride(t,e){t.addFieldOffset(4,e,0)}static addLocale(t,e){t.addFieldOffset(5,e,0)}static endArticles(t){return t.endObject()}static createArticles(t,e,i,a,s,n,r){return tu.startArticles(t),tu.addId(t,e),tu.addSupportedStorefronts(t,i),tu.addAlertIds(t,a),tu.addPhenomena(t,s),tu.addHeadlineOverride(t,n),tu.addLocale(t,r),tu.endArticles(t)}}(O=n||(n={}))[O.MEAN=0]="MEAN",O[O.UNKNOWN1=1]="UNKNOWN1",O[O.UNKNOWN2=2]="UNKNOWN2",O[O.UNKNOWN3=3]="UNKNOWN3",O[O.UNKNOWN4=4]="UNKNOWN4",O[O.UNKNOWN5=5]="UNKNOWN5",(F=r||(r={}))[F.UNKNOWN=0]="UNKNOWN",F[F.OBSERVED=1]="OBSERVED",F[F.LIKELY=2]="LIKELY",F[F.POSSIBLE=3]="POSSIBLE",F[F.UNLIKELY=4]="UNLIKELY",F[F.UNKNOWN5=5]="UNKNOWN5",(w=o||(o={}))[w.STEADY=0]="STEADY",w[w.INC=1]="INC",w[w.DEC=2]="DEC",w[w.UNKNOWN3=3]="UNKNOWN3";class tp{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsChange(t,e){return(e||new tp).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsChange(t,e){return t.setPosition(t.position()+4),(e||new tp).__init(t.readInt32(t.position())+t.position(),t)}forecastStart(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint32(this.bb_pos+t):0}forecastEnd(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readUint32(this.bb_pos+t):0}maxTemperatureChange(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readInt8(this.bb_pos+t):o.STEADY}minTemperatureChange(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readInt8(this.bb_pos+t):o.STEADY}dayPrecipitationChange(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.readInt8(this.bb_pos+t):o.STEADY}nightPrecipitationChange(){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.readInt8(this.bb_pos+t):o.STEADY}static startChange(t){t.startObject(6)}static addForecastStart(t,e){t.addFieldInt32(0,e,0)}static addForecastEnd(t,e){t.addFieldInt32(1,e,0)}static addMaxTemperatureChange(t,e){t.addFieldInt8(2,e,o.STEADY)}static addMinTemperatureChange(t,e){t.addFieldInt8(3,e,o.STEADY)}static addDayPrecipitationChange(t,e){t.addFieldInt8(4,e,o.STEADY)}static addNightPrecipitationChange(t,e){t.addFieldInt8(5,e,o.STEADY)}static endChange(t){return t.endObject()}static createChange(t,e,i,a,s,n,r){return tp.startChange(t),tp.addForecastStart(t,e),tp.addForecastEnd(t,i),tp.addMaxTemperatureChange(t,a),tp.addMinTemperatureChange(t,s),tp.addDayPrecipitationChange(t,n),tp.addNightPrecipitationChange(t,r),tp.endChange(t)}}(P=d||(d={}))[P.UNKNOWN0=0]="UNKNOWN0",P[P.TEMPERATURE_MAX=1]="TEMPERATURE_MAX",P[P.PRECIPITATION=2]="PRECIPITATION",P[P.UNKNOWN3=3]="UNKNOWN3",(E=c||(c={}))[E.MUCHHIGHER=0]="MUCHHIGHER",E[E.HIGHER=1]="HIGHER",E[E.NORMAL=2]="NORMAL",E[E.LOWER=3]="LOWER",E[E.MUCHLOWER=4]="MUCHLOWER",E[E.UNKNOWN5=5]="UNKNOWN5";class tb{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsComparison(t,e){return(e||new tb).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsComparison(t,e){return t.setPosition(t.position()+4),(e||new tb).__init(t.readInt32(t.position())+t.position(),t)}condition(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readInt8(this.bb_pos+t):d.UNKNOWN0}currentValue(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readFloat32(this.bb_pos+t):0}baselineValue(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readFloat32(this.bb_pos+t):0}deviation(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readInt8(this.bb_pos+t):c.MUCHHIGHER}baselineType(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.readUint32(this.bb_pos+t):0}baselineStartDate(){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.readUint32(this.bb_pos+t):0}static startComparison(t){t.startObject(6)}static addCondition(t,e){t.addFieldInt8(0,e,d.UNKNOWN0)}static addCurrentValue(t,e){t.addFieldFloat32(1,e,0)}static addBaselineValue(t,e){t.addFieldFloat32(2,e,0)}static addDeviation(t,e){t.addFieldInt8(3,e,c.MUCHHIGHER)}static addBaselineType(t,e){t.addFieldInt32(4,e,0)}static addBaselineStartDate(t,e){t.addFieldInt32(5,e,0)}static endComparison(t){return t.endObject()}static createComparison(t,e,i,a,s,n,r){return tb.startComparison(t),tb.addCondition(t,e),tb.addCurrentValue(t,i),tb.addBaselineValue(t,a),tb.addDeviation(t,s),tb.addBaselineType(t,n),tb.addBaselineStartDate(t,r),tb.endComparison(t)}}(M=l||(l={}))[M.CLEAR=0]="CLEAR",M[M.UNKNOWN1=1]="UNKNOWN1",M[M.UNKNOWN2=2]="UNKNOWN2",M[M.SLEET=3]="SLEET",M[M.POSSIBLE_SLEET=4]="POSSIBLE_SLEET",M[M.HEAVY_RAIN=5]="HEAVY_RAIN",M[M.RAIN=6]="RAIN",M[M.DRIZZLE=7]="DRIZZLE",M[M.POSSIBLE_DRIZZLE=8]="POSSIBLE_DRIZZLE",M[M.HEAVY_SNOW=9]="HEAVY_SNOW",M[M.SNOW=10]="SNOW",M[M.UNKNOWN11=11]="UNKNOWN11",M[M.UNKNOWN12=12]="UNKNOWN12",M[M.UNKNOWN13=13]="UNKNOWN13",M[M.UNKNOWN14=14]="UNKNOWN14",M[M.UNKNOWN15=15]="UNKNOWN15",M[M.UNKNOWN16=16]="UNKNOWN16",M[M.UNKNOWN17=17]="UNKNOWN17",M[M.UNKNOWN18=18]="UNKNOWN18",(R=u||(u={}))[R.CLEAR=0]="CLEAR",R[R.START=1]="START",R[R.STOP=2]="STOP",R[R.START_STOP=3]="START_STOP",R[R.STOP_START=4]="STOP_START",R[R.CONSTANT=5]="CONSTANT",R[R.UNKNOWN6=6]="UNKNOWN6",R[R.UNKNOWN7=7]="UNKNOWN7",(U=p||(p={}))[U.FIRST_AT=0]="FIRST_AT",U[U.SECOND_AT=1]="SECOND_AT",U[U.UNKNOWN2=2]="UNKNOWN2";class th{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsParameter(t,e){return(e||new th).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsParameter(t,e){return t.setPosition(t.position()+4),(e||new th).__init(t.readInt32(t.position())+t.position(),t)}type(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readInt8(this.bb_pos+t):p.FIRST_AT}date(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readUint32(this.bb_pos+t):0}static startParameter(t){t.startObject(2)}static addType(t,e){t.addFieldInt8(0,e,p.FIRST_AT)}static addDate(t,e){t.addFieldInt32(1,e,0)}static endParameter(t){return t.endObject()}static createParameter(t,e,i){return th.startParameter(t),th.addType(t,e),th.addDate(t,i),th.endParameter(t)}}class tm{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsCondition(t,e){return(e||new tm).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsCondition(t,e){return t.setPosition(t.position()+4),(e||new tm).__init(t.readInt32(t.position())+t.position(),t)}startTime(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint32(this.bb_pos+t):0}endTime(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readUint32(this.bb_pos+t):0}forecastToken(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readInt8(this.bb_pos+t):u.CLEAR}beginCondition(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readInt8(this.bb_pos+t):l.CLEAR}endCondition(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.readInt8(this.bb_pos+t):l.CLEAR}parameters(t,e){let i=this.bb.__offset(this.bb_pos,14);return i?(e||new th).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}parametersLength(){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.__vector_len(this.bb_pos+t):0}static startCondition(t){t.startObject(6)}static addStartTime(t,e){t.addFieldInt32(0,e,0)}static addEndTime(t,e){t.addFieldInt32(1,e,0)}static addForecastToken(t,e){t.addFieldInt8(2,e,u.CLEAR)}static addBeginCondition(t,e){t.addFieldInt8(3,e,l.CLEAR)}static addEndCondition(t,e){t.addFieldInt8(4,e,l.CLEAR)}static addParameters(t,e){t.addFieldOffset(5,e,0)}static createParametersVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startParametersVector(t,e){t.startVector(4,e,4)}static endCondition(t){return t.endObject()}static createCondition(t,e,i,a,s,n,r){return tm.startCondition(t),tm.addStartTime(t,e),tm.addEndTime(t,i),tm.addForecastToken(t,a),tm.addBeginCondition(t,s),tm.addEndCondition(t,n),tm.addParameters(t,r),tm.endCondition(t)}}(W=b||(b={}))[W.CLEAR=0]="CLEAR",W[W.RAIN=1]="RAIN",W[W.SNOW=2]="SNOW",W[W.SLEET=3]="SLEET",W[W.HAIL=4]="HAIL",W[W.MIXED=5]="MIXED",W[W.UNKNOWN6=6]="UNKNOWN6";class t_{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsPrecipitationAmountByType(t,e){return(e||new t_).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsPrecipitationAmountByType(t,e){return t.setPosition(t.position()+4),(e||new t_).__init(t.readInt32(t.position())+t.position(),t)}precipitationType(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readInt8(this.bb_pos+t):b.CLEAR}expected(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readFloat32(this.bb_pos+t):0}minimumSnow(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readFloat32(this.bb_pos+t):0}maximumSnow(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readFloat32(this.bb_pos+t):0}expectedSnow(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.readFloat32(this.bb_pos+t):0}static startPrecipitationAmountByType(t){t.startObject(5)}static addPrecipitationType(t,e){t.addFieldInt8(0,e,b.CLEAR)}static addExpected(t,e){t.addFieldFloat32(1,e,0)}static addMinimumSnow(t,e){t.addFieldFloat32(2,e,0)}static addMaximumSnow(t,e){t.addFieldFloat32(3,e,0)}static addExpectedSnow(t,e){t.addFieldFloat32(4,e,0)}static endPrecipitationAmountByType(t){return t.endObject()}static createPrecipitationAmountByType(t,e,i,a,s,n){return t_.startPrecipitationAmountByType(t),t_.addPrecipitationType(t,e),t_.addExpected(t,i),t_.addMinimumSnow(t,a),t_.addMaximumSnow(t,s),t_.addExpectedSnow(t,n),t_.endPrecipitationAmountByType(t)}}(L=h||(h={}))[L.RISING=0]="RISING",L[L.FALLING=1]="FALLING",L[L.STEADY=2]="STEADY",L[L.UNKNOWN3=3]="UNKNOWN3",(D=m||(m={}))[D.CLEAR=0]="CLEAR",D[D.BLIZZARD=1]="BLIZZARD",D[D.PRECIPITATION=2]="PRECIPITATION",D[D.UNKNOWN3=3]="UNKNOWN3",D[D.UNKNOWN4=4]="UNKNOWN4",D[D.CLOUDY=5]="CLOUDY",D[D.DRIZZLE=6]="DRIZZLE",D[D.FLURRIES=7]="FLURRIES",D[D.FOGGY=8]="FOGGY",D[D.UNKNOWN9=9]="UNKNOWN9",D[D.UNKNOWN10=10]="UNKNOWN10",D[D.UNKNOWN11=11]="UNKNOWN11",D[D.UNKNOWN12=12]="UNKNOWN12",D[D.HAZE=13]="HAZE",D[D.HEAVY_RAIN=14]="HEAVY_RAIN",D[D.HEAVY_SNOW=15]="HEAVY_SNOW",D[D.UNKNOWN16=16]="UNKNOWN16",D[D.UNKNOWN17=17]="UNKNOWN17",D[D.ISOLATED_THUNDERSTORMS=18]="ISOLATED_THUNDERSTORMS",D[D.MOSTLY_CLEAR=19]="MOSTLY_CLEAR",D[D.MOSTLY_CLOUDY=20]="MOSTLY_CLOUDY",D[D.PARTLY_CLOUDY=21]="PARTLY_CLOUDY",D[D.RAIN=22]="RAIN",D[D.UNKNOWN23=23]="UNKNOWN23",D[D.UNKNOWN24=24]="UNKNOWN24",D[D.UNKNOWN25=25]="UNKNOWN25",D[D.SNOW=26]="SNOW",D[D.UNKNOWN27=27]="UNKNOWN27",D[D.UNKNOWN28=28]="UNKNOWN28",D[D.FREEZING_DRIZZLE=29]="FREEZING_DRIZZLE",D[D.THUNDERSTORMS=30]="THUNDERSTORMS",D[D.UNKNOWN31=31]="UNKNOWN31",D[D.WINDY=32]="WINDY",D[D.WINTRY_MIX=33]="WINTRY_MIX",D[D.UNKNOWN34=34]="UNKNOWN34",D[D.UNKNOWN35=35]="UNKNOWN35",D[D.UNKNOWN36=36]="UNKNOWN36",D[D.UNKNOWN37=37]="UNKNOWN37",D[D.UNKNOWN38=38]="UNKNOWN38",D[D.UNKNOWN39=39]="UNKNOWN39",D[D.UNKNOWN40=40]="UNKNOWN40",D[D.UNKNOWN41=41]="UNKNOWN41",D[D.UNKNOWN42=42]="UNKNOWN42",D[D.UNKNOWN43=43]="UNKNOWN43",D[D.UNKNOWN44=44]="UNKNOWN44";class ty{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsCurrentWeatherData(t,e){return(e||new ty).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsCurrentWeatherData(t,e){return t.setPosition(t.position()+4),(e||new ty).__init(t.readInt32(t.position())+t.position(),t)}metadata(t){let e=this.bb.__offset(this.bb_pos,4);return e?(t||new to).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}asOf(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readUint32(this.bb_pos+t):0}cloudCover(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readInt8(this.bb_pos+t):0}cloudCoverLowAltPct(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readInt8(this.bb_pos+t):0}cloudCoverMidAltPct(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.readInt8(this.bb_pos+t):0}cloudCoverHighAltPct(){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.readInt8(this.bb_pos+t):0}conditionCode(){let t=this.bb.__offset(this.bb_pos,16);return t?this.bb.readInt8(this.bb_pos+t):m.CLEAR}daylight(){let t=this.bb.__offset(this.bb_pos,18);return!!t&&!!this.bb.readInt8(this.bb_pos+t)}humidity(){let t=this.bb.__offset(this.bb_pos,20);return t?this.bb.readInt8(this.bb_pos+t):0}perceivedPrecipitationIntensity(){let t=this.bb.__offset(this.bb_pos,22);return t?this.bb.readFloat32(this.bb_pos+t):0}precipitationAmount1h(){let t=this.bb.__offset(this.bb_pos,24);return t?this.bb.readFloat32(this.bb_pos+t):0}precipitationAmount6h(){let t=this.bb.__offset(this.bb_pos,26);return t?this.bb.readFloat32(this.bb_pos+t):0}precipitationAmount24h(){let t=this.bb.__offset(this.bb_pos,28);return t?this.bb.readFloat32(this.bb_pos+t):0}precipitationAmountNext1h(){let t=this.bb.__offset(this.bb_pos,30);return t?this.bb.readFloat32(this.bb_pos+t):0}precipitationAmountNext6h(){let t=this.bb.__offset(this.bb_pos,32);return t?this.bb.readFloat32(this.bb_pos+t):0}precipitationAmountNext24h(){let t=this.bb.__offset(this.bb_pos,34);return t?this.bb.readFloat32(this.bb_pos+t):0}precipitationAmountNext1hByType(t,e){let i=this.bb.__offset(this.bb_pos,36);return i?(e||new t_).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}precipitationAmountNext1hByTypeLength(){let t=this.bb.__offset(this.bb_pos,36);return t?this.bb.__vector_len(this.bb_pos+t):0}precipitationAmountNext6hByType(t,e){let i=this.bb.__offset(this.bb_pos,38);return i?(e||new t_).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}precipitationAmountNext6hByTypeLength(){let t=this.bb.__offset(this.bb_pos,38);return t?this.bb.__vector_len(this.bb_pos+t):0}precipitationAmountNext24hByType(t,e){let i=this.bb.__offset(this.bb_pos,40);return i?(e||new t_).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}precipitationAmountNext24hByTypeLength(){let t=this.bb.__offset(this.bb_pos,40);return t?this.bb.__vector_len(this.bb_pos+t):0}precipitationAmountPrevious1hByType(t,e){let i=this.bb.__offset(this.bb_pos,42);return i?(e||new t_).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}precipitationAmountPrevious1hByTypeLength(){let t=this.bb.__offset(this.bb_pos,42);return t?this.bb.__vector_len(this.bb_pos+t):0}precipitationAmountPrevious6hByType(t,e){let i=this.bb.__offset(this.bb_pos,44);return i?(e||new t_).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}precipitationAmountPrevious6hByTypeLength(){let t=this.bb.__offset(this.bb_pos,44);return t?this.bb.__vector_len(this.bb_pos+t):0}precipitationAmountPrevious24hByType(t,e){let i=this.bb.__offset(this.bb_pos,46);return i?(e||new t_).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}precipitationAmountPrevious24hByTypeLength(){let t=this.bb.__offset(this.bb_pos,46);return t?this.bb.__vector_len(this.bb_pos+t):0}precipitationIntensity(){let t=this.bb.__offset(this.bb_pos,48);return t?this.bb.readFloat32(this.bb_pos+t):0}pressure(){let t=this.bb.__offset(this.bb_pos,50);return t?this.bb.readFloat32(this.bb_pos+t):0}pressureTrend(){let t=this.bb.__offset(this.bb_pos,52);return t?this.bb.readInt8(this.bb_pos+t):h.RISING}snowfallAmount1h(){let t=this.bb.__offset(this.bb_pos,54);return t?this.bb.readFloat32(this.bb_pos+t):0}snowfallAmount6h(){let t=this.bb.__offset(this.bb_pos,56);return t?this.bb.readFloat32(this.bb_pos+t):0}snowfallAmount24h(){let t=this.bb.__offset(this.bb_pos,58);return t?this.bb.readFloat32(this.bb_pos+t):0}snowfallAmountNext1h(){let t=this.bb.__offset(this.bb_pos,60);return t?this.bb.readFloat32(this.bb_pos+t):0}snowfallAmountNext6h(){let t=this.bb.__offset(this.bb_pos,62);return t?this.bb.readFloat32(this.bb_pos+t):0}snowfallAmountNext24h(){let t=this.bb.__offset(this.bb_pos,64);return t?this.bb.readFloat32(this.bb_pos+t):0}temperature(){let t=this.bb.__offset(this.bb_pos,66);return t?this.bb.readFloat32(this.bb_pos+t):0}temperatureApparent(){let t=this.bb.__offset(this.bb_pos,68);return t?this.bb.readFloat32(this.bb_pos+t):0}unknown34(){let t=this.bb.__offset(this.bb_pos,70);return t?this.bb.readFloat32(this.bb_pos+t):0}temperatureDewPoint(){let t=this.bb.__offset(this.bb_pos,72);return t?this.bb.readFloat32(this.bb_pos+t):0}uvIndex(){let t=this.bb.__offset(this.bb_pos,74);return t?this.bb.readInt8(this.bb_pos+t):0}visibility(){let t=this.bb.__offset(this.bb_pos,76);return t?this.bb.readFloat32(this.bb_pos+t):0}windDirection(){let t=this.bb.__offset(this.bb_pos,78);return t?this.bb.readInt16(this.bb_pos+t):0}windGust(){let t=this.bb.__offset(this.bb_pos,80);return t?this.bb.readFloat32(this.bb_pos+t):0}windSpeed(){let t=this.bb.__offset(this.bb_pos,82);return t?this.bb.readFloat32(this.bb_pos+t):0}static startCurrentWeatherData(t){t.startObject(40)}static addMetadata(t,e){t.addFieldOffset(0,e,0)}static addAsOf(t,e){t.addFieldInt32(1,e,0)}static addCloudCover(t,e){t.addFieldInt8(2,e,0)}static addCloudCoverLowAltPct(t,e){t.addFieldInt8(3,e,0)}static addCloudCoverMidAltPct(t,e){t.addFieldInt8(4,e,0)}static addCloudCoverHighAltPct(t,e){t.addFieldInt8(5,e,0)}static addConditionCode(t,e){t.addFieldInt8(6,e,m.CLEAR)}static addDaylight(t,e){t.addFieldInt8(7,+e,0)}static addHumidity(t,e){t.addFieldInt8(8,e,0)}static addPerceivedPrecipitationIntensity(t,e){t.addFieldFloat32(9,e,0)}static addPrecipitationAmount1h(t,e){t.addFieldFloat32(10,e,0)}static addPrecipitationAmount6h(t,e){t.addFieldFloat32(11,e,0)}static addPrecipitationAmount24h(t,e){t.addFieldFloat32(12,e,0)}static addPrecipitationAmountNext1h(t,e){t.addFieldFloat32(13,e,0)}static addPrecipitationAmountNext6h(t,e){t.addFieldFloat32(14,e,0)}static addPrecipitationAmountNext24h(t,e){t.addFieldFloat32(15,e,0)}static addPrecipitationAmountNext1hByType(t,e){t.addFieldOffset(16,e,0)}static createPrecipitationAmountNext1hByTypeVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startPrecipitationAmountNext1hByTypeVector(t,e){t.startVector(4,e,4)}static addPrecipitationAmountNext6hByType(t,e){t.addFieldOffset(17,e,0)}static createPrecipitationAmountNext6hByTypeVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startPrecipitationAmountNext6hByTypeVector(t,e){t.startVector(4,e,4)}static addPrecipitationAmountNext24hByType(t,e){t.addFieldOffset(18,e,0)}static createPrecipitationAmountNext24hByTypeVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startPrecipitationAmountNext24hByTypeVector(t,e){t.startVector(4,e,4)}static addPrecipitationAmountPrevious1hByType(t,e){t.addFieldOffset(19,e,0)}static createPrecipitationAmountPrevious1hByTypeVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startPrecipitationAmountPrevious1hByTypeVector(t,e){t.startVector(4,e,4)}static addPrecipitationAmountPrevious6hByType(t,e){t.addFieldOffset(20,e,0)}static createPrecipitationAmountPrevious6hByTypeVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startPrecipitationAmountPrevious6hByTypeVector(t,e){t.startVector(4,e,4)}static addPrecipitationAmountPrevious24hByType(t,e){t.addFieldOffset(21,e,0)}static createPrecipitationAmountPrevious24hByTypeVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startPrecipitationAmountPrevious24hByTypeVector(t,e){t.startVector(4,e,4)}static addPrecipitationIntensity(t,e){t.addFieldFloat32(22,e,0)}static addPressure(t,e){t.addFieldFloat32(23,e,0)}static addPressureTrend(t,e){t.addFieldInt8(24,e,h.RISING)}static addSnowfallAmount1h(t,e){t.addFieldFloat32(25,e,0)}static addSnowfallAmount6h(t,e){t.addFieldFloat32(26,e,0)}static addSnowfallAmount24h(t,e){t.addFieldFloat32(27,e,0)}static addSnowfallAmountNext1h(t,e){t.addFieldFloat32(28,e,0)}static addSnowfallAmountNext6h(t,e){t.addFieldFloat32(29,e,0)}static addSnowfallAmountNext24h(t,e){t.addFieldFloat32(30,e,0)}static addTemperature(t,e){t.addFieldFloat32(31,e,0)}static addTemperatureApparent(t,e){t.addFieldFloat32(32,e,0)}static addUnknown34(t,e){t.addFieldFloat32(33,e,0)}static addTemperatureDewPoint(t,e){t.addFieldFloat32(34,e,0)}static addUvIndex(t,e){t.addFieldInt8(35,e,0)}static addVisibility(t,e){t.addFieldFloat32(36,e,0)}static addWindDirection(t,e){t.addFieldInt16(37,e,0)}static addWindGust(t,e){t.addFieldFloat32(38,e,0)}static addWindSpeed(t,e){t.addFieldFloat32(39,e,0)}static endCurrentWeatherData(t){return t.endObject()}static createCurrentWeatherData(t,e,i,a,s,n,r,o,d,c,l,u,p,b,h,m,_,y,f,g,N,C,x,A,I,T,v,S,O,F,w,P,E,M,R,U,W,L,D,B,$){return ty.startCurrentWeatherData(t),ty.addMetadata(t,e),ty.addAsOf(t,i),ty.addCloudCover(t,a),ty.addCloudCoverLowAltPct(t,s),ty.addCloudCoverMidAltPct(t,n),ty.addCloudCoverHighAltPct(t,r),ty.addConditionCode(t,o),ty.addDaylight(t,d),ty.addHumidity(t,c),ty.addPerceivedPrecipitationIntensity(t,l),ty.addPrecipitationAmount1h(t,u),ty.addPrecipitationAmount6h(t,p),ty.addPrecipitationAmount24h(t,b),ty.addPrecipitationAmountNext1h(t,h),ty.addPrecipitationAmountNext6h(t,m),ty.addPrecipitationAmountNext24h(t,_),ty.addPrecipitationAmountNext1hByType(t,y),ty.addPrecipitationAmountNext6hByType(t,f),ty.addPrecipitationAmountNext24hByType(t,g),ty.addPrecipitationAmountPrevious1hByType(t,N),ty.addPrecipitationAmountPrevious6hByType(t,C),ty.addPrecipitationAmountPrevious24hByType(t,x),ty.addPrecipitationIntensity(t,A),ty.addPressure(t,I),ty.addPressureTrend(t,T),ty.addSnowfallAmount1h(t,v),ty.addSnowfallAmount6h(t,S),ty.addSnowfallAmount24h(t,O),ty.addSnowfallAmountNext1h(t,F),ty.addSnowfallAmountNext6h(t,w),ty.addSnowfallAmountNext24h(t,P),ty.addTemperature(t,E),ty.addTemperatureApparent(t,M),ty.addUnknown34(t,R),ty.addTemperatureDewPoint(t,U),ty.addUvIndex(t,W),ty.addVisibility(t,L),ty.addWindDirection(t,D),ty.addWindGust(t,B),ty.addWindSpeed(t,$),ty.endCurrentWeatherData(t)}}class tf{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsDayPartForecast(t,e){return(e||new tf).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsDayPartForecast(t,e){return t.setPosition(t.position()+4),(e||new tf).__init(t.readInt32(t.position())+t.position(),t)}forecastStart(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint32(this.bb_pos+t):0}forecastEnd(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readUint32(this.bb_pos+t):0}cloudCover(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readInt8(this.bb_pos+t):0}cloudCoverLowAltPct(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readInt8(this.bb_pos+t):0}cloudCoverMidAltPct(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.readInt8(this.bb_pos+t):0}cloudCoverHighAltPct(){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.readInt8(this.bb_pos+t):0}conditionCode(){let t=this.bb.__offset(this.bb_pos,16);return t?this.bb.readInt8(this.bb_pos+t):m.CLEAR}humidity(){let t=this.bb.__offset(this.bb_pos,18);return t?this.bb.readInt8(this.bb_pos+t):0}humidityMax(){let t=this.bb.__offset(this.bb_pos,20);return t?this.bb.readInt8(this.bb_pos+t):0}humidityMin(){let t=this.bb.__offset(this.bb_pos,22);return t?this.bb.readInt8(this.bb_pos+t):0}precipitationAmount(){let t=this.bb.__offset(this.bb_pos,24);return t?this.bb.readFloat32(this.bb_pos+t):0}precipitationAmountByType(t,e){let i=this.bb.__offset(this.bb_pos,26);return i?(e||new t_).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}precipitationAmountByTypeLength(){let t=this.bb.__offset(this.bb_pos,26);return t?this.bb.__vector_len(this.bb_pos+t):0}precipitationChance(){let t=this.bb.__offset(this.bb_pos,28);return t?this.bb.readInt8(this.bb_pos+t):0}precipitationType(){let t=this.bb.__offset(this.bb_pos,30);return t?this.bb.readInt8(this.bb_pos+t):b.CLEAR}snowfallAmount(){let t=this.bb.__offset(this.bb_pos,32);return t?this.bb.readFloat32(this.bb_pos+t):0}temperatureMax(){let t=this.bb.__offset(this.bb_pos,34);return t?this.bb.readFloat32(this.bb_pos+t):0}temperatureMin(){let t=this.bb.__offset(this.bb_pos,36);return t?this.bb.readFloat32(this.bb_pos+t):0}visibilityMax(){let t=this.bb.__offset(this.bb_pos,38);return t?this.bb.readFloat32(this.bb_pos+t):0}visibilityMin(){let t=this.bb.__offset(this.bb_pos,40);return t?this.bb.readFloat32(this.bb_pos+t):0}windDirection(){let t=this.bb.__offset(this.bb_pos,42);return t?this.bb.readInt16(this.bb_pos+t):0}windGustSpeedMax(){let t=this.bb.__offset(this.bb_pos,44);return t?this.bb.readFloat32(this.bb_pos+t):0}windSpeed(){let t=this.bb.__offset(this.bb_pos,46);return t?this.bb.readFloat32(this.bb_pos+t):0}windSpeedMax(){let t=this.bb.__offset(this.bb_pos,48);return t?this.bb.readFloat32(this.bb_pos+t):0}precipitationIntensityMax(){let t=this.bb.__offset(this.bb_pos,50);return t?this.bb.readFloat32(this.bb_pos+t):0}perceivedPrecipitationIntensityMax(){let t=this.bb.__offset(this.bb_pos,52);return t?this.bb.readFloat32(this.bb_pos+t):0}uvIndexMin(){let t=this.bb.__offset(this.bb_pos,54);return t?this.bb.readInt8(this.bb_pos+t):0}uvIndexMax(){let t=this.bb.__offset(this.bb_pos,56);return t?this.bb.readInt8(this.bb_pos+t):0}temperatureApparentMin(){let t=this.bb.__offset(this.bb_pos,58);return t?this.bb.readFloat32(this.bb_pos+t):0}temperatureApparentMax(){let t=this.bb.__offset(this.bb_pos,60);return t?this.bb.readFloat32(this.bb_pos+t):0}daylight(){let t=this.bb.__offset(this.bb_pos,62);return!!t&&!!this.bb.readInt8(this.bb_pos+t)}static startDayPartForecast(t){t.startObject(30)}static addForecastStart(t,e){t.addFieldInt32(0,e,0)}static addForecastEnd(t,e){t.addFieldInt32(1,e,0)}static addCloudCover(t,e){t.addFieldInt8(2,e,0)}static addCloudCoverLowAltPct(t,e){t.addFieldInt8(3,e,0)}static addCloudCoverMidAltPct(t,e){t.addFieldInt8(4,e,0)}static addCloudCoverHighAltPct(t,e){t.addFieldInt8(5,e,0)}static addConditionCode(t,e){t.addFieldInt8(6,e,m.CLEAR)}static addHumidity(t,e){t.addFieldInt8(7,e,0)}static addHumidityMax(t,e){t.addFieldInt8(8,e,0)}static addHumidityMin(t,e){t.addFieldInt8(9,e,0)}static addPrecipitationAmount(t,e){t.addFieldFloat32(10,e,0)}static addPrecipitationAmountByType(t,e){t.addFieldOffset(11,e,0)}static createPrecipitationAmountByTypeVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startPrecipitationAmountByTypeVector(t,e){t.startVector(4,e,4)}static addPrecipitationChance(t,e){t.addFieldInt8(12,e,0)}static addPrecipitationType(t,e){t.addFieldInt8(13,e,b.CLEAR)}static addSnowfallAmount(t,e){t.addFieldFloat32(14,e,0)}static addTemperatureMax(t,e){t.addFieldFloat32(15,e,0)}static addTemperatureMin(t,e){t.addFieldFloat32(16,e,0)}static addVisibilityMax(t,e){t.addFieldFloat32(17,e,0)}static addVisibilityMin(t,e){t.addFieldFloat32(18,e,0)}static addWindDirection(t,e){t.addFieldInt16(19,e,0)}static addWindGustSpeedMax(t,e){t.addFieldFloat32(20,e,0)}static addWindSpeed(t,e){t.addFieldFloat32(21,e,0)}static addWindSpeedMax(t,e){t.addFieldFloat32(22,e,0)}static addPrecipitationIntensityMax(t,e){t.addFieldFloat32(23,e,0)}static addPerceivedPrecipitationIntensityMax(t,e){t.addFieldFloat32(24,e,0)}static addUvIndexMin(t,e){t.addFieldInt8(25,e,0)}static addUvIndexMax(t,e){t.addFieldInt8(26,e,0)}static addTemperatureApparentMin(t,e){t.addFieldFloat32(27,e,0)}static addTemperatureApparentMax(t,e){t.addFieldFloat32(28,e,0)}static addDaylight(t,e){t.addFieldInt8(29,+e,0)}static endDayPartForecast(t){return t.endObject()}static createDayPartForecast(t,e,i,a,s,n,r,o,d,c,l,u,p,b,h,m,_,y,f,g,N,C,x,A,I,T,v,S,O,F,w){return tf.startDayPartForecast(t),tf.addForecastStart(t,e),tf.addForecastEnd(t,i),tf.addCloudCover(t,a),tf.addCloudCoverLowAltPct(t,s),tf.addCloudCoverMidAltPct(t,n),tf.addCloudCoverHighAltPct(t,r),tf.addConditionCode(t,o),tf.addHumidity(t,d),tf.addHumidityMax(t,c),tf.addHumidityMin(t,l),tf.addPrecipitationAmount(t,u),tf.addPrecipitationAmountByType(t,p),tf.addPrecipitationChance(t,b),tf.addPrecipitationType(t,h),tf.addSnowfallAmount(t,m),tf.addTemperatureMax(t,_),tf.addTemperatureMin(t,y),tf.addVisibilityMax(t,f),tf.addVisibilityMin(t,g),tf.addWindDirection(t,N),tf.addWindGustSpeedMax(t,C),tf.addWindSpeed(t,x),tf.addWindSpeedMax(t,A),tf.addPrecipitationIntensityMax(t,I),tf.addPerceivedPrecipitationIntensityMax(t,T),tf.addUvIndexMin(t,v),tf.addUvIndexMax(t,S),tf.addTemperatureApparentMin(t,O),tf.addTemperatureApparentMax(t,F),tf.addDaylight(t,w),tf.endDayPartForecast(t)}}(B=_||(_={}))[B.NEW=0]="NEW",B[B.WAXING_CRESCENT=1]="WAXING_CRESCENT",B[B.FIRST_QUARTER=2]="FIRST_QUARTER",B[B.WAXING_GIBBOUS=3]="WAXING_GIBBOUS",B[B.FULL=4]="FULL",B[B.WANING_GIBBOUS=5]="WANING_GIBBOUS",B[B.THIRD_QUARTER=6]="THIRD_QUARTER",B[B.WANING_CRESCENT=7]="WANING_CRESCENT",B[B.UNKNOWN8=8]="UNKNOWN8";class tg{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsDayWeatherConditions(t,e){return(e||new tg).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsDayWeatherConditions(t,e){return t.setPosition(t.position()+4),(e||new tg).__init(t.readInt32(t.position())+t.position(),t)}forecastStart(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint32(this.bb_pos+t):0}forecastEnd(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readUint32(this.bb_pos+t):0}conditionCode(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readInt8(this.bb_pos+t):m.CLEAR}humidityMax(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readInt8(this.bb_pos+t):0}humidityMin(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.readInt8(this.bb_pos+t):0}maxUvIndex(){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.readInt8(this.bb_pos+t):0}moonPhase(){let t=this.bb.__offset(this.bb_pos,16);return t?this.bb.readInt8(this.bb_pos+t):_.NEW}moonrise(){let t=this.bb.__offset(this.bb_pos,18);return t?this.bb.readUint32(this.bb_pos+t):0}moonset(){let t=this.bb.__offset(this.bb_pos,20);return t?this.bb.readUint32(this.bb_pos+t):0}precipitationAmount(){let t=this.bb.__offset(this.bb_pos,22);return t?this.bb.readFloat32(this.bb_pos+t):0}precipitationAmountByType(t,e){let i=this.bb.__offset(this.bb_pos,24);return i?(e||new t_).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}precipitationAmountByTypeLength(){let t=this.bb.__offset(this.bb_pos,24);return t?this.bb.__vector_len(this.bb_pos+t):0}precipitationChance(){let t=this.bb.__offset(this.bb_pos,26);return t?this.bb.readInt8(this.bb_pos+t):0}precipitationType(){let t=this.bb.__offset(this.bb_pos,28);return t?this.bb.readInt8(this.bb_pos+t):b.CLEAR}snowfallAmount(){let t=this.bb.__offset(this.bb_pos,30);return t?this.bb.readFloat32(this.bb_pos+t):0}solarMidnight(){let t=this.bb.__offset(this.bb_pos,32);return t?this.bb.readUint32(this.bb_pos+t):0}solarNoon(){let t=this.bb.__offset(this.bb_pos,34);return t?this.bb.readUint32(this.bb_pos+t):0}sunrise(){let t=this.bb.__offset(this.bb_pos,36);return t?this.bb.readUint32(this.bb_pos+t):0}sunriseCivil(){let t=this.bb.__offset(this.bb_pos,38);return t?this.bb.readUint32(this.bb_pos+t):0}sunriseNautical(){let t=this.bb.__offset(this.bb_pos,40);return t?this.bb.readUint32(this.bb_pos+t):0}sunriseAstronomical(){let t=this.bb.__offset(this.bb_pos,42);return t?this.bb.readUint32(this.bb_pos+t):0}sunset(){let t=this.bb.__offset(this.bb_pos,44);return t?this.bb.readUint32(this.bb_pos+t):0}sunsetCivil(){let t=this.bb.__offset(this.bb_pos,46);return t?this.bb.readUint32(this.bb_pos+t):0}sunsetNautical(){let t=this.bb.__offset(this.bb_pos,48);return t?this.bb.readUint32(this.bb_pos+t):0}sunsetAstronomical(){let t=this.bb.__offset(this.bb_pos,50);return t?this.bb.readUint32(this.bb_pos+t):0}temperatureMax(){let t=this.bb.__offset(this.bb_pos,52);return t?this.bb.readFloat32(this.bb_pos+t):0}temperatureMaxTime(){let t=this.bb.__offset(this.bb_pos,54);return t?this.bb.readUint32(this.bb_pos+t):0}temperatureMin(){let t=this.bb.__offset(this.bb_pos,56);return t?this.bb.readFloat32(this.bb_pos+t):0}temperatureMinTime(){let t=this.bb.__offset(this.bb_pos,58);return t?this.bb.readUint32(this.bb_pos+t):0}windGustSpeedMax(){let t=this.bb.__offset(this.bb_pos,60);return t?this.bb.readFloat32(this.bb_pos+t):0}windSpeedAvg(){let t=this.bb.__offset(this.bb_pos,62);return t?this.bb.readFloat32(this.bb_pos+t):0}windSpeedMax(){let t=this.bb.__offset(this.bb_pos,64);return t?this.bb.readFloat32(this.bb_pos+t):0}visibilityMax(){let t=this.bb.__offset(this.bb_pos,66);return t?this.bb.readFloat32(this.bb_pos+t):0}visibilityMin(){let t=this.bb.__offset(this.bb_pos,68);return t?this.bb.readFloat32(this.bb_pos+t):0}overnightForecast(t){let e=this.bb.__offset(this.bb_pos,70);return e?(t||new tf).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}daytimeForecast(t){let e=this.bb.__offset(this.bb_pos,72);return e?(t||new tf).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}restOfDayForecast(t){let e=this.bb.__offset(this.bb_pos,74);return e?(t||new tf).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}static startDayWeatherConditions(t){t.startObject(36)}static addForecastStart(t,e){t.addFieldInt32(0,e,0)}static addForecastEnd(t,e){t.addFieldInt32(1,e,0)}static addConditionCode(t,e){t.addFieldInt8(2,e,m.CLEAR)}static addHumidityMax(t,e){t.addFieldInt8(3,e,0)}static addHumidityMin(t,e){t.addFieldInt8(4,e,0)}static addMaxUvIndex(t,e){t.addFieldInt8(5,e,0)}static addMoonPhase(t,e){t.addFieldInt8(6,e,_.NEW)}static addMoonrise(t,e){t.addFieldInt32(7,e,0)}static addMoonset(t,e){t.addFieldInt32(8,e,0)}static addPrecipitationAmount(t,e){t.addFieldFloat32(9,e,0)}static addPrecipitationAmountByType(t,e){t.addFieldOffset(10,e,0)}static createPrecipitationAmountByTypeVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startPrecipitationAmountByTypeVector(t,e){t.startVector(4,e,4)}static addPrecipitationChance(t,e){t.addFieldInt8(11,e,0)}static addPrecipitationType(t,e){t.addFieldInt8(12,e,b.CLEAR)}static addSnowfallAmount(t,e){t.addFieldFloat32(13,e,0)}static addSolarMidnight(t,e){t.addFieldInt32(14,e,0)}static addSolarNoon(t,e){t.addFieldInt32(15,e,0)}static addSunrise(t,e){t.addFieldInt32(16,e,0)}static addSunriseCivil(t,e){t.addFieldInt32(17,e,0)}static addSunriseNautical(t,e){t.addFieldInt32(18,e,0)}static addSunriseAstronomical(t,e){t.addFieldInt32(19,e,0)}static addSunset(t,e){t.addFieldInt32(20,e,0)}static addSunsetCivil(t,e){t.addFieldInt32(21,e,0)}static addSunsetNautical(t,e){t.addFieldInt32(22,e,0)}static addSunsetAstronomical(t,e){t.addFieldInt32(23,e,0)}static addTemperatureMax(t,e){t.addFieldFloat32(24,e,0)}static addTemperatureMaxTime(t,e){t.addFieldInt32(25,e,0)}static addTemperatureMin(t,e){t.addFieldFloat32(26,e,0)}static addTemperatureMinTime(t,e){t.addFieldInt32(27,e,0)}static addWindGustSpeedMax(t,e){t.addFieldFloat32(28,e,0)}static addWindSpeedAvg(t,e){t.addFieldFloat32(29,e,0)}static addWindSpeedMax(t,e){t.addFieldFloat32(30,e,0)}static addVisibilityMax(t,e){t.addFieldFloat32(31,e,0)}static addVisibilityMin(t,e){t.addFieldFloat32(32,e,0)}static addOvernightForecast(t,e){t.addFieldOffset(33,e,0)}static addDaytimeForecast(t,e){t.addFieldOffset(34,e,0)}static addRestOfDayForecast(t,e){t.addFieldOffset(35,e,0)}static endDayWeatherConditions(t){return t.endObject()}}class tN{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsDailyForecastData(t,e){return(e||new tN).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsDailyForecastData(t,e){return t.setPosition(t.position()+4),(e||new tN).__init(t.readInt32(t.position())+t.position(),t)}metadata(t){let e=this.bb.__offset(this.bb_pos,4);return e?(t||new to).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}days(t,e){let i=this.bb.__offset(this.bb_pos,6);return i?(e||new tg).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}daysLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}static startDailyForecastData(t){t.startObject(2)}static addMetadata(t,e){t.addFieldOffset(0,e,0)}static addDays(t,e){t.addFieldOffset(1,e,0)}static createDaysVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startDaysVector(t,e){t.startVector(4,e,4)}static endDailyForecastData(t){return t.endObject()}static createDailyForecastData(t,e,i){return tN.startDailyForecastData(t),tN.addMetadata(t,e),tN.addDays(t,i),tN.endDailyForecastData(t)}}class tC{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsForecastMinute(t,e){return(e||new tC).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsForecastMinute(t,e){return t.setPosition(t.position()+4),(e||new tC).__init(t.readInt32(t.position())+t.position(),t)}startTime(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint32(this.bb_pos+t):0}precipitationChance(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readInt8(this.bb_pos+t):0}precipitationIntensity(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readFloat32(this.bb_pos+t):0}perceivedPrecipitationIntensity(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readFloat32(this.bb_pos+t):0}static startForecastMinute(t){t.startObject(4)}static addStartTime(t,e){t.addFieldInt32(0,e,0)}static addPrecipitationChance(t,e){t.addFieldInt8(1,e,0)}static addPrecipitationIntensity(t,e){t.addFieldFloat32(2,e,0)}static addPerceivedPrecipitationIntensity(t,e){t.addFieldFloat32(3,e,0)}static endForecastMinute(t){return t.endObject()}static createForecastMinute(t,e,i,a,s){return tC.startForecastMinute(t),tC.addStartTime(t,e),tC.addPrecipitationChance(t,i),tC.addPrecipitationIntensity(t,a),tC.addPerceivedPrecipitationIntensity(t,s),tC.endForecastMinute(t)}}class tx{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsForecastPeriodSummary(t,e){return(e||new tx).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsForecastPeriodSummary(t,e){return t.setPosition(t.position()+4),(e||new tx).__init(t.readInt32(t.position())+t.position(),t)}startTime(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint32(this.bb_pos+t):0}endTime(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readUint32(this.bb_pos+t):0}condition(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readInt8(this.bb_pos+t):b.CLEAR}precipitationChance(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readInt8(this.bb_pos+t):0}precipitationIntensity(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.readFloat32(this.bb_pos+t):0}static startForecastPeriodSummary(t){t.startObject(5)}static addStartTime(t,e){t.addFieldInt32(0,e,0)}static addEndTime(t,e){t.addFieldInt32(1,e,0)}static addCondition(t,e){t.addFieldInt8(2,e,b.CLEAR)}static addPrecipitationChance(t,e){t.addFieldInt8(3,e,0)}static addPrecipitationIntensity(t,e){t.addFieldFloat32(4,e,0)}static endForecastPeriodSummary(t){return t.endObject()}static createForecastPeriodSummary(t,e,i,a,s,n){return tx.startForecastPeriodSummary(t),tx.addStartTime(t,e),tx.addEndTime(t,i),tx.addCondition(t,a),tx.addPrecipitationChance(t,s),tx.addPrecipitationIntensity(t,n),tx.endForecastPeriodSummary(t)}}class tA{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsHistoricalComparison(t,e){return(e||new tA).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsHistoricalComparison(t,e){return t.setPosition(t.position()+4),(e||new tA).__init(t.readInt32(t.position())+t.position(),t)}metadata(t){let e=this.bb.__offset(this.bb_pos,4);return e?(t||new to).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}comparisons(t,e){let i=this.bb.__offset(this.bb_pos,6);return i?(e||new tb).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}comparisonsLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}static startHistoricalComparison(t){t.startObject(2)}static addMetadata(t,e){t.addFieldOffset(0,e,0)}static addComparisons(t,e){t.addFieldOffset(1,e,0)}static createComparisonsVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startComparisonsVector(t,e){t.startVector(4,e,4)}static endHistoricalComparison(t){return t.endObject()}static createHistoricalComparison(t,e,i){return tA.startHistoricalComparison(t),tA.addMetadata(t,e),tA.addComparisons(t,i),tA.endHistoricalComparison(t)}}class tI{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsHourWeatherConditions(t,e){return(e||new tI).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsHourWeatherConditions(t,e){return t.setPosition(t.position()+4),(e||new tI).__init(t.readInt32(t.position())+t.position(),t)}forecastStart(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint32(this.bb_pos+t):0}cloudCover(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readInt8(this.bb_pos+t):0}cloudCoverLowAltPct(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readInt8(this.bb_pos+t):0}cloudCoverMidAltPct(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readInt8(this.bb_pos+t):0}cloudCoverHighAltPct(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.readInt8(this.bb_pos+t):0}conditionCode(){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.readInt8(this.bb_pos+t):m.CLEAR}daylight(){let t=this.bb.__offset(this.bb_pos,16);return!!t&&!!this.bb.readInt8(this.bb_pos+t)}humidity(){let t=this.bb.__offset(this.bb_pos,18);return t?this.bb.readInt8(this.bb_pos+t):0}perceivedPrecipitationIntensity(){let t=this.bb.__offset(this.bb_pos,20);return t?this.bb.readFloat32(this.bb_pos+t):0}precipitationAmount(){let t=this.bb.__offset(this.bb_pos,22);return t?this.bb.readFloat32(this.bb_pos+t):0}precipitationIntensity(){let t=this.bb.__offset(this.bb_pos,24);return t?this.bb.readFloat32(this.bb_pos+t):0}precipitationChance(){let t=this.bb.__offset(this.bb_pos,26);return t?this.bb.readInt8(this.bb_pos+t):0}precipitationType(){let t=this.bb.__offset(this.bb_pos,28);return t?this.bb.readInt8(this.bb_pos+t):b.CLEAR}pressure(){let t=this.bb.__offset(this.bb_pos,30);return t?this.bb.readFloat32(this.bb_pos+t):0}pressureTrend(){let t=this.bb.__offset(this.bb_pos,32);return t?this.bb.readInt8(this.bb_pos+t):h.RISING}snowfallAmount(){let t=this.bb.__offset(this.bb_pos,34);return t?this.bb.readFloat32(this.bb_pos+t):0}snowfallIntensity(){let t=this.bb.__offset(this.bb_pos,36);return t?this.bb.readFloat32(this.bb_pos+t):0}temperature(){let t=this.bb.__offset(this.bb_pos,38);return t?this.bb.readFloat32(this.bb_pos+t):0}temperatureApparent(){let t=this.bb.__offset(this.bb_pos,40);return t?this.bb.readFloat32(this.bb_pos+t):0}unknown20(){let t=this.bb.__offset(this.bb_pos,42);return t?this.bb.readFloat32(this.bb_pos+t):0}temperatureDewPoint(){let t=this.bb.__offset(this.bb_pos,44);return t?this.bb.readFloat32(this.bb_pos+t):0}uvIndex(){let t=this.bb.__offset(this.bb_pos,46);return t?this.bb.readInt8(this.bb_pos+t):0}visibility(){let t=this.bb.__offset(this.bb_pos,48);return t?this.bb.readFloat32(this.bb_pos+t):0}windDirection(){let t=this.bb.__offset(this.bb_pos,50);return t?this.bb.readInt16(this.bb_pos+t):0}windGust(){let t=this.bb.__offset(this.bb_pos,52);return t?this.bb.readFloat32(this.bb_pos+t):0}windSpeed(){let t=this.bb.__offset(this.bb_pos,54);return t?this.bb.readFloat32(this.bb_pos+t):0}static startHourWeatherConditions(t){t.startObject(26)}static addForecastStart(t,e){t.addFieldInt32(0,e,0)}static addCloudCover(t,e){t.addFieldInt8(1,e,0)}static addCloudCoverLowAltPct(t,e){t.addFieldInt8(2,e,0)}static addCloudCoverMidAltPct(t,e){t.addFieldInt8(3,e,0)}static addCloudCoverHighAltPct(t,e){t.addFieldInt8(4,e,0)}static addConditionCode(t,e){t.addFieldInt8(5,e,m.CLEAR)}static addDaylight(t,e){t.addFieldInt8(6,+e,0)}static addHumidity(t,e){t.addFieldInt8(7,e,0)}static addPerceivedPrecipitationIntensity(t,e){t.addFieldFloat32(8,e,0)}static addPrecipitationAmount(t,e){t.addFieldFloat32(9,e,0)}static addPrecipitationIntensity(t,e){t.addFieldFloat32(10,e,0)}static addPrecipitationChance(t,e){t.addFieldInt8(11,e,0)}static addPrecipitationType(t,e){t.addFieldInt8(12,e,b.CLEAR)}static addPressure(t,e){t.addFieldFloat32(13,e,0)}static addPressureTrend(t,e){t.addFieldInt8(14,e,h.RISING)}static addSnowfallAmount(t,e){t.addFieldFloat32(15,e,0)}static addSnowfallIntensity(t,e){t.addFieldFloat32(16,e,0)}static addTemperature(t,e){t.addFieldFloat32(17,e,0)}static addTemperatureApparent(t,e){t.addFieldFloat32(18,e,0)}static addUnknown20(t,e){t.addFieldFloat32(19,e,0)}static addTemperatureDewPoint(t,e){t.addFieldFloat32(20,e,0)}static addUvIndex(t,e){t.addFieldInt8(21,e,0)}static addVisibility(t,e){t.addFieldFloat32(22,e,0)}static addWindDirection(t,e){t.addFieldInt16(23,e,0)}static addWindGust(t,e){t.addFieldFloat32(24,e,0)}static addWindSpeed(t,e){t.addFieldFloat32(25,e,0)}static endHourWeatherConditions(t){return t.endObject()}static createHourWeatherConditions(t,e,i,a,s,n,r,o,d,c,l,u,p,b,h,m,_,y,f,g,N,C,x,A,I,T,v){return tI.startHourWeatherConditions(t),tI.addForecastStart(t,e),tI.addCloudCover(t,i),tI.addCloudCoverLowAltPct(t,a),tI.addCloudCoverMidAltPct(t,s),tI.addCloudCoverHighAltPct(t,n),tI.addConditionCode(t,r),tI.addDaylight(t,o),tI.addHumidity(t,d),tI.addPerceivedPrecipitationIntensity(t,c),tI.addPrecipitationAmount(t,l),tI.addPrecipitationIntensity(t,u),tI.addPrecipitationChance(t,p),tI.addPrecipitationType(t,b),tI.addPressure(t,h),tI.addPressureTrend(t,m),tI.addSnowfallAmount(t,_),tI.addSnowfallIntensity(t,y),tI.addTemperature(t,f),tI.addTemperatureApparent(t,g),tI.addUnknown20(t,N),tI.addTemperatureDewPoint(t,C),tI.addUvIndex(t,x),tI.addVisibility(t,A),tI.addWindDirection(t,I),tI.addWindGust(t,T),tI.addWindSpeed(t,v),tI.endHourWeatherConditions(t)}}class tT{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsHourlyForecastData(t,e){return(e||new tT).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsHourlyForecastData(t,e){return t.setPosition(t.position()+4),(e||new tT).__init(t.readInt32(t.position())+t.position(),t)}metadata(t){let e=this.bb.__offset(this.bb_pos,4);return e?(t||new to).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}hours(t,e){let i=this.bb.__offset(this.bb_pos,6);return i?(e||new tI).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}hoursLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}static startHourlyForecastData(t){t.startObject(2)}static addMetadata(t,e){t.addFieldOffset(0,e,0)}static addHours(t,e){t.addFieldOffset(1,e,0)}static createHoursVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startHoursVector(t,e){t.startVector(4,e,4)}static endHourlyForecastData(t){return t.endObject()}static createHourlyForecastData(t,e,i){return tT.startHourlyForecastData(t),tT.addMetadata(t,e),tT.addHours(t,i),tT.endHourlyForecastData(t)}}($=y||(y={}))[$.NORMAL=0]="NORMAL",$[$.LOW=1]="LOW",$[$.HIGH=2]="HIGH",$[$.UNKNOWN3=3]="UNKNOWN3",$[$.UNKNOWN4=4]="UNKNOWN4",$[$.UNKNOWN5=5]="UNKNOWN5";class tv{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsLocationInfo(t,e){return(e||new tv).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsLocationInfo(t,e){return t.setPosition(t.position()+4),(e||new tv).__init(t.readInt32(t.position())+t.position(),t)}metadata(t){let e=this.bb.__offset(this.bb_pos,4);return e?(t||new to).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}preciseName(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__string(this.bb_pos+e,t):null}countryCode(t){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.__string(this.bb_pos+e,t):null}timeZone(t){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.__string(this.bb_pos+e,t):null}primaryName(t){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.__string(this.bb_pos+e,t):null}static startLocationInfo(t){t.startObject(5)}static addMetadata(t,e){t.addFieldOffset(0,e,0)}static addPreciseName(t,e){t.addFieldOffset(1,e,0)}static addCountryCode(t,e){t.addFieldOffset(2,e,0)}static addTimeZone(t,e){t.addFieldOffset(3,e,0)}static addPrimaryName(t,e){t.addFieldOffset(4,e,0)}static endLocationInfo(t){return t.endObject()}static createLocationInfo(t,e,i,a,s,n){return tv.startLocationInfo(t),tv.addMetadata(t,e),tv.addPreciseName(t,i),tv.addCountryCode(t,a),tv.addTimeZone(t,s),tv.addPrimaryName(t,n),tv.endLocationInfo(t)}}(H=f||(f={}))[H.UNKNOWN0=0]="UNKNOWN0",H[H.AIR_QUALITY_DETAILS=1]="AIR_QUALITY_DETAILS",H[H.UNKNOWN2=2]="UNKNOWN2",H[H.UNKNOWN3=3]="UNKNOWN3",H[H.UNKNOWN4=4]="UNKNOWN4",H[H.UNKNOWN5=5]="UNKNOWN5",H[H.UNKNOWN6=6]="UNKNOWN6",H[H.UNKNOWN7=7]="UNKNOWN7",H[H.UNKNOWN8=8]="UNKNOWN8",H[H.TEMPERATURE_FEELS_LIKE_DETAILS=9]="TEMPERATURE_FEELS_LIKE_DETAILS",H[H.UNKNOWN10=10]="UNKNOWN10",H[H.TRENDS=11]="TRENDS",H[H.UV_DETAILS=12]="UV_DETAILS",H[H.UNKNOWN13=13]="UNKNOWN13",H[H.WIND_DETAILS=14]="WIND_DETAILS",H[H.UNKNOWN15=15]="UNKNOWN15",H[H.UNKNOWN16=16]="UNKNOWN16",H[H.UNKNOWN17=17]="UNKNOWN17",H[H.UNKNOWN18=18]="UNKNOWN18";class tS{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsPlacement(t,e){return(e||new tS).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsPlacement(t,e){return t.setPosition(t.position()+4),(e||new tS).__init(t.readInt32(t.position())+t.position(),t)}priority(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readInt8(this.bb_pos+t):0}articles(t,e){let i=this.bb.__offset(this.bb_pos,6);return i?(e||new tu).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}articlesLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}placement(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readInt8(this.bb_pos+t):f.UNKNOWN0}static startPlacement(t){t.startObject(3)}static addPriority(t,e){t.addFieldInt8(0,e,0)}static addArticles(t,e){t.addFieldOffset(1,e,0)}static createArticlesVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startArticlesVector(t,e){t.startVector(4,e,4)}static addPlacement(t,e){t.addFieldInt8(2,e,f.UNKNOWN0)}static endPlacement(t){return t.endObject()}static createPlacement(t,e,i,a){return tS.startPlacement(t),tS.addPriority(t,e),tS.addArticles(t,i),tS.addPlacement(t,a),tS.endPlacement(t)}}class tO{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsNews(t,e){return(e||new tO).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsNews(t,e){return t.setPosition(t.position()+4),(e||new tO).__init(t.readInt32(t.position())+t.position(),t)}metadata(t){let e=this.bb.__offset(this.bb_pos,4);return e?(t||new to).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}placements(t,e){let i=this.bb.__offset(this.bb_pos,6);return i?(e||new tS).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}placementsLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}static startNews(t){t.startObject(2)}static addMetadata(t,e){t.addFieldOffset(0,e,0)}static addPlacements(t,e){t.addFieldOffset(1,e,0)}static createPlacementsVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startPlacementsVector(t,e){t.startVector(4,e,4)}static endNews(t){return t.endObject()}static createNews(t,e,i){return tO.startNews(t),tO.addMetadata(t,e),tO.addPlacements(t,i),tO.endNews(t)}}class tF{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsNextHourForecastData(t,e){return(e||new tF).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsNextHourForecastData(t,e){return t.setPosition(t.position()+4),(e||new tF).__init(t.readInt32(t.position())+t.position(),t)}metadata(t){let e=this.bb.__offset(this.bb_pos,4);return e?(t||new to).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}condition(t,e){let i=this.bb.__offset(this.bb_pos,6);return i?(e||new tm).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}conditionLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}summary(t,e){let i=this.bb.__offset(this.bb_pos,8);return i?(e||new tx).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}summaryLength(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.__vector_len(this.bb_pos+t):0}forecastStart(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readUint32(this.bb_pos+t):0}forecastEnd(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.readUint32(this.bb_pos+t):0}minutes(t,e){let i=this.bb.__offset(this.bb_pos,14);return i?(e||new tC).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}minutesLength(){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.__vector_len(this.bb_pos+t):0}static startNextHourForecastData(t){t.startObject(6)}static addMetadata(t,e){t.addFieldOffset(0,e,0)}static addCondition(t,e){t.addFieldOffset(1,e,0)}static createConditionVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startConditionVector(t,e){t.startVector(4,e,4)}static addSummary(t,e){t.addFieldOffset(2,e,0)}static createSummaryVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startSummaryVector(t,e){t.startVector(4,e,4)}static addForecastStart(t,e){t.addFieldInt32(3,e,0)}static addForecastEnd(t,e){t.addFieldInt32(4,e,0)}static addMinutes(t,e){t.addFieldOffset(5,e,0)}static createMinutesVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startMinutesVector(t,e){t.startVector(4,e,4)}static endNextHourForecastData(t){return t.endObject()}static createNextHourForecastData(t,e,i,a,s,n,r){return tF.startNextHourForecastData(t),tF.addMetadata(t,e),tF.addCondition(t,i),tF.addSummary(t,a),tF.addForecastStart(t,s),tF.addForecastEnd(t,n),tF.addMinutes(t,r),tF.endNextHourForecastData(t)}}(K=g||(g={}))[K.UNKNOWN0=0]="UNKNOWN0",K[K.SHELTER=1]="SHELTER",K[K.EVACUATE=2]="EVACUATE",K[K.PREPARE=3]="PREPARE",K[K.EXECUTE=4]="EXECUTE",K[K.AVOID=5]="AVOID",K[K.MONITOR=6]="MONITOR",K[K.ACCESS=7]="ACCESS",K[K.ALLCLEAR=8]="ALLCLEAR",K[K.NONE=9]="NONE",K[K.UNKNOWN10=10]="UNKNOWN10",(V=N||(N={}))[V.UNKNOWN=0]="UNKNOWN",V[V.EXTREME=1]="EXTREME",V[V.SEVERE=2]="SEVERE",V[V.MODERATE=3]="MODERATE",V[V.MINOR=4]="MINOR",V[V.UNKNOWN5=5]="UNKNOWN5",(k=C||(C={}))[k.UNKNOWN=0]="UNKNOWN",k[k.UNKNOWN1=1]="UNKNOWN1",k[k.UNKNOWN2=2]="UNKNOWN2",k[k.UNKNOWN3=3]="UNKNOWN3",k[k.UNKNOWN4=4]="UNKNOWN4",k[k.UNKNOWN5=5]="UNKNOWN5",k[k.UNKNOWN6=6]="UNKNOWN6",k[k.UNKNOWN7=7]="UNKNOWN7",k[k.UNKNOWN8=8]="UNKNOWN8",k[k.UNKNOWN9=9]="UNKNOWN9",k[k.STATEMENT=10]="STATEMENT",k[k.WARNING=11]="WARNING",k[k.ADVISORY=12]="ADVISORY",k[k.UNKNOWN13=13]="UNKNOWN13",(G=x||(x={}))[G.UNKNOWN=0]="UNKNOWN",G[G.IMMEDIATE=1]="IMMEDIATE",G[G.EXPECTED=2]="EXPECTED",G[G.FUTURE=3]="FUTURE",G[G.PAST=4]="PAST",G[G.UNKNOWN5=5]="UNKNOWN5";class tw{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsWeatherAlertSummary(t,e){return(e||new tw).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsWeatherAlertSummary(t,e){return t.setPosition(t.position()+4),(e||new tw).__init(t.readInt32(t.position())+t.position(),t)}id(t){let e=this.bb.__offset(this.bb_pos,4);return e?(t||new tl).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}areaId(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__string(this.bb_pos+e,t):null}areaName(t){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.__string(this.bb_pos+e,t):null}attributionUrl(t){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.__string(this.bb_pos+e,t):null}countryCode(t){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.__string(this.bb_pos+e,t):null}description(t){let e=this.bb.__offset(this.bb_pos,14);return e?this.bb.__string(this.bb_pos+e,t):null}token(t){let e=this.bb.__offset(this.bb_pos,16);return e?this.bb.__string(this.bb_pos+e,t):null}effectiveTime(){let t=this.bb.__offset(this.bb_pos,18);return t?this.bb.readUint32(this.bb_pos+t):0}expireTime(){let t=this.bb.__offset(this.bb_pos,20);return t?this.bb.readUint32(this.bb_pos+t):0}issuedTime(){let t=this.bb.__offset(this.bb_pos,22);return t?this.bb.readUint32(this.bb_pos+t):0}eventOnsetTime(){let t=this.bb.__offset(this.bb_pos,24);return t?this.bb.readUint32(this.bb_pos+t):0}eventEndTime(){let t=this.bb.__offset(this.bb_pos,26);return t?this.bb.readUint32(this.bb_pos+t):0}detailsUrl(t){let e=this.bb.__offset(this.bb_pos,28);return e?this.bb.__string(this.bb_pos+e,t):null}phenomenon(t){let e=this.bb.__offset(this.bb_pos,30);return e?this.bb.__string(this.bb_pos+e,t):null}severity(){let t=this.bb.__offset(this.bb_pos,32);return t?this.bb.readInt8(this.bb_pos+t):N.UNKNOWN}significance(){let t=this.bb.__offset(this.bb_pos,34);return t?this.bb.readInt8(this.bb_pos+t):C.UNKNOWN}source(t){let e=this.bb.__offset(this.bb_pos,36);return e?this.bb.__string(this.bb_pos+e,t):null}eventSource(t){let e=this.bb.__offset(this.bb_pos,38);return e?this.bb.__string(this.bb_pos+e,t):null}urgency(){let t=this.bb.__offset(this.bb_pos,40);return t?this.bb.readInt8(this.bb_pos+t):x.UNKNOWN}certainty(){let t=this.bb.__offset(this.bb_pos,42);return t?this.bb.readInt8(this.bb_pos+t):r.UNKNOWN}importance(){let t=this.bb.__offset(this.bb_pos,44);return t?this.bb.readInt8(this.bb_pos+t):y.NORMAL}responses(t){let e=this.bb.__offset(this.bb_pos,46);return e?this.bb.readInt8(this.bb.__vector(this.bb_pos+e)+t):0}responsesLength(){let t=this.bb.__offset(this.bb_pos,46);return t?this.bb.__vector_len(this.bb_pos+t):0}responsesArray(){let t=this.bb.__offset(this.bb_pos,46);return t?new Int8Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}unknown23(){let t=this.bb.__offset(this.bb_pos,48);return t?this.bb.readInt8(this.bb_pos+t):0}unknown24(){let t=this.bb.__offset(this.bb_pos,50);return t?this.bb.readInt8(this.bb_pos+t):0}unknown25(){let t=this.bb.__offset(this.bb_pos,52);return t?this.bb.readInt8(this.bb_pos+t):0}unknown26(){let t=this.bb.__offset(this.bb_pos,54);return t?this.bb.readInt8(this.bb_pos+t):0}static startWeatherAlertSummary(t){t.startObject(26)}static addId(t,e){t.addFieldOffset(0,e,0)}static addAreaId(t,e){t.addFieldOffset(1,e,0)}static addAreaName(t,e){t.addFieldOffset(2,e,0)}static addAttributionUrl(t,e){t.addFieldOffset(3,e,0)}static addCountryCode(t,e){t.addFieldOffset(4,e,0)}static addDescription(t,e){t.addFieldOffset(5,e,0)}static addToken(t,e){t.addFieldOffset(6,e,0)}static addEffectiveTime(t,e){t.addFieldInt32(7,e,0)}static addExpireTime(t,e){t.addFieldInt32(8,e,0)}static addIssuedTime(t,e){t.addFieldInt32(9,e,0)}static addEventOnsetTime(t,e){t.addFieldInt32(10,e,0)}static addEventEndTime(t,e){t.addFieldInt32(11,e,0)}static addDetailsUrl(t,e){t.addFieldOffset(12,e,0)}static addPhenomenon(t,e){t.addFieldOffset(13,e,0)}static addSeverity(t,e){t.addFieldInt8(14,e,N.UNKNOWN)}static addSignificance(t,e){t.addFieldInt8(15,e,C.UNKNOWN)}static addSource(t,e){t.addFieldOffset(16,e,0)}static addEventSource(t,e){t.addFieldOffset(17,e,0)}static addUrgency(t,e){t.addFieldInt8(18,e,x.UNKNOWN)}static addCertainty(t,e){t.addFieldInt8(19,e,r.UNKNOWN)}static addImportance(t,e){t.addFieldInt8(20,e,y.NORMAL)}static addResponses(t,e){t.addFieldOffset(21,e,0)}static createResponsesVector(t,e){t.startVector(1,e.length,1);for(let i=e.length-1;i>=0;i--)t.addInt8(e[i]);return t.endVector()}static startResponsesVector(t,e){t.startVector(1,e,1)}static addUnknown23(t,e){t.addFieldInt8(22,e,0)}static addUnknown24(t,e){t.addFieldInt8(23,e,0)}static addUnknown25(t,e){t.addFieldInt8(24,e,0)}static addUnknown26(t,e){t.addFieldInt8(25,e,0)}static endWeatherAlertSummary(t){return t.endObject()}static createWeatherAlertSummary(t,e,i,a,s,n,r,o,d,c,l,u,p,b,h,m,_,y,f,g,N,C,x,A,I,T,v){return tw.startWeatherAlertSummary(t),tw.addId(t,e),tw.addAreaId(t,i),tw.addAreaName(t,a),tw.addAttributionUrl(t,s),tw.addCountryCode(t,n),tw.addDescription(t,r),tw.addToken(t,o),tw.addEffectiveTime(t,d),tw.addExpireTime(t,c),tw.addIssuedTime(t,l),tw.addEventOnsetTime(t,u),tw.addEventEndTime(t,p),tw.addDetailsUrl(t,b),tw.addPhenomenon(t,h),tw.addSeverity(t,m),tw.addSignificance(t,_),tw.addSource(t,y),tw.addEventSource(t,f),tw.addUrgency(t,g),tw.addCertainty(t,N),tw.addImportance(t,C),tw.addResponses(t,x),tw.addUnknown23(t,A),tw.addUnknown24(t,I),tw.addUnknown25(t,T),tw.addUnknown26(t,v),tw.endWeatherAlertSummary(t)}}class tP{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsWeatherAlertCollectionData(t,e){return(e||new tP).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsWeatherAlertCollectionData(t,e){return t.setPosition(t.position()+4),(e||new tP).__init(t.readInt32(t.position())+t.position(),t)}metadata(t){let e=this.bb.__offset(this.bb_pos,4);return e?(t||new to).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}detailsUrl(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__string(this.bb_pos+e,t):null}alerts(t,e){let i=this.bb.__offset(this.bb_pos,8);return i?(e||new tw).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}alertsLength(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.__vector_len(this.bb_pos+t):0}static startWeatherAlertCollectionData(t){t.startObject(3)}static addMetadata(t,e){t.addFieldOffset(0,e,0)}static addDetailsUrl(t,e){t.addFieldOffset(1,e,0)}static addAlerts(t,e){t.addFieldOffset(2,e,0)}static createAlertsVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startAlertsVector(t,e){t.startVector(4,e,4)}static endWeatherAlertCollectionData(t){return t.endObject()}static createWeatherAlertCollectionData(t,e,i,a){return tP.startWeatherAlertCollectionData(t),tP.addMetadata(t,e),tP.addDetailsUrl(t,i),tP.addAlerts(t,a),tP.endWeatherAlertCollectionData(t)}}class tE{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsWeatherChanges(t,e){return(e||new tE).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsWeatherChanges(t,e){return t.setPosition(t.position()+4),(e||new tE).__init(t.readInt32(t.position())+t.position(),t)}metadata(t){let e=this.bb.__offset(this.bb_pos,4);return e?(t||new to).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}forecastStart(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readUint32(this.bb_pos+t):0}forecastEnd(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readUint32(this.bb_pos+t):0}changes(t,e){let i=this.bb.__offset(this.bb_pos,10);return i?(e||new tp).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+4*t),this.bb):null}changesLength(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.__vector_len(this.bb_pos+t):0}static startWeatherChanges(t){t.startObject(4)}static addMetadata(t,e){t.addFieldOffset(0,e,0)}static addForecastStart(t,e){t.addFieldInt32(1,e,0)}static addForecastEnd(t,e){t.addFieldInt32(2,e,0)}static addChanges(t,e){t.addFieldOffset(3,e,0)}static createChangesVector(t,e){t.startVector(4,e.length,4);for(let i=e.length-1;i>=0;i--)t.addOffset(e[i]);return t.endVector()}static startChangesVector(t,e){t.startVector(4,e,4)}static endWeatherChanges(t){return t.endObject()}static createWeatherChanges(t,e,i,a,s){return tE.startWeatherChanges(t),tE.addMetadata(t,e),tE.addForecastStart(t,i),tE.addForecastEnd(t,a),tE.addChanges(t,s),tE.endWeatherChanges(t)}}class tM{bb=null;bb_pos=0;__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsWeather(t,e){return(e||new tM).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsWeather(t,e){return t.setPosition(t.position()+4),(e||new tM).__init(t.readInt32(t.position())+t.position(),t)}airQuality(t){let e=this.bb.__offset(this.bb_pos,4);return e?(t||new tc).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}currentWeather(t){let e=this.bb.__offset(this.bb_pos,6);return e?(t||new ty).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}forecastDaily(t){let e=this.bb.__offset(this.bb_pos,8);return e?(t||new tN).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}forecastHourly(t){let e=this.bb.__offset(this.bb_pos,10);return e?(t||new tT).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}forecastNextHour(t){let e=this.bb.__offset(this.bb_pos,12);return e?(t||new tF).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}news(t){let e=this.bb.__offset(this.bb_pos,14);return e?(t||new tO).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}weatherAlerts(t){let e=this.bb.__offset(this.bb_pos,16);return e?(t||new tP).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}weatherChanges(t){let e=this.bb.__offset(this.bb_pos,18);return e?(t||new tE).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}historicalComparisons(t){let e=this.bb.__offset(this.bb_pos,20);return e?(t||new tA).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}locationInfo(t){let e=this.bb.__offset(this.bb_pos,22);return e?(t||new tv).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}static startWeather(t){t.startObject(10)}static addAirQuality(t,e){t.addFieldOffset(0,e,0)}static addCurrentWeather(t,e){t.addFieldOffset(1,e,0)}static addForecastDaily(t,e){t.addFieldOffset(2,e,0)}static addForecastHourly(t,e){t.addFieldOffset(3,e,0)}static addForecastNextHour(t,e){t.addFieldOffset(4,e,0)}static addNews(t,e){t.addFieldOffset(5,e,0)}static addWeatherAlerts(t,e){t.addFieldOffset(6,e,0)}static addWeatherChanges(t,e){t.addFieldOffset(7,e,0)}static addHistoricalComparisons(t,e){t.addFieldOffset(8,e,0)}static addLocationInfo(t,e){t.addFieldOffset(9,e,0)}static endWeather(t){return t.endObject()}static finishWeatherBuffer(t,e){t.finish(e)}static finishSizePrefixedWeatherBuffer(t,e){t.finish(e,void 0,!0)}}class tR{static Name="WeatherKit2";static Version="1.2.1";static encode(t,n="all",A={}){let I,T;switch(j.info("☑️ WeatherKit2.encode",`dataSet: ${n}`),A?.metadata&&(T=to.createMetadata(t,t.createString(A?.metadata?.attributionUrl),A?.metadata?.expireTime,t.createString(A?.metadata?.language),A?.metadata?.latitude,A?.metadata?.longitude,t.createString(A?.metadata?.providerLogo),t.createString(A?.metadata?.providerName),A?.metadata?.readTime,A?.metadata?.reportedTime,A?.metadata?.temporarilyUnavailable,i[A?.metadata?.sourceType],A?.metadata?.unknown11,A?.metadata?.unknown12,A?.metadata?.unknown13,A?.metadata?.unknown14,A?.metadata?.unknown15)),n){case"all":{let e={};A?.airQuality&&(e.airQualityOffset=tR.encode(t,"airQuality",A.airQuality)),A?.currentWeather&&(e.currentWeatherOffset=tR.encode(t,"currentWeather",A.currentWeather)),A?.forecastDaily&&(e.forecastDailyOffset=tR.encode(t,"forecastDaily",A.forecastDaily)),A?.forecastHourly&&(e.forecastHourlyOffset=tR.encode(t,"forecastHourly",A.forecastHourly)),A?.forecastNextHour&&(e.forecastNextHourOffset=tR.encode(t,"forecastNextHour",A.forecastNextHour)),A?.news&&(e.newsOffset=tR.encode(t,"news",A.news)),A?.weatherAlerts&&(e.weatherAlertsOffset=tR.encode(t,"weatherAlerts",A.weatherAlerts)),A?.weatherChanges&&(e.weatherChangesOffset=tR.encode(t,"weatherChanges",A.weatherChanges)),A?.historicalComparisons&&(e.historicalComparisonsOffset=tR.encode(t,"historicalComparisons",A.historicalComparisons)),A?.locationInfo&&(e.locationInfoOffset=tR.encode(t,"locationInfo",A.locationInfo)),I=tR.createWeather(t,e.airQualityOffset,e.currentWeatherOffset,e.forecastDailyOffset,e.forecastHourlyOffset,e.forecastNextHourOffset,e.newsOffset,e.weatherAlertsOffset,e.weatherChangesOffset,e.historicalComparisonsOffset,e.locationInfoOffset);break}case"airQuality":{let i=tc.createPollutantsVector(t,A?.pollutants?.map(e=>td.createPollutant(t,a[e.pollutantType],e.amount,s[e.units]))),n=t.createString(A?.scale);I=tc.createAirQuality(t,T,A?.categoryIndex,A?.index,A?.isSignificant,i,e[A?.previousDayComparison],a[A?.primaryPollutant],n);break}case"currentWeather":{let e=ty.createPrecipitationAmountNext1hByTypeVector(t,A?.precipitationAmountNext1hByType?.map(e=>t_.createPrecipitationAmountByType(t,b[e.precipitationType],e.expected,e.minimumSnow,e.maximumSnow,e.expectedSnow))),i=ty.createPrecipitationAmountNext24hByTypeVector(t,A?.precipitationAmountNext24hByType?.map(e=>t_.createPrecipitationAmountByType(t,b[e.precipitationType],e.expected,e.minimumSnow,e.maximumSnow,e.expectedSnow))),a=ty.createPrecipitationAmountNext6hByTypeVector(t,A?.precipitationAmountNext6hByType?.map(e=>t_.createPrecipitationAmountByType(t,b[e.precipitationType],e.expected,e.minimumSnow,e.maximumSnow,e.expectedSnow))),s=ty.createPrecipitationAmountPrevious1hByTypeVector(t,A?.precipitationAmountPrevious1hByType?.map(e=>t_.createPrecipitationAmountByType(t,b[e.precipitationType],e.expected,e.minimumSnow,e.maximumSnow,e.expectedSnow))),n=ty.createPrecipitationAmountPrevious24hByTypeVector(t,A?.precipitationAmountPrevious24hByType?.map(e=>t_.createPrecipitationAmountByType(t,b[e.precipitationType],e.expected,e.minimumSnow,e.maximumSnow,e.expectedSnow))),r=ty.createPrecipitationAmountPrevious6hByTypeVector(t,A?.precipitationAmountPrevious6hByType?.map(e=>t_.createPrecipitationAmountByType(t,b[e.precipitationType],e.expected,e.minimumSnow,e.maximumSnow,e.expectedSnow)));I=ty.createCurrentWeatherData(t,T,A?.asOf,A?.cloudCover,A?.cloudCoverLowAltPct,A?.cloudCoverMidAltPct,A?.cloudCoverHighAltPct,m[A?.conditionCode],A?.daylight,A?.humidity,A?.perceivedPrecipitationIntensity,A?.precipitationAmount1h,A?.precipitationAmount6h,A?.precipitationAmount24h,A?.precipitationAmountNext1h,A?.precipitationAmountNext6h,A?.precipitationAmountNext24h,e,a,i,s,r,n,A?.precipitationIntensity,A?.pressure,h[A?.pressureTrend],A?.snowfallAmount1h,A?.snowfallAmount6h,A?.snowfallAmount24h,A?.snowfallAmountNext1h,A?.snowfallAmountNext6h,A?.snowfallAmountNext24h,A?.temperature,A?.temperatureApparent,A?.unknown34,A?.temperatureDewPoint,A?.uvIndex,A?.visibility,A?.windDirection,A?.windGust,A?.windSpeed);break}case"forecastDaily":{let e=A?.days?.map(e=>{let i={};return i.precipitationAmountByTypeOffest=tg.createPrecipitationAmountByTypeVector(t,e?.precipitationAmountByType?.map(e=>t_.createPrecipitationAmountByType(t,b[e.precipitationType],e.expected,e.minimumSnow,e.maximumSnow,e.expectedSnow))),e?.daytimeForecast&&(i.daytimeForecastPrecipitationAmountByTypeOffest=tf.createPrecipitationAmountByTypeVector(t,e?.daytimeForecast?.precipitationAmountByType?.map(e=>t_.createPrecipitationAmountByType(t,b[e.precipitationType],e.expected,e.minimumSnow,e.maximumSnow,e.expectedSnow))),i.daytimeForecastOffset=tf.createDayPartForecast(t,e?.daytimeForecast?.forecastStart,e?.daytimeForecast?.forecastEnd,e?.daytimeForecast?.cloudCover,e?.daytimeForecast?.cloudCoverLowAltPct,e?.daytimeForecast?.cloudCoverMidAltPct,e?.daytimeForecast?.cloudCoverHighAltPct,m[e?.daytimeForecast?.conditionCode],e?.daytimeForecast?.humidity,e?.daytimeForecast?.humidityMax,e?.daytimeForecast?.humidityMin,e?.daytimeForecast?.precipitationAmount,i.daytimeForecastPrecipitationAmountByTypeOffest,e?.daytimeForecast?.precipitationChance,b[e?.daytimeForecast?.precipitationType],e?.daytimeForecast?.snowfallAmount,e?.daytimeForecast?.temperatureMax,e?.daytimeForecast?.temperatureMin,e?.daytimeForecast?.visibilityMax,e?.daytimeForecast?.visibilityMin,e?.daytimeForecast?.windDirection,e?.daytimeForecast?.windGustSpeedMax,e?.daytimeForecast?.windSpeed,e?.daytimeForecast?.windSpeedMax,e?.daytimeForecast?.precipitationIntensityMax,e?.daytimeForecast?.perceivedPrecipitationIntensityMax,e?.daytimeForecast?.uvIndexMin,e?.daytimeForecast?.uvIndexMax,e?.daytimeForecast?.temperatureApparentMin,e?.daytimeForecast?.temperatureApparentMax,e?.daytimeForecast?.daylight)),e?.overnightForecast&&(i.overnightForecastPrecipitationAmountByTypeOffest=tf.createPrecipitationAmountByTypeVector(t,e?.overnightForecast?.precipitationAmountByType?.map(e=>t_.createPrecipitationAmountByType(t,b[e.precipitationType],e.expected,e.minimumSnow,e.maximumSnow,e.expectedSnow))),i.overnightForecastOffset=tf.createDayPartForecast(t,e?.overnightForecast?.forecastStart,e?.overnightForecast?.forecastEnd,e?.overnightForecast?.cloudCover,e?.overnightForecast?.cloudCoverLowAltPct,e?.overnightForecast?.cloudCoverMidAltPct,e?.overnightForecast?.cloudCoverHighAltPct,m[e?.overnightForecast?.conditionCode],e?.overnightForecast?.humidity,e?.overnightForecast?.humidityMax,e?.overnightForecast?.humidityMin,e?.overnightForecast?.precipitationAmount,i.overnightForecastPrecipitationAmountByTypeOffest,e?.overnightForecast?.precipitationChance,b[e?.overnightForecast?.precipitationType],e?.overnightForecast?.snowfallAmount,e?.overnightForecast?.temperatureMax,e?.overnightForecast?.temperatureMin,e?.overnightForecast?.visibilityMax,e?.overnightForecast?.visibilityMin,e?.overnightForecast?.windDirection,e?.overnightForecast?.windGustSpeedMax,e?.overnightForecast?.windSpeed,e?.overnightForecast?.windSpeedMax,e?.overnightForecast?.precipitationIntensityMax,e?.overnightForecast?.perceivedPrecipitationIntensityMax,e?.overnightForecast?.uvIndexMin,e?.overnightForecast?.uvIndexMax,e?.overnightForecast?.temperatureApparentMin,e?.overnightForecast?.temperatureApparentMax,e?.overnightForecast?.daylight)),e?.restOfDayForecast&&(i.restOfDayForecastPrecipitationAmountByTypeOffest=tf.createPrecipitationAmountByTypeVector(t,e?.restOfDayForecast?.precipitationAmountByType?.map(e=>t_.createPrecipitationAmountByType(t,b[e.precipitationType],e.expected,e.minimumSnow,e.maximumSnow,e.expectedSnow))),i.restOfDayForecastOffset=tf.createDayPartForecast(t,e?.restOfDayForecast?.forecastStart,e?.restOfDayForecast?.forecastEnd,e?.restOfDayForecast?.cloudCover,e?.restOfDayForecast?.cloudCoverLowAltPct,e?.restOfDayForecast?.cloudCoverMidAltPct,e?.restOfDayForecast?.cloudCoverHighAltPct,m[e?.restOfDayForecast?.conditionCode],e?.restOfDayForecast?.humidity,e?.restOfDayForecast?.humidityMax,e?.restOfDayForecast?.humidityMin,e?.restOfDayForecast?.precipitationAmount,i.restOfDayForecastPrecipitationAmountByTypeOffest,e?.restOfDayForecast?.precipitationChance,b[e?.restOfDayForecast?.precipitationType],e?.restOfDayForecast?.snowfallAmount,e?.restOfDayForecast?.temperatureMax,e?.restOfDayForecast?.temperatureMin,e?.restOfDayForecast?.visibilityMax,e?.restOfDayForecast?.visibilityMin,e?.restOfDayForecast?.windDirection,e?.restOfDayForecast?.windGustSpeedMax,e?.restOfDayForecast?.windSpeed,e?.restOfDayForecast?.windSpeedMax,e?.restOfDayForecast?.precipitationIntensityMax,e?.restOfDayForecast?.perceivedPrecipitationIntensityMax,e?.restOfDayForecast?.uvIndexMin,e?.restOfDayForecast?.uvIndexMax,e?.restOfDayForecast?.temperatureApparentMin,e?.restOfDayForecast?.temperatureApparentMax,e?.restOfDayForecast?.daylight)),tg.startDayWeatherConditions(t),tg.addForecastStart(t,e?.forecastStart),tg.addForecastEnd(t,e?.forecastEnd),tg.addConditionCode(t,m[e?.conditionCode]),tg.addHumidityMax(t,e?.humidityMax),tg.addHumidityMin(t,e?.humidityMin),tg.addMaxUvIndex(t,e?.maxUvIndex),tg.addMoonPhase(t,_[e?.moonPhase]),tg.addMoonrise(t,e?.moonrise),tg.addMoonset(t,e?.moonset),tg.addPrecipitationAmount(t,e?.precipitationAmount),tg.addPrecipitationAmountByType(t,i.precipitationAmountByTypeOffest),tg.addPrecipitationChance(t,e?.precipitationChance),tg.addPrecipitationType(t,b[e?.precipitationType]),tg.addSnowfallAmount(t,e?.snowfallAmount),tg.addSolarMidnight(t,e?.solarMidnight),tg.addSolarNoon(t,e?.solarNoon),tg.addSunrise(t,e?.sunrise),tg.addSunriseCivil(t,e?.sunriseCivil),tg.addSunriseNautical(t,e?.sunriseNautical),tg.addSunriseAstronomical(t,e?.sunriseAstronomical),tg.addSunset(t,e?.sunset),tg.addSunsetCivil(t,e?.sunsetCivil),tg.addSunsetNautical(t,e?.sunsetNautical),tg.addSunsetAstronomical(t,e?.sunsetAstronomical),tg.addTemperatureMax(t,e?.temperatureMax),tg.addTemperatureMaxTime(t,e?.temperatureMaxTime),tg.addTemperatureMin(t,e?.temperatureMin),tg.addTemperatureMinTime(t,e?.temperatureMinTime),tg.addVisibilityMax(t,e?.visibilityMax),tg.addVisibilityMin(t,e?.visibilityMin),tg.addWindGustSpeedMax(t,e?.windGustSpeedMax),tg.addWindSpeedAvg(t,e?.windSpeedAvg),tg.addWindSpeedMax(t,e?.windSpeedMax),e?.daytimeForecast&&tg.addDaytimeForecast(t,i.daytimeForecastOffset),e?.overnightForecast&&tg.addOvernightForecast(t,i.overnightForecastOffset),e?.restOfDayForecast&&tg.addRestOfDayForecast(t,i.restOfDayForecastOffset),tg.endDayWeatherConditions(t)}),i=tN.createDaysVector(t,e);I=tN.createDailyForecastData(t,T,i);break}case"forecastHourly":{let e=A?.hours?.map(e=>tI.createHourWeatherConditions(t,e?.forecastStart,e?.cloudCover,e?.cloudCoverLowAltPct,e?.cloudCoverMidAltPct,e?.cloudCoverHighAltPct,m[e?.conditionCode],e?.daylight,e?.humidity,e?.perceivedPrecipitationIntensity,e?.precipitationAmount,e?.precipitationIntensity,e?.precipitationChance,b[e?.precipitationType],e?.pressure,h[e?.pressureTrend],e?.snowfallAmount,e?.snowfallIntensity,e?.temperature,e?.temperatureApparent,e?.unknown20,e?.temperatureDewPoint,e?.uvIndex,e?.visibility,e?.windDirection,e?.windGust,e?.windSpeed)),i=tT.createHoursVector(t,e);I=tT.createHourlyForecastData(t,T,i);break}case"forecastNextHour":{let e=A?.condition?.map(e=>{let i=e?.parameters.map(e=>th.createParameter(t,p[e?.type],e?.date)),a=tm.createParametersVector(t,i);return tm.createCondition(t,e?.startTime,e?.endTime,u[e?.forecastToken],l[e?.beginCondition],l[e?.endCondition],a)}),i=tF.createConditionVector(t,e),a=A?.summary?.map(e=>tx.createForecastPeriodSummary(t,e?.startTime,e?.endTime,b[e?.condition],e?.precipitationChance,e?.precipitationIntensity)),s=tF.createSummaryVector(t,a),n=A?.minutes?.map(e=>tC.createForecastMinute(t,e?.startTime,e?.precipitationChance,e?.precipitationIntensity,e?.perceivedPrecipitationIntensity)),r=tF.createMinutesVector(t,n);I=tF.createNextHourForecastData(t,T,i,s,A?.forecastStart,A?.forecastEnd,r);break}case"news":{let e=A?.placements?.map(e=>{let i=e?.articles?.map(e=>{let i=e?.alertIds?.map(e=>tR.createUuidOffset(t,e))?.filter(Boolean)||[],a=tu.createAlertIdsVector(t,i),s=t.createString(e?.headlineOverride),n=t.createString(e?.id),r=t.createString(e?.locale),o=tu.createPhenomenaVector(t,e?.phenomena?.map(e=>t.createString(e))),d=tu.createSupportedStorefrontsVector(t,e?.supportedStorefronts?.map(e=>t.createString(e)));return tu.createArticles(t,n,d,a,o,s,r)}),a=tS.createArticlesVector(t,i);return tS.createPlacement(t,e?.priority,a,f[e?.placement])}),i=tO.createPlacementsVector(t,e);I=tO.createNews(t,T,i);break}case"weatherAlert":case"weatherAlerts":{let e=A?.alerts?.map(e=>{let i=e?.responses?.map(t=>g[t]),a=tw.createResponsesVector(t,i),s=tR.createUuidOffset(t,e?.id)||0,n=t.createString(e?.areaId),o=t.createString(e?.areaName),d=t.createString(e?.attributionUrl),c=t.createString(e?.countryCode),l=t.createString(e?.description),u=t.createString(e?.token),p=t.createString(e?.detailsUrl),b=t.createString(e?.phenomenon),h=t.createString(e?.source),m=t.createString(e?.eventSource);return tw.createWeatherAlertSummary(t,s,n,o,d,c,l,u,e?.effectiveTime,e?.expireTime,e?.issuedTime,e?.eventOnsetTime,e?.eventEndTime,p,b,N[e?.severity],C[e?.significance],h,m,x[e?.urgency],r[e?.certainty],y[e?.importance],a,e?.unknown23,e?.unknown24,e?.unknown25,e?.unknown26)}),i=tP.createAlertsVector(t,e),a=t.createString(A?.detailsUrl);I=tP.createWeatherAlertCollectionData(t,T,a,i);break}case"weatherChange":case"weatherChanges":{let e=A?.changes?.map(e=>tp.createChange(t,e?.forecastStart,e?.forecastEnd,o[e?.maxTemperatureChange],o[e?.minTemperatureChange],o[e?.dayPrecipitationChange],o[e?.nightPrecipitationChange])),i=tE.createChangesVector(t,e);I=tE.createWeatherChanges(t,T,A?.forecastStart,A?.forecastEnd,i);break}case"trendComparison":case"trendComparisons":case"historicalComparison":case"historicalComparisons":{let e=A?.comparisons?.map(e=>tb.createComparison(t,d[e?.condition],e?.currentValue,e?.baselineValue,c[e?.deviation],e?.baselineType,e?.baselineStartDate)),i=tA.createComparisonsVector(t,e);I=tA.createHistoricalComparison(t,T,i);break}case"locationInfo":I=tv.createLocationInfo(t,T,t.createString(A?.preciseName),t.createString(A?.countryCode),t.createString(A?.timeZone),t.createString(A?.primaryName))}return j.info("✅ WeatherKit2.encode",`dataSet: ${n}`),I}static decode(t,n="all",A={}){j.info("☑️ WeatherKit2.decode",`dataSet: ${n}`);let I=tM.getRootAsWeather(t),T=I?.airQuality(),v=I?.currentWeather(),S=I?.forecastDaily(),O=I?.forecastHourly(),F=I?.forecastNextHour(),w=I?.news(),P=I?.weatherAlerts(),E=I?.weatherChanges(),M=I?.historicalComparisons(),R=I?.locationInfo();switch(n){case"all":T&&(A.airQuality=tR.decode(t,"airQuality",T)),v&&(A.currentWeather=tR.decode(t,"currentWeather",v)),S&&(A.forecastDaily=tR.decode(t,"forecastDaily",S)),O&&(A.forecastHourly=tR.decode(t,"forecastHourly",O)),F&&(A.forecastNextHour=tR.decode(t,"forecastNextHour",F)),w&&(A.news=tR.decode(t,"news",w)),P&&(A.weatherAlerts=tR.decode(t,"weatherAlerts",P)),E&&(A.weatherChanges=tR.decode(t,"weatherChange",E)),M&&(A.historicalComparisons=tR.decode(t,"trendComparison",M)),R&&(A.locationInfo=tR.decode(t,"locationInfo",R));break;case"airQuality":A={metadata:tR.decode(t,"metadata",T?.metadata()),categoryIndex:T?.categoryIndex(),index:T?.index(),isSignificant:T?.isSignificant(),pollutants:[],previousDayComparison:e[T?.previousDayComparison()],primaryPollutant:a[T?.primaryPollutant()],scale:T?.scale()};for(let t=0;tt.toString(16).padStart(2,"0")).join("");return`${i.slice(0,8)}-${i.slice(8,12)}-${i.slice(12,16)}-${i.slice(16,20)}-${i.slice(20,32)}`}static createUuidOffset(t,e){let i=tR.toUuidBytes(e);if(!i?.length)return null;let a=tl.createBytesVector(t,i);return tl.createUUID(t,a)}static decodeUuid(t){return tR.uuidBytesObjectToString(t)}static createWeather(t,e,i,a,s,n,r,o,d,c,l){return tM.startWeather(t),e&&tM.addAirQuality(t,e),i&&tM.addCurrentWeather(t,i),a&&tM.addForecastDaily(t,a),s&&tM.addForecastHourly(t,s),n&&tM.addForecastNextHour(t,n),r&&tM.addNews(t,r),o&&tM.addWeatherAlerts(t,o),d&&tM.addWeatherChanges(t,d),c&&tM.addHistoricalComparisons(t,c),l&&tM.addLocationInfo(t,l),tM.endWeather(t)}}function tU(t,e){let i;switch(j.info("☑️ providerNameToLogo",`providerName: ${t}`,`version: ${e}`),t?.split("\n")?.[0]){case"WAQI":case"World Air Quality Index Project":switch(e){case"v1":i="https://waqi.info/images/logo.png";break;case"v2":i=`https://raw.githubusercontent.com/NSRingo/WeatherKit/main/images/icon/${e}/WAQI.png`}break;case"ColofulClouds":case"彩云天气":i=`https://raw.githubusercontent.com/NSRingo/WeatherKit/main/images/icon/${e}/ColorfulClouds.png`;break;case"气象在线":case"WeatherOL":i=`https://raw.githubusercontent.com/NSRingo/WeatherKit/main/images/icon/${e}/WeatherOL.png`;break;case"QWeather":case"和风天气":i=`https://weatherkit.apple.com/assets/${e}/QWeather.png`;break;case"The Weather Channel":i=`https://weatherkit.apple.com/assets/${e}/TWC.png`;break;case"BreezoMeter":i=`https://weatherkit.apple.com/assets/${e}/BreezoMeter.png`}return j.info("✅ providerNameToLogo"),i}class tW{static Name="Weather";static Version="0.3.0";static Author="Virgil Clyne & 001";static ConvertDSWRF(t,e=.04){j.info("☑️ ConvertDSWRF");let i=Math.round(Math.max(t,0)*e/.025);return j.info("✅ ConvertDSWRF"),Math.min(i,11)}static mergeForecast(t=[],e=[]){let i=0,a=0;for(;i{let[i,a]=e;return tD.#d(t,i)>=i&&tD.#d(t,a)<=a});return i?(j.info("✅ CategoryIndex",`categoryIndex: ${i.categoryIndex}`),i.categoryIndex):(j.error("CategoryIndex",`找不到index: ${t}对应的category`),-1)}static CompareCategoryIndexes(t,e){j.info("☑️ CompareCategoryIndexes",`todayCategoryIndex: ${t}`,`yesterdayCategoryIndex: ${e}`);let{UNKNOWN:i,SAME:a,WORSE:s,BETTER:n}=tD.Config.CompareCategoryIndexes,r=Number(t)-Number(e);return Number.isNaN(r)?(j.error("CompareCategoryIndexes","categoryIndex无效"),i):0===r?(j.info("✅ CompareCategoryIndexes"),a):r>0?(j.info("✅ CompareCategoryIndexes"),s):(j.info("✅ CompareCategoryIndexes"),n)}static ConvertUnits(t,e,i){j.info("☑️ ConvertUnits");let a=tD.Config.Units.Friendly,s=t.map(t=>{let s=i[t.pollutantType];if(!s)return j.info("ConvertUnits",`No scale for ${t.pollutantType}, skip`),t;j.info("ConvertUnits",`Converting ${t.pollutantType}`);let n=tD.ConvertUnit(t.amount,t.units,s.units,e?.[t.pollutantType]||-1,s?.stpConversionFactor||-1);return n<0?(j.error("ConvertUnits",`无法转换${t.pollutantType}的单位`,`${t.amount} ${a[t.units]??t.units} (STP conversion factor: ${e?.[t.pollutantType]||-1}) -> ${n} ${a[s.units]??s.units} (STP conversion factor: ${s?.stpConversionFactor||-1})`),t):(j.info("ConvertUnits",`Converted ${t.pollutantType}: ${n} ${a[s.units]??s.units}`),{...t,amount:n,units:s.units})});return j.info("✅ ConvertUnits"),s}static FixPollutantsUnits(t){switch(j.info("☑️ FixPollutantsUnits"),t?.metadata?.providerName){case"和风天气":case"QWeather":t.pollutants=t?.pollutants?.map(t=>{if("CO"===t.pollutantType){let{mgm3:e,ugm3:i}=tD.Config.Units.WeatherKit;t.amount=tD.ConvertUnit(t.amount,e,i)}return t});break;default:j.info(`Provider ${t?.metadata?.providerName} is no need to fix.`)}return j.info("✅ FixPollutantsUnits"),t}static #c(t){return j.info("☑️ GetStpConversionFactors"),t?.metadata?.providerName,j.info("✅ GetStpConversionFactors",`STP conversion factors for ${t?.metadata?.providerName}: US`),tD.Config.STP_ConversionFactors.US}static Pollutants2AQI(t,e,i={}){j.info("☑️ Pollutants2AQI");let a=i?.algorithm??e?.AirQuality?.Calculate?.Algorithm,s=i?.forcePrimaryPollutant??e?.AirQuality?.Current?.Index?.ForceCNPrimaryPollutants,n=i?.allowOverRange??e?.AirQuality?.Calculate?.AllowOverRange,r=tD.#c(t),o=tD.Config.Scales[a]??tD.Config.Scales.UBA;switch(a){case"None":return t;case"EU_EAQI":j.info("☑️ PollutantsToEAQI"),t=tD.#l(t.pollutants,o,{stpConversionFactors:r,allowOverRange:!1}),j.info("✅ PollutantsToEAQI");break;case"WAQI_InstantCast_US":j.info("☑️ PollutantsToInstantCastUS",`allowOverRange: ${n}`),t=tD.#l(t.pollutants,o,{stpConversionFactors:r,allowOverRange:n}),j.info("✅ PollutantsToInstantCastUS");break;case"WAQI_InstantCast_CN":case"WAQI_InstantCast_CN_25_DRAFT":{j.info("☑️ PollutantsToInstantCastCN",`allowOverRange: ${n}`,`forcePrimaryPollutant: ${s}`),t=tD.#l(t.pollutants,o,{stpConversionFactors:r,allowOverRange:n});let e=!s&&t.index<=50;e&&j.info("PollutantsToInstantCastCN",`Max index of pollutants ${t.primaryPollutant} = ${t.index} is <= 50, primaryPollutant will be set to NOT_AVAILABLE.`),t={...t,primaryPollutant:e?"NOT_AVAILABLE":t.primaryPollutant},j.info("✅ PollutantsToInstantCastCN");break}default:j.info("☑️ PollutantsToUBA"),t={...t=tD.#l(t.pollutants,o,{stpConversionFactors:r,allowOverRange:!0}),index:t.categoryIndex},j.info("✅ PollutantsToUBA")}return j.info("✅ Pollutants2AQI"),t}static ConvertPollutants(t,e,i,a,s){let n=s?.AirQuality?.Current?.Pollutants?.Units?.Mode||"Scale";j.info("☑️ ConvertPollutants",`mode: ${n}`);let r=s?.AirQuality?.Current?.Pollutants?.Units?.Replace??[],o=i&&a?.metadata&&!a.metadata.temporarilyUnavailable,d=tD.GetNameFromScale(o?a?.scale:t?.scale),c=e?.metadata&&!e.metadata.temporarilyUnavailable?e.pollutants:t?.pollutants;if(j.info("✅ ConvertPollutants"),!r.includes(d))return c;if(o&&s?.AirQuality?.Current?.Index?.Provider==="Calculate"&&"Scale"===n)return j.info("ConvertPollutants","Use pollutants from iRingo"),a.pollutants;{let e=(t=>{let e=tD.Config.Scales;switch(t){case e.HJ6332012.weatherKitScale.name:return e.WAQI_InstantCast_CN;case e.EPA_NowCast.weatherKitScale.name:return e.WAQI_InstantCast_US;case e.EU_EAQI.weatherKitScale.name:return e.EU_EAQI;default:return e[t]}})(d);return e?tD.ConvertUnits(c,tD.#c(t),(t=>{let{ugm3:e,ppb:i}=tD.Config.Units.WeatherKit,{US:a,EU:s}=tD.Config.STP_ConversionFactors,r={OZONE:{units:e,stpConversionFactor:-1},NO2:{units:e,stpConversionFactor:-1},SO2:{units:e,stpConversionFactor:-1},CO:{units:e,stpConversionFactor:-1},C6H6:{units:e,stpConversionFactor:-1},NH3:{units:e,stpConversionFactor:-1},NO:{units:e,stpConversionFactor:-1}},o={OZONE:{units:i,stpConversionFactor:a.OZONE},NO2:{units:i,stpConversionFactor:a.NO2},SO2:{units:i,stpConversionFactor:a.SO2},CO:{units:i,stpConversionFactor:a.CO},C6H6:{units:i,stpConversionFactor:a.C6H6},NH3:{units:i,stpConversionFactor:a.NH3},NO:{units:i,stpConversionFactor:a.NO}},d={OZONE:{units:i,stpConversionFactor:s.OZONE},NO2:{units:i,stpConversionFactor:s.NO2},SO2:{units:i,stpConversionFactor:s.SO2},CO:{units:i,stpConversionFactor:s.CO},C6H6:{units:i,stpConversionFactor:s.C6H6},NH3:{units:i,stpConversionFactor:s.NH3},NO:{units:i,stpConversionFactor:s.NO}};switch(n){case"ugm3":return{...r,...t};case"EU_ppb":return{...d,...t};case"US_ppb":return{...o,...t};case"Force_ugm3":return r;case"Force_EU_ppb":return d;case"Force_US_ppb":return o;default:return t}})(e.pollutants)):(j.error("ConvertPollutants",`Unsupported scale name: ${d}`),c)}}static ToWeatherKitScale=({name:t,version:e})=>`${t}.${e}`;static GetNameFromScale(t){j.info("☑️ GetNameFromScale",`scale: ${t}`);let e=t?.lastIndexOf(".");if(!t||-1===e)return j.error("GetNameFromScale",`无法找到${t}的版本号`),t;let i=t.substring(0,e);return j.info("✅ GetNameFromScale",`scaleName: ${i}`),i}static chooseAlogrithm(t,e){switch(j.info("☑️ chooseAlogrithm",`currentIndexProvider: ${e?.AirQuality?.Comparison?.Yesterday?.IndexProvider}`),e?.AirQuality?.Comparison?.Yesterday?.IndexProvider){case"Calculate":return j.info("✅ chooseAlogrithm",`algorithm: ${e?.AirQuality?.Calculate?.Algorithm}`),e?.AirQuality?.Calculate?.Algorithm;case"QWeather":case"ColorfulCloudsCN":return j.info("✅ chooseAlogrithm","algorithm: WAQI_InstantCast_CN"),"WAQI_InstantCast_CN";case"WeatherKit":{let e=tD.GetNameFromScale(t?.scale),i=tD.Config.Scales;if(e===i.HJ6332012.weatherKitScale.name)return j.info("✅ chooseAlogrithm","algorithm: WAQI_InstantCast_CN"),"WAQI_InstantCast_CN";if(e===i.EPA_NowCast.weatherKitScale.name)return j.info("✅ chooseAlogrithm","algorithm: WAQI_InstantCast_US"),"WAQI_InstantCast_US";if([i.EU_EAQI.weatherKitScale.name,i.UBA.weatherKitScale.name].includes(e))return j.info("✅ chooseAlogrithm",`algorithm: ${e}`),e;return j.error("chooseAlogrithm","没有找到合适的内置算法"),""}default:return j.error("chooseAlogrithm","未知的currentIndexProvider"),""}}static appendScaleToProviderName(t,e){let i=t?.metadata?.providerName;switch(i){case"和风天气":return`${i}(国标,12年2月版)`;case"彩云天气":{let e=t?.scale===tD.ToWeatherKitScale(tD.Config.Scales.EPA_NowCast.weatherKitScale);return`${i}(${e?"美标,18年9月版":"国标,12年2月版"})`}case"iRingo":switch(e?.AirQuality?.Calculate?.Algorithm){case"EU_EAQI":return`${i} (ETC HE Report 2024/17)`;case"WAQI_InstantCast_US":return`${i} (WAQI InstantCast with EPA-454/B-24-002)`;case"WAQI_InstantCast_CN":return`${i} (InstantCast with HJ 633—2012)`;case"WAQI_InstantCast_CN_25_DRAFT":return`${i} (InstantCast with HJ 633 2025 DRAFT)`;default:return`${i} (FB001846)`}default:return i}}static #u(t,e,i,a){if(!i)return j.warn("PollutantsToIndexes",`标准未定义污染物${e},index将标记为-1`),-1;let{add:s,subtract:n,multiply:r,divide:o}=tL;j.debug(`${e}: ${t.amount} ${a[t.units]??t.units}`);let d=i.ranges.min.amounts[0];if(t.amount= ${d}`),i.ranges.min.indexes[0];let c=t.amount>i.ranges.max.amounts[1];c&&(j.warn("PollutantsToIndexes",`检测到爆表指数!${e}:${t.amount} ${a[i.units]}`),j.warn("PollutantsToIndexes","注意身体!"));let{indexes:l,amounts:u}=c?i.ranges.max:i.ranges.value.find(({amounts:e})=>{let[i,a]=e;return tD.#d(t.amount,i)>=i&&tD.#d(t.amount,a)<=a});j.debug(`indexes: ${JSON.stringify(l)}`,`amounts: ${JSON.stringify(u)}`);let[p,b]=l,[h,m]=u;return s(r(o(n(b,p),n(m,h)),n(t.amount,h)),t.amount>m?b:p)}static #p(t=[],e){return t.map(t=>{let i=tD.#u(t,t.pollutantType,e?.[t.pollutantType],tD.Config.Units.Friendly);return t.index=i,t})}static PrimaryPollutant(t=[],e){j.info("☑️ PrimaryPollutant");let i={pollutantType:"NOT_AVAILABLE",index:-1,categoryIndex:-1};if(!Array.isArray(t)||0===t.length)return j.debug(`pollutants: ${JSON.stringify(t)}`),j.error("PrimaryPollutant","pollutants无效"),i;let a=t.filter(({index:t})=>Number.isFinite(t)).map(t=>({...t,categoryIndex:tD.CategoryIndex(t.index,e)})).sort((t,e)=>e.index-t.index);if(0===a.length)return j.debug(`pollutants: ${JSON.stringify(t)}`,`indexesWithCategory: ${JSON.stringify(a)}`),j.error("PrimaryPollutant","找不到有效的index"),i;let s=a.reduce((t,{categoryIndex:e})=>e>t?e:t,-1/0),n=a.filter(({categoryIndex:t})=>t===s);n.length>1&&(j.warn("PrimaryPollutant",`检测到多个同级别的污染物,maxCategoryIndex:${s}`),n.map(({pollutantType:t,index:e})=>j.warn("GetPrimaryPollutants",`${t}:${e}`)));let r=n[0];return j.info("✅ PrimaryPollutant",`primaryPollutant: ${JSON.stringify(r)}`),r}static #l(t,e,i={}){j.info("☑️ PollutantsToAirQuality");let a=i?.stpConversionFactors,s=i?.allowOverRange??!0;if(!Array.isArray(t)||0===t.length)return j.debug(`pollutants: ${JSON.stringify(t)}`),j.error("PollutantsToAirQuality","pollutants无效"),{metadata:{providerName:"iRingo",temporarilyUnavailable:!0}};let n=[];a&&(n=tD.ConvertUnits(t,a,e.pollutants)),n=tD.#p(n,e.pollutants),j.debug("PollutantsToAirQuality",`convertedPollutants: ${JSON.stringify(n)}`);let r=tD.PrimaryPollutant(n,e.categories),o=e?.weatherKitScale?.maxIndex,d=s||!Number.isFinite(o)?Math.round(r.index):Math.min(Math.round(r.index),o);return j.info("✅ PollutantsToAirQuality"),{index:d,isSignificant:r.categoryIndex>=e.categories.significantIndex,categoryIndex:r.categoryIndex,pollutants:n,metadata:{providerName:"iRingo",temporarilyUnavailable:!1},primaryPollutant:r.pollutantType,scale:tD.ToWeatherKitScale(e.weatherKitScale)}}static Config={Scales:{UBA:{weatherKitScale:{name:"UBA",version:"2414"},categories:{significantIndex:4,ranges:[{categoryIndex:1,indexes:[0,.99]},{categoryIndex:2,indexes:[1,1.99]},{categoryIndex:3,indexes:[2,2.99]},{categoryIndex:4,indexes:[3,3.99]},{categoryIndex:5,indexes:[4,1/0]}]},pollutants:{NO2:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,.99],amounts:[0,10]},max:{indexes:[3,3.99],amounts:[61,100]},value:[{indexes:[0,.99],amounts:[0,10]},{indexes:[1,1.99],amounts:[11,30]},{indexes:[2,2.99],amounts:[31,60]},{indexes:[3,3.99],amounts:[61,100]},{indexes:[4,1/0],amounts:[101,1/0]}]}},PM10:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,.99],amounts:[0,9]},max:{indexes:[3,3.99],amounts:[55,90]},value:[{indexes:[0,.99],amounts:[0,9]},{indexes:[1,1.99],amounts:[10,27]},{indexes:[2,2.99],amounts:[28,54]},{indexes:[3,3.99],amounts:[55,90]},{indexes:[4,1/0],amounts:[91,1/0]}]}},PM2_5:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,.99],amounts:[0,5]},max:{indexes:[3,3.99],amounts:[31,50]},value:[{indexes:[0,.99],amounts:[0,5]},{indexes:[1,1.99],amounts:[6,15]},{indexes:[2,2.99],amounts:[16,30]},{indexes:[3,3.99],amounts:[31,50]},{indexes:[4,1/0],amounts:[51,1/0]}]}},OZONE:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,.99],amounts:[0,24]},max:{indexes:[3,3.99],amounts:[145,240]},value:[{indexes:[0,.99],amounts:[0,24]},{indexes:[1,1.99],amounts:[25,72]},{indexes:[2,2.99],amounts:[73,144]},{indexes:[3,3.99],amounts:[145,240]},{indexes:[4,1/0],amounts:[241,1/0]}]}},SO2:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,.99],amounts:[0,10]},max:{indexes:[3,3.99],amounts:[61,100]},value:[{indexes:[0,.99],amounts:[0,10]},{indexes:[1,1.99],amounts:[11,30]},{indexes:[2,2.99],amounts:[31,60]},{indexes:[3,3.99],amounts:[61,100]},{indexes:[4,1/0],amounts:[101,1/0]}]}}}},EU_EAQI:{weatherKitScale:{name:"EU.EAQI",version:"2414",maxIndex:60},categories:{significantIndex:4,ranges:[{categoryIndex:1,indexes:[0,9]},{categoryIndex:2,indexes:[10,19]},{categoryIndex:3,indexes:[20,29]},{categoryIndex:4,indexes:[30,39]},{categoryIndex:5,indexes:[40,49]},{categoryIndex:6,indexes:[50,1/0]}]},pollutants:{PM2_5:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,9],amounts:[0,5]},max:{indexes:[40,49],amounts:[91,140]},value:[{indexes:[0,9],amounts:[0,5]},{indexes:[10,19],amounts:[6,15]},{indexes:[20,29],amounts:[16,50]},{indexes:[30,39],amounts:[51,90]},{indexes:[40,49],amounts:[91,140]},{indexes:[50,1/0],amounts:[141,1/0]}]}},PM10:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,9],amounts:[0,15]},max:{indexes:[40,49],amounts:[196,270]},value:[{indexes:[0,9],amounts:[0,15]},{indexes:[10,19],amounts:[16,45]},{indexes:[20,29],amounts:[46,120]},{indexes:[30,39],amounts:[121,195]},{indexes:[40,49],amounts:[196,270]},{indexes:[50,1/0],amounts:[271,1/0]}]}},OZONE:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,9],amounts:[0,60]},max:{indexes:[40,49],amounts:[161,180]},value:[{indexes:[0,9],amounts:[0,60]},{indexes:[10,19],amounts:[61,100]},{indexes:[20,29],amounts:[101,120]},{indexes:[30,39],amounts:[121,160]},{indexes:[40,49],amounts:[161,180]},{indexes:[50,1/0],amounts:[181,1/0]}]}},NO2:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,9],amounts:[0,10]},max:{indexes:[40,49],amounts:[101,150]},value:[{indexes:[0,9],amounts:[0,10]},{indexes:[10,19],amounts:[11,25]},{indexes:[20,29],amounts:[26,60]},{indexes:[30,39],amounts:[61,100]},{indexes:[40,49],amounts:[101,150]},{indexes:[50,1/0],amounts:[151,1/0]}]}},SO2:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,9],amounts:[0,20]},max:{indexes:[40,49],amounts:[191,275]},value:[{indexes:[0,9],amounts:[0,20]},{indexes:[10,19],amounts:[21,40]},{indexes:[20,29],amounts:[41,125]},{indexes:[30,39],amounts:[126,190]},{indexes:[40,49],amounts:[191,275]},{indexes:[50,1/0],amounts:[276,Number.MAX_VALUE]}]}}}},HJ6332012:{weatherKitScale:{name:"HJ6332012",version:"2414"},categories:{significantIndex:3,ranges:[{categoryIndex:1,indexes:[0,50]},{categoryIndex:2,indexes:[51,100]},{categoryIndex:3,indexes:[101,150]},{categoryIndex:4,indexes:[151,200]},{categoryIndex:5,indexes:[201,300]},{categoryIndex:6,indexes:[301,500]}]},pollutants:{SO2_24H:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,50]},max:{indexes:[401,500],amounts:[2101,2620]},value:[{indexes:[0,50],amounts:[0,50]},{indexes:[51,100],amounts:[51,150]},{indexes:[101,150],amounts:[151,475]},{indexes:[151,200],amounts:[476,800]},{indexes:[201,300],amounts:[801,1600]},{indexes:[301,400],amounts:[1601,2100]},{indexes:[401,500],amounts:[2101,2620]}]}},SO2:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,150]},max:{indexes:[151,200],amounts:[651,800]},value:[{indexes:[0,50],amounts:[0,150]},{indexes:[51,100],amounts:[151,500]},{indexes:[101,150],amounts:[501,650]},{indexes:[151,200],amounts:[651,800]}]}},NO2_24H:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,40]},max:{indexes:[401,500],amounts:[751,940]},value:[{indexes:[0,50],amounts:[0,40]},{indexes:[51,100],amounts:[41,80]},{indexes:[101,150],amounts:[81,180]},{indexes:[151,200],amounts:[181,280]},{indexes:[201,300],amounts:[281,565]},{indexes:[301,400],amounts:[566,750]},{indexes:[401,500],amounts:[751,940]}]}},NO2:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,100]},max:{indexes:[401,500],amounts:[3091,3840]},value:[{indexes:[0,50],amounts:[0,100]},{indexes:[51,100],amounts:[101,200]},{indexes:[101,150],amounts:[201,700]},{indexes:[151,200],amounts:[701,1200]},{indexes:[201,300],amounts:[1201,2340]},{indexes:[301,400],amounts:[2341,3090]},{indexes:[401,500],amounts:[3091,3840]}]}},PM10_24H:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,50]},max:{indexes:[401,500],amounts:[501,600]},value:[{indexes:[0,50],amounts:[0,50]},{indexes:[51,100],amounts:[51,150]},{indexes:[101,150],amounts:[151,250]},{indexes:[151,200],amounts:[251,350]},{indexes:[201,300],amounts:[351,420]},{indexes:[301,400],amounts:[421,500]},{indexes:[401,500],amounts:[501,600]}]}},CO_24H:{units:"MILLIGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,2]},max:{indexes:[401,500],amounts:[49,60]},value:[{indexes:[0,50],amounts:[0,2]},{indexes:[51,100],amounts:[3,4]},{indexes:[101,150],amounts:[5,14]},{indexes:[151,200],amounts:[15,24]},{indexes:[201,300],amounts:[25,36]},{indexes:[301,400],amounts:[37,48]},{indexes:[401,500],amounts:[49,60]}]}},CO:{units:"MILLIGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,5]},max:{indexes:[401,500],amounts:[121,150]},value:[{indexes:[0,50],amounts:[0,5]},{indexes:[51,100],amounts:[6,10]},{indexes:[101,150],amounts:[11,35]},{indexes:[151,200],amounts:[36,60]},{indexes:[201,300],amounts:[61,90]},{indexes:[301,400],amounts:[91,120]},{indexes:[401,500],amounts:[121,150]}]}},OZONE:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,160]},max:{indexes:[401,500],amounts:[1001,1200]},value:[{indexes:[0,50],amounts:[0,160]},{indexes:[51,100],amounts:[161,200]},{indexes:[101,150],amounts:[201,300]},{indexes:[151,200],amounts:[301,400]},{indexes:[201,300],amounts:[401,800]},{indexes:[301,400],amounts:[801,1e3]},{indexes:[401,500],amounts:[1001,1200]}]}},OZONE_8H:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,100]},max:{indexes:[201,300],amounts:[266,800]},value:[{indexes:[0,50],amounts:[0,100]},{indexes:[51,100],amounts:[101,160]},{indexes:[101,150],amounts:[161,215]},{indexes:[151,200],amounts:[216,265]},{indexes:[201,300],amounts:[266,800]}]}},PM2_5_24H:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,35]},max:{indexes:[401,500],amounts:[351,500]},value:[{indexes:[0,50],amounts:[0,35]},{indexes:[51,100],amounts:[36,75]},{indexes:[101,150],amounts:[76,115]},{indexes:[151,200],amounts:[116,150]},{indexes:[201,300],amounts:[151,250]},{indexes:[301,400],amounts:[251,350]},{indexes:[401,500],amounts:[351,500]}]}}}},HJ6332025_DRAFT:{weatherKitScale:{name:"HJ6332012",version:"2414"},categories:{significantIndex:3,ranges:[{categoryIndex:1,indexes:[1,50]},{categoryIndex:2,indexes:[51,100]},{categoryIndex:3,indexes:[101,150]},{categoryIndex:4,indexes:[151,200]},{categoryIndex:5,indexes:[201,300]},{categoryIndex:6,indexes:[301,500]}]},pollutants:{SO2_24H:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,50]},max:{indexes:[401,500],amounts:[2101,2620]},value:[{indexes:[0,50],amounts:[0,50]},{indexes:[51,100],amounts:[51,150]},{indexes:[101,150],amounts:[151,475]},{indexes:[151,200],amounts:[476,800]},{indexes:[201,300],amounts:[801,1600]},{indexes:[301,400],amounts:[1601,2100]},{indexes:[401,500],amounts:[2101,2620]}]}},SO2:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,150]},max:{indexes:[200,200],amounts:[801,1/0]},value:[{indexes:[0,50],amounts:[0,150]},{indexes:[51,100],amounts:[151,500]},{indexes:[101,150],amounts:[501,650]},{indexes:[151,200],amounts:[651,800]},{indexes:[200,200],amounts:[801,1/0]}]}},NO2_24H:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,40]},max:{indexes:[401,500],amounts:[751,940]},value:[{indexes:[0,50],amounts:[0,40]},{indexes:[51,100],amounts:[41,80]},{indexes:[101,150],amounts:[81,180]},{indexes:[151,200],amounts:[181,280]},{indexes:[201,300],amounts:[281,565]},{indexes:[301,400],amounts:[566,750]},{indexes:[401,500],amounts:[751,940]}]}},NO2:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,100]},max:{indexes:[401,500],amounts:[3091,3840]},value:[{indexes:[0,50],amounts:[0,100]},{indexes:[51,100],amounts:[101,200]},{indexes:[101,150],amounts:[201,700]},{indexes:[151,200],amounts:[701,1200]},{indexes:[201,300],amounts:[1201,2340]},{indexes:[301,400],amounts:[2341,3090]},{indexes:[401,500],amounts:[3091,3840]}]}},CO_24H:{units:"MILLIGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,2]},max:{indexes:[401,500],amounts:[49,60]},value:[{indexes:[0,50],amounts:[0,2]},{indexes:[51,100],amounts:[3,4]},{indexes:[101,150],amounts:[5,14]},{indexes:[151,200],amounts:[15,24]},{indexes:[201,300],amounts:[25,36]},{indexes:[301,400],amounts:[37,48]},{indexes:[401,500],amounts:[49,60]}]}},CO:{units:"MILLIGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,5]},max:{indexes:[401,500],amounts:[121,150]},value:[{indexes:[0,50],amounts:[0,5]},{indexes:[51,100],amounts:[6,10]},{indexes:[101,150],amounts:[11,35]},{indexes:[151,200],amounts:[36,60]},{indexes:[201,300],amounts:[61,90]},{indexes:[301,400],amounts:[91,120]},{indexes:[401,500],amounts:[121,150]}]}},OZONE_8H:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,100]},max:{indexes:[300,300],amounts:[801,1/0]},value:[{indexes:[0,50],amounts:[0,100]},{indexes:[51,100],amounts:[101,160]},{indexes:[101,150],amounts:[161,215]},{indexes:[151,200],amounts:[216,265]},{indexes:[201,300],amounts:[266,800]},{indexes:[300,300],amounts:[801,1/0]}]}},OZONE:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,160]},max:{indexes:[401,500],amounts:[1001,1200]},value:[{indexes:[0,50],amounts:[0,160]},{indexes:[51,100],amounts:[161,200]},{indexes:[101,150],amounts:[201,300]},{indexes:[151,200],amounts:[301,400]},{indexes:[201,300],amounts:[401,800]},{indexes:[301,400],amounts:[801,1e3]},{indexes:[401,500],amounts:[1001,1200]}]}},PM10_24H:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,50]},max:{indexes:[401,500],amounts:[501,600]},value:[{indexes:[0,50],amounts:[0,50]},{indexes:[51,100],amounts:[51,120]},{indexes:[101,150],amounts:[121,250]},{indexes:[151,200],amounts:[251,350]},{indexes:[201,300],amounts:[351,420]},{indexes:[301,400],amounts:[421,500]},{indexes:[401,500],amounts:[501,600]}]}},PM2_5_24H:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,35]},max:{indexes:[401,500],amounts:[351,500]},value:[{indexes:[0,50],amounts:[0,30]},{indexes:[51,100],amounts:[31,60]},{indexes:[101,150],amounts:[61,115]},{indexes:[151,200],amounts:[116,150]},{indexes:[201,300],amounts:[151,250]},{indexes:[301,400],amounts:[251,350]},{indexes:[401,500],amounts:[351,500]}]}}}},EPA_NowCast:{weatherKitScale:{name:"EPA_NowCast",version:"2414"},categories:{significantIndex:3,ranges:[{categoryIndex:1,indexes:[0,50]},{categoryIndex:2,indexes:[51,100]},{categoryIndex:3,indexes:[101,150]},{categoryIndex:4,indexes:[151,200]},{categoryIndex:5,indexes:[201,300]},{categoryIndex:6,indexes:[301,1/0]}]},pollutants:{OZONE_8H:{units:"PARTS_PER_MILLION",stpConversionFactor:1.96189649169881,ranges:{min:{indexes:[0,50],amounts:[0,.054]},max:{indexes:[201,300],amounts:[.106,.2]},value:[{indexes:[0,50],amounts:[0,.054]},{indexes:[51,100],amounts:[.055,.07]},{indexes:[101,150],amounts:[.071,.085]},{indexes:[151,200],amounts:[.086,.105]},{indexes:[201,300],amounts:[.106,.2]},{indexes:[301,1/0],amounts:[.201,1/0]}]}},OZONE:{units:"PARTS_PER_MILLION",stpConversionFactor:1.96189649169881,ranges:{min:{indexes:[101,150],amounts:[.125,.164]},max:{indexes:[301,500],amounts:[.405,.604]},value:[{indexes:[101,150],amounts:[.125,.164]},{indexes:[151,200],amounts:[.165,.204]},{indexes:[201,300],amounts:[.205,.404]},{indexes:[301,500],amounts:[.405,.604]},{indexes:[501,1/0],amounts:[.605,1/0]}]}},PM2_5_24H:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,9]},max:{indexes:[301,500],amounts:[225.5,325.4]},value:[{indexes:[0,50],amounts:[0,9]},{indexes:[51,100],amounts:[9.1,35.4]},{indexes:[101,150],amounts:[35.5,55.4]},{indexes:[151,200],amounts:[55.5,125.4]},{indexes:[201,300],amounts:[125.5,225.4]},{indexes:[301,500],amounts:[225.5,325.4]},{indexes:[501,1/0],amounts:[325.5,1/0]}]}},PM10_24H:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,54]},max:{indexes:[301,500],amounts:[425,604]},value:[{indexes:[0,50],amounts:[0,54]},{indexes:[51,100],amounts:[55,154]},{indexes:[101,150],amounts:[155,254]},{indexes:[151,200],amounts:[255,354]},{indexes:[201,300],amounts:[355,424]},{indexes:[301,500],amounts:[425,604]},{indexes:[501,1/0],amounts:[605,1/0]}]}},CO_8H:{units:"PARTS_PER_MILLION",stpConversionFactor:1.14491990608754,ranges:{min:{indexes:[0,50],amounts:[0,4.4]},max:{indexes:[301,500],amounts:[30.5,50.4]},value:[{indexes:[0,50],amounts:[0,4.4]},{indexes:[51,100],amounts:[4.5,9.4]},{indexes:[101,150],amounts:[9.5,12.4]},{indexes:[151,200],amounts:[12.5,15.4]},{indexes:[201,300],amounts:[15.5,30.4]},{indexes:[301,500],amounts:[30.5,50.4]},{indexes:[501,1/0],amounts:[50.5,1/0]}]}},SO2:{units:"PARTS_PER_BILLION",stpConversionFactor:2.618396263625692,ranges:{min:{indexes:[0,50],amounts:[0,35]},max:{indexes:[301,500],amounts:[605,1004]},value:[{indexes:[0,50],amounts:[0,35]},{indexes:[51,100],amounts:[36,75]},{indexes:[101,150],amounts:[76,185]},{indexes:[151,200],amounts:[186,304]},{indexes:[201,300],amounts:[305,604]},{indexes:[301,500],amounts:[605,1004]},{indexes:[501,1/0],amounts:[1005,1/0]}]}},NO2:{units:"PARTS_PER_BILLION",stpConversionFactor:1.880472698306222,ranges:{min:{indexes:[0,50],amounts:[0,53]},max:{indexes:[301,500],amounts:[1250,2049]},value:[{indexes:[0,50],amounts:[0,53]},{indexes:[51,100],amounts:[54,100]},{indexes:[101,150],amounts:[101,360]},{indexes:[151,200],amounts:[361,649]},{indexes:[201,300],amounts:[650,1249]},{indexes:[301,500],amounts:[1250,2049]},{indexes:[501,1/0],amounts:[2050,1/0]}]}}}},WAQI_InstantCast_US:{weatherKitScale:{name:"EPA_NowCast",version:"2414",maxIndex:500},categories:{significantIndex:3,ranges:[{categoryIndex:1,indexes:[0,50]},{categoryIndex:2,indexes:[51,100]},{categoryIndex:3,indexes:[101,150]},{categoryIndex:4,indexes:[151,200]},{categoryIndex:5,indexes:[201,300]},{categoryIndex:6,indexes:[301,1/0]}]},pollutants:{OZONE:{units:"PARTS_PER_BILLION",stpConversionFactor:1.96189649169881,ranges:{min:{indexes:[0,50],amounts:[0,62.5]},max:{indexes:[301,500],amounts:[405.1,605]},value:[{indexes:[0,50],amounts:[0,62.5]},{indexes:[51,100],amounts:[62.6,101.5]},{indexes:[101,150],amounts:[101.6,152.5]},{indexes:[151,200],amounts:[152.6,205]},{indexes:[201,300],amounts:[205.1,405]},{indexes:[301,500],amounts:[405.1,605]},{indexes:[501,1/0],amounts:[605.1,1/0]}]}},PM2_5:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,9]},max:{indexes:[301,500],amounts:[225.5,325.4]},value:[{indexes:[0,50],amounts:[0,9]},{indexes:[51,100],amounts:[9.1,35.4]},{indexes:[101,150],amounts:[35.5,55.4]},{indexes:[151,200],amounts:[55.5,125.4]},{indexes:[201,300],amounts:[125.5,225.4]},{indexes:[301,500],amounts:[225.5,325.4]},{indexes:[501,1/0],amounts:[325.5,1/0]}]}},PM10:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,54]},max:{indexes:[301,500],amounts:[425,604]},value:[{indexes:[0,50],amounts:[0,54]},{indexes:[51,100],amounts:[55,154]},{indexes:[101,150],amounts:[155,254]},{indexes:[151,200],amounts:[255,354]},{indexes:[201,300],amounts:[355,424]},{indexes:[301,500],amounts:[425,604]},{indexes:[501,1/0],amounts:[605,1/0]}]}},CO:{units:"PARTS_PER_BILLION",stpConversionFactor:1.144511152104645,ranges:{min:{indexes:[0,50],amounts:[0,4400]},max:{indexes:[301,500],amounts:[30401,50400]},value:[{indexes:[0,50],amounts:[0,4400]},{indexes:[51,100],amounts:[4401,9400]},{indexes:[101,150],amounts:[9401,12400]},{indexes:[151,200],amounts:[12401,15400]},{indexes:[201,300],amounts:[15401,30400]},{indexes:[301,500],amounts:[30401,50400]},{indexes:[501,1/0],amounts:[50401,1/0]}]}},SO2:{units:"PARTS_PER_BILLION",stpConversionFactor:2.618396263625692,ranges:{min:{indexes:[0,50],amounts:[0,35]},max:{indexes:[301,500],amounts:[605,1004]},value:[{indexes:[0,50],amounts:[0,35]},{indexes:[51,100],amounts:[36,75]},{indexes:[101,150],amounts:[76,185]},{indexes:[151,200],amounts:[186,304]},{indexes:[201,300],amounts:[305,604]},{indexes:[301,500],amounts:[605,1004]},{indexes:[501,1/0],amounts:[1005,1/0]}]}},NO2:{units:"PARTS_PER_BILLION",stpConversionFactor:1.880472698306222,ranges:{min:{indexes:[0,50],amounts:[0,53]},max:{indexes:[301,500],amounts:[1250,2049]},value:[{indexes:[0,50],amounts:[0,53]},{indexes:[51,100],amounts:[54,100]},{indexes:[101,150],amounts:[101,360]},{indexes:[151,200],amounts:[361,649]},{indexes:[201,300],amounts:[650,1249]},{indexes:[301,500],amounts:[1250,2049]},{indexes:[501,1/0],amounts:[2050,1/0]}]}}}},WAQI_InstantCast_CN:{weatherKitScale:{name:"HJ6332012",version:"2414",maxIndex:500},categories:{significantIndex:3,ranges:[{categoryIndex:1,indexes:[0,50]},{categoryIndex:2,indexes:[51,100]},{categoryIndex:3,indexes:[101,150]},{categoryIndex:4,indexes:[151,200]},{categoryIndex:5,indexes:[201,300]},{categoryIndex:6,indexes:[301,1/0]}]},pollutants:{SO2:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,150]},max:{indexes:[401,500],amounts:[2101,2620]},value:[{indexes:[0,50],amounts:[0,150]},{indexes:[51,100],amounts:[151,500]},{indexes:[101,150],amounts:[501,650]},{indexes:[151,200],amounts:[651,800]},{indexes:[201,300],amounts:[801,1600]},{indexes:[301,400],amounts:[1601,2100]},{indexes:[401,500],amounts:[2101,2620]},{indexes:[501,1/0],amounts:[2602,1/0]}]}},NO2:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,100]},max:{indexes:[401,500],amounts:[3091,3840]},value:[{indexes:[0,50],amounts:[0,100]},{indexes:[51,100],amounts:[101,200]},{indexes:[101,150],amounts:[201,700]},{indexes:[151,200],amounts:[701,1200]},{indexes:[201,300],amounts:[1201,2340]},{indexes:[301,400],amounts:[2341,3090]},{indexes:[401,500],amounts:[3091,3840]},{indexes:[501,1/0],amounts:[3841,1/0]}]}},PM10:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,50]},max:{indexes:[401,500],amounts:[501,600]},value:[{indexes:[0,50],amounts:[0,50]},{indexes:[51,100],amounts:[51,150]},{indexes:[101,150],amounts:[151,250]},{indexes:[151,200],amounts:[251,350]},{indexes:[201,300],amounts:[351,420]},{indexes:[301,400],amounts:[421,500]},{indexes:[401,500],amounts:[501,600]},{indexes:[501,1/0],amounts:[601,1/0]}]}},CO:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,5e3]},max:{indexes:[401,500],amounts:[120001,15e4]},value:[{indexes:[0,50],amounts:[0,5e3]},{indexes:[51,100],amounts:[5001,1e4]},{indexes:[101,150],amounts:[10001,35e3]},{indexes:[151,200],amounts:[35001,6e4]},{indexes:[201,300],amounts:[60001,9e4]},{indexes:[301,400],amounts:[90001,12e4]},{indexes:[401,500],amounts:[120001,15e4]},{indexes:[501,1/0],amounts:[150001,1/0]}]}},OZONE:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,160]},max:{indexes:[401,500],amounts:[1001,1200]},value:[{indexes:[0,50],amounts:[0,160]},{indexes:[51,100],amounts:[161,200]},{indexes:[101,150],amounts:[201,300]},{indexes:[151,200],amounts:[301,400]},{indexes:[201,300],amounts:[401,800]},{indexes:[301,400],amounts:[801,1e3]},{indexes:[401,500],amounts:[1001,1200]},{indexes:[501,1/0],amounts:[1201,1/0]}]}},PM2_5:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,35]},max:{indexes:[401,500],amounts:[351,500]},value:[{indexes:[0,50],amounts:[0,35]},{indexes:[51,100],amounts:[36,75]},{indexes:[101,150],amounts:[76,115]},{indexes:[151,200],amounts:[116,150]},{indexes:[201,300],amounts:[151,250]},{indexes:[301,400],amounts:[251,350]},{indexes:[401,500],amounts:[351,500]},{indexes:[501,1/0],amounts:[501,1/0]}]}}}},WAQI_InstantCast_CN_25_DRAFT:{weatherKitScale:{name:"HJ6332012",version:"2414",maxIndex:500},categories:{significantIndex:3,ranges:[{categoryIndex:1,indexes:[1,50]},{categoryIndex:2,indexes:[51,100]},{categoryIndex:3,indexes:[101,150]},{categoryIndex:4,indexes:[151,200]},{categoryIndex:5,indexes:[201,300]},{categoryIndex:6,indexes:[301,1/0]}]},pollutants:{SO2:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,150]},max:{indexes:[200,200],amounts:[801,1/0]},value:[{indexes:[0,50],amounts:[0,150]},{indexes:[51,100],amounts:[151,500]},{indexes:[101,150],amounts:[501,650]},{indexes:[151,200],amounts:[651,800]},{indexes:[200,200],amounts:[801,1/0]}]}},NO2:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,100]},max:{indexes:[401,500],amounts:[3091,3840]},value:[{indexes:[0,50],amounts:[0,100]},{indexes:[51,100],amounts:[101,200]},{indexes:[101,150],amounts:[201,700]},{indexes:[151,200],amounts:[701,1200]},{indexes:[201,300],amounts:[1201,2340]},{indexes:[301,400],amounts:[2341,3090]},{indexes:[401,500],amounts:[3091,3840]},{indexes:[501,1/0],amounts:[3841,1/0]}]}},CO:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,5e3]},max:{indexes:[401,500],amounts:[120001,15e4]},value:[{indexes:[0,50],amounts:[0,5e3]},{indexes:[51,100],amounts:[5001,1e4]},{indexes:[101,150],amounts:[10001,35e3]},{indexes:[151,200],amounts:[35001,6e4]},{indexes:[201,300],amounts:[60001,9e4]},{indexes:[301,400],amounts:[90001,12e4]},{indexes:[401,500],amounts:[120001,15e4]},{indexes:[501,1/0],amounts:[150001,1/0]}]}},OZONE:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,160]},max:{indexes:[401,500],amounts:[1001,1200]},value:[{indexes:[0,50],amounts:[0,160]},{indexes:[51,100],amounts:[161,200]},{indexes:[101,150],amounts:[201,300]},{indexes:[151,200],amounts:[301,400]},{indexes:[201,300],amounts:[401,800]},{indexes:[301,400],amounts:[801,1e3]},{indexes:[401,500],amounts:[1001,1200]},{indexes:[501,1/0],amounts:[1201,1/0]}]}},PM10:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,50]},max:{indexes:[401,500],amounts:[501,600]},value:[{indexes:[0,50],amounts:[0,50]},{indexes:[51,100],amounts:[51,120]},{indexes:[101,150],amounts:[121,250]},{indexes:[151,200],amounts:[251,350]},{indexes:[201,300],amounts:[351,420]},{indexes:[301,400],amounts:[421,500]},{indexes:[401,500],amounts:[501,600]},{indexes:[501,1/0],amounts:[601,1/0]}]}},PM2_5:{units:"MICROGRAMS_PER_CUBIC_METER",stpConversionFactor:-1,ranges:{min:{indexes:[0,50],amounts:[0,35]},max:{indexes:[401,500],amounts:[351,500]},value:[{indexes:[0,50],amounts:[0,30]},{indexes:[51,100],amounts:[31,60]},{indexes:[101,150],amounts:[61,115]},{indexes:[151,200],amounts:[116,150]},{indexes:[201,300],amounts:[151,250]},{indexes:[301,400],amounts:[251,350]},{indexes:[401,500],amounts:[351,500]},{indexes:[501,1/0],amounts:[501,1/0]}]}}}}},Pollutants:{co:"CO",no:"NO",no2:"NO2",so2:"SO2",o3:"OZONE",nox:"NOX",pm25:"PM2_5",pm10:"PM10",other:"NOT_AVAILABLE"},CompareCategoryIndexes:{BETTER:"BETTER",SAME:"SAME",UNKNOWN:"UNKNOWN",WORSE:"WORSE"},Units:{WeatherKit:{ugm3:"MICROGRAMS_PER_CUBIC_METER",mgm3:"MILLIGRAMS_PER_CUBIC_METER",ppb:"PARTS_PER_BILLION",ppm:"PARTS_PER_MILLION"},Friendly:{MICROGRAMS_PER_CUBIC_METER:"μg/m3",MILLIGRAMS_PER_CUBIC_METER:"mg/m3",PARTS_PER_BILLION:"ppb",PARTS_PER_MILLION:"ppm"}},STP_ConversionFactors:{US:{OZONE:1.96189649169881,SO2:2.618396263625692,NO2:1.880472698306222,CO:1.14491990608754,C6H6:3.192940861982224,NH3:.696148908267651,NO:1.226507201073285},EU:{OZONE:1.995358823128092,SO2:2.663055930411053,NO2:1.912546256182842,CO:1.164447791233157,C6H6:3.247400027289784,NH3:.708022503837626,NO:1.247426648473478}}};static ConvertUnit(t,e,i,a=-1,s=-1){j.info("☑️ ConvertUnit");let n=tD.Config.Units.Friendly;if(j.info(`Convert ${t} from ${n[e]} with ${a} to ${n[i]} with ${s}`),t<0)return j.error("ConvertUnit",`Amount ${t} < 0`),-1;let r=Number(t.toFixed(15)),{ugm3:o,mgm3:d,ppb:c,ppm:l}=tD.Config.Units.WeatherKit,u=[c,l],p=[...u,o,d];if(!p.includes(e)||!p.includes(i))return j.error("ConvertUnit","不支持的单位",`from: ${e}`,`to: ${i}`),-1;let b=u.includes(e),h=u.includes(i),m=b&&h;if(m&&a!==s){if(a<=0||s<=0)return j.error("ConvertUnit","无效的STP conversion factor",`fromStpConversionFactor: ${a}`,`toStpConversionFactor: ${s}`),-1;let t=tD.ConvertUnit(r,e,o,a);return tD.ConvertUnit(t,o,i,-1,s)}if(!m&&b&&a<=0)return j.error("ConvertUnit",`fromStpConversionFactor ${a} <= 0`),-1;if(!m&&h&&s<=0)return j.error("ConvertUnit",`toStpConversionFactor ${s} <= 0`),-1;let{multiply:_,divide:y}=tL;switch(e){case l:switch(i){case l:return j.info("✅ ConvertUnit"),r;case c:return j.info("✅ ConvertUnit"),_(r,1e3);case d:return j.info("✅ ConvertUnit"),_(r,a);case o:{let t=tD.ConvertUnit(r,e,c);return j.info("✅ ConvertUnit"),_(t,a)}default:return -1}case c:switch(i){case c:return j.info("✅ ConvertUnit"),r;case l:return j.info("✅ ConvertUnit"),_(r,.001);case d:{let t=tD.ConvertUnit(r,e,l);return j.info("✅ ConvertUnit"),_(t,a)}case o:return j.info("✅ ConvertUnit"),_(r,a);default:return -1}case d:switch(i){case d:return j.info("✅ ConvertUnit"),r;case o:return j.info("✅ ConvertUnit"),_(r,1e3);case l:return j.info("✅ ConvertUnit"),y(r,s);case c:{let t=tD.ConvertUnit(r,e,o);return j.info("✅ ConvertUnit"),y(t,s)}default:return -1}case o:switch(i){case o:return j.info("✅ ConvertUnit"),r;case d:return j.info("✅ ConvertUnit"),_(r,.001);case l:{let t=tD.ConvertUnit(r,e,d);return j.info("✅ ConvertUnit"),y(t,s)}case c:return j.info("✅ ConvertUnit"),y(r,s);default:return -1}default:return -1}}}class tB{Name="ForecastNextHour";Version="v1.6.3";Author="iRingo";static #b={Pollutants:{co:"CO",no:"NO",no2:"NO2",so2:"SO2",o3:"OZONE",nox:"NOX",pm25:"PM2_5",pm10:"PM10",other:"NOT_AVAILABLE"},WeatherCondition:{晴朗:"CLEAR",雨夹雪:"SLEET",小雨:"DRIZZLE",下雨:"RAIN",中雨:"RAIN",大雨:"HEAVY_RAIN",小雪:"FLURRIES",下雪:"SNOW",中雪:"SNOW",大雪:"HEAVY_SNOW",冰雹:"HAIL"},PrecipitationType:{晴朗:"CLEAR",雨夹雪:"SLEET",rain:"RAIN",雨:"RAIN",snow:"SNOW",雪:"SNOW",冰雹:"HAIL"},Precipitation:{Level:{INVALID:-1,NO:0,LIGHT:1,MODERATE:2,HEAVY:3,EXTREME:4},Range:{radar:{NO:[0,.031],LIGHT:[.031,.25],MODERATE:[.25,.35],HEAVY:[.35,.48],EXTREME:[.48,Number.MAX_VALUE]},mmph:{NO:[0,.08],LIGHT:[.08,3.44],MODERATE:[3.44,11.33],HEAVY:[11.33,51.3],EXTREME:[51.3,Number.MAX_VALUE]},precipitation:{NO:[0,.01],LIGHT:[.01,.6],MODERATE:[.6,1.65],HEAVY:[1.65,8],EXTREME:[8,205]}}}};static WeatherCondition(t){j.info("☑️ WeatherCondition",`sentence: ${t}`);let e="CLEAR";return Object.keys(tB.#b.WeatherCondition).forEach(i=>{t.includes(i)&&(e=tB.#b.WeatherCondition[i])}),j.info(`✅ WeatherCondition: ${e}`),e}static PrecipitationType(t){j.info("☑️ PrecipitationType",`sentence: ${t}`);let e="CLEAR";return Object.keys(tB.#b.PrecipitationType).forEach(i=>{t.includes(i)&&(e=tB.#b.PrecipitationType[i])}),j.info(`✅ PrecipitationType: ${e}`),e}static Minute(t=[],e="",i="mmph"){j.info("☑️ Minute");let a=tB.PrecipitationType(e);return t=t.map((t,e)=>{if(t.precipitationIntensity=Math.trunc(1e6*t.precipitationIntensity)/1e6,t.perceivedPrecipitationIntensity=tB.#h(t.precipitationIntensity,i),t.perceivedPrecipitationIntensity>2){switch(a){case"RAIN":t.condition="HEAVY_RAIN";break;case"SNOW":t.condition="HEAVY_SNOW";break;default:t.condition=a}t.summaryCondition=a,t.clear=!1}else if(t.perceivedPrecipitationIntensity>1){switch(a){case"RAIN":t.condition="RAIN";break;case"SNOW":t.condition="SNOW";break;default:t.condition=a}t.summaryCondition=a,t.clear=!1}else if(t.perceivedPrecipitationIntensity>.1){switch(a){case"RAIN":t.condition="DRIZZLE";break;case"SNOW":t.condition="FLURRIES";break;default:t.condition=a}t.summaryCondition=a,t.clear=!1}else if(t.perceivedPrecipitationIntensity>0){switch(a){case"RAIN":t.condition="POSSIBLE_DRIZZLE";break;case"SNOW":t.condition="POSSIBLE_FLURRIES";break;default:t.condition=`POSSIBLE_${a}`}t.summaryCondition=a,t.clear=!1}else t.condition="CLEAR",t.summaryCondition="CLEAR",t.clear=!0;return t}),j.info("✅ Minute"),t}static Summary(t=[]){j.info("☑️ Summary");let e=[],i={condition:"CLEAR",startTime:0,precipitationChance:0,precipitationIntensity:0,maxCondition:"",clear:!0},a=Math.min(71,t.length);for(let s=0;st.clear).join("|")){case"true":{let i=t[0];e.push({beginCondition:i.maxCondition,endCondition:i.maxCondition,forecastToken:"CLEAR",parameters:[],startTime:i.startTime,endTime:0});break}case"false":{let i=t[0];e.push({beginCondition:i.maxCondition,endCondition:i.maxCondition,forecastToken:"CONSTANT",parameters:[],startTime:i.startTime,endTime:0});break}case"true|false":{let i=t[0],a=t[1];e.push({beginCondition:a.maxCondition,endCondition:a.maxCondition,forecastToken:"START",parameters:[{date:a.startTime,type:"FIRST_AT"}],startTime:i.startTime,endTime:i.endTime}),e.push({beginCondition:a.maxCondition,endCondition:a.maxCondition,forecastToken:"CONSTANT",parameters:[],startTime:a.startTime,endTime:0});break}case"false|true":{let i=t[0],a=t[1];e.push({beginCondition:i.maxCondition,endCondition:i.maxCondition,forecastToken:"STOP",parameters:[{date:i.endTime,type:"FIRST_AT"}],startTime:i.startTime,endTime:i.endTime}),e.push({beginCondition:a.maxCondition,endCondition:a.maxCondition,forecastToken:"CLEAR",parameters:[],startTime:a.startTime,endTime:0});break}case"false|true|false":{let i=t[0],a=t[1],s=t[2];e.push({beginCondition:i.maxCondition,endCondition:s.maxCondition,forecastToken:"STOP_START",parameters:[{date:i.endTime,type:"FIRST_AT"},{date:s.startTime,type:"SECOND_AT"}],startTime:i.startTime,endTime:i.endTime}),e.push({beginCondition:s.maxCondition,endCondition:s.maxCondition,forecastToken:"START",parameters:[{date:s.startTime,type:"FIRST_AT"}],startTime:a.startTime,endTime:a.endTime}),e.push({beginCondition:s.maxCondition,endCondition:s.maxCondition,forecastToken:"CONSTANT",parameters:[],startTime:s.startTime,endTime:0});break}case"true|false|true":{let i=t[0],a=t[1],s=t[2];e.push({beginCondition:a.maxCondition,endCondition:a.maxCondition,forecastToken:"START_STOP",parameters:[{date:a.startTime,type:"FIRST_AT"},{date:a.endTime,type:"SECOND_AT"}],startTime:i.startTime,endTime:i.endTime}),e.push({beginCondition:a.maxCondition,endCondition:a.maxCondition,forecastToken:"STOP",parameters:[{date:a.endTime,type:"FIRST_AT"}],startTime:a.startTime,endTime:a.endTime}),e.push({beginCondition:s.maxCondition,endCondition:s.maxCondition,forecastToken:"CLEAR",parameters:[],startTime:s.startTime,endTime:0});break}case"false|true|false|true":{let i=t[0],a=t[1],s=t[2],n=t[3];e.push({beginCondition:i.maxCondition,endCondition:s.maxCondition,forecastToken:"STOP_START",parameters:[{date:i.endTime,type:"FIRST_AT"},{date:s.startTime,type:"SECOND_AT"}],startTime:i.startTime,endTime:i.endTime}),e.push({beginCondition:s.maxCondition,endCondition:s.maxCondition,forecastToken:"START_STOP",parameters:[{date:s.startTime,type:"FIRST_AT"},{date:s.endTime,type:"SECOND_AT"}],startTime:a.startTime,endTime:a.endTime}),e.push({beginCondition:s.maxCondition,endCondition:s.maxCondition,forecastToken:"STOP",parameters:[{date:s.endTime,type:"FIRST_AT"}],startTime:s.startTime,endTime:s.endTime}),e.push({beginCondition:n.maxCondition,endCondition:n.maxCondition,forecastToken:"CLEAR",parameters:[],startTime:n.startTime,endTime:0});break}case"true|false|true|false":{let i=t[0],a=t[1],s=t[2],n=t[3];e.push({beginCondition:a.maxCondition,endCondition:a.maxCondition,forecastToken:"START_STOP",parameters:[{date:a.startTime,type:"FIRST_AT"},{date:a.endTime,type:"SECOND_AT"}],startTime:i.startTime,endTime:i.endTime}),e.push({beginCondition:a.maxCondition,endCondition:n.maxCondition,forecastToken:"STOP_START",parameters:[{date:a.endTime,type:"FIRST_AT"},{date:n.startTime,type:"SECOND_AT"}],startTime:a.startTime,endTime:a.endTime}),e.push({beginCondition:n.maxCondition,endCondition:n.maxCondition,forecastToken:"START",parameters:[{date:n.startTime,type:"FIRST_AT"}],startTime:s.startTime,endTime:s.endTime}),e.push({beginCondition:n.maxCondition,endCondition:n.maxCondition,forecastToken:"CONSTANT",parameters:[],startTime:n.startTime,endTime:0})}}return j.debug(`Conditions: ${JSON.stringify(e,null,2)}`),j.info("✅ Condition"),e}static #h(t,e="mmph"){let i=tB.#b.Precipitation.Range[e],a=0;return 0===t||t>i.NO[0]&&t<=i.NO[1]?a=0:t>i.LIGHT[0]&&t<=i.LIGHT[1]?a=Math.min(1,(t-i.LIGHT[0])/(i.LIGHT[1]-i.LIGHT[0])):t>i.MODERATE[0]&&t<=i.MODERATE[1]?a=1+Math.min(1,(t-i.MODERATE[0])/(i.MODERATE[1]-i.MODERATE[0])):t>i.HEAVY[0]&&(a=2+Math.min(1,(t-i.HEAVY[0])/(i.HEAVY[1]-i.HEAVY[0]))),a=Math.trunc(1e3*a)/1e3}}class t${constructor(t,e){this.Name="ColorfulClouds",this.Version="4.1.0",j.log(`🟧 ${this.Name} v${this.Version}`),this.endpoint=`https://api.caiyunapp.com/v2.6/${e}/${t.longitude},${t.latitude}`,this.headers={Referer:"https://caiyunapp.com/"},this.version=t.version,this.language=t.language,this.latitude=t.latitude,this.longitude=t.longitude,this.country=t.country}#m={realtime:{}};#_={Pollutants:{co:"CO",no:"NO",no2:"NO2",so2:"SO2",o3:"OZONE",nox:"NOX",pm25:"PM2_5",pm10:"PM10",other:"NOT_AVAILABLE"},Availability:{Minutely:["CN","HK","MO","TW","IT","LT","MT","FR","SK","NO","BY","IS","CZ","SI","DE","ES","UA","DK","PL","FI","SE","HR","RU","RO","PT","EE","RS","AT","GR","HU","FJ","GU","MH","NC","TR","BH","SA","ID","IR","SG","OM","PH","IN","KH","CY","MY","VN","KW","TH","KR","KP","CA","BS","KY","MX","PA","MQ","CU","BM","PR","CW","GP","NI","BR","GF","CO","GY","PY","AR"],AirQuality:["CN","HK","MO"]}};async #y(){if(j.info("☑️ RealTime"),this.#m.realtime?.result?.realtime?.status==="ok")return j.info("✅ RealTime","Using cache"),this.#m.realtime;let t={url:`${this.endpoint}/realtime`,headers:this.headers};try{let e=await Z(t).then(t=>JSON.parse(t?.body??"{}"));switch(e?.status){case"ok":switch(e?.result?.realtime?.status){case"ok":return this.#m.realtime=e,j.info("✅ RealTime"),e;case"error":case void 0:throw Error(JSON.stringify({status:e?.result?.realtime?.status,reason:e?.result?.realtime}))}break;case"error":case"failed":case void 0:throw Error(JSON.stringify(e??{}))}}catch(t){j.error(`RealTime: ${t}`)}finally{j.info("✅ RealTime")}return{}}async Minutely(){let t;if(j.info("☑️ Minutely"),!this.#_.Availability.Minutely.includes(this.country))return void j.warn("Minutely",`Unsupported country: ${this.country}`);let e={url:`${this.endpoint}/minutely?unit=metric:v2`,headers:this.headers};try{let i=await Z(e).then(t=>JSON.parse(t?.body??"{}"));switch(i?.status){case"ok":switch(i?.result?.minutely?.status){case"ok":{let e=Date.now()/1e3|0,a={attributionUrl:"https://www.caiyunapp.com/h5",expireTime:e+3600,language:"zh-CN",latitude:i?.location?.[0],longitude:i?.location?.[1],providerLogo:tU("彩云天气",this.version),providerName:"彩云天气",readTime:e,reportedTime:i?.server_time,temporarilyUnavailable:!1,sourceType:"MODELED"};i.result.minutely.probability=i.result.minutely.probability.map(t=>Math.round(100*t));let s=new Date(i?.server_time*1e3).setSeconds(0,0);s=s.valueOf()/1e3-60,(t={metadata:a,condition:[],forecastEnd:0,forecastStart:s,minutes:i?.result?.minutely?.precipitation_2h?.map((t,e)=>{let a={perceivedPrecipitationIntensity:0,precipitationChance:0,precipitationIntensity:t,startTime:s+60*e};return e<30?a.precipitationChance=i?.result?.minutely?.probability?.[0]:e<60?a.precipitationChance=i?.result?.minutely?.probability?.[1]:e<90?a.precipitationChance=i?.result?.minutely?.probability?.[2]:a.precipitationChance=i?.result?.minutely?.probability?.[3],a}),summary:[]}).minutes.length=Math.min(85,t.minutes.length),t.forecastEnd=s+60*t.minutes.length,t.minutes=tB.Minute(t.minutes,i?.result?.minutely?.description,"mmph"),t.summary=tB.Summary(t.minutes),t.condition=tB.Condition(t.summary);break}case"error":case"failed":case void 0:throw Error(JSON.stringify({status:i?.result?.minutely?.status,reason:i?.result?.minutely}))}break;case"error":case"failed":case void 0:throw Error(JSON.stringify(i??{}))}}catch(t){j.error(`Minutely: ${t}`)}finally{j.info("✅ Minutely")}return t}async #f(t=273,e){j.info("☑️ Hourly",`hourlysteps: ${t}`,`begin: ${e}`);let i={url:`${this.endpoint}/hourly?hourlysteps=${t}`,headers:this.headers};e&&(i.url+=`&begin=${e}`);try{let t=await Z(i).then(t=>JSON.parse(t?.body??"{}"));switch(t?.status){case"ok":switch(t?.result?.hourly?.status){case"ok":return j.info("✅ Hourly"),t;case"error":case void 0:throw Error(JSON.stringify({status:t?.result?.hourly?.status,reason:t?.result?.hourly}))}break;case"error":case"failed":case void 0:throw Error(JSON.stringify(t??{}))}}catch(t){j.error(`Hourly: ${t}`)}finally{j.info("✅ Hourly")}return{}}async Daily(t=10,e){let i;j.info("☑️ Daily");let a={url:`${this.endpoint}/daily?dailysteps=${t}`,headers:this.headers};e&&(a.url+=`&begin=${e}`);try{let e=await Z(a).then(t=>JSON.parse(t?.body??"{}"));switch(e?.status){case"ok":switch(e?.result?.daily?.status){case"ok":{let a=Date.now()/1e3|0;i={metadata:{attributionUrl:"https://www.caiyunapp.com/h5",expireTime:a+3600,language:"zh-CN",latitude:e?.location?.[0],longitude:e?.location?.[1],providerLogo:tU("彩云天气",this.version),providerName:"彩云天气",readTime:a,reportedTime:e?.server_time,temporarilyUnavailable:!1,sourceType:"STATION"},days:[]};for(let a=0;a{switch(s){case"co":return{amount:tD.ConvertUnit(n??-1,i,a),pollutantType:this.#_.Pollutants[s],units:a,index:"HJ6332012"===e?t.co_iaqi_chn:void 0};case"no":case"no2":case"so2":case"o3":case"nox":case"pm25":case"pm10":return{amount:n??-1,pollutantType:this.#_.Pollutants[s],units:a,index:"HJ6332012"===e?t[`${s}_iaqi_chn`]:void 0};default:return null}}).filter(Boolean);return j.info("✅ CreatePollutants"),s}async CurrentAirQuality(t=!0,e=!0){j.info("☑️ CurrentAirQuality");let i={metadata:this.#g(void 0,void 0,!0),pollutants:[],previousDayComparison:tD.Config.CompareCategoryIndexes.UNKNOWN};if(!this.#_.Availability.AirQuality.includes(this.country))return j.warn("CurrentAirQuality",`Unsupported country: ${this.country}`),i;let a=await this.#y();if(!a.result)return j.error("CurrentAirQuality","无法获取realtime数据"),i;if(""===a.result.realtime.air_quality.description.usa)return j.error("CurrentAirQuality","不支持的位置"),i;let s={metadata:this.#g(a.result.realtime.air_quality.obs_time,a.location),pollutants:this.#N(a.result.realtime.air_quality,t?void 0:"HJ6332012"),previousDayComparison:tD.Config.CompareCategoryIndexes.UNKNOWN};if(t){let t=tD.Config.Scales.EPA_NowCast,e=a.result.realtime.air_quality.aqi.usa,i=tD.CategoryIndex(e,t.categories),n={...s,categoryIndex:i,index:e,isSignificant:i>=t.categories.significantIndex,primaryPollutant:"NOT_AVAILABLE",scale:tD.ToWeatherKitScale(t.weatherKitScale)};return j.info("✅ CurrentAirQuality"),n}{let t=tD.Config.Scales.HJ6332012,i=a.result.realtime.air_quality.aqi.chn,n=tD.CategoryIndex(i,t.categories),r=tD.PrimaryPollutant(s.pollutants,t.categories),o=!e&&r.index<=50;o&&j.info("CurrentAirQuality",`Max index of pollutants ${r.pollutantType} = ${r.index} is <= 50, primaryPollutant will be set to NOT_AVAILABLE.`);let d={...s,categoryIndex:n,index:i,isSignificant:n>=t.categories.significantIndex,primaryPollutant:o?"NOT_AVAILABLE":r.pollutantType,scale:tD.ToWeatherKitScale(t.weatherKitScale)};return j.info("✅ CurrentAirQuality"),d}}async CurrentWeather(){j.info("☑️ CurrentWeather");let t=await this.#y();return t.result?(j.info("✅ CurrentWeather"),{metadata:this.#g(t.result.server_time,t.location),cloudCover:Math.round(100*t.result.realtime.cloudrate),conditionCode:tW.ConvertWeatherCode(t.result.realtime.skycon),humidity:Math.round(100*t.result.realtime.humidity),perceivedPrecipitationIntensity:t.result.realtime.precipitation.local.intensity,pressure:t.result.realtime.pressure/100,temperature:t.result.realtime.temperature,temperatureApparent:t.result.realtime.apparent_temperature,visibility:1e3*t.result.realtime.visibility,windDirection:t.result.realtime.wind.direction,windSpeed:t.result.realtime.wind.speed}):(j.error("CurrentWeather","无法获取realtime数"),{metadata:this.#g(void 0,void 0,!0)})}async YesterdayAirQuality(t=!0){j.info("☑️ YesterdayAirQuality");let e=await this.#f(1,Math.trunc((Date.now()-864e5)/1e3)),i=t?tD.Config.Scales.EPA_NowCast:tD.Config.Scales.HJ6332012,a={previousDayComparison:tD.Config.CompareCategoryIndexes.UNKNOWN,pollutants:[],primaryPollutant:"NOT_AVAILABLE",scale:tD.ToWeatherKitScale(i.weatherKitScale)};if(!e.result)return j.error("YesterdayAirQuality","无法获取hourly数据"),{...a,categoryIndex:-1,metadata:this.#g(void 0,void 0,!0)};let{usa:s,chn:n}=e.result.hourly.air_quality.aqi[0].value;0===s&&0===n&&j.warn("YesterdayAirQuality","usa和chn的AQI值都为0,不支持的位置?");let r=t?s:n,o=tD.CategoryIndex(r,i.categories),d=o>=i.categories.significantIndex;return j.debug(`index: ${r}`),j.info("✅ YesterdayAirQuality",`categoryIndex: ${o}`),{...a,index:r,categoryIndex:o,isSignificant:d,metadata:this.#g(e.result.server_time,e.location)}}async ForecastHourly(t,e){j.info("☑️ ForecastHourly");let i=await this.#f(t,e);return i.result?(j.info("✅ ForecastHourly"),{metadata:this.#g(i.result.server_time,i.location),hours:Array.from({length:i.result.hourly.skycon.length},(t,e)=>({cloudCover:i.result.hourly.cloudrate[e].value,conditionCode:tW.ConvertWeatherCode(i.result.hourly.skycon[e].value),forecastStart:new Date(i.result.hourly.skycon[e].datetime).getTime()/1e3|0,humidity:Math.round(100*i.result.hourly.humidity[e].value),precipitationAmount:i.result.hourly.precipitation[e].value,precipitationChance:i.result.hourly.precipitation[e].probability,pressure:i.result.hourly.pressure[e].value/100,temperature:i.result.hourly.temperature[e].value,temperatureApparent:i.result.hourly.apparent_temperature[e].value,visibility:1e3*i.result.hourly.visibility[e].value,windDirection:i.result.hourly.wind[e].direction,windSpeed:i.result.hourly.wind[e].speed}))}):(j.error("ForecastHourly","Failed to get hourly data"),{metadata:this.#g(void 0,void 0,!0)})}}class tH{constructor(t,e,i="devapi.qweather.com"){this.Name="QWeather",this.Version="5.1.0",j.log(`🟧 ${this.Name} v${this.Version}`),this.endpoint=`https://${i}`,this.headers={"X-QW-Api-Key":e},this.version=t.version,this.language=t.language,this.latitude=t.latitude,this.longitude=t.longitude,this.country=t.country}#m={airQualityCurrent:{}};#_={Pollutants:{co:"CO",no:"NO",no2:"NO2",so2:"SO2",o3:"OZONE",nox:"NOX",pm25:"PM2_5",pm2p5:"PM2_5",pm10:"PM10",other:"NOT_AVAILABLE",na:"NOT_AVAILABLE",undefined:"NOT_AVAILABLE",null:"NOT_AVAILABLE"},Units:{"μg/m3":"MICROGRAMS_PER_CUBIC_METER","mg/m3":"MILLIGRAMS_PER_CUBIC_METER",ppb:"PARTS_PER_BILLION",ppm:"PARTS_PER_MILLION"},Availability:{Minutely:["CN","HK","MO"],AirQuality:["AD","BE","BG","CA","CN","HR","CZ","DK","FI","FR","DE","GI","GR","HK","HU","IE","JP","KR","LV","LT","MO","MT","NL","MK","NO","PL","PT","RO","RS","SG","SK","SI","ES","SE","CH","TW","TH","GB","US"]}};static async GetLocationsGrid(t,e){j.info("☑️ GetLocationsGrid");let i=t?.locationsGrid;if(i?.lastUpdated&&i.lastUpdated+2592e6>Date.now())return j.info("✅ GetLocationsGrid","Cache found!"),i.data;{j.info("⚠️ GetLocationsGrid","Cache not found or stale, fetching...");let a=await Z({headers:i?.etag?{"If-None-Match":i?.etag}:void 0,url:"https://raw.githubusercontent.com/NSRingo/QWeather-Location-Grid/refs/heads/main/data/qweather-china-city-list-grid.json"});if(304===a.status)return j.info("✅ GetLocationsGrid","Cache not modified"),e({...t,locationsGrid:{...i,lastUpdated:Date.now()}}),i.data;let s=JSON.parse(a.body);return e({...t,locationsGrid:{etag:a.headers.ETag,lastUpdated:Date.now(),data:s}}),j.info("✅ GetLocationsGrid"),s}}static GetLocationInfo(t,e,i){j.info("☑️ GetLocationInfo");let{gridSize:a,grid:s}=t,n=(t,e,i,a)=>{let s=Math.sin((i-t)*Math.PI/180/2)**2+Math.cos(t*Math.PI/180)*Math.cos(i*Math.PI/180)*Math.sin((a-e)*Math.PI/180/2)**2;return 12742*Math.atan2(Math.sqrt(s),Math.sqrt(1-s))},r=((t,e)=>{let i=((t,e,i=2)=>{let s=Math.floor(e/a),n=Math.floor(t/a),r=[];for(let t=-i;t<=i;t++)for(let e=-i;e<=i;e++)r.push(`${s+t},${n+e}`);return r})(t,e,2),r=null,o=1/0;for(let a of i){let i=s[a];if(i)for(let a of i){let i=n(t,e,a.latitude,a.longitude);iJSON.parse(t?.body??"{}"));if(t?.code==="200")e={attributionUrl:t?.location?.[0]?.fxLink,latitude:t?.location?.[0]?.lat,longitude:t?.location?.[0]?.lon,providerName:"和风天气",locationID:t?.location?.[0]?.id};else throw Error(t?.code)}catch(t){j.error(`GeoAPI: ${t}`)}finally{j.debug(`metadata: ${JSON.stringify(e,null,2)}`),j.info("✅ GeoAPI")}return e}async WeatherNow(){let t;j.info("☑️ WeatherNow");let e={url:`${this.endpoint}/v7/weather/now?location=${this.longitude},${this.latitude}`,headers:this.headers};try{let i=await Z(e).then(t=>JSON.parse(t?.body??"{}"));switch(i?.code){case"200":{let e=Date.now()/1e3|0;t={metadata:{attributionUrl:i?.fxLink,expireTime:e+3600,language:"zh-CN",latitude:this.latitude,longitude:this.longitude,providerLogo:tU("和风天气",this.version),providerName:"和风天气",readTime:e,reportedTime:new Date(i?.now?.pubTime).getTime()/1e3|0,temporarilyUnavailable:!1,sourceType:"STATION"},cloudCover:Number.parseInt(i?.now?.cloud,10),conditionCode:tW.ConvertWeatherCode(i?.now?.text),humidity:Number.parseInt(i?.now?.humidity,10),perceivedPrecipitationIntensity:Number.parseFloat(i?.now?.precip),pressure:Number.parseFloat(i?.now?.pressure),temperature:Number.parseFloat(i?.now?.temp),temperatureApparent:Number.parseFloat(i?.now?.feelsLike),temperatureDewPoint:Number.parseFloat(i?.now?.dew),visibility:1e3*Number.parseFloat(i?.now?.vis),windDirection:Number.parseInt(i?.now?.wind360,10),windSpeed:Number.parseFloat(i?.now?.windSpeed)};break}case"204":case"400":case"401":case"402":case"403":case"404":case"429":case"500":case void 0:throw Error(i?.code)}}catch(t){j.error(`WeatherNow: ${t}`)}finally{j.info("✅ WeatherNow")}return t}async AirNow(){let t;j.info("☑️ AirNow");let e={url:`${this.endpoint}/v7/air/now?location=${this.longitude},${this.latitude}`,headers:this.headers};try{let i=await Z(e).then(t=>JSON.parse(t?.body??"{}"));switch(i?.code){case"200":{let e=Date.now()/1e3|0;t={metadata:{attributionUrl:i?.fxLink,expireTime:e+3600,language:"zh-CN",latitude:this.latitude,longitude:this.longitude,providerLogo:tU("和风天气",this.version),providerName:"和风天气",readTime:e,reportedTime:new Date(i?.now?.pubTime).getTime()/1e3|0,temporarilyUnavailable:!1,sourceType:"STATION"},categoryIndex:Number.parseInt(i?.now?.level,10),index:Number.parseInt(i?.now?.aqi,10),isSignificant:!1,pollutants:this.#C(i?.now),previousDayComparison:tD.Config.CompareCategoryIndexes.UNKNOWN,primaryPollutant:this.#_.Pollutants[i?.now?.primary]||"NOT_AVAILABLE",scale:"HJ6332012"},i?.refer?.sources?.[0]&&(t.metadata.providerName+=` 数据源: ${i?.refer?.sources?.[0]}`);break}case"204":case"400":case"401":case"402":case"403":case"404":case"429":case"500":case void 0:throw Error(i?.code)}}catch(t){j.error(`AirNow: ${t}`)}finally{j.info("✅ AirNow")}return t}async #x(){if(j.info("☑️ AirQualityCurrent"),this.#m.airQualityCurrent?.metadata?.tag&&!this.#m.airQualityCurrent?.error)return j.info("✅ AirQualityCurrent","Using cache"),this.#m.airQualityCurrent;let t={url:`${this.endpoint}/airquality/v1/current/${this.latitude}/${this.longitude}`,headers:this.headers};try{let e=await Z(t).then(t=>JSON.parse(t?.body??"{}"));if(e?.error===void 0)return this.#m.airQualityCurrent=e,e;throw Error(JSON.stringify(e?.error,null,2))}catch(t){j.error(`AirQualityCurrent: ${t}`)}finally{j.info("✅ AirQualityCurrent")}return{}}async Minutely(){let t;if(j.info("☑️ Minutely"),!this.#_.Availability.Minutely.includes(this.country))return void j.warn("Minutely",`Unsupported country: ${this.country}`);let e={url:`${this.endpoint}/v7/minutely/5m?location=${this.longitude},${this.latitude}`,headers:this.headers};try{let i=await Z(e).then(t=>JSON.parse(t?.body??"{}"));switch(i?.code){case"200":{let e=Date.now()/1e3|0,a=new Date(i?.updateTime).setSeconds(0,0);a=a.valueOf()/1e3,(t={metadata:{attributionUrl:i?.fxLink,expireTime:e+3600,language:"zh-CN",latitude:this.latitude,longitude:this.longitude,providerLogo:tU("和风天气",this.version),providerName:"和风天气",readTime:e,reportedTime:e,temporarilyUnavailable:!1,sourceType:"MODELED"},condition:[],forecastEnd:0,forecastStart:a,minutes:i?.minutely?.map((t,e)=>{let i={perceivedPrecipitationIntensity:0,precipitationChance:0,precipitationIntensity:12*Number.parseFloat(t.precip),startTime:new Date(t.fxTime)/1e3},a=[{...i},{...i},{...i},{...i},{...i}];return a=a.map((t,e)=>(t.startTime=t.startTime+60*e,t))}).flat(Infinity),summary:[]}).minutes.length=Math.min(85,t.minutes.length),t.forecastEnd=a+60*t.minutes.length,t.minutes=tB.Minute(t.minutes,i?.summary,"mmph"),t.summary=tB.Summary(t.minutes),t.condition=tB.Condition(t.summary);break}case"204":case"400":case"401":case"402":case"403":case"404":case"429":case"500":case void 0:throw Error(i?.code)}}catch(t){j.error(`Minutely: ${t}`)}finally{j.info("✅ Minutely")}return t}async Hourly(t=168){let e;j.info("☑️ Hourly",`host: ${this.host}`);let i={url:`${this.endpoint}/v7/weather/${t}h?location=${this.longitude},${this.latitude}`,headers:this.headers};try{let t=await Z(i).then(t=>JSON.parse(t?.body??"{}"));switch(t?.code){case"200":{let i=Date.now()/1e3|0;e={metadata:{attributionUrl:t?.fxLink,expireTime:i+3600,language:"zh-CN",latitude:this.latitude,longitude:this.longitude,providerLogo:tU("和风天气",this.version),providerName:"和风天气",readTime:i,reportedTime:new Date(t?.updateTime),temporarilyUnavailable:!1,sourceType:"STATION"},hours:t?.hourly?.map(t=>({cloudCover:Number.parseInt(t?.cloud,10),conditionCode:tW.ConvertWeatherCode(t?.text),forecastStart:new Date(t?.fxTime).getTime()/1e3|0,humidity:Number.parseInt(t?.humidity,10),precipitationAmount:Number.parseFloat(t?.precip),precipitationChance:Number.parseInt(t?.pop,10),precipitationIntensity:Number.parseInt(t?.precip,10),pressure:Number.parseFloat(t?.pressure),temperature:Number.parseFloat(t?.temp),temperatureDewPoint:Number.parseFloat(t?.dew),windDirection:Number.parseInt(t?.wind360,10),windSpeed:Number.parseFloat(t?.windSpeed)}))};break}case"204":case"400":case"401":case"402":case"403":case"404":case"429":case"500":case void 0:throw Error(t?.code)}}catch(t){j.error(`Hourly: ${t}`)}finally{j.info("✅ Hourly")}return e}async Daily(t=10){let e;j.info("☑️ Daily",`host: ${this.host}`);let i={url:`${this.endpoint}/v7/weather/${t}d?location=${this.longitude},${this.latitude}`,headers:this.headers};try{let t=await Z(i).then(t=>JSON.parse(t?.body??"{}"));switch(t?.code){case"200":{let i=Date.now()/1e3|0,a={attributionUrl:t?.fxLink,expireTime:i+3600,language:"zh-CN",latitude:this.latitude,longitude:this.longitude,providerLogo:tU("和风天气",this.version),providerName:"和风天气",readTime:i,reportedTime:new Date(t?.updateTime),temporarilyUnavailable:!1,sourceType:"STATION"},s=a.reportedTime.getTimezoneOffset();e={metadata:a,days:t?.daily?.map(t=>{let e=(Date.parse(t?.fxDate)/1e3|0)+60*s;return{forecastStart:e,forecastEnd:e+86400,maxUvIndex:Number.parseInt(t?.uvIndex,10),moonPhase:tW.ConvertMoonPhase(t?.moonPhase),moonrise:this.#A(t?.fxDate,t?.moonrise),moonset:this.#A(t?.fxDate,t?.moonset),precipitationAmount:Number.parseFloat(t?.precip),sunrise:this.#A(t?.fxDate,t?.sunrise),sunset:this.#A(t?.fxDate,t?.sunset),temperatureMax:Number.parseFloat(t?.tempMax),temperatureMin:Number.parseFloat(t?.tempMin),windSpeedAvg:(7*Number.parseFloat(t?.windSpeedDay)+17*Number.parseFloat(t?.windSpeedNight))/24,daytimeForecast:{forecastStart:e+25200,forecastEnd:e+25200+43200,conditionCode:tW.ConvertWeatherCode(t?.textDay),precipitationAmount:Number.parseFloat(t?.precip),windDirection:Number.parseInt(t?.wind360Day,10),windSpeed:Number.parseFloat(t?.windSpeedDay)},overnightForecast:{forecastStart:e+68400,forecastEnd:e+68400+43200,conditionCode:tW.ConvertWeatherCode(t?.textNight),precipitationAmount:Number.parseFloat(t?.precip),windDirection:Number.parseInt(t?.wind360Night,10),windSpeed:Number.parseFloat(t?.windSpeedNight)}}})};break}case"204":case"400":case"401":case"402":case"403":case"404":case"429":case"500":case void 0:throw Error(t?.code)}}catch(t){j.error(`Daily: ${t}`)}finally{j.info("✅ Daily")}return e}async #I(t=new Number,e=q("yyyyMMdd",Date.now()-864e5)){j.info("☑️ HistoricalAir",`locationID: ${t}`,`date: ${e}`);let i={url:`${this.endpoint}/v7/historical/air/?location=${t}&date=${e}`,headers:this.headers};try{let t=await Z(i).then(t=>JSON.parse(t?.body??"{}"));switch(t?.code){case"200":return t;case"204":case"400":case"401":case"402":case"403":case"404":case"429":case"500":case void 0:throw Error(t?.code)}}catch(t){j.error(`HistoricalAir: ${t}`)}finally{j.info("✅ HistoricalAir")}return{}}#g(t="https://www.qweather.com/",e="MODELED",i=!1){let a=Date.now()/1e3;return{longitude:this.longitude,providerName:"和风天气",providerLogo:tU("和风天气",this.version),reportedTime:a,latitude:this.latitude,expireTime:a+3600,attributionUrl:t,temporarilyUnavailable:i,readTime:a,sourceType:e}}#N(t,e){j.info("☑️ CreatePollutants"),j.debug(`pollutantsObj: ${JSON.stringify(t)}`);let i=t.filter(t=>"ppmC"!==t.concentration.unit).map(({code:t,concentration:i,subIndexes:a=[]})=>{let{value:s,unit:n}=i,r=this.#_.Pollutants[t],o=a.find(t=>t.code===e);e&&!o&&j.warn("CreatePollutants",`No index for ${r} was found for required scale`);let d=tD.Config.Units.Friendly,{ugm3:c,mgm3:l,ppb:u,ppm:p}=tD.Config.Units.WeatherKit;switch(n){case d.MILLIGRAMS_PER_CUBIC_METER:return{pollutantType:r,amount:tD.ConvertUnit(s,l,c),units:c,index:e?o?.aqi??-1:void 0};case d.PARTS_PER_MILLION:return{pollutantType:r,amount:tD.ConvertUnit(s,p,u),units:u,index:e?o?.aqi??-1:void 0};default:return{pollutantType:r,amount:s,units:this.#_.Units[n],index:e?o?.aqi??-1:void 0}}});return j.info("✅ CreatePollutants"),i}#C(t){j.info("☑️ CreatePollutantsV7"),j.debug(`pollutantsObj: ${JSON.stringify(t)}`);let{mgm3:e,ugm3:i}=tD.Config.Units.WeatherKit,a=Object.entries(t).map(([t,a])=>{let s=Number.parseFloat(a);switch(t){case"co":return{amount:tD.ConvertUnit(s??-1,e,i),pollutantType:this.#_.Pollutants[t],units:i};case"no":case"no2":case"so2":case"o3":case"nox":case"pm25":case"pm10":return{amount:s??-1,pollutantType:this.#_.Pollutants[t],units:i};default:return null}}).filter(Boolean);return j.info("✅ CreatePollutantsV7"),a}async CurrentAirQuality(t=!0){if(!this.#_.Availability.AirQuality.includes(this.country))return j.warn("CurrentAirQuality",`Unsupported country: ${this.country}`),{metadata:this.#g(`https://www.qweather.com/air/a/${this.latitude},${this.longitude}?from=AppleWeatherService`,void 0,!0),pollutants:[],previousDayComparison:tD.Config.CompareCategoryIndexes.UNKNOWN};j.info("☑️ CurrentAirQuality");let e=await this.#x();if(!Array.isArray(e.pollutants))return j.error("AirQuality","Failed to get current air quality data."),{metadata:this.#g(`https://www.qweather.com/air/a/${this.latitude},${this.longitude}?from=AppleWeatherService`,void 0,!0),pollutants:[],previousDayComparison:tD.Config.CompareCategoryIndexes.UNKNOWN};let i=(t=>{j.info("☑️ findSupportedIndex");let e=["cn-mee","cn-mee-1h","eu-eea","us-epa","us-epa-nc"];for(let i of t)if(e.includes(i.code))return j.info("✅ indexCodeToScale",`index.code: ${i.code}`),i;return{}})(e.indexes),a=(t=>{j.info("☑️ indexCodeToScale",`code: ${t}`);let{HJ6332012:e,EPA_NowCast:i,EU_EAQI:a}=tD.Config.Scales;switch(t){case"cn-mee":case"cn-mee-1h":return j.info("✅ indexCodeToScale","HJ6332012"),e;case"us-epa":case"us-epa-nc":return j.info("✅ indexCodeToScale","EPA_NowCast"),i;case"eu-eea":return j.info("✅ indexCodeToScale","EU_EAQI"),a;default:return j.error("indexCodeToScale","不支持的code"),{}}})(i?.code),s={metadata:this.#g(`https://www.qweather.com/air/a/${this.latitude},${this.longitude}?from=AppleWeatherService`),pollutants:this.#N(e.pollutants,i?.code),previousDayComparison:tD.Config.CompareCategoryIndexes.UNKNOWN};if(!i?.code||!a?.categories)return j.error("AirQuality","No supported index found",`airQualityCurrent.indexes[].code = ${JSON.stringify(e.indexes?.map(({code:t})=>t))}`),{...s,index:-1,isSignificant:!1,categoryIndex:-1,primaryPollutant:"NOT_AVAILABLE",scale:tD.ToWeatherKitScale(tD.Config.Scales.HJ6332012.weatherKitScale)};let n=Number.parseInt(i.level,10),r=this.#_.Pollutants[i.primaryPollutant?.code]||"NOT_AVAILABLE";j.debug(`apiPrimaryPollutant: ${r}`),t||"NOT_AVAILABLE"!==r||j.info("CurrentAirQuality","Max index of pollutants is <= 50, primaryPollutant will be NOT_AVAILABLE.");let o={metadata:this.#g(`https://www.qweather.com/air/a/${this.latitude},${this.longitude}?from=AppleWeatherService`),categoryIndex:n,index:i.aqi,isSignificant:n>=a.categories.significantIndex,...s,primaryPollutant:r,scale:tD.ToWeatherKitScale(a.weatherKitScale)};if("NOT_AVAILABLE"===o.primaryPollutant){let e=tD.PrimaryPollutant(s.pollutants,a.categories),i=!t&&e.index<=50;i&&j.info("CurrentAirQuality",`Max index of pollutants ${e.pollutantType} = ${e.index} is <= 50, primaryPollutant will be set to NOT_AVAILABLE.`),i||(o.primaryPollutant=e.pollutantType)}return j.info("✅ CurrentAirQuality"),o}async YesterdayAirQuality(t){j.info("☑️ YesterdayAirQuality",`locationInfo ${JSON.stringify(t)}`);let e={metadata:this.#g(void 0,void 0,!0),categoryIndex:-1,pollutants:[]};if(!this.#_.Availability.AirQuality.includes(this.country))return j.warn("YesterdayAirQuality",`Unsupported country: ${this.country}`),e;if(!t||"TW"===t.iso||9!==t.id.length)return j.error("YesterdayAirQuality","Unsupported location"),e;let i=await this.#I(t.id);if(!i.airHourly)return j.error("YesterdayAirQuality",`Failed to get HistoricalAir(${t.id})`),e;let a=new Date().getHours(),s=Number.parseInt(i.airHourly[a].level,10),n=Number.parseInt(i.airHourly[a].aqi,10),r=this.#C(i.airHourly[a]);return j.debug(`hour: ${a}`,`index: ${n}`),j.info("✅ YesterdayAirQuality",`pollutants: ${JSON.stringify(r)}`,`categoryIndex: ${s}`),{metadata:this.#g(i.fxLink),categoryIndex:s,index:n,pollutants:r,primaryPollutant:this.#_.Pollutants[i.airHourly[a].primary]||"NOT_AVAILABLE",scale:tD.ToWeatherKitScale(tD.Config.Scales.HJ6332012.weatherKitScale)}}#A(t,e){return new Date(`${t}T${e}:00+08:00`).getTime()/1e3|0}}class tK{constructor(t,e){this.Name="WAQI",this.Version="1.4.3",j.log(`🟧 ${this.Name} v${this.Version}`),this.headers={Accept:"application/json"},this.token=e,this.version=t.version,this.language=t.language,this.latitude=t.latitude,this.longitude=t.longitude,this.country=t.country}#b={Pollutants:{co:"CO",no:"NO",no2:"NO2",so2:"SO2",o3:"OZONE",nox:"NOX",pm25:"PM2_5",pm10:"PM10",other:"NOT_AVAILABLE"}};async Nearest(t="mapq"){let e;j.info("☑️ Nearest",`mapqVersion: ${t}`);let i={url:`https://api.waqi.info/${t}/nearest?n=1&geo=1/${this.latitude}/${this.longitude}`,headers:this.headers};try{let a=await Z(i).then(t=>JSON.parse(t?.body??"{}"));switch(t){case"mapq":switch(a?.status){default:case void 0:{let t=Date.now()/1e3|0;(e={metadata:{attributionUrl:i.url,expireTime:t+3600,language:`${this.language}-${this.country}`,latitude:a?.d?.[0]?.geo?.[0],longitude:a?.d?.[0]?.geo?.[1],providerLogo:tU("WAQI",this.version),providerName:`World Air Quality Index Project 监测站:${a?.d?.[0]?.nna}`,readTime:t,reportedTime:a?.d?.[0]?.t,temporarilyUnavailable:!1,sourceType:"STATION",stationId:Number.parseInt(a?.d?.[0]?.x,10),stationKey:a?.d?.[0]?.k},categoryIndex:tD.CategoryIndex(a?.d?.[0]?.v,"WAQI_InstantCast"),index:Number.parseInt(a?.d?.[0]?.v,10),primaryPollutant:this.#b.Pollutants[a?.d?.[0]?.pol]||"NOT_AVAILABLE",scale:"EPA_NowCast"}).isSignificant=e.categoryIndex>=3;break}case"error":throw JSON.stringify({status:a?.status,reason:a?.message})}break;case"mapq2":switch(a?.status){case"ok":{let t=Date.now()/1e3|0;(e={metadata:{attributionUrl:i.url,language:`${this.language}-${this.country}`,latitude:a?.data?.stations?.[0]?.geo?.[0],longitude:a?.data?.stations?.[0]?.geo?.[1],expireTime:t+3600,providerLogo:tU("WAQI",this.version),providerName:`World Air Quality Index Project 监测站:${a?.data?.stations?.[0]?.name}`,readTime:t,reportedTime:new Date(a?.data?.stations?.[0]?.utime).getTime()/1e3|0,temporarilyUnavailable:!1,sourceType:"STATION",stationId:Number.parseInt(a?.data?.stations?.[0]?.idx,10)},categoryIndex:tD.CategoryIndex(a?.data?.stations?.[0]?.aqi,"WAQI_InstantCast"),index:Number.parseInt(a?.data?.stations?.[0]?.aqi,10),primaryPollutant:"NOT_AVAILABLE",scale:"EPA_NowCast"}).isSignificant=e.categoryIndex>=3;break}case"error":case void 0:throw JSON.stringify({status:a?.status,reason:a?.reason})}}}catch(t){j.error(`Nearest: ${t}`)}finally{j.info("✅ Nearest")}return e}async Token(t=0){let e;j.info("☑️ Token",`stationId: ${t}`);let i={url:`https://api.waqi.info/api/token/${t}`,headers:this.headers};try{let t=await Z(i).then(t=>JSON.parse(t?.body??"{}"));if(t?.status==="error")throw JSON.stringify({status:t?.status,reason:t?.data});switch(t?.rxs?.status){case"ok":switch(t?.rxs?.obs?.[0]?.status){case"ok":e=t?.rxs?.obs?.[0]?.msg?.token;break;case"error":throw JSON.stringify({status:t?.rxs?.obs?.[0]?.status,reason:t?.rxs?.obs?.[0]?.msg})}break;case"error":case void 0:throw JSON.stringify({status:t?.rxs?.status,reason:t?.rxs})}}catch(t){j.error(`Token: ${t}`)}finally{j.info("✅ Token")}return e}async AQI(t=0,e=this.token){let i;j.info("☑️ AQI",`stationId: ${t}`,`token: ${e}`);let a={url:`https://api.waqi.info/api/feed/@${t}/aqi.json`,headers:this.headers,body:`token=${e}&id=${t}`};try{let e=await Z(a).then(t=>JSON.parse(t?.body??"{}"));if(e?.status==="error")throw JSON.stringify({status:e?.status,reason:e?.data});switch(e?.rxs?.status){case"ok":switch(e?.rxs?.obs?.[0]?.status){case"ok":{let a=Date.now()/1e3|0;(i={metadata:{attributionUrl:e?.rxs?.obs?.[0]?.msg?.city?.url,expireTime:a+3600,language:`${this.language}-${this.country}`,latitude:e?.rxs?.obs?.[0]?.msg?.city?.geo?.[0],longitude:e?.rxs?.obs?.[0]?.msg?.city?.geo?.[1],providerLogo:tU("WAQI",this.version),providerName:`World Air Quality Index Project 监测站:${e?.rxs?.obs?.[0]?.msg?.city?.name}`,readTime:a,reportedTime:e?.rxs?.obs?.[0]?.msg?.time?.v,temporarilyUnavailable:!1,sourceType:"STATION",stationId:t},categoryIndex:tD.CategoryIndex(e?.rxs?.obs?.[0]?.msg?.aqi,"WAQI_InstantCast"),index:Number.parseInt(e?.rxs?.obs?.[0]?.msg?.aqi,10),primaryPollutant:this.#b.Pollutants[e?.rxs?.obs?.[0]?.msg?.dominentpol]||"NOT_AVAILABLE",scale:"EPA_NowCast"}).isSignificant=i.categoryIndex>=3;break}case"error":case void 0:throw JSON.stringify({status:e?.rxs?.[0]?.status,reason:e?.rxs?.obs?.[0]?.msg})}break;case"error":case void 0:throw JSON.stringify({status:e?.rxs?.status,reason:e?.rxs})}}catch(t){j.error(`AQI: ${t}`)}finally{j.info("✅ AQI")}return i}async AQI2(t=0,e=this.token){let i;j.info("☑️ AQI2",`stationId: ${t}`);let a={url:`https://api2.waqi.info/feed/geo:${this.latitude};${this.longitude}/?token=${e}`,headers:this.headers};t&&(a.url=`https://api2.waqi.info/feed/@${t}/?token=${e}`);try{let e=await Z(a).then(t=>JSON.parse(t?.body??"{}"));switch(e?.status){case"ok":{let a=Date.now()/1e3|0;(i={metadata:{attributionUrl:e?.data?.city?.url,expireTime:a+3600,language:`${this.language}-${this.country}`,latitude:e?.data?.city?.geo?.[0],longitude:e?.data?.city?.geo?.[1],providerLogo:tU("WAQI",this.version),providerName:`World Air Quality Index Project 监测站:${e?.data?.city?.name}`,readTime:a,reportedTime:e?.data?.time?.v,temporarilyUnavailable:!1,sourceType:"STATION",stationId:t||Number.parseInt(e?.data?.idx,10)},categoryIndex:tD.CategoryIndex(e?.data?.aqi,"WAQI_InstantCast"),index:Number.parseInt(e?.data?.aqi,10),primaryPollutant:this.#b.Pollutants[e?.data?.dominentpol]||"NOT_AVAILABLE",scale:"EPA_NowCast"}).isSignificant=i.categoryIndex>=3;break}case"error":case void 0:throw JSON.stringify({status:e?.status,reason:e?.data})}}catch(t){j.error(`AQI2: ${t}`)}finally{j.info("✅ AQI2")}return i}}async function tV(t,e){let i=new URL(t.url);j.info(`url: ${i.toJSON()}`);let a=i.pathname.split("/").filter(Boolean);j.info(`PATHs: ${a}`);let s=(e.headers?.["Content-Type"]??e.headers?.["content-type"])?.split(";")?.[0];j.info(`FORMAT: ${s}`);let{Settings:n,Caches:r,Configs:o}=function(t,e,i){j.info("☑️ Set Environment Variables");let{Settings:a,Caches:s,Configs:n}=function(t,e,i){i?.Default?.Settings?.LogLevel&&(j.logLevel=i.Default.Settings.LogLevel),j.debug("☑️ getStorage"),e=[e].flat(1/0);let a={Settings:i?.Default?.Settings||{},Configs:i?.Default?.Configs||{},Caches:{}};j.debug("Default",`Root.Settings类型: ${typeof a.Settings}`,`Root.Settings: ${JSON.stringify(a.Settings)}`);let s=X.getItem(t,{});switch(s&&(j.debug("☑️ PersistentStore",`PersistentStore类型: ${typeof s}`,`PersistentStore内容: ${JSON.stringify(s||{})}`),e.forEach(t=>{"string"==typeof s?.[t]?.Settings&&(s[t].Settings=JSON.parse(s[t].Settings||"{}")),"string"==typeof s?.[t]?.Caches&&(s[t].Caches=JSON.parse(s[t].Caches||"{}"))}),s.LogLevel&&(j.logLevel=s.LogLevel),j.debug("✅ PersistentStore",`Root.Settings类型: ${typeof a.Settings}`,`Root.Settings: ${JSON.stringify(a.Settings)}`)),e.forEach(t=>{Y.merge(a.Configs,i?.[t]?.Configs),Y.merge(a.Caches,s?.[t]?.Caches)}),$argument.Storage){case"Argument":case"$argument":e.forEach(t=>{Y.merge(a.Settings,i?.[t]?.Settings,s?.[t]?.Settings)}),Y.merge(a.Settings,$argument);break;default:case"BoxJs":case"boxjs":case"PersistentStore":case"$persistentStore":e.forEach(t=>{Y.merge(a.Settings,i?.[t]?.Settings,s?.[t]?.Settings)});break;case"database":e.forEach(t=>{Y.merge(a.Settings,i?.[t]?.Settings)});break;case void 0:e.forEach(t=>{Y.merge(a.Settings,i?.[t]?.Settings)}),Y.merge(a.Settings,$argument),e.forEach(t=>{Y.merge(a.Settings,s?.[t]?.Settings)})}return a.Settings.LogLevel&&(j.logLevel=a.Settings.LogLevel),j.debug("✅ Merge",`Root.Settings类型: ${typeof a.Settings}`,`Root.Settings: ${JSON.stringify(a.Settings)}`),function t(e,i){for(let a in e){let s=e[a];e[a]="object"==typeof s&&null!==s?t(s,i):i(a,s)}return e}(a.Settings,(t,e)=>{if(j.debug("☑️ traverseObject",`${t}: ${typeof e}`,`${t}: ${JSON.stringify(e)}`),"string"==typeof e)switch(e){case"true":case"false":case"[]":e=JSON.parse(e);break;default:e=e.includes(",")?(function(t){switch(typeof t){case"string":return t.split(",");case"number":case"boolean":return[t];default:return t||[]}})(e).map(t=>tt(t)):tt(e)}return e}),j.debug("✅ traverseObject",`Root.Settings类型: ${typeof a.Settings}`,`Root.Settings: ${JSON.stringify(a.Settings)}`),j.debug("✅ getStorage"),a}(t,e,i);if(j.info(`typeof Settings: ${typeof a}`,`Settings: ${JSON.stringify(a,null,2)}`),r("Weather.Replace"),r("AirQuality.Current.Index.Replace"),r("AirQuality.Current.Pollutants.Units.Replace"),n.Locale&&(n.Locale=new Map(n.Locale)),n.i18n)for(let t in n.i18n)n.i18n[t]=new Map(n.i18n[t]);return j.info("✅ Set Environment Variables"),{Settings:a,Caches:s,Configs:n};function r(t){let e=Y.get(a,t);Array.isArray(e)||Y.set(a,t,e?[e]:[])}}("iRingo","WeatherKit",z);j.logLevel=n.LogLevel;let d={};switch(s){case void 0:case"application/x-www-form-urlencoded":case"text/plain":default:case"application/x-mpegURL":case"application/x-mpegurl":case"application/vnd.apple.mpegurl":case"audio/mpegurl":case"text/xml":case"text/html":case"text/plist":case"application/xml":case"application/plist":case"application/x-plist":case"text/vtt":case"application/vtt":break;case"text/json":case"application/json":d=JSON.parse(e.body),"weatherkit.apple.com"===i.hostname&&i.pathname.startsWith("/api/v1/availability/")&&(d=o?.Availability?.v2),e.body=JSON.stringify(d);break;case"application/vnd.apple.flatbuffer":case"application/protobuf":case"application/x-protobuf":case"application/vnd.google.protobuf":case"application/grpc":case"application/grpc+proto":case"application/octet-stream":{let t=e.bodyBytes?new Uint8Array(e.bodyBytes):e.body??new Uint8Array;if("application/vnd.apple.flatbuffer"===s){let e=new tn(t),a=new tr;if("weatherkit.apple.com"===i.hostname&&i.pathname.startsWith("/api/v2/weather/")){d=tR.decode(e,"all");let t=function(t=new URL($request.url)){j.info("☑️ parseWeatherKitURL");let e=t?.pathname.match(/^\/api\/(?v1|v2|v3)\/(availability|weather)\/(?\w+)(?:-\w+)?(-(?[A-Z]{2}))?\/(?-?\d+\.?\d*)\/(?-?\d+\.?\d*)$/i)?.groups,i={version:e?.version,language:e?.language,latitude:e?.latitude,longitude:e?.longitude,country:t?.searchParams?.get("country")||e?.country,dataSets:t?.searchParams?.get("dataSets")?.split(",")||[]};return j.info("✅ parseWeatherKitURL",`🟧version: ${i.version} 🟧language: ${i.language} 🟧country: ${i.country}`,`🟧latitude: ${i.latitude} 🟧longitude: ${i.longitude}`),i}(i),s={colorfulClouds:new t$(t,n?.API?.ColorfulClouds?.Token||"Y2FpeXVuX25vdGlmeQ=="),qWeather:new tH(t,n?.API?.QWeather?.Token,n?.API?.QWeather?.Host),waqi:new tK(t,n?.API?.WAQI?.Token),country:t.country};await Promise.all(t.dataSets.map(async t=>{switch(t){case"airQuality":d.airQuality=await tY(d.airQuality,n,r,s);break;case"currentWeather":d.currentWeather=await tk(d.currentWeather,n,s),d?.currentWeather?.metadata?.providerName&&!d?.currentWeather?.metadata?.providerLogo&&(d.currentWeather.metadata.providerLogo=tU(d?.currentWeather?.metadata?.providerName,"v2"));break;case"forecastDaily":d.forecastDaily=await tG(d.forecastDaily,n,s),d?.forecastDaily?.metadata?.providerName&&!d?.forecastDaily?.metadata?.providerLogo&&(d.forecastDaily.metadata.providerLogo=tU(d?.forecastDaily?.metadata?.providerName,"v2"));break;case"forecastHourly":d.forecastHourly=await tQ(d.forecastHourly,n,s),d?.forecastHourly?.metadata?.providerName&&!d?.forecastHourly?.metadata?.providerLogo&&(d.forecastHourly.metadata.providerLogo=tU(d?.forecastHourly?.metadata?.providerName,"v2"));break;case"forecastNextHour":d.forecastNextHour=await tj(d.forecastNextHour,n,s),d?.forecastNextHour?.metadata?.providerName&&!d?.forecastNextHour?.metadata?.providerLogo&&(d.forecastNextHour.metadata.providerLogo=tU(d?.forecastNextHour?.metadata?.providerName,"v2"))}}));let o=tR.encode(a,"all",d);a.finish(o)}t=a.asUint8Array()}e.body=t}}return e}async function tk(t,e,i){let a;if(j.info("☑️ InjectCurrentWeather"),!e?.Weather?.Replace?.includes(i.country))return j.warn("InjectCurrentWeather",`Unreplaced country: ${i.country}`),j.info("✅ InjectCurrentWeather"),t;switch(e?.Weather?.Provider){case"WeatherKit":default:break;case"QWeather":a=await i.qWeather.WeatherNow();break;case"ColorfulClouds":a=await i.colorfulClouds.CurrentWeather()}return a?.metadata&&(a.metadata={...t?.metadata,...a.metadata},t={...t,...a}),j.info("✅ InjectCurrentWeather"),t}async function tG(t,e,i){let a;if(j.info("☑️ InjectForecastDaily"),!e?.Weather?.Replace?.includes(i.country))return j.warn("InjectForecastDaily",`Unreplaced country: ${i.country}`),j.info("✅ InjectForecastDaily"),t;switch(e?.Weather?.Provider){case"WeatherKit":default:break;case"QWeather":a=await i.qWeather.Daily();break;case"ColorfulClouds":{let e=t.days?.length||11,s=t.days?.[0]?.forecastStart||void 0;a=await i.colorfulClouds.Daily(e,s)}}return a?.metadata&&(t.metadata={...t?.metadata,...a.metadata},tW.mergeForecast(t?.days,a?.days)),j.info("✅ InjectForecastDaily"),t}async function tQ(t,e,i){let a;if(j.info("☑️ InjectForecastHourly"),!e?.Weather?.Replace?.includes(i.country))return j.warn("InjectForecastHourly",`Unreplaced country: ${i.country}`),j.info("✅ InjectForecastHourly"),t;switch(e?.Weather?.Provider){case"WeatherKit":default:break;case"QWeather":a=await i.qWeather.Hourly();break;case"ColorfulClouds":{let e=t.hours?.length||273,s=t.hours?.[0]?.forecastStart||void 0;a=await i.colorfulClouds.ForecastHourly(e,s)}}return a?.metadata&&(t.metadata={...t?.metadata,...a.metadata},t.hours=tW.mergeForecast(t?.hours,a?.hours)),j.info("✅ InjectForecastHourly"),t}async function tj(t,e,i){let a;if(j.info("☑️ InjectForecastNextHour"),t)return j.info("✅ InjectForecastNextHour"),t;switch(e?.NextHour?.Provider){case"WeatherKit":break;case"QWeather":a=await i.qWeather.Minutely();break;default:a=await i.colorfulClouds.Minutely()}return a?.metadata&&(a.metadata={...t?.metadata,...a.metadata},t={...t,...a}),j.info("✅ InjectForecastNextHour"),t}async function tY(t,e,i,a){t=tD.FixPollutantsUnits(t);let s=!Array.isArray(t?.pollutants)||0===t.pollutants.length,n=s?await tJ(e,a):t,r=s&&!!(n?.metadata&&!n.metadata.temporarilyUnavailable),o=r||e?.AirQuality?.Current?.Index?.Replace?.includes(tD.GetNameFromScale(t?.scale)),d=o?await tq(n,e,a):n,c=t?.previousDayComparison??tD.Config.CompareCategoryIndexes.UNKNOWN,l=(o&&e?.AirQuality?.Comparison?.ReplaceWhenCurrentChange?tD.Config.CompareCategoryIndexes.UNKNOWN:c)===tD.Config.CompareCategoryIndexes.UNKNOWN,u=o?e?.AirQuality?.Current?.Index?.Provider:"WeatherKit",p=l?await tZ(d,u,e,i,a):{...d,previousDayComparison:c},b=t?.metadata,h=n?.metadata,m=d?.metadata,_=p?.metadata,y=[...b?.providerName&&!b.temporarilyUnavailable?[b.providerName]:[],...r&&h?.providerName&&!h.temporarilyUnavailable?[`污染物:${h.providerName}`]:[],...o&&m?.providerName&&!m.temporarilyUnavailable?[`指数:${tD.appendScaleToProviderName(d,e)}`]:[],...l&&_?.providerName&&!_.temporarilyUnavailable?[`对比昨日: ${_.providerName}`]:[]],f=b?.providerName||h?.providerName||m?.providerName||_?.providerName;return t={...t,...d?.metadata&&!d.metadata.temporarilyUnavailable?d:{},metadata:{...t?.metadata?t.metadata:n?.metadata,providerName:y.join("\n"),...f?{providerLogo:tU(f,"v2")}:{}},pollutants:tD.ConvertPollutants(t,n,o,d,e)??[],previousDayComparison:p?.previousDayComparison??tD.Config.CompareCategoryIndexes.UNKNOWN},j.debug(`airQuality: ${JSON.stringify(t,null,2)}`),t}async function tJ(t,e){if(j.info("☑️ InjectPollutants"),t?.AirQuality?.Current?.Pollutants?.Provider==="QWeather"){let t=await e.qWeather.CurrentAirQuality();return j.info("✅ InjectPollutants"),t}{let t=await e.colorfulClouds.CurrentAirQuality();return j.info("✅ InjectPollutants"),t}}async function tq(t,e,i){switch(j.info("☑️ InjectIndex"),e?.AirQuality?.Current?.Index?.Provider){case"QWeather":{let t=await i.qWeather.CurrentAirQuality(e.AirQuality.Current.Index.ForceCNPrimaryPollutants);return j.info("✅ InjectIndex"),t}case"ColorfulCloudsUS":case"ColorfulCloudsCN":{let t=await i.colorfulClouds.CurrentAirQuality("ColorfulCloudsUS"===e.AirQuality.Current.Index.Provider,e.AirQuality.Current.Index.ForceCNPrimaryPollutants);return j.info("✅ InjectIndex"),t}case"Calculate":default:{let i=tD.Pollutants2AQI(t,e);return j.info("✅ InjectIndex"),i}case"WAQI":if(e?.API?.WAQI?.Token)return await i.waqi.AQI2();{let t=await i.waqi.Nearest(),e=await i.waqi.Token(t?.metadata?.stationId),a=await i.waqi.AQI(t?.metadata?.stationId,e);return{metadata:{...t?.metadata,...a?.metadata},...t,...a}}}}async function tZ(t,e,i,a,s){j.info("☑️ InjectComparison");let{UNKNOWN:n}=tD.Config.CompareCategoryIndexes,r=(t,e,i)=>{switch(j.info("☑️ isHJ6332012",`currentIndexProvider: ${t}`),t){case"Calculate":{j.debug(`Settings?.AirQuality?.Calculate?.Algorithm: ${i?.AirQuality?.Calculate?.Algorithm}`);let t=i?.AirQuality?.Calculate?.Algorithm==="WAQI_InstantCast_CN";return j.info("✅ isHJ6332012",t),t}case"QWeather":case"ColorfulCloudsCN":return j.info("✅ isHJ6332012",!0),!0;case"WeatherKit":{let t=tD.GetNameFromScale(e)===tD.Config.Scales.HJ6332012.weatherKitScale.name;return j.info("✅ isHJ6332012",t),t}default:return j.info("✅ isHJ6332012",!1),!1}},o=async(t,e)=>{j.info("☑️ colorfulCloudsComparison",`currentCategoryIndex: ${e}`);let i=await s.colorfulClouds.YesterdayAirQuality(t),a=(t=!1)=>({...i.metadata,providerName:`指数:${tD.appendScaleToProviderName(i)}`,temporarilyUnavailable:t});if(!i.metadata.temporarilyUnavailable)if(e){let t={...i,metadata:a(!1),previousDayComparison:tD.CompareCategoryIndexes(e,i.categoryIndex)};return j.info("✅ colorfulCloudsComparison"),t}else{let e=await s.colorfulClouds.CurrentAirQuality(t);if(!e.metadata.temporarilyUnavailable){j.debug(`colorfulCloudsCurrent?.index: ${e?.index}`);let t={...i,metadata:a(!1),previousDayComparison:tD.CompareCategoryIndexes(e.categoryIndex,i.categoryIndex)};return j.info("✅ colorfulCloudsComparison"),t}}return j.error("colorfulCloudsComparison",`无法从彩云天气获取${i.metadata.temporarilyUnavailable?"昨日":"今日"}的空气质量数据`),{...i,metadata:a(!0),previousDayComparison:n}},d=async(t,e)=>{j.info("☑️ qweatherComparison",`currentCategoryIndex: ${t}`);let r=await tH.GetLocationsGrid(a?.qweather,t=>{a.qweather=t,X.setItem("@iRingo.WeatherKit.Caches",{...a,qweather:t})}),{latitude:o,longitude:d}=s.qWeather,c=tH.GetLocationInfo(r,o,d),l=await s.qWeather.YesterdayAirQuality(c),u=(t,e=!1)=>({...l.metadata,providerName:`污染物:和风天气,指数:${t}`,temporarilyUnavailable:e});if(!l.metadata.temporarilyUnavailable){let a=e(l),n=e?{...a,metadata:{...a.metadata,providerName:tD.appendScaleToProviderName(a,i)}}:{...l,metadata:{...l.metadata,providerName:tD.appendScaleToProviderName(l)}};if(t){let e={...l,metadata:u(n.metadata.providerName,!1),previousDayComparison:tD.CompareCategoryIndexes(t,n.categoryIndex)};return j.info("✅ qweatherComparison"),e}{let t=await s.qWeather.CurrentAirQuality(c);if(!t.metadata.temporarilyUnavailable){j.debug(`qweatherCurrent?.index: ${t?.index}`);let e={...l,metadata:u(n.metadata.providerName,!1),previousDayComparison:tD.CompareCategoryIndexes(t.categoryIndex,n.categoryIndex)};return j.info("✅ qweatherComparison"),e}}}return j.error("qweatherComparison",`无法从和风天气获取${l.metadata.temporarilyUnavailable?"昨日":"今日"}空气质量数据`),{...l,metadata:u(l.metadata.providerName,!0),previousDayComparison:n}};switch(i?.AirQuality?.Comparison?.Yesterday?.IndexProvider){case"Calculate":{let e=tD.chooseAlogrithm(t,i),a=i?.AirQuality?.Comparison?.Yesterday?.PollutantsProvider;if(j.debug(`Settings?.AirQuality?.Comparison?.Yesterday?.PollutantsProvider: ${a}`),""!==e){let a=await d(t?.categoryIndex,t=>tD.Pollutants2AQI(t,i,{algorithm:e}));return j.info("✅ InjectComparison"),a}return j.error("InjectComparison","不支持今日空气质量的标准"),{metadata:{providerName:"iRingo",temporarilyUnavailable:!0},previousDayComparison:n}}case"QWeather":{let a=await d(r(e,t?.scale,i)?t?.categoryIndex:void 0);return j.info("✅ InjectComparison"),a}case"ColorfulCloudsCN":{let a=o(!1,r(e,t?.scale,i)?t?.categoryIndex:void 0);return j.info("✅ InjectComparison"),a}default:{let i=o(!0,(t=>{switch(j.info("☑️ isHJ6332012",`currentIndexProvider: ${t}`),t){case"WAQI":case"ColorfulCloudsUS":return j.info("✅ isHJ6332012",!0),!0;default:return j.info("✅ isHJ6332012",!1),!1}})(e)?t?.categoryIndex:void 0);return j.info("✅ InjectComparison"),i}}}(async()=>{$response=await tV($request,$response)})().catch(t=>j.error(t)).finally(()=>(function(t={}){switch(Q){case"Surge":t.policy&&Y.set(t,"headers.X-Surge-Policy",t.policy),j.log("\uD83D\uDEA9 执行结束!",`🕛 ${new Date().getTime()/1e3-$script.startTime} 秒`),$done(t);break;case"Loon":t.policy&&(t.node=t.policy),j.log("\uD83D\uDEA9 执行结束!",`🕛 ${(new Date-$script.startTime)/1e3} 秒`),$done(t);break;case"Stash":t.policy&&Y.set(t,"headers.X-Stash-Selected-Proxy",encodeURI(t.policy)),j.log("\uD83D\uDEA9 执行结束!",`🕛 ${(new Date-$script.startTime)/1e3} 秒`),$done(t);break;case"Egern":case"Shadowrocket":j.log("\uD83D\uDEA9 执行结束!"),$done(t);break;case"Quantumult X":switch(t.policy&&Y.set(t,"opts.policy",t.policy),typeof(t=Y.pick(t,["status","url","headers","body","bodyBytes"])).status){case"number":t.status=`HTTP/1.1 ${t.status} ${J[t.status]}`;break;case"string":case"undefined":break;default:throw TypeError(`${Function.name}: 参数类型错误, status 必须为数字或字符串`)}t.body instanceof ArrayBuffer?(t.bodyBytes=t.body,t.body=void 0):ArrayBuffer.isView(t.body)?(t.bodyBytes=t.body.buffer.slice(t.body.byteOffset,t.body.byteLength+t.body.byteOffset),t.body=void 0):t.body&&(t.bodyBytes=void 0),j.log("\uD83D\uDEA9 执行结束!"),$done(t);break;case"Node.js":j.log("\uD83D\uDEA9 执行结束!"),process.exit(1);break;default:j.log("\uD83D\uDEA9 执行结束!")}})($response))})();