diff --git a/frames/austria.raw b/frames/austria.raw index ba1c2112..1e95ed80 100644 --- a/frames/austria.raw +++ b/frames/austria.raw @@ -42,4 +42,4 @@ DB 09 06 01 00 47 07 00 FF 12 00 54 02 02 0F FE 16 21 09 06 01 00 0D 07 00 FF 10 03 CF 02 02 0F FD 16 FF // Power factor 09 0C 31 37 38 32 31 30 30 31 35 31 36 35 // Meter ID -01 67 \ No newline at end of file +01 67 diff --git a/frames/lng2.raw b/frames/lng2.raw new file mode 100644 index 00000000..b76f759c --- /dev/null +++ b/frames/lng2.raw @@ -0,0 +1,33 @@ +7E +A0 76 CE FF 03 13 3C 02 E6 E7 00 + +DB +08 4C 47 5A 67 72 A9 A1 11 +5E 30 00 21 80 F7 FE B8 07 C6 +72 B1 90 AE AC 15 D0 AD 95 7B AC 13 7E 67 D8 A2 +F0 43 51 3C 63 B6 A1 89 10 AE 9A 7E 55 4A 12 49 +B9 6D EB A5 7B 57 03 69 9A BF 16 5E AD 2A 54 41 +65 5E 79 C6 95 71 92 46 A2 3F 5B 63 0D 53 96 7D +42 52 1F A3 80 1C 00 E8 E3 +A4 B3 9B 86 CB E5 2D 2C CA B0 E2 B7 +AE 4D +7E + + +0f00057e41 // UI Frame header +0c07e60c0c010c232dff800000 // Date & time +020e // Structure with 14 items +1200ec // U1 = 236 V +1200ec // U2 = 236 V +1200ec // U3 = 236 V +120000 // I1 = 0.00 A +12002e // I2 = 0.46 A +12001a // I3 = 0.26 A +060000007d // Active import = 125 W +0600000000 // Active export = 0 W +0601a96ebd // Accumulated import = 27881.149 kWh +0600001dc3 // Accumulated export = 7.619 kWh +120190 // 400 ? +120003 // 3 ? +120120 // 288 ? +09083330313337313831 // Meter ID = 30137181 diff --git a/lib/AmsConfiguration/include/AmsConfiguration.h b/lib/AmsConfiguration/include/AmsConfiguration.h index ceffb99a..7acbd349 100644 --- a/lib/AmsConfiguration/include/AmsConfiguration.h +++ b/lib/AmsConfiguration/include/AmsConfiguration.h @@ -21,6 +21,7 @@ #define CONFIG_DOMOTICZ_START 856 #define CONFIG_NTP_START 872 #define CONFIG_MQTT_START 1004 +#define CONFIG_HA_START 1680 #define CONFIG_METER_START_93 224 @@ -152,6 +153,13 @@ struct DomoticzConfig { uint16_t cl1idx; }; // 10 +struct HomeAssistantConfig { + uint8_t tag; // Just to find out if we have this config already. Can be removed in v2.3 + char discoveryPrefix[64]; + char discoveryHostname[64]; + char discoveryNameTag[16]; +}; // 145 + struct NtpConfig { bool enable; bool dhcp; @@ -254,8 +262,10 @@ public: bool getDomoticzConfig(DomoticzConfig&); bool setDomoticzConfig(DomoticzConfig&); void clearDomo(DomoticzConfig&); - bool isDomoChanged(); - void ackDomoChange(); + + bool getHomeAssistantConfig(HomeAssistantConfig&); + bool setHomeAssistantConfig(HomeAssistantConfig&); + void clearHomeAssistantConfig(HomeAssistantConfig&); bool getNtpConfig(NtpConfig&); bool setNtpConfig(NtpConfig&); @@ -294,7 +304,7 @@ protected: private: uint8_t configVersion = 0; - bool wifiChanged, mqttChanged, meterChanged = true, domoChanged, ntpChanged = true, entsoeChanged = false, energyAccountingChanged = true; + bool wifiChanged, mqttChanged, meterChanged = true, ntpChanged = true, entsoeChanged = false, energyAccountingChanged = true; uint8_t tempSensorCount = 0; TempSensorConfig** tempSensors = NULL; @@ -312,3 +322,4 @@ private: void deleteFromFs(uint8_t version); }; #endif + diff --git a/lib/AmsConfiguration/src/AmsConfiguration.cpp b/lib/AmsConfiguration/src/AmsConfiguration.cpp index 1ebe2c7a..cbf69fd6 100644 --- a/lib/AmsConfiguration/src/AmsConfiguration.cpp +++ b/lib/AmsConfiguration/src/AmsConfiguration.cpp @@ -309,15 +309,14 @@ bool AmsConfiguration::getDomoticzConfig(DomoticzConfig& config) { bool AmsConfiguration::setDomoticzConfig(DomoticzConfig& config) { DomoticzConfig existing; if(getDomoticzConfig(existing)) { - domoChanged |= config.elidx != existing.elidx; - domoChanged |= config.vl1idx != existing.vl1idx; - domoChanged |= config.vl2idx != existing.vl2idx; - domoChanged |= config.vl3idx != existing.vl3idx; - domoChanged |= config.cl1idx != existing.cl1idx; + mqttChanged |= config.elidx != existing.elidx; + mqttChanged |= config.vl1idx != existing.vl1idx; + mqttChanged |= config.vl2idx != existing.vl2idx; + mqttChanged |= config.vl3idx != existing.vl3idx; + mqttChanged |= config.cl1idx != existing.cl1idx; } else { - domoChanged = true; + mqttChanged = true; } - mqttChanged = domoChanged; EEPROM.begin(EEPROM_SIZE); EEPROM.put(CONFIG_DOMOTICZ_START, config); bool ret = EEPROM.commit(); @@ -333,12 +332,45 @@ void AmsConfiguration::clearDomo(DomoticzConfig& config) { config.cl1idx = 0; } -bool AmsConfiguration::isDomoChanged() { - return domoChanged; +bool AmsConfiguration::getHomeAssistantConfig(HomeAssistantConfig& config) { + if(hasConfig()) { + EEPROM.begin(EEPROM_SIZE); + EEPROM.get(CONFIG_HA_START, config); + if(config.tag != 0xA7) clearHomeAssistantConfig(config); + EEPROM.end(); + return true; + } else { + clearHomeAssistantConfig(config); + return false; + } } -void AmsConfiguration::ackDomoChange() { - domoChanged = false; +bool AmsConfiguration::setHomeAssistantConfig(HomeAssistantConfig& config) { + HomeAssistantConfig existing; + if(getHomeAssistantConfig(existing)) { + mqttChanged |= strcmp(config.discoveryPrefix, existing.discoveryPrefix) != 0; + mqttChanged |= strcmp(config.discoveryHostname, existing.discoveryHostname) != 0; + mqttChanged |= strcmp(config.discoveryNameTag, existing.discoveryNameTag) != 0; + } else { + mqttChanged = true; + } + + stripNonAscii((uint8_t*) config.discoveryPrefix, 64); + stripNonAscii((uint8_t*) config.discoveryHostname, 64); + stripNonAscii((uint8_t*) config.discoveryNameTag, 16); + + EEPROM.begin(EEPROM_SIZE); + EEPROM.put(CONFIG_HA_START, config); + bool ret = EEPROM.commit(); + EEPROM.end(); + return ret; +} + +void AmsConfiguration::clearHomeAssistantConfig(HomeAssistantConfig& config) { + config.tag = 0xA7; + strcpy(config.discoveryPrefix, ""); + strcpy(config.discoveryHostname, ""); + strcpy(config.discoveryNameTag, ""); } bool AmsConfiguration::pinUsed(uint8_t pin, GpioConfig& config) { diff --git a/lib/AmsData/include/AmsMqttHandler.h b/lib/AmsData/include/AmsMqttHandler.h index 7aab475e..fc251527 100644 --- a/lib/AmsData/include/AmsMqttHandler.h +++ b/lib/AmsData/include/AmsMqttHandler.h @@ -17,7 +17,7 @@ public: }; virtual ~AmsMqttHandler() {}; - virtual bool publish(AmsData* data, AmsData* previousState, EnergyAccounting* ea); + virtual bool publish(AmsData* data, AmsData* previousState, EnergyAccounting* ea, EntsoeApi* eapi); virtual bool publishTemperatures(AmsConfiguration*, HwTools*); virtual bool publishPrices(EntsoeApi* eapi); virtual bool publishSystem(HwTools*, EntsoeApi*, EnergyAccounting*); diff --git a/lib/AmsDataStorage/src/AmsDataStorage.cpp b/lib/AmsDataStorage/src/AmsDataStorage.cpp index 66c012e4..d091daab 100644 --- a/lib/AmsDataStorage/src/AmsDataStorage.cpp +++ b/lib/AmsDataStorage/src/AmsDataStorage.cpp @@ -54,13 +54,16 @@ bool AmsDataStorage::update(AmsData* data) { breakTime(now-3600, utcYesterday); breakTime(tz->toLocal(now-3600), ltzYesterDay); + uint64_t importCounter = data->getActiveImportCounter() * 1000; + uint64_t exportCounter = data->getActiveExportCounter() * 1000; + // Clear hours between last update and now if(day.lastMeterReadTime > now) { if(debugger->isActive(RemoteDebug::WARNING)) { debugger->printf("(AmsDataStorage) Invalid future timestamp for day plot, resetting\n"); } - day.activeImport = data->getActiveImportCounter() * 1000; - day.activeExport = data->getActiveExportCounter() * 1000; + day.activeImport = importCounter; + day.activeExport = exportCounter; day.lastMeterReadTime = now; return true; } else { @@ -83,8 +86,8 @@ bool AmsDataStorage::update(AmsData* data) { if(debugger->isActive(RemoteDebug::WARNING)) { debugger->printf("(AmsDataStorage) Invalid future timestamp for month plot, resetting\n"); } - month.activeImport = data->getActiveImportCounter() * 1000; - month.activeExport = data->getActiveExportCounter() * 1000; + month.activeImport = importCounter; + month.activeExport = exportCounter; month.lastMeterReadTime = now; } else { if(debugger->isActive(RemoteDebug::DEBUG)) { @@ -110,9 +113,15 @@ bool AmsDataStorage::update(AmsData* data) { // Update day plot if(!isDayHappy()) { - if(day.activeImport == 0 || now - day.lastMeterReadTime > 86400) { - day.activeImport = data->getActiveImportCounter() * 1000; - day.activeExport = data->getActiveExportCounter() * 1000; + if(day.activeImport > importCounter || day.activeExport > exportCounter) { + day.activeImport = importCounter; + day.activeExport = exportCounter; + day.lastMeterReadTime = now; + setHourImport(utcYesterday.Hour, 0); + setHourExport(utcYesterday.Hour, 0); + } else if(day.activeImport == 0 || now - day.lastMeterReadTime > 86400) { + day.activeImport = importCounter; + day.activeExport = exportCounter; day.lastMeterReadTime = now; if(debugger->isActive(RemoteDebug::WARNING)) { debugger->printf("(AmsDataStorage) Too long since last day update, clearing data\n"); @@ -122,19 +131,19 @@ bool AmsDataStorage::update(AmsData* data) { setHourExport(i, 0); } } else if(now - day.lastMeterReadTime < 4000) { - uint32_t imp = (data->getActiveImportCounter() * 1000) - day.activeImport; - uint32_t exp = (data->getActiveExportCounter() * 1000) - day.activeExport; + uint32_t imp = importCounter - day.activeImport; + uint32_t exp = exportCounter - day.activeExport; setHourImport(utcYesterday.Hour, imp); setHourExport(utcYesterday.Hour, exp); if(debugger->isActive(RemoteDebug::INFO)) debugger->printf("(AmsDataStorage) Usage for hour %d: %d - %d\n", ltzYesterDay.Hour, imp, exp); - day.activeImport = data->getActiveImportCounter() * 1000; - day.activeExport = data->getActiveExportCounter() * 1000; + day.activeImport = importCounter; + day.activeExport = exportCounter; day.lastMeterReadTime = now; } else { float mins = (now - day.lastMeterReadTime) / 60.0; - uint32_t im = (data->getActiveImportCounter() * 1000) - day.activeImport; - uint32_t ex = (data->getActiveExportCounter() * 1000) - day.activeExport; + uint32_t im = importCounter - day.activeImport; + uint32_t ex = exportCounter - day.activeExport; float ipm = im / mins; float epm = ex / mins; @@ -171,9 +180,15 @@ bool AmsDataStorage::update(AmsData* data) { // Update month plot if(ltz.Hour == 0 && !isMonthHappy()) { - if(month.activeImport == 0 || now - month.lastMeterReadTime > 2678400) { - month.activeImport = data->getActiveImportCounter() * 1000; - month.activeExport = data->getActiveExportCounter() * 1000; + if(month.activeImport > importCounter || month.activeExport > exportCounter) { + month.activeImport = importCounter; + month.activeExport = exportCounter; + month.lastMeterReadTime = now; + setDayImport(ltzYesterDay.Day, 0); + setDayExport(ltzYesterDay.Day, 0); + } else if(month.activeImport == 0 || now - month.lastMeterReadTime > 2678400) { + month.activeImport = importCounter; + month.activeExport = exportCounter; month.lastMeterReadTime = now; if(debugger->isActive(RemoteDebug::WARNING)) { debugger->printf("(AmsDataStorage) Too long since last month update, clearing data\n"); @@ -182,9 +197,9 @@ bool AmsDataStorage::update(AmsData* data) { setDayImport(i, 0); setDayExport(i, 0); } - } else if(now - month.lastMeterReadTime < 86500 && now - month.lastMeterReadTime > 86300) { - int32_t imp = (data->getActiveImportCounter() * 1000) - month.activeImport; - int32_t exp = (data->getActiveExportCounter() * 1000) - month.activeExport; + } else if(now - month.lastMeterReadTime < 90100 && now - month.lastMeterReadTime > 82700) { // DST days are 23h (82800s) and 25h (90000) + int32_t imp = importCounter - month.activeImport; + int32_t exp = exportCounter - month.activeExport; if(debugger->isActive(RemoteDebug::INFO)) { debugger->printf("(AmsDataStorage) Usage for day %d: %d - %d\n", ltzYesterDay.Day, imp, exp); @@ -192,8 +207,8 @@ bool AmsDataStorage::update(AmsData* data) { setDayImport(ltzYesterDay.Day, imp); setDayExport(ltzYesterDay.Day, exp); - month.activeImport = data->getActiveImportCounter() * 1000; - month.activeExport = data->getActiveExportCounter() * 1000; + month.activeImport = importCounter; + month.activeExport = exportCounter; month.lastMeterReadTime = now; } else { // Make sure last month read is at midnight @@ -205,8 +220,8 @@ bool AmsDataStorage::update(AmsData* data) { } float hrs = (now - month.lastMeterReadTime) / 3600.0; - uint32_t im = (data->getActiveImportCounter() * 1000) - month.activeImport; - uint32_t ex = (data->getActiveExportCounter() * 1000) - month.activeExport; + uint32_t im = importCounter - month.activeImport; + uint32_t ex = exportCounter - month.activeExport; float iph = im / hrs; float eph = ex / hrs; @@ -544,17 +559,17 @@ bool AmsDataStorage::isDayHappy() { tmElements_t tm, last; if(now < day.lastMeterReadTime) { - if(debugger->isActive(RemoteDebug::VERBOSE)) debugger->printf("(AmsDataStorage) Day %lu < %lu\n", (int32_t) now, (int32_t) day.lastMeterReadTime); - return false; - } - if(now-day.lastMeterReadTime > 3600) { - if(debugger->isActive(RemoteDebug::VERBOSE)) debugger->printf("(AmsDataStorage) Day %lu - %lu > 3600\n", (int32_t) now, (int32_t) day.lastMeterReadTime); + if(debugger->isActive(RemoteDebug::VERBOSE)) debugger->printf("(AmsDataStorage) Day data timestamp %lu < %lu\n", (int32_t) now, (int32_t) day.lastMeterReadTime); return false; } breakTime(tz->toLocal(now), tm); breakTime(tz->toLocal(day.lastMeterReadTime), last); + if(now-day.lastMeterReadTime > 3600) { + if(debugger->isActive(RemoteDebug::VERBOSE)) debugger->printf("(AmsDataStorage) Day data timestamp age %lu - %lu > 3600\n", (int32_t) now, (int32_t) day.lastMeterReadTime); + return false; + } if(tm.Hour > last.Hour) { - if(debugger->isActive(RemoteDebug::VERBOSE)) debugger->printf("(AmsDataStorage) Day %d > %d\n", tm.Hour, last.Hour); + if(debugger->isActive(RemoteDebug::VERBOSE)) debugger->printf("(AmsDataStorage) Day data hour of last timestamp %d > %d\n", tm.Hour, last.Hour); return false; } @@ -572,17 +587,14 @@ bool AmsDataStorage::isMonthHappy() { tmElements_t tm, last; if(now < month.lastMeterReadTime) { - if(debugger->isActive(RemoteDebug::VERBOSE)) debugger->printf("(AmsDataStorage) Month %lu < %lu\n", (int32_t) now, (int32_t) month.lastMeterReadTime); - return false; - } - if(now-month.lastMeterReadTime > 86400) { - if(debugger->isActive(RemoteDebug::VERBOSE)) debugger->printf("(AmsDataStorage) Month %lu - %lu > 3600\n", (int32_t) now, (int32_t) month.lastMeterReadTime); + if(debugger->isActive(RemoteDebug::VERBOSE)) debugger->printf("(AmsDataStorage) Month data timestamp %lu < %lu\n", (int32_t) now, (int32_t) month.lastMeterReadTime); return false; } + breakTime(tz->toLocal(now), tm); breakTime(tz->toLocal(month.lastMeterReadTime), last); if(tm.Day > last.Day) { - if(debugger->isActive(RemoteDebug::VERBOSE)) debugger->printf("(AmsDataStorage) Month %d > %d\n", tm.Day, last.Day); + if(debugger->isActive(RemoteDebug::VERBOSE)) debugger->printf("(AmsDataStorage) Month data day of last timestamp %d > %d\n", tm.Day, last.Day); return false; } diff --git a/lib/AmsDecoder/src/GcmParser.cpp b/lib/AmsDecoder/src/GcmParser.cpp index 5f9e2bd5..ad27ffa1 100644 --- a/lib/AmsDecoder/src/GcmParser.cpp +++ b/lib/AmsDecoder/src/GcmParser.cpp @@ -44,6 +44,10 @@ int8_t GCMParser::parse(uint8_t *d, DataParserContext &ctx) { ptr += 3; headersize += 3; + } else { + len = *ptr; + ptr++; + headersize++; } if(len + headersize > ctx.length) return DATA_PARSE_INCOMPLETE; diff --git a/lib/DomoticzMqttHandler/include/DomoticzMqttHandler.h b/lib/DomoticzMqttHandler/include/DomoticzMqttHandler.h index 63824a2c..e0630ff4 100644 --- a/lib/DomoticzMqttHandler/include/DomoticzMqttHandler.h +++ b/lib/DomoticzMqttHandler/include/DomoticzMqttHandler.h @@ -9,7 +9,7 @@ public: DomoticzMqttHandler(MQTTClient* mqtt, char* buf, DomoticzConfig config) : AmsMqttHandler(mqtt, buf) { this->config = config; }; - bool publish(AmsData* data, AmsData* previousState, EnergyAccounting* ea); + bool publish(AmsData* data, AmsData* previousState, EnergyAccounting* ea, EntsoeApi* eapi); bool publishTemperatures(AmsConfiguration*, HwTools*); bool publishPrices(EntsoeApi*); bool publishSystem(HwTools* hw, EntsoeApi* eapi, EnergyAccounting* ea); diff --git a/lib/DomoticzMqttHandler/src/DomoticzMqttHandler.cpp b/lib/DomoticzMqttHandler/src/DomoticzMqttHandler.cpp index 4a2cdd5c..b4dc88de 100644 --- a/lib/DomoticzMqttHandler/src/DomoticzMqttHandler.cpp +++ b/lib/DomoticzMqttHandler/src/DomoticzMqttHandler.cpp @@ -1,7 +1,7 @@ #include "DomoticzMqttHandler.h" #include "json/domoticz_json.h" -bool DomoticzMqttHandler::publish(AmsData* data, AmsData* previousState, EnergyAccounting* ea) { +bool DomoticzMqttHandler::publish(AmsData* data, AmsData* previousState, EnergyAccounting* ea, EntsoeApi* eapi) { bool ret = false; if (config.elidx > 0) { if(data->getActiveImportCounter() > 1.0) { diff --git a/lib/EntsoePriceApi/include/EntsoeA44Parser.h b/lib/EntsoePriceApi/include/EntsoeA44Parser.h index 55201a62..bc144a59 100644 --- a/lib/EntsoePriceApi/include/EntsoeA44Parser.h +++ b/lib/EntsoePriceApi/include/EntsoeA44Parser.h @@ -32,7 +32,7 @@ public: private: char currency[4]; char measurementUnit[4]; - float points[24]; + float points[25]; char buf[64]; uint8_t pos = 0; diff --git a/lib/EntsoePriceApi/include/PricesContainer.h b/lib/EntsoePriceApi/include/PricesContainer.h index cb6d687a..dd623664 100644 --- a/lib/EntsoePriceApi/include/PricesContainer.h +++ b/lib/EntsoePriceApi/include/PricesContainer.h @@ -3,6 +3,6 @@ struct PricesContainer { char currency[4]; char measurementUnit[4]; - int32_t points[24]; + int32_t points[25]; }; #endif diff --git a/lib/EntsoePriceApi/src/EntsoeA44Parser.cpp b/lib/EntsoePriceApi/src/EntsoeA44Parser.cpp index c64cd145..6f2cdcf4 100644 --- a/lib/EntsoePriceApi/src/EntsoeA44Parser.cpp +++ b/lib/EntsoePriceApi/src/EntsoeA44Parser.cpp @@ -2,7 +2,7 @@ #include "HardwareSerial.h" EntsoeA44Parser::EntsoeA44Parser() { - for(int i = 0; i < 24; i++) points[i] = ENTSOE_NO_VALUE; + for(int i = 0; i < 25; i++) points[i] = ENTSOE_NO_VALUE; } EntsoeA44Parser::~EntsoeA44Parser() { @@ -18,7 +18,7 @@ char* EntsoeA44Parser::getMeasurementUnit() { } float EntsoeA44Parser::getPoint(uint8_t position) { - if(position >= 24) return ENTSOE_NO_VALUE; + if(position >= 25) return ENTSOE_NO_VALUE; return points[position]; } @@ -111,30 +111,7 @@ void EntsoeA44Parser::get(PricesContainer* container) { strcpy(container->currency, currency); strcpy(container->measurementUnit, measurementUnit); - container->points[0] = points[0] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[0] * 10000; - container->points[1] = points[1] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[1] * 10000; - container->points[2] = points[2] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[2] * 10000; - container->points[3] = points[3] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[3] * 10000; - container->points[4] = points[4] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[4] * 10000; - container->points[5] = points[5] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[5] * 10000; - container->points[6] = points[6] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[6] * 10000; - container->points[7] = points[7] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[7] * 10000; - container->points[8] = points[8] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[8] * 10000; - container->points[9] = points[9] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[9] * 10000; - - container->points[10] = points[10] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[10] * 10000; - container->points[11] = points[11] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[11] * 10000; - container->points[12] = points[12] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[12] * 10000; - container->points[13] = points[13] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[13] * 10000; - container->points[14] = points[14] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[14] * 10000; - container->points[15] = points[15] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[15] * 10000; - container->points[16] = points[16] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[16] * 10000; - container->points[17] = points[17] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[17] * 10000; - container->points[18] = points[18] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[18] * 10000; - container->points[19] = points[19] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[19] * 10000; - - container->points[20] = points[20] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[20] * 10000; - container->points[21] = points[21] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[21] * 10000; - container->points[22] = points[22] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[22] * 10000; - container->points[23] = points[23] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[23] * 10000; + for(uint8_t i = 0; i < 25; i++) { + container->points[i] = points[i] == ENTSOE_NO_VALUE ? ENTSOE_NO_VALUE : points[i] * 10000; + } } \ No newline at end of file diff --git a/lib/EntsoePriceApi/src/EntsoeApi.cpp b/lib/EntsoePriceApi/src/EntsoeApi.cpp index 62d4002c..6f6d1a65 100644 --- a/lib/EntsoePriceApi/src/EntsoeApi.cpp +++ b/lib/EntsoePriceApi/src/EntsoeApi.cpp @@ -72,23 +72,34 @@ float EntsoeApi::getValueForHour(int8_t hour) { return getValueForHour(cur, hour); } -float EntsoeApi::getValueForHour(time_t cur, int8_t hour) { +float EntsoeApi::getValueForHour(time_t ts, int8_t hour) { tmElements_t tm; - if(tz != NULL) - cur = tz->toLocal(cur); - breakTime(cur, tm); - int pos = tm.Hour + hour; + int8_t pos = hour; + + breakTime(tz->toLocal(ts), tm); + while(tm.Hour > 0) { + ts -= 3600; + breakTime(tz->toLocal(ts), tm); + pos++; + } + uint8_t hoursToday = 0; + uint8_t todayDate = tm.Day; + while(tm.Day == todayDate) { + ts += 3600; + breakTime(tz->toLocal(ts), tm); + hoursToday++; + } if(pos >= 48) return ENTSOE_NO_VALUE; double value = ENTSOE_NO_VALUE; double multiplier = config->multiplier / 1000.0; - if(pos > 23) { + if(pos >= hoursToday) { if(tomorrow == NULL) return ENTSOE_NO_VALUE; - if(tomorrow->points[pos-24] == ENTSOE_NO_VALUE) + if(tomorrow->points[pos-hoursToday] == ENTSOE_NO_VALUE) return ENTSOE_NO_VALUE; - value = tomorrow->points[pos-24] / 10000.0; + value = tomorrow->points[pos-hoursToday] / 10000.0; if(strcmp(tomorrow->measurementUnit, "KWH") == 0) { // Multiplier is 1 } else if(strcmp(tomorrow->measurementUnit, "MWH") == 0) { @@ -96,7 +107,7 @@ float EntsoeApi::getValueForHour(time_t cur, int8_t hour) { } else { return ENTSOE_NO_VALUE; } - float mult = getCurrencyMultiplier(tomorrow->currency, config->currency, cur); + float mult = getCurrencyMultiplier(tomorrow->currency, config->currency, time(nullptr)); if(mult == 0) return ENTSOE_NO_VALUE; multiplier *= mult; } else if(pos >= 0) { @@ -112,7 +123,7 @@ float EntsoeApi::getValueForHour(time_t cur, int8_t hour) { } else { return ENTSOE_NO_VALUE; } - float mult = getCurrencyMultiplier(today->currency, config->currency, cur); + float mult = getCurrencyMultiplier(today->currency, config->currency, time(nullptr)); if(mult == 0) return ENTSOE_NO_VALUE; multiplier *= mult; } @@ -161,6 +172,8 @@ bool EntsoeApi::loop() { return today != NULL; // Only trigger MQTT publish if we have todays prices. } + bool readyToFetchForTomorrow = tomorrow == NULL && (tm.Hour > 13 || (tm.Hour == 13 && tm.Minute >= tomorrowFetchMinute)) && (lastTomorrowFetch == 0 || now - lastTomorrowFetch > 900000); + if(today == NULL && (lastTodayFetch == 0 || now - lastTodayFetch > 60000)) { try { lastTodayFetch = now; @@ -169,12 +182,12 @@ bool EntsoeApi::loop() { if(lastError == 0) lastError = 900; today = NULL; } - return today != NULL; // Only trigger MQTT publish if we have todays prices. + return today != NULL && !readyToFetchForTomorrow; // Only trigger MQTT publish if we have todays prices and we are not immediately ready to fetch price for tomorrow. } // Prices for next day are published at 13:00 CE(S)T, but to avoid heavy server traffic at that time, we will // fetch with one hour (with some random delay) and retry every 15 minutes - if(tomorrow == NULL && (tm.Hour > 13 || (tm.Hour == 13 && tm.Minute >= tomorrowFetchMinute)) && (lastTomorrowFetch == 0 || now - lastTomorrowFetch > 900000)) { + if(readyToFetchForTomorrow) { try { lastTomorrowFetch = now; tomorrow = fetchPrices(t+SECS_PER_DAY); @@ -352,8 +365,11 @@ PricesContainer* EntsoeApi::fetchPrices(time_t t) { if(gcmRet > 0) { if(debugger->isActive(RemoteDebug::DEBUG)) debugger->printf("(EntsoeApi) Price data starting at: %d\n", gcmRet); PricesContainer* ret = new PricesContainer(); + for(uint8_t i = 0; i < 25; i++) { + ret->points[i] = ENTSOE_NO_VALUE; + } memcpy(ret, content+gcmRet, sizeof(*ret)); - for(uint8_t i = 0; i < 24; i++) { + for(uint8_t i = 0; i < 25; i++) { ret->points[i] = ntohl(ret->points[i]); } lastError = 0; diff --git a/lib/HomeAssistantMqttHandler/include/HomeAssistantMqttHandler.h b/lib/HomeAssistantMqttHandler/include/HomeAssistantMqttHandler.h index 878efa4a..6bb7f367 100644 --- a/lib/HomeAssistantMqttHandler/include/HomeAssistantMqttHandler.h +++ b/lib/HomeAssistantMqttHandler/include/HomeAssistantMqttHandler.h @@ -2,34 +2,164 @@ #define _HOMEASSISTANTMQTTHANDLER_H #include "AmsMqttHandler.h" +#include "HomeAssistantStatic.h" +#include "AmsConfiguration.h" class HomeAssistantMqttHandler : public AmsMqttHandler { public: - HomeAssistantMqttHandler(MQTTClient* mqtt, char* buf, const char* clientId, const char* topic, HwTools* hw) : AmsMqttHandler(mqtt, buf) { + HomeAssistantMqttHandler(MQTTClient* mqtt, char* buf, const char* clientId, const char* topic, uint8_t boardType, HomeAssistantConfig config, HwTools* hw) : AmsMqttHandler(mqtt, buf) { this->clientId = clientId; this->topic = String(topic); + this->config = config; this->hw = hw; + l1Init = l2Init = l2eInit = l3Init = l3eInit = l4Init = l4eInit = rtInit = rteInit = pInit = sInit = false; + + if(strlen(config.discoveryNameTag) > 0) { + snprintf_P(buf, 128, PSTR("AMS reader (%s)"), config.discoveryNameTag); + deviceName = String(buf); + snprintf_P(buf, 128, PSTR("[%s] "), config.discoveryNameTag); + sensorNamePrefix = String(buf); + } else { + deviceName = "AMS reader"; + sensorNamePrefix = ""; + } + deviceModel = boardTypeToString(boardType); + manufacturer = boardManufacturerToString(boardType); + + #if defined(ESP8266) + String hostname = WiFi.hostname(); + #elif defined(ESP32) + String hostname = WiFi.getHostname(); + #endif + + deviceUid = hostname; // Maybe configurable in the future? + + if(strlen(config.discoveryHostname) > 0) { + if(strncmp_P(config.discoveryHostname, PSTR("http"), 4) == 0) { + deviceUrl = String(config.discoveryHostname); + } else { + snprintf_P(buf, 128, PSTR("http://%s/"), config.discoveryHostname); + deviceUrl = String(buf); + } + } else { + snprintf_P(buf, 128, PSTR("http://%s.local/"), hostname); + deviceUrl = String(buf); + } + + if(strlen(config.discoveryPrefix) > 0) { + snprintf_P(buf, 128, PSTR("%s/sensor/"), config.discoveryPrefix); + discoveryTopic = String(buf); + } else { + discoveryTopic = "homeassistant/sensor/"; + } }; - bool publish(AmsData* data, AmsData* previousState, EnergyAccounting* ea); + bool publish(AmsData* data, AmsData* previousState, EnergyAccounting* ea, EntsoeApi* eapi); bool publishTemperatures(AmsConfiguration*, HwTools*); bool publishPrices(EntsoeApi*); bool publishSystem(HwTools* hw, EntsoeApi* eapi, EnergyAccounting* ea); + void publishSensor(const HomeAssistantSensor& sensor); + void publishList1Sensors(); + void publishList1ExportSensors(); + void publishList2Sensors(); + void publishList2ExportSensors(); + void publishList3Sensors(); + void publishList3ExportSensors(); + void publishList4Sensors(); + void publishList4ExportSensors(); + void publishRealtimeSensors(EnergyAccounting* ea, EntsoeApi* eapi); + void publishRealtimeExportSensors(EnergyAccounting* ea, EntsoeApi* eapi); + void publishTemperatureSensor(uint8_t index, String id); + void publishPriceSensors(EntsoeApi* eapi); + void publishSystemSensors(); + private: - String haTopic = "homeassistant/sensor/"; + HomeAssistantConfig config; + String deviceName; + String deviceModel; + String deviceUid; + String manufacturer; + String deviceUrl; - String haName = "AMS reader"; - #if defined(ESP32) - String haModel = "ESP32"; - #elif defined(ESP8266) - String haModel = "ESP8266"; - #endif - String haManuf = "AmsToMqttBridge"; + String discoveryTopic; + String sensorNamePrefix; - bool autodiscoverInit = false; + bool l1Init, l2Init, l2eInit, l3Init, l3eInit, l4Init, l4eInit, rtInit, rteInit, pInit, sInit; + bool tInit[32] = {false}; + bool prInit[38] = {false}; String clientId; String topic; HwTools* hw; + + String boardTypeToString(uint8_t b) { + switch(b) { + case 5: + #if defined(ESP8266) + return "Pow-K"; + #elif defined(ESP32) + return "Pow-K+"; + #endif + case 7: + #if defined(ESP8266) + return "Pow-U"; + #elif defined(ESP32) + return "Pow-U+"; + #endif + case 6: + return "Pow-P1"; + case 51: + return "S2 mini"; + case 50: + return "ESP32-S2"; + case 201: + return "LOLIN D32"; + case 202: + return "HUZZAH32"; + case 203: + return "DevKitC"; + case 200: + return "ESP32"; + case 2: + return "HAN Reader 2.0 by Max Spencer"; + case 0: + return "Custom hardware by Roar Fredriksen"; + case 1: + return "Kamstrup module by Egil Opsahl"; + case 3: + return "Pow-K"; + case 4: + return "Pow-U"; + case 101: + return "D1 mini"; + case 100: + return "ESP8266"; + case 70: + return "ESP32-C3"; + case 71: + return "ESP32-C3-DevKitM-1"; + } + #if defined(ESP8266) + return "ESP8266"; + #elif defined(ESP32) + return "ESP32"; + #endif + }; + + String boardManufacturerToString(uint8_t b) { + if(b >= 3 && b <= 7) + return "amsleser.no"; + if(b < 50) + return "Custom"; + switch(b) { + case 51: + case 101: + case 201: + return "Wemos"; + case 202: + return "Adafruit"; + } + return "Espressif"; + }; }; #endif diff --git a/lib/HomeAssistantMqttHandler/include/HomeAssistantStatic.h b/lib/HomeAssistantMqttHandler/include/HomeAssistantStatic.h index 1ae24f90..01216fc6 100644 --- a/lib/HomeAssistantMqttHandler/include/HomeAssistantStatic.h +++ b/lib/HomeAssistantMqttHandler/include/HomeAssistantStatic.h @@ -3,7 +3,7 @@ #include "Arduino.h" -struct HomeAssistantSensor { +typedef struct HomeAssistantSensor { const char* name; const char* topic; const char* path; @@ -13,69 +13,100 @@ struct HomeAssistantSensor { }; -const uint8_t HA_SENSOR_COUNT PROGMEM = 60; -HomeAssistantSensor HA_SENSORS[HA_SENSOR_COUNT] PROGMEM = { - {"Status", "/state", "rssi", "dBm", "signal_strength", "\"measurement\""}, - {"Supply volt", "/state", "vcc", "V", "voltage", "\"measurement\""}, - {"Temperature", "/state", "temp", "°C", "temperature", "\"measurement\""}, - {"Active import", "/power", "P", "W", "power", "\"measurement\""}, - {"L1 active import", "/power", "P1", "W", "power", "\"measurement\""}, - {"L2 active import", "/power", "P2", "W", "power", "\"measurement\""}, - {"L3 active import", "/power", "P3", "W", "power", "\"measurement\""}, +const uint8_t List1SensorCount PROGMEM = 1; +const HomeAssistantSensor List1Sensors[List1SensorCount] PROGMEM = { + {"Active import", "/power", "P", "W", "power", "\"measurement\""} +}; + +const uint8_t List2SensorCount PROGMEM = 8; +const HomeAssistantSensor List2Sensors[List2SensorCount] PROGMEM = { {"Reactive import", "/power", "Q", "var", "reactive_power", "\"measurement\""}, - {"Active export", "/power", "PO", "W", "power", "\"measurement\""}, - {"L1 active export", "/power", "PO1", "W", "power", "\"measurement\""}, - {"L2 active export", "/power", "PO2", "W", "power", "\"measurement\""}, - {"L3 active export", "/power", "PO3", "W", "power", "\"measurement\""}, {"Reactive export", "/power", "QO", "var", "reactive_power", "\"measurement\""}, {"L1 current", "/power", "I1", "A", "current", "\"measurement\""}, {"L2 current", "/power", "I2", "A", "current", "\"measurement\""}, {"L3 current", "/power", "I3", "A", "current", "\"measurement\""}, {"L1 voltage", "/power", "U1", "V", "voltage", "\"measurement\""}, {"L2 voltage", "/power", "U2", "V", "voltage", "\"measurement\""}, - {"L3 voltage", "/power", "U3", "V", "voltage", "\"measurement\""}, + {"L3 voltage", "/power", "U3", "V", "voltage", "\"measurement\""} +}; + +const uint8_t List2ExportSensorCount PROGMEM = 1; +const HomeAssistantSensor List2ExportSensors[List2ExportSensorCount] PROGMEM = { + {"Active export", "/power", "PO", "W", "power", "\"measurement\""} +}; + +const uint8_t List3SensorCount PROGMEM = 3; +const HomeAssistantSensor List3Sensors[List3SensorCount] PROGMEM = { {"Accumulated active import", "/energy", "tPI", "kWh", "energy", "\"total_increasing\""}, - {"Accumulated active export", "/energy", "tPO", "kWh", "energy", "\"total_increasing\""}, - {"Accumulated reactive import","/energy", "tQI", "kvarh","energy", "\"total_increasing\""}, - {"Accumulated reactive export","/energy", "tQO", "kvarh","energy", "\"total_increasing\""}, + {"Accumulated reactive import","/energy", "tQI", "", "energy", "\"total_increasing\""}, + {"Accumulated reactive export","/energy", "tQO", "", "energy", "\"total_increasing\""} +}; + +const uint8_t List3ExportSensorCount PROGMEM = 1; +const HomeAssistantSensor List3ExportSensors[List3ExportSensorCount] PROGMEM = { + {"Accumulated active export", "/energy", "tPO", "kWh", "energy", "\"total_increasing\""} +}; + +const uint8_t List4SensorCount PROGMEM = 7; +const HomeAssistantSensor List4Sensors[List4SensorCount] PROGMEM = { {"Power factor", "/power", "PF", "%", "power_factor", "\"measurement\""}, {"L1 power factor", "/power", "PF1", "%", "power_factor", "\"measurement\""}, {"L2 power factor", "/power", "PF2", "%", "power_factor", "\"measurement\""}, {"L3 power factor", "/power", "PF3", "%", "power_factor", "\"measurement\""}, - {"Price current hour", "/prices", "prices['0']", "", "monetary", ""}, - {"Price next hour", "/prices", "prices['1']", "", "monetary", ""}, - {"Price in two hour", "/prices", "prices['2']", "", "monetary", ""}, - {"Price in three hour", "/prices", "prices['3']", "", "monetary", ""}, - {"Price in four hour", "/prices", "prices['4']", "", "monetary", ""}, - {"Price in five hour", "/prices", "prices['5']", "", "monetary", ""}, - {"Price in six hour", "/prices", "prices['6']", "", "monetary", ""}, - {"Price in seven hour", "/prices", "prices['7']", "", "monetary", ""}, - {"Price in eight hour", "/prices", "prices['8']", "", "monetary", ""}, - {"Price in nine hour", "/prices", "prices['9']", "", "monetary", ""}, - {"Price in ten hour", "/prices", "prices['10']", "", "monetary", ""}, - {"Price in eleven hour", "/prices", "prices['11']", "", "monetary", ""}, + {"L1 active import", "/power", "P1", "W", "power", "\"measurement\""}, + {"L2 active import", "/power", "P2", "W", "power", "\"measurement\""}, + {"L3 active import", "/power", "P3", "W", "power", "\"measurement\""} +}; + +const uint8_t List4ExportSensorCount PROGMEM = 3; +const HomeAssistantSensor List4ExportSensors[List4ExportSensorCount] PROGMEM = { + {"L1 active export", "/power", "PO1", "W", "power", "\"measurement\""}, + {"L2 active export", "/power", "PO2", "W", "power", "\"measurement\""}, + {"L3 active export", "/power", "PO3", "W", "power", "\"measurement\""} +}; + +const uint8_t RealtimeSensorCount PROGMEM = 8; +const HomeAssistantSensor RealtimeSensors[RealtimeSensorCount] PROGMEM = { + {"Month max", "/realtime","max", "kWh", "energy", "\"total_increasing\""}, + {"Tariff threshold", "/realtime","threshold", "kWh", "energy", "\"total_increasing\""}, + {"Current hour used", "/realtime","hour.use", "kWh", "energy", "\"total_increasing\""}, + {"Current hour cost", "/realtime","hour.cost", "", "monetary", ""}, + {"Current day used", "/realtime","day.use", "kWh", "energy", "\"total_increasing\""}, + {"Current day cost", "/realtime","day.cost", "", "monetary", ""}, + {"Current month used", "/realtime","month.use", "kWh", "energy", "\"total_increasing\""}, + {"Current month cost", "/realtime","month.cost", "", "monetary", ""} +}; + +const uint8_t RealtimeExportSensorCount PROGMEM = 6; +const HomeAssistantSensor RealtimeExportSensors[RealtimeExportSensorCount] PROGMEM = { + {"Current hour produced", "/realtime","hour.produced", "kWh", "energy", "\"total_increasing\""}, + {"Current hour income", "/realtime","hour.income", "", "monetary", ""}, + {"Current day produced", "/realtime","day.produced", "kWh", "energy", "\"total_increasing\""}, + {"Current day income", "/realtime","day.income", "", "monetary", ""}, + {"Current month produced", "/realtime","month.produced", "kWh", "energy", "\"total_increasing\""}, + {"Current month income", "/realtime","month.income", "", "monetary", ""} +}; + +const HomeAssistantSensor RealtimePeakSensor PROGMEM = {"Current month peak %d", "/realtime", "peaks[%d]", "kWh", "energy", ""}; + +const uint8_t PriceSensorCount PROGMEM = 5; +const HomeAssistantSensor PriceSensors[PriceSensorCount] PROGMEM = { {"Minimum price ahead", "/prices", "prices.min", "", "monetary", ""}, {"Maximum price ahead", "/prices", "prices.max", "", "monetary", ""}, {"Cheapest 1hr period ahead", "/prices", "prices.cheapest1hr","", "timestamp", ""}, {"Cheapest 3hr period ahead", "/prices", "prices.cheapest3hr","", "timestamp", ""}, - {"Cheapest 6hr period ahead", "/prices", "prices.cheapest6hr","", "timestamp", ""}, - {"Month max", "/realtime","max", "kWh", "energy", "\"total_increasing\""}, - {"Tariff threshold", "/realtime","threshold", "kWh", "energy", "\"total_increasing\""}, - {"Current hour used", "/realtime","hour.use", "kWh", "energy", "\"total_increasing\""}, - {"Current hour cost", "/realtime","hour.cost", "", "monetary", "\"total_increasing\""}, - {"Current hour produced", "/realtime","hour.produced", "kWh", "energy", "\"total_increasing\""}, - {"Current day used", "/realtime","day.use", "kWh", "energy", "\"total_increasing\""}, - {"Current day cost", "/realtime","day.cost", "", "monetary", "\"total_increasing\""}, - {"Current day produced", "/realtime","day.produced", "kWh", "energy", "\"total_increasing\""}, - {"Current month used", "/realtime","month.use", "kWh", "energy", "\"total_increasing\""}, - {"Current month cost", "/realtime","month.cost", "", "monetary", "\"total_increasing\""}, - {"Current month produced", "/realtime","month.produced", "kWh", "energy", "\"total_increasing\""}, - {"Current month peak 1", "/realtime","peaks[0]", "kWh", "energy", ""}, - {"Current month peak 2", "/realtime","peaks[1]", "kWh", "energy", ""}, - {"Current month peak 3", "/realtime","peaks[2]", "kWh", "energy", ""}, - {"Current month peak 4", "/realtime","peaks[3]", "kWh", "energy", ""}, - {"Current month peak 5", "/realtime","peaks[4]", "kWh", "energy", ""}, + {"Cheapest 6hr period ahead", "/prices", "prices.cheapest6hr","", "timestamp", ""} }; +const HomeAssistantSensor PriceSensor PROGMEM = {"Price in %02d %s", "/prices", "prices['%d']", "", "monetary", ""}; + +const uint8_t SystemSensorCount PROGMEM = 2; +const HomeAssistantSensor SystemSensors[SystemSensorCount] PROGMEM = { + {"Status", "/state", "rssi", "dBm", "signal_strength", "\"measurement\""}, + {"Supply volt", "/state", "vcc", "V", "voltage", "\"measurement\""} +}; + +const HomeAssistantSensor TemperatureSensor PROGMEM = {"Temperature sensor %s", "/temperatures", "temperatures['%s']", "°C", "temperature", "\"measurement\""}; + #endif diff --git a/lib/HomeAssistantMqttHandler/json/hadiscover.json b/lib/HomeAssistantMqttHandler/json/hadiscover.json index 67b1add4..9edc1a45 100644 --- a/lib/HomeAssistantMqttHandler/json/hadiscover.json +++ b/lib/HomeAssistantMqttHandler/json/hadiscover.json @@ -1,5 +1,5 @@ { - "name" : "%s", + "name" : "%s%s", "stat_t" : "%s%s", "uniq_id" : "%s_%s", "obj_id" : "%s_%s", diff --git a/lib/HomeAssistantMqttHandler/json/realtime.json b/lib/HomeAssistantMqttHandler/json/realtime.json index 06ca2d73..02a86dcb 100644 --- a/lib/HomeAssistantMqttHandler/json/realtime.json +++ b/lib/HomeAssistantMqttHandler/json/realtime.json @@ -5,16 +5,19 @@ "hour" : { "use" : %.2f, "cost" : %.2f, - "produced" : %.2f + "produced" : %.2f, + "income" : %.2f }, "day" : { "use" : %.2f, "cost" : %.2f, - "produced" : %.2f + "produced" : %.2f, + "income" : %.2f }, "month" : { "use" : %.2f, "cost" : %.2f, - "produced" : %.2f + "produced" : %.2f, + "income" : %.2f } } \ No newline at end of file diff --git a/lib/HomeAssistantMqttHandler/src/HomeAssistantMqttHandler.cpp b/lib/HomeAssistantMqttHandler/src/HomeAssistantMqttHandler.cpp index 5f8dc9c8..0aa3e2ee 100644 --- a/lib/HomeAssistantMqttHandler/src/HomeAssistantMqttHandler.cpp +++ b/lib/HomeAssistantMqttHandler/src/HomeAssistantMqttHandler.cpp @@ -1,5 +1,4 @@ #include "HomeAssistantMqttHandler.h" -#include "HomeAssistantStatic.h" #include "hexutils.h" #include "Uptime.h" #include "version.h" @@ -12,11 +11,13 @@ #include "json/hadiscover_json.h" #include "json/realtime_json.h" -bool HomeAssistantMqttHandler::publish(AmsData* data, AmsData* previousState, EnergyAccounting* ea) { +bool HomeAssistantMqttHandler::publish(AmsData* data, AmsData* previousState, EnergyAccounting* ea, EntsoeApi* eapi) { if(topic.isEmpty() || !mqtt->connected()) return false; if(data->getListType() >= 3) { // publish energy counts + publishList3Sensors(); + if(data->getActiveExportCounter() > 0.0) publishList3ExportSensors(); snprintf_P(json, BufferSize, HA2_JSON, data->getActiveImportCounter(), data->getActiveExportCounter(), @@ -30,11 +31,14 @@ bool HomeAssistantMqttHandler::publish(AmsData* data, AmsData* previousState, En String meterModel = data->getMeterModel(); meterModel.replace("\\", "\\\\"); if(data->getListType() == 1) { // publish power counts + publishList1Sensors(); snprintf_P(json, BufferSize, HA1_JSON, data->getActiveImportPower() ); mqtt->publish(topic + "/power", json); } else if(data->getListType() <= 3) { // publish power counts and volts/amps + publishList2Sensors(); + if(data->getActiveExportPower() > 0) publishList2ExportSensors(); snprintf_P(json, BufferSize, HA3_JSON, data->getListId().c_str(), data->getMeterId().c_str(), @@ -52,6 +56,8 @@ bool HomeAssistantMqttHandler::publish(AmsData* data, AmsData* previousState, En ); mqtt->publish(topic + "/power", json); } else if(data->getListType() == 4) { // publish power counts and volts/amps/phase power and PF + publishList4Sensors(); + if(data->getL1ActiveExportPower() > 0 || data->getL2ActiveExportPower() > 0 || data->getL3ActiveExportPower() > 0) publishList4ExportSensors(); snprintf_P(json, BufferSize, HA4_JSON, data->getListId().c_str(), data->getMeterId().c_str(), @@ -81,6 +87,8 @@ bool HomeAssistantMqttHandler::publish(AmsData* data, AmsData* previousState, En } if(ea->isInitialized()) { + publishRealtimeSensors(ea, eapi); + if(ea->getProducedThisHour() > 0.0 || ea->getProducedToday() > 0.0 || ea->getProducedThisMonth() > 0.0) publishRealtimeExportSensors(ea, eapi); String peaks = ""; uint8_t peakCount = ea->getConfig()->hours; if(peakCount > 5) peakCount = 5; @@ -95,12 +103,15 @@ bool HomeAssistantMqttHandler::publish(AmsData* data, AmsData* previousState, En ea->getUseThisHour(), ea->getCostThisHour(), ea->getProducedThisHour(), + ea->getIncomeThisHour(), ea->getUseToday(), ea->getCostToday(), ea->getProducedToday(), + ea->getIncomeToday(), ea->getUseThisMonth(), ea->getCostThisMonth(), - ea->getProducedThisMonth() + ea->getProducedThisMonth(), + ea->getIncomeThisMonth() ); mqtt->publish(topic + "/realtime", json); } @@ -110,7 +121,7 @@ bool HomeAssistantMqttHandler::publish(AmsData* data, AmsData* previousState, En bool HomeAssistantMqttHandler::publishTemperatures(AmsConfiguration* config, HwTools* hw) { int count = hw->getTempSensorCount(); - if(count == 0) return false; + if(count < 2) return false; int size = 32 + (count * 26); @@ -121,11 +132,13 @@ bool HomeAssistantMqttHandler::publishTemperatures(AmsConfiguration* config, HwT TempSensorData* data = hw->getTempSensorData(i); if(data != NULL) { char* pos = buf+strlen(buf); + String id = toHex(data->address, 8); snprintf(pos, 26, "\"%s\":%.2f,", - toHex(data->address, 8).c_str(), + id.c_str(), data->lastRead ); data->changed = false; + publishTemperatureSensor(i+1, id); delay(1); } } @@ -140,14 +153,16 @@ bool HomeAssistantMqttHandler::publishPrices(EntsoeApi* eapi) { if(eapi->getValueForHour(0) == ENTSOE_NO_VALUE) return false; + publishPriceSensors(eapi); + time_t now = time(nullptr); float min1hr = 0.0, min3hr = 0.0, min6hr = 0.0; int8_t min1hrIdx = -1, min3hrIdx = -1, min6hrIdx = -1; float min = INT16_MAX, max = INT16_MIN; - float values[24]; - for(int i = 0;i < 24; i++) values[i] = ENTSOE_NO_VALUE; - for(uint8_t i = 0; i < 24; i++) { + float values[38]; + for(int i = 0;i < 38; i++) values[i] = ENTSOE_NO_VALUE; + for(uint8_t i = 0; i < 38; i++) { float val = eapi->getValueForHour(now, i); values[i] = val; @@ -234,6 +249,32 @@ bool HomeAssistantMqttHandler::publishPrices(EntsoeApi* eapi) { values[9], values[10], values[11], + values[12], + values[13], + values[14], + values[15], + values[16], + values[17], + values[18], + values[19], + values[20], + values[21], + values[22], + values[23], + values[24], + values[25], + values[26], + values[27], + values[28], + values[29], + values[30], + values[31], + values[32], + values[33], + values[34], + values[35], + values[36], + values[37], min == INT16_MAX ? 0.0 : min, max == INT16_MIN ? 0.0 : max, ts1hr, @@ -247,6 +288,9 @@ bool HomeAssistantMqttHandler::publishSystem(HwTools* hw, EntsoeApi* eapi, Energ if(topic.isEmpty() || !mqtt->connected()) return false; + publishSystemSensors(); + if(hw->getTemperature() > -50) publishTemperatureSensor(0, ""); + snprintf_P(json, BufferSize, JSONSYS_JSON, WiFi.macAddress().c_str(), clientId.c_str(), @@ -256,64 +300,200 @@ bool HomeAssistantMqttHandler::publishSystem(HwTools* hw, EntsoeApi* eapi, Energ hw->getTemperature(), VERSION ); - mqtt->publish(topic + "/state", json); - - if(!autodiscoverInit) { - #if defined(ESP8266) - String haUID = WiFi.hostname(); - #elif defined(ESP32) - String haUID = WiFi.getHostname(); - #endif - String haUrl = "http://" + haUID + ".local/"; - // Could this be necessary? haUID.replace("-", "_"); - uint8_t peakCount = ea->getConfig()->hours; - if(peakCount > 5) peakCount = 5; - - uint8_t peaks = 0; - for(int i=0;igetCurrency()) + "/kWh"; - } else { - uom = String(eapi->getCurrency()); - } - } - if(strncmp(sensor.path, "peaks[", 6) == 0) { - if(peaks >= peakCount) continue; - peaks++; - } - if(strncmp(sensor.path, "temp", 4) == 0) { - if(hw->getTemperature() < 0) continue; - } - snprintf_P(json, BufferSize, HADISCOVER_JSON, - sensor.name, - topic.c_str(), sensor.topic, - haUID.c_str(), uid.c_str(), - haUID.c_str(), uid.c_str(), - uom.c_str(), - sensor.path, - sensor.devcl, - haUID.c_str(), - haName.c_str(), - haModel.c_str(), - VERSION, - haManuf.c_str(), - haUrl.c_str(), - strlen_P(sensor.stacl) > 0 ? ", \"stat_cla\" :" : "", - strlen_P(sensor.stacl) > 0 ? (char *) FPSTR(sensor.stacl) : "" - ); - mqtt->publish(haTopic + haUID + "_" + uid.c_str() + "/config", json, true, 0); - } - - autodiscoverInit = true; - } - return true; + return mqtt->publish(topic + "/state", json); } + +void HomeAssistantMqttHandler::publishSensor(const HomeAssistantSensor& sensor) { + String uid = String(sensor.path); + uid.replace(".", ""); + uid.replace("[", ""); + uid.replace("]", ""); + uid.replace("'", ""); + snprintf_P(json, BufferSize, HADISCOVER_JSON, + sensorNamePrefix.c_str(), + sensor.name, + topic.c_str(), sensor.topic, + deviceUid.c_str(), uid.c_str(), + deviceUid.c_str(), uid.c_str(), + sensor.uom, + sensor.path, + sensor.devcl, + deviceUid.c_str(), + deviceName.c_str(), + deviceModel.c_str(), + VERSION, + manufacturer.c_str(), + deviceUrl.c_str(), + strlen_P(sensor.stacl) > 0 ? ", \"stat_cla\" :" : "", + strlen_P(sensor.stacl) > 0 ? (char *) FPSTR(sensor.stacl) : "" + ); + mqtt->publish(discoveryTopic + deviceUid + "_" + uid.c_str() + "/config", json, true, 0); +} + +void HomeAssistantMqttHandler::publishList1Sensors() { + if(l1Init) return; + for(uint8_t i = 0; i < List1SensorCount; i++) { + publishSensor(List1Sensors[i]); + } + l1Init = true; +} + +void HomeAssistantMqttHandler::publishList2Sensors() { + if(l2Init) return; + for(uint8_t i = 0; i < List2SensorCount; i++) { + publishSensor(List2Sensors[i]); + } + l2Init = true; +} + +void HomeAssistantMqttHandler::publishList2ExportSensors() { + if(l2eInit) return; + for(uint8_t i = 0; i < List2ExportSensorCount; i++) { + publishSensor(List2ExportSensors[i]); + } + l2eInit = true; +} + +void HomeAssistantMqttHandler::publishList3Sensors() { + if(l3Init) return; + for(uint8_t i = 0; i < List3SensorCount; i++) { + publishSensor(List3Sensors[i]); + } + l3Init = true; +} + +void HomeAssistantMqttHandler::publishList3ExportSensors() { + if(l3eInit) return; + for(uint8_t i = 0; i < List3ExportSensorCount; i++) { + publishSensor(List3ExportSensors[i]); + } + l3eInit = true; +} + +void HomeAssistantMqttHandler::publishList4Sensors() { + if(l4Init) return; + for(uint8_t i = 0; i < List4SensorCount; i++) { + publishSensor(List4Sensors[i]); + } + l4Init = true; +} + +void HomeAssistantMqttHandler::publishList4ExportSensors() { + if(l4eInit) return; + for(uint8_t i = 0; i < List4ExportSensorCount; i++) { + publishSensor(List4ExportSensors[i]); + } + l4eInit = true; +} + +void HomeAssistantMqttHandler::publishRealtimeSensors(EnergyAccounting* ea, EntsoeApi* eapi) { + if(rtInit) return; + for(uint8_t i = 0; i < RealtimeSensorCount; i++) { + HomeAssistantSensor sensor = RealtimeSensors[i]; + if(strncmp(sensor.devcl, "monetary", 8) == 0) { + if(eapi == NULL) continue; + sensor.uom = eapi->getCurrency(); + } + publishSensor(sensor); + } + uint8_t peakCount = ea->getConfig()->hours; + if(peakCount > 5) peakCount = 5; + for(uint8_t i = 0; i < peakCount; i++) { + char name[strlen(RealtimePeakSensor.name)]; + snprintf(name, strlen(RealtimePeakSensor.name), RealtimePeakSensor.name, i+1); + char path[strlen(RealtimePeakSensor.path)]; + snprintf(path, strlen(RealtimePeakSensor.path), RealtimePeakSensor.path, i+1); + HomeAssistantSensor sensor = { + name, + RealtimePeakSensor.topic, + path, + RealtimePeakSensor.uom, + RealtimePeakSensor.devcl, + RealtimePeakSensor.stacl + }; + publishSensor(sensor); + } + rtInit = true; +} + +void HomeAssistantMqttHandler::publishRealtimeExportSensors(EnergyAccounting* ea, EntsoeApi* eapi) { + if(rteInit) return; + for(uint8_t i = 0; i < RealtimeExportSensorCount; i++) { + HomeAssistantSensor sensor = RealtimeExportSensors[i]; + if(strncmp(sensor.devcl, "monetary", 8) == 0) { + if(eapi == NULL) continue; + sensor.uom = eapi->getCurrency(); + } + publishSensor(sensor); + } + rteInit = true; +} + +void HomeAssistantMqttHandler::publishTemperatureSensor(uint8_t index, String id) { + if(index > 32) return; + if(tInit[index]) return; + char name[strlen(TemperatureSensor.name)+id.length()]; + snprintf(name, strlen(TemperatureSensor.name)+id.length(), TemperatureSensor.name, id.c_str()); + + char path[strlen(TemperatureSensor.path)+id.length()]; + if(index == 0) { + memcpy_P(path, PSTR("temp\0"), 5); + } else { + snprintf(path, strlen(TemperatureSensor.path)+id.length(), TemperatureSensor.path, id.c_str()); + } + HomeAssistantSensor sensor = { + name, + index == 0 ? SystemSensors[0].topic : TemperatureSensor.topic, + path, + TemperatureSensor.uom, + TemperatureSensor.devcl, + TemperatureSensor.stacl + }; + publishSensor(sensor); + tInit[index] = true; +} + +void HomeAssistantMqttHandler::publishPriceSensors(EntsoeApi* eapi) { + if(eapi == NULL) return; + String uom = String(eapi->getCurrency()) + "/kWh"; + + if(!pInit) { + for(uint8_t i = 0; i < PriceSensorCount; i++) { + HomeAssistantSensor sensor = PriceSensors[i]; + if(strncmp(sensor.devcl, "monetary", 8) == 0) { + sensor.uom = uom.c_str(); + } + publishSensor(sensor); + } + pInit = true; + } + for(uint8_t i = 0; i < 38; i++) { + if(prInit[i]) continue; + float val = eapi->getValueForHour(i); + if(val == ENTSOE_NO_VALUE) continue; + + char name[strlen(PriceSensor.name)+2]; + snprintf(name, strlen(PriceSensor.name)+2, PriceSensor.name, i, i == 1 ? "hour" : "hours"); + char path[strlen(PriceSensor.path)+1]; + snprintf(path, strlen(PriceSensor.path)+1, PriceSensor.path, i); + HomeAssistantSensor sensor = { + i == 0 ? "Price current hour" : name, + PriceSensor.topic, + path, + uom.c_str(), + PriceSensor.devcl, + PriceSensor.stacl + }; + publishSensor(sensor); + prInit[i] = true; + } + +} + +void HomeAssistantMqttHandler::publishSystemSensors() { + if(sInit) return; + for(uint8_t i = 0; i < SystemSensorCount; i++) { + publishSensor(SystemSensors[i]); + } + sInit = true; +} \ No newline at end of file diff --git a/lib/JsonMqttHandler/include/JsonMqttHandler.h b/lib/JsonMqttHandler/include/JsonMqttHandler.h index 63032e36..db75a1b9 100644 --- a/lib/JsonMqttHandler/include/JsonMqttHandler.h +++ b/lib/JsonMqttHandler/include/JsonMqttHandler.h @@ -10,7 +10,7 @@ public: this->topic = String(topic); this->hw = hw; }; - bool publish(AmsData* data, AmsData* previousState, EnergyAccounting* ea); + bool publish(AmsData* data, AmsData* previousState, EnergyAccounting* ea, EntsoeApi* eapi); bool publishTemperatures(AmsConfiguration*, HwTools*); bool publishPrices(EntsoeApi*); bool publishSystem(HwTools* hw, EntsoeApi* eapi, EnergyAccounting* ea); diff --git a/lib/JsonMqttHandler/json/jsonprices.json b/lib/JsonMqttHandler/json/jsonprices.json index 293039ce..71303ced 100644 --- a/lib/JsonMqttHandler/json/jsonprices.json +++ b/lib/JsonMqttHandler/json/jsonprices.json @@ -13,6 +13,32 @@ "9" : %.4f, "10" : %.4f, "11" : %.4f, + "12" : %.4f, + "13" : %.4f, + "14" : %.4f, + "15" : %.4f, + "16" : %.4f, + "17" : %.4f, + "18" : %.4f, + "19" : %.4f, + "20" : %.4f, + "21" : %.4f, + "22" : %.4f, + "23" : %.4f, + "24" : %.4f, + "25" : %.4f, + "26" : %.4f, + "27" : %.4f, + "28" : %.4f, + "29" : %.4f, + "30" : %.4f, + "31" : %.4f, + "32" : %.4f, + "33" : %.4f, + "34" : %.4f, + "35" : %.4f, + "36" : %.4f, + "37" : %.4f, "min" : %.4f, "max" : %.4f, "cheapest1hr" : "%s", diff --git a/lib/JsonMqttHandler/src/JsonMqttHandler.cpp b/lib/JsonMqttHandler/src/JsonMqttHandler.cpp index 8aea11cf..a4bdd0fa 100644 --- a/lib/JsonMqttHandler/src/JsonMqttHandler.cpp +++ b/lib/JsonMqttHandler/src/JsonMqttHandler.cpp @@ -9,7 +9,7 @@ #include "json/jsonsys_json.h" #include "json/jsonprices_json.h" -bool JsonMqttHandler::publish(AmsData* data, AmsData* previousState, EnergyAccounting* ea) { +bool JsonMqttHandler::publish(AmsData* data, AmsData* previousState, EnergyAccounting* ea, EntsoeApi* eapi) { if(topic.isEmpty() || !mqtt->connected()) return false; @@ -183,9 +183,9 @@ bool JsonMqttHandler::publishPrices(EntsoeApi* eapi) { float min1hr = 0.0, min3hr = 0.0, min6hr = 0.0; int8_t min1hrIdx = -1, min3hrIdx = -1, min6hrIdx = -1; float min = INT16_MAX, max = INT16_MIN; - float values[24]; - for(int i = 0;i < 24; i++) values[i] = ENTSOE_NO_VALUE; - for(uint8_t i = 0; i < 24; i++) { + float values[38]; + for(int i = 0;i < 38; i++) values[i] = ENTSOE_NO_VALUE; + for(uint8_t i = 0; i < 38; i++) { float val = eapi->getValueForHour(now, i); values[i] = val; @@ -272,6 +272,32 @@ bool JsonMqttHandler::publishPrices(EntsoeApi* eapi) { values[9], values[10], values[11], + values[12], + values[13], + values[14], + values[15], + values[16], + values[17], + values[18], + values[19], + values[20], + values[21], + values[22], + values[23], + values[24], + values[25], + values[26], + values[27], + values[28], + values[29], + values[30], + values[31], + values[32], + values[33], + values[34], + values[35], + values[36], + values[37], min == INT16_MAX ? 0.0 : min, max == INT16_MIN ? 0.0 : max, ts1hr, diff --git a/lib/RawMqttHandler/include/RawMqttHandler.h b/lib/RawMqttHandler/include/RawMqttHandler.h index 737b72a3..5f3ce754 100644 --- a/lib/RawMqttHandler/include/RawMqttHandler.h +++ b/lib/RawMqttHandler/include/RawMqttHandler.h @@ -9,7 +9,7 @@ public: this->topic = String(topic); this->full = full; }; - bool publish(AmsData* data, AmsData* previousState, EnergyAccounting* ea); + bool publish(AmsData* data, AmsData* previousState, EnergyAccounting* ea, EntsoeApi* eapi); bool publishTemperatures(AmsConfiguration*, HwTools*); bool publishPrices(EntsoeApi*); bool publishSystem(HwTools* hw, EntsoeApi* eapi, EnergyAccounting* ea); diff --git a/lib/RawMqttHandler/src/RawMqttHandler.cpp b/lib/RawMqttHandler/src/RawMqttHandler.cpp index 2ec9e5bc..236baef7 100644 --- a/lib/RawMqttHandler/src/RawMqttHandler.cpp +++ b/lib/RawMqttHandler/src/RawMqttHandler.cpp @@ -2,7 +2,7 @@ #include "hexutils.h" #include "Uptime.h" -bool RawMqttHandler::publish(AmsData* data, AmsData* meterState, EnergyAccounting* ea) { +bool RawMqttHandler::publish(AmsData* data, AmsData* meterState, EnergyAccounting* ea, EntsoeApi* eapi) { if(topic.isEmpty() || !mqtt->connected()) return false; diff --git a/lib/SvelteUi/app/dist/index.css b/lib/SvelteUi/app/dist/index.css index 23574b3c..dd61479f 100644 --- a/lib/SvelteUi/app/dist/index.css +++ b/lib/SvelteUi/app/dist/index.css @@ -1 +1 @@ -/*! tailwindcss v3.1.8 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],select,textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,select:focus,textarea:focus{--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple]{background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:#6b7280;border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:transparent}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:transparent}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.static{position:static}.fixed{position:fixed}.inset-0{bottom:0;left:0;right:0;top:0}.z-50{z-index:50}.z-40{z-index:40}.col-span-2{grid-column:span 2/span 2}.float-right{float:right}.clear-both{clear:both}.m-3{margin:.75rem}.m-1{margin:.25rem}.m-2{margin:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-1{margin-bottom:.25rem;margin-top:.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-3{margin-bottom:.75rem;margin-top:.75rem}.my-auto{margin-bottom:auto;margin-top:auto}.my-2{margin-bottom:.5rem;margin-top:.5rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mb-3{margin-bottom:.75rem}.mb-1{margin-bottom:.25rem}.mt-2{margin-top:.5rem}.ml-3{margin-left:.75rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.mr-3{margin-right:.75rem}.mt-3{margin-top:.75rem}.mb-4{margin-bottom:1rem}.mt-4{margin-top:1rem}.mt-1{margin-top:.25rem}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-64{height:16rem}.h-6{height:1.5rem}.w-full{width:100%}.w-1\/2{width:50%}.w-1\/4{width:25%}.w-3\/4{width:75%}.w-1\/3{width:33.333333%}.w-40{width:10rem}.w-6{width:1.5rem}.w-96{width:24rem}.flex-none{flex:none}.flex-auto{flex:1 1 auto}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row-reverse{flex-direction:row-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}.bg-violet-600{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-opacity-50{--tw-bg-opacity:.5}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.pr-1{padding-right:.25rem}.pl-1{padding-left:.25rem}.pb-4{padding-bottom:1rem}.text-center{text-align:center}.text-right{text-align:right}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gh-logo{height:2rem;width:2rem}.cnt{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.25rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);margin:.5rem;padding:.5rem}.gwf{height:16rem}@media (min-width:640px){.gwf{grid-column:span 2/span 2}}@media (min-width:768px){.gwf{grid-column:span 3/span 3}}@media (min-width:1024px){.gwf{grid-column:span 4/span 4}}@media (min-width:1280px){.gwf{grid-column:span 5/span 5}}@media (min-width:1536px){.gwf{grid-column:span 6/span 6}}.in-pre{border-bottom-left-radius:.375rem;border-color:rgb(209 213 219/var(--tw-border-opacity));border-top-left-radius:.375rem;border-width:1px 0 1px 1px}.in-post,.in-pre{--tw-border-opacity:1;--tw-bg-opacity:1;align-items:center;background-color:rgb(243 244 246/var(--tw-bg-opacity));display:flex;font-size:.875rem;line-height:1.25rem;padding-left:.75rem;padding-right:.75rem;white-space:nowrap}.in-post{border-bottom-right-radius:.375rem;border-top-right-radius:.375rem;border-width:1px 1px 1px 0}.in-post,.in-txt{border-color:rgb(209 213 219/var(--tw-border-opacity))}.in-txt{--tw-border-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);height:2.5rem}.in-txt:disabled{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.in-f{--tw-border-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);border-bottom-left-radius:.375rem;border-color:rgb(209 213 219/var(--tw-border-opacity));border-top-left-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);height:2.5rem}.in-f:disabled{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.in-m{--tw-border-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);border-color:rgb(209 213 219/var(--tw-border-opacity));border-left-width:0;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);height:2.5rem}.in-m:disabled{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.in-l{--tw-border-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);border-bottom-right-radius:.375rem;border-color:rgb(209 213 219/var(--tw-border-opacity));border-left-width:0;border-top-right-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);height:2.5rem}.in-l:disabled{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.in-s{--tw-border-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);border-color:rgb(209 213 219/var(--tw-border-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);height:2.5rem;width:100%}.in-s:disabled{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.tr{text-align:right}.bd-green{background-color:rgb(34 197 94/var(--tw-bg-opacity));color:rgb(220 252 231/var(--tw-text-opacity))}.bd-green,.bd-yellow{--tw-bg-opacity:1;--tw-text-opacity:1;border-radius:.25rem;font-size:.75rem;font-weight:600;line-height:1rem;margin-bottom:auto;margin-right:.5rem;margin-top:auto;padding:.125rem .625rem}.bd-yellow{background-color:rgb(234 179 8/var(--tw-bg-opacity));color:rgb(254 249 195/var(--tw-text-opacity))}.bd-red{background-color:rgb(239 68 68/var(--tw-bg-opacity));color:rgb(254 226 226/var(--tw-text-opacity))}.bd-blue,.bd-red{--tw-bg-opacity:1;--tw-text-opacity:1;border-radius:.25rem;font-size:.75rem;font-weight:600;line-height:1rem;margin-bottom:auto;margin-right:.5rem;margin-top:auto;padding:.125rem .625rem}.bd-blue{background-color:rgb(59 130 246/var(--tw-bg-opacity));color:rgb(219 234 254/var(--tw-text-opacity))}.bd-gray{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity));border-radius:.25rem;color:rgb(243 244 246/var(--tw-text-opacity));font-size:.75rem;font-weight:600;line-height:1rem;margin-bottom:auto;margin-right:.5rem;margin-top:auto;padding:.125rem .625rem}.btn-pri{padding:.5rem 1rem}.btn-pri,.btn-pri-sm{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity));border-radius:.25rem;color:rgb(255 255 255/var(--tw-text-opacity));margin-right:.75rem}.btn-pri-sm{font-size:.75rem;line-height:1rem;padding:.25rem .5rem}.pl-root{position:relative}.pl-ov{left:25%;position:absolute;text-align:center;top:27%;width:50%}.pl-val{font-size:1.7rem}.pl-unt{color:gray;font-size:1rem}.pl-sub{font-size:1rem;padding-top:10px}.pl-snt{color:gray;font-size:.7rem}.pl-lab{font-size:1rem}.chart{height:100%;margin:0 auto;width:100%}svg{position:relative;width:100%}.tick{font-family:Helvetica,Arial;font-size:.85em;font-weight:200}.tick line{stroke:#e2e2e2;stroke-dasharray:2}.tick text{fill:#999;text-anchor:start}.tick.tick-0 line{stroke-dasharray:0}.tick.tick-green line{stroke:#32d900!important}.tick.tick-green text{fill:#32d900!important}.tick.tick-orange line{stroke:#d95600!important}.tick.tick-orange text{fill:#d95600!important}.x-axis .tick text{text-anchor:middle}.bars rect{stroke:#000;stroke-opacity:.25;opacity:.9}.bars text{display:block;font-family:Helvetica,Arial;font-size:.85em;text-align:center}.hover\:text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}@media (min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1280px){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media (min-width:1536px){.\32xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}} +/*! tailwindcss v3.1.8 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],select,textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,select:focus,textarea:focus{--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple]{background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:#6b7280;border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:transparent}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:transparent}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.static{position:static}.fixed{position:fixed}.inset-0{bottom:0;left:0;right:0;top:0}.z-50{z-index:50}.z-40{z-index:40}.col-span-2{grid-column:span 2/span 2}.float-right{float:right}.clear-both{clear:both}.m-3{margin:.75rem}.m-1{margin:.25rem}.m-2{margin:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-1{margin-bottom:.25rem;margin-top:.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-3{margin-bottom:.75rem;margin-top:.75rem}.my-auto{margin-bottom:auto;margin-top:auto}.my-2{margin-bottom:.5rem;margin-top:.5rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mb-3{margin-bottom:.75rem}.mb-1{margin-bottom:.25rem}.mt-2{margin-top:.5rem}.ml-3{margin-left:.75rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.mr-3{margin-right:.75rem}.mt-3{margin-top:.75rem}.mb-4{margin-bottom:1rem}.mt-4{margin-top:1rem}.mt-1{margin-top:.25rem}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-64{height:16rem}.h-6{height:1.5rem}.w-full{width:100%}.w-1\/2{width:50%}.w-1\/4{width:25%}.w-3\/4{width:75%}.w-1\/3{width:33.333333%}.w-40{width:10rem}.w-6{width:1.5rem}.w-96{width:24rem}.flex-none{flex:none}.flex-auto{flex:1 1 auto}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row-reverse{flex-direction:row-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity))}.bg-violet-600{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-opacity-50{--tw-bg-opacity:.5}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.pr-1{padding-right:.25rem}.pl-1{padding-left:.25rem}.pb-4{padding-bottom:1rem}.text-center{text-align:center}.text-right{text-align:right}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.gh-logo{height:2rem;width:2rem}.cnt{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.25rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);margin:.5rem;padding:.5rem}.gwf{height:16rem}@media (min-width:640px){.gwf{grid-column:span 2/span 2}}@media (min-width:768px){.gwf{grid-column:span 3/span 3}}@media (min-width:1024px){.gwf{grid-column:span 4/span 4}}@media (min-width:1280px){.gwf{grid-column:span 5/span 5}}@media (min-width:1536px){.gwf{grid-column:span 6/span 6}}.in-pre{border-bottom-left-radius:.375rem;border-color:rgb(209 213 219/var(--tw-border-opacity));border-top-left-radius:.375rem;border-width:1px 0 1px 1px}.in-post,.in-pre{--tw-border-opacity:1;--tw-bg-opacity:1;align-items:center;background-color:rgb(243 244 246/var(--tw-bg-opacity));display:flex;font-size:.875rem;line-height:1.25rem;padding-left:.75rem;padding-right:.75rem;white-space:nowrap}.in-post{border-bottom-right-radius:.375rem;border-top-right-radius:.375rem;border-width:1px 1px 1px 0}.in-post,.in-txt{border-color:rgb(209 213 219/var(--tw-border-opacity))}.in-txt{--tw-border-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);height:2.5rem}.in-txt:disabled{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.in-f{--tw-border-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);border-bottom-left-radius:.375rem;border-color:rgb(209 213 219/var(--tw-border-opacity));border-top-left-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);height:2.5rem}.in-f:disabled{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.in-m{--tw-border-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);border-color:rgb(209 213 219/var(--tw-border-opacity));border-left-width:0;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);height:2.5rem}.in-m:disabled{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.in-l{--tw-border-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);border-bottom-right-radius:.375rem;border-color:rgb(209 213 219/var(--tw-border-opacity));border-left-width:0;border-top-right-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);height:2.5rem}.in-l:disabled{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.in-s{--tw-border-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);border-color:rgb(209 213 219/var(--tw-border-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);height:2.5rem;width:100%}.in-s:disabled{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.tr{text-align:right}.bd-green{background-color:rgb(34 197 94/var(--tw-bg-opacity));color:rgb(220 252 231/var(--tw-text-opacity))}.bd-green,.bd-yellow{--tw-bg-opacity:1;--tw-text-opacity:1;border-radius:.25rem;font-size:.75rem;font-weight:600;line-height:1rem;margin-bottom:auto;margin-right:.5rem;margin-top:auto;padding:.125rem .625rem}.bd-yellow{background-color:rgb(234 179 8/var(--tw-bg-opacity));color:rgb(254 249 195/var(--tw-text-opacity))}.bd-red{background-color:rgb(239 68 68/var(--tw-bg-opacity));color:rgb(254 226 226/var(--tw-text-opacity))}.bd-blue,.bd-red{--tw-bg-opacity:1;--tw-text-opacity:1;border-radius:.25rem;font-size:.75rem;font-weight:600;line-height:1rem;margin-bottom:auto;margin-right:.5rem;margin-top:auto;padding:.125rem .625rem}.bd-blue{background-color:rgb(59 130 246/var(--tw-bg-opacity));color:rgb(219 234 254/var(--tw-text-opacity))}.bd-gray{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity));border-radius:.25rem;color:rgb(243 244 246/var(--tw-text-opacity));font-size:.75rem;font-weight:600;line-height:1rem;margin-bottom:auto;margin-right:.5rem;margin-top:auto;padding:.125rem .625rem}.btn-pri{padding:.5rem 1rem}.btn-pri,.btn-pri-sm{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity));border-radius:.25rem;color:rgb(255 255 255/var(--tw-text-opacity));margin-right:.75rem}.btn-pri-sm{font-size:.75rem;line-height:1rem;padding:.25rem .5rem}.pl-root{position:relative}.pl-ov{left:25%;position:absolute;text-align:center;top:27%;width:50%}.pl-val{font-size:1.7rem}.pl-unt{color:gray;font-size:1rem}.pl-sub{font-size:1rem;padding-top:10px}.pl-snt{color:gray;font-size:.7rem}.pl-lab{font-size:1rem}.chart{height:100%;margin:0 auto;width:100%}svg{position:relative;width:100%}.tick{font-family:Helvetica,Arial;font-size:.85em;font-weight:200}.tick line{stroke:#e2e2e2;stroke-dasharray:2}.tick text{fill:#999;text-anchor:start}.tick.tick-0 line{stroke-dasharray:0}.tick.tick-green line{stroke:#32d900!important}.tick.tick-green text{fill:#32d900!important}.tick.tick-orange line{stroke:#d95600!important}.tick.tick-orange text{fill:#d95600!important}.x-axis .tick text{text-anchor:middle}.bars rect{stroke:#000;stroke-opacity:.25;opacity:.9}.bars text{display:block;font-family:Helvetica,Arial;font-size:.85em;text-align:center}.hover\:text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}@media (min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1280px){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media (min-width:1536px){.\32xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}} diff --git a/lib/SvelteUi/app/dist/index.js b/lib/SvelteUi/app/dist/index.js index a6d385cb..fc287e2e 100644 --- a/lib/SvelteUi/app/dist/index.js +++ b/lib/SvelteUi/app/dist/index.js @@ -1,13 +1,14 @@ -(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const r of o.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&n(r)}).observe(document,{childList:!0,subtree:!0});function l(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerpolicy&&(o.referrerPolicy=i.referrerpolicy),i.crossorigin==="use-credentials"?o.credentials="include":i.crossorigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(i){if(i.ep)return;i.ep=!0;const o=l(i);fetch(i.href,o)}})();function ie(){}function qt(t,e){for(const l in e)t[l]=e[l];return t}function vf(t){return t()}function pr(){return Object.create(null)}function Be(t){t.forEach(vf)}function hf(t){return typeof t=="function"}function ke(t,e){return t!=t?e==e:t!==e||t&&typeof t=="object"||typeof t=="function"}let Xi;function fc(t,e){return Xi||(Xi=document.createElement("a")),Xi.href=e,t===Xi.href}function cc(t){return Object.keys(t).length===0}function Vs(t,...e){if(t==null)return ie;const l=t.subscribe(...e);return l.unsubscribe?()=>l.unsubscribe():l}function Hn(t){let e;return Vs(t,l=>e=l)(),e}function zt(t,e,l){t.$$.on_destroy.push(Vs(e,l))}function Ks(t,e,l,n){if(t){const i=gf(t,e,l,n);return t[0](i)}}function gf(t,e,l,n){return t[1]&&n?qt(l.ctx.slice(),t[1](n(e))):l.ctx}function Qs(t,e,l,n){if(t[2]&&n){const i=t[2](n(l));if(e.dirty===void 0)return i;if(typeof i=="object"){const o=[],r=Math.max(e.dirty.length,i.length);for(let a=0;a32){const e=[],l=t.ctx.length/32;for(let n=0;nt.removeEventListener(e,l,n)}function cs(t){return function(e){return e.preventDefault(),t.call(this,e)}}function u(t,e,l){l==null?t.removeAttribute(e):t.getAttribute(e)!==l&&t.setAttribute(e,l)}function Yt(t,e){const l=Object.getOwnPropertyDescriptors(t.__proto__);for(const n in e)e[n]==null?t.removeAttribute(n):n==="style"?t.style.cssText=e[n]:n==="__value"?t.value=t[n]=e[n]:l[n]&&l[n].set?t[n]=e[n]:u(t,n,e[n])}function ce(t){return t===""?null:+t}function pc(t){return Array.from(t.childNodes)}function G(t,e){e=""+e,t.wholeText!==e&&(t.data=e)}function Z(t,e){t.value=e==null?"":e}function bf(t,e,l,n){l===null?t.style.removeProperty(e):t.style.setProperty(e,l,n?"important":"")}function Re(t,e){for(let l=0;l{r.source===n.contentWindow&&e()})):(n.src="about:blank",n.onload=()=>{o=Y(n.contentWindow,"resize",e)}),s(t,n),()=>{(i||o&&n.contentWindow)&&o(),w(n)}}function dc(t,e,{bubbles:l=!1,cancelable:n=!1}={}){const i=document.createEvent("CustomEvent");return i.initCustomEvent(t,l,n,e),i}let ii;function li(t){ii=t}function si(){if(!ii)throw new Error("Function called outside component initialization");return ii}function vc(t){si().$$.on_mount.push(t)}function hc(t){si().$$.on_destroy.push(t)}function gc(){const t=si();return(e,l,{cancelable:n=!1}={})=>{const i=t.$$.callbacks[e];if(i){const o=dc(e,l,{cancelable:n});return i.slice().forEach(r=>{r.call(t,o)}),!o.defaultPrevented}return!0}}function ni(t,e){return si().$$.context.set(t,e),e}function wl(t){return si().$$.context.get(t)}const ei=[],us=[],ns=[],mr=[],kf=Promise.resolve();let Rs=!1;function wf(){Rs||(Rs=!0,kf.then(yf))}function bc(){return wf(),kf}function ze(t){ns.push(t)}const As=new Set;let es=0;function yf(){const t=ii;do{for(;es{is.delete(t),n&&(l&&t.d(1),n())}),t.o(e)}else n&&n()}function jn(t,e){const l={},n={},i={$$scope:1};let o=t.length;for(;o--;){const r=t[o],a=e[o];if(a){for(const c in r)c in a||(n[c]=1);for(const c in a)i[c]||(l[c]=a[c],i[c]=1);t[o]=a}else for(const c in r)i[c]=1}for(const r in n)r in l||(l[r]=void 0);return l}function _r(t){return typeof t=="object"&&t!==null?t:{}}function J(t){t&&t.c()}function V(t,e,l,n){const{fragment:i,on_mount:o,on_destroy:r,after_update:a}=t.$$;i&&i.m(e,l),n||ze(()=>{const c=o.map(vf).filter(hf);r?r.push(...c):Be(c),t.$$.on_mount=[]}),a.forEach(ze)}function K(t,e){const l=t.$$;l.fragment!==null&&(Be(l.on_destroy),l.fragment&&l.fragment.d(e),l.on_destroy=l.fragment=null,l.ctx=[])}function wc(t,e){t.$$.dirty[0]===-1&&(ei.push(t),wf(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<{const d=g.length?g[0]:h;return f.ctx&&i(f.ctx[_],f.ctx[_]=d)&&(!f.skip_bound&&f.bound[_]&&f.bound[_](d),m&&wc(t,_)),h}):[],f.update(),m=!0,Be(f.before_update),f.fragment=n?n(f.ctx):!1,e.target){if(e.hydrate){const _=pc(e.target);f.fragment&&f.fragment.l(_),_.forEach(w)}else f.fragment&&f.fragment.c();e.intro&&P(t.$$.fragment),V(t,e.target,e.anchor,e.customElement),yf()}li(c)}class $e{$destroy(){K(this,1),this.$destroy=ie}$on(e,l){const n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(l),()=>{const i=n.indexOf(l);i!==-1&&n.splice(i,1)}}$set(e){this.$$set&&!cc(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const dr=t=>typeof t>"u",$f=t=>typeof t=="function",Cf=t=>typeof t=="number";function yc(t){return!t.defaultPrevented&&t.button===0&&!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function Sf(){let t=0;return()=>t++}function $c(){return Math.random().toString(36).substring(2)}const yl=typeof window>"u";function Tf(t,e,l){return t.addEventListener(e,l),()=>t.removeEventListener(e,l)}const Ls=(t,e)=>t?{}:{style:e},On=t=>({"aria-hidden":"true",...Ls(t,"display:none;")}),Ln=[];function Pf(t,e){return{subscribe:Ze(t,e).subscribe}}function Ze(t,e=ie){let l;const n=new Set;function i(a){if(ke(t,a)&&(t=a,l)){const c=!Ln.length;for(const f of n)f[1](),Ln.push(f,t);if(c){for(let f=0;f{n.delete(f),n.size===0&&(l(),l=null)}}return{set:i,update:o,subscribe:r}}function Cc(t,e,l){const n=!Array.isArray(t),i=n?[t]:t,o=e.length<2;return Pf(l,r=>{let a=!1;const c=[];let f=0,m=ie;const _=()=>{if(f)return;m();const g=e(n?c[0]:c,r);o?r(g):m=hf(g)?g:ie},h=i.map((g,d)=>Vs(g,b=>{c[d]=b,f&=~(1<{f|=1<`@@svnav-ctx__${t}`,Os=oi("LOCATION"),Wn=oi("ROUTER"),Mf=oi("ROUTE"),Sc=oi("ROUTE_PARAMS"),Tc=oi("FOCUS_ELEM"),Af=/^:(.+)/,ti=(t,e,l)=>t.substr(e,l),qs=(t,e)=>ti(t,0,e.length)===e,Pc=t=>t==="",Mc=t=>Af.test(t),Nf=t=>t[0]==="*",Ac=t=>t.replace(/\*.*$/,""),If=t=>t.replace(/(^\/+|\/+$)/g,"");function Qt(t,e=!1){const l=If(t).split("/");return e?l.filter(Boolean):l}const Ns=(t,e)=>t+(e?`?${e}`:""),Xs=t=>`/${If(t)}`;function ui(...t){const e=n=>Qt(n,!0).join("/"),l=t.map(e).join("/");return Xs(l)}const xs=1,ps=2,Bl=3,Nc=4,Df=5,Ic=6,Ef=7,Dc=8,Ec=9,Ff=10,Rf=11,Fc={[xs]:"Link",[ps]:"Route",[Bl]:"Router",[Nc]:"useFocus",[Df]:"useLocation",[Ic]:"useMatch",[Ef]:"useNavigate",[Dc]:"useParams",[Ec]:"useResolvable",[Ff]:"useResolve",[Rf]:"navigate"},eo=t=>Fc[t];function Rc(t,e){let l;return t===ps?l=e.path?`path="${e.path}"`:"default":t===xs?l=`to="${e.to}"`:t===Bl&&(l=`basepath="${e.basepath||""}"`),`<${eo(t)} ${l||""} />`}function Lc(t,e,l,n){const i=l&&Rc(n||t,l),o=i?` +(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const r of o.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&n(r)}).observe(document,{childList:!0,subtree:!0});function l(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerpolicy&&(o.referrerPolicy=i.referrerpolicy),i.crossorigin==="use-credentials"?o.credentials="include":i.crossorigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(i){if(i.ep)return;i.ep=!0;const o=l(i);fetch(i.href,o)}})();function ie(){}function Ot(t,e){for(const l in e)t[l]=e[l];return t}function wf(t){return t()}function dr(){return Object.create(null)}function Ge(t){t.forEach(wf)}function yf(t){return typeof t=="function"}function we(t,e){return t!=t?e==e:t!==e||t&&typeof t=="object"||typeof t=="function"}let ts;function vc(t,e){return ts||(ts=document.createElement("a")),ts.href=e,t===ts.href}function hc(t){return Object.keys(t).length===0}function Js(t,...e){if(t==null)return ie;const l=t.subscribe(...e);return l.unsubscribe?()=>l.unsubscribe():l}function Gn(t){let e;return Js(t,l=>e=l)(),e}function Bt(t,e,l){t.$$.on_destroy.push(Js(e,l))}function Xs(t,e,l,n){if(t){const i=$f(t,e,l,n);return t[0](i)}}function $f(t,e,l,n){return t[1]&&n?Ot(l.ctx.slice(),t[1](n(e))):l.ctx}function xs(t,e,l,n){if(t[2]&&n){const i=t[2](n(l));if(e.dirty===void 0)return i;if(typeof i=="object"){const o=[],r=Math.max(e.dirty.length,i.length);for(let a=0;a32){const e=[],l=t.ctx.length/32;for(let n=0;nt.removeEventListener(e,l,n)}function _s(t){return function(e){return e.preventDefault(),t.call(this,e)}}function u(t,e,l){l==null?t.removeAttribute(e):t.getAttribute(e)!==l&&t.setAttribute(e,l)}function Yt(t,e){const l=Object.getOwnPropertyDescriptors(t.__proto__);for(const n in e)e[n]==null?t.removeAttribute(n):n==="style"?t.style.cssText=e[n]:n==="__value"?t.value=t[n]=e[n]:l[n]&&l[n].set?t[n]=e[n]:u(t,n,e[n])}function me(t){return t===""?null:+t}function gc(t){return Array.from(t.childNodes)}function B(t,e){e=""+e,t.wholeText!==e&&(t.data=e)}function z(t,e){t.value=e==null?"":e}function Cf(t,e,l,n){l===null?t.style.removeProperty(e):t.style.setProperty(e,l,n?"important":"")}function Fe(t,e){for(let l=0;l{r.source===n.contentWindow&&e()})):(n.src="about:blank",n.onload=()=>{o=V(n.contentWindow,"resize",e)}),s(t,n),()=>{(i||o&&n.contentWindow)&&o(),w(n)}}function wc(t,e,{bubbles:l=!1,cancelable:n=!1}={}){const i=document.createEvent("CustomEvent");return i.initCustomEvent(t,l,n,e),i}let si;function li(t){si=t}function oi(){if(!si)throw new Error("Function called outside component initialization");return si}function yc(t){oi().$$.on_mount.push(t)}function $c(t){oi().$$.on_destroy.push(t)}function Cc(){const t=oi();return(e,l,{cancelable:n=!1}={})=>{const i=t.$$.callbacks[e];if(i){const o=wc(e,l,{cancelable:n});return i.slice().forEach(r=>{r.call(t,o)}),!o.defaultPrevented}return!0}}function ni(t,e){return oi().$$.context.set(t,e),e}function wl(t){return oi().$$.context.get(t)}const ei=[],fs=[],os=[],vr=[],Tf=Promise.resolve();let Us=!1;function Sf(){Us||(Us=!0,Tf.then(Pf))}function Tc(){return Sf(),Tf}function Be(t){os.push(t)}const Es=new Set;let ns=0;function Pf(){const t=si;do{for(;ns{us.delete(t),n&&(l&&t.d(1),n())}),t.o(e)}else n&&n()}function Bn(t,e){const l={},n={},i={$$scope:1};let o=t.length;for(;o--;){const r=t[o],a=e[o];if(a){for(const c in r)c in a||(n[c]=1);for(const c in a)i[c]||(l[c]=a[c],i[c]=1);t[o]=a}else for(const c in r)i[c]=1}for(const r in n)r in l||(l[r]=void 0);return l}function hr(t){return typeof t=="object"&&t!==null?t:{}}function Z(t){t&&t.c()}function K(t,e,l,n){const{fragment:i,on_mount:o,on_destroy:r,after_update:a}=t.$$;i&&i.m(e,l),n||Be(()=>{const c=o.map(wf).filter(yf);r?r.push(...c):Ge(c),t.$$.on_mount=[]}),a.forEach(Be)}function Q(t,e){const l=t.$$;l.fragment!==null&&(Ge(l.on_destroy),l.fragment&&l.fragment.d(e),l.on_destroy=l.fragment=null,l.ctx=[])}function Pc(t,e){t.$$.dirty[0]===-1&&(ei.push(t),Sf(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<{const h=g.length?g[0]:d;return f.ctx&&i(f.ctx[_],f.ctx[_]=h)&&(!f.skip_bound&&f.bound[_]&&f.bound[_](h),p&&Pc(t,_)),d}):[],f.update(),p=!0,Ge(f.before_update),f.fragment=n?n(f.ctx):!1,e.target){if(e.hydrate){const _=gc(e.target);f.fragment&&f.fragment.l(_),_.forEach(w)}else f.fragment&&f.fragment.c();e.intro&&M(t.$$.fragment),K(t,e.target,e.anchor,e.customElement),Pf()}li(c)}class $e{$destroy(){Q(this,1),this.$destroy=ie}$on(e,l){const n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(l),()=>{const i=n.indexOf(l);i!==-1&&n.splice(i,1)}}$set(e){this.$$set&&!hc(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const gr=t=>typeof t>"u",Mf=t=>typeof t=="function",Af=t=>typeof t=="number";function Mc(t){return!t.defaultPrevented&&t.button===0&&!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function Df(){let t=0;return()=>t++}function Ac(){return Math.random().toString(36).substring(2)}const yl=typeof window>"u";function Nf(t,e,l){return t.addEventListener(e,l),()=>t.removeEventListener(e,l)}const Hs=(t,e)=>t?{}:{style:e},Hn=t=>({"aria-hidden":"true",...Hs(t,"display:none;")}),Un=[];function If(t,e){return{subscribe:Ze(t,e).subscribe}}function Ze(t,e=ie){let l;const n=new Set;function i(a){if(we(t,a)&&(t=a,l)){const c=!Un.length;for(const f of n)f[1](),Un.push(f,t);if(c){for(let f=0;f{n.delete(f),n.size===0&&(l(),l=null)}}return{set:i,update:o,subscribe:r}}function Dc(t,e,l){const n=!Array.isArray(t),i=n?[t]:t,o=e.length<2;return If(l,r=>{let a=!1;const c=[];let f=0,p=ie;const _=()=>{if(f)return;p();const g=e(n?c[0]:c,r);o?r(g):p=yf(g)?g:ie},d=i.map((g,h)=>Js(g,b=>{c[h]=b,f&=~(1<{f|=1<`@@svnav-ctx__${t}`,js=ui("LOCATION"),Yn=ui("ROUTER"),Ef=ui("ROUTE"),Nc=ui("ROUTE_PARAMS"),Ic=ui("FOCUS_ELEM"),Rf=/^:(.+)/,ti=(t,e,l)=>t.substr(e,l),Ws=(t,e)=>ti(t,0,e.length)===e,Ec=t=>t==="",Rc=t=>Rf.test(t),Ff=t=>t[0]==="*",Fc=t=>t.replace(/\*.*$/,""),Lf=t=>t.replace(/(^\/+|\/+$)/g,"");function Kt(t,e=!1){const l=Lf(t).split("/");return e?l.filter(Boolean):l}const Rs=(t,e)=>t+(e?`?${e}`:""),lo=t=>`/${Lf(t)}`;function ri(...t){const e=n=>Kt(n,!0).join("/"),l=t.map(e).join("/");return lo(l)}const no=1,ds=2,Vl=3,Lc=4,Of=5,Oc=6,qf=7,qc=8,Uc=9,Uf=10,Hf=11,Hc={[no]:"Link",[ds]:"Route",[Vl]:"Router",[Lc]:"useFocus",[Of]:"useLocation",[Oc]:"useMatch",[qf]:"useNavigate",[qc]:"useParams",[Uc]:"useResolvable",[Uf]:"useResolve",[Hf]:"navigate"},io=t=>Hc[t];function jc(t,e){let l;return t===ds?l=e.path?`path="${e.path}"`:"default":t===no?l=`to="${e.to}"`:t===Vl&&(l=`basepath="${e.basepath||""}"`),`<${io(t)} ${l||""} />`}function Wc(t,e,l,n){const i=l&&jc(n||t,l),o=i?` -Occurred in: ${i}`:"",r=eo(t),a=$f(e)?e(r):e;return`<${r}> ${a}${o}`}const Lf=t=>(...e)=>t(Lc(...e)),Of=Lf(t=>{throw new Error(t)}),rs=Lf(console.warn),vr=4,Oc=3,qc=2,Uc=1,Hc=1;function jc(t,e){const l=t.default?0:Qt(t.fullPath).reduce((n,i)=>{let o=n;return o+=vr,Pc(i)?o+=Hc:Mc(i)?o+=qc:Nf(i)?o-=vr+Uc:o+=Oc,o},0);return{route:t,score:l,index:e}}function Wc(t){return t.map(jc).sort((e,l)=>e.scorel.score?-1:e.index-l.index)}function qf(t,e){let l,n;const[i]=e.split("?"),o=Qt(i),r=o[0]==="",a=Wc(t);for(let c=0,f=a.length;c({...m,params:h,uri:k});if(m.default){n=g(e);continue}const d=Qt(m.fullPath),b=Math.max(o.length,d.length);let $=0;for(;${f===".."?c.pop():f!=="."&&c.push(f)}),Ns(`/${c.join("/")}`,n)}function hr(t,e){const{pathname:l,hash:n="",search:i="",state:o}=t,r=Qt(e,!0),a=Qt(l,!0);for(;r.length;)r[0]!==a[0]&&Of(Bl,`Invalid state: All locations must begin with the basepath "${e}", found "${l}"`),r.shift(),a.shift();return{pathname:ui(...a),hash:n,search:i,state:o}}const gr=t=>t.length===1?"":t,to=t=>{const e=t.indexOf("?"),l=t.indexOf("#"),n=e!==-1,i=l!==-1,o=i?gr(ti(t,l)):"",r=i?ti(t,0,l):t,a=n?gr(ti(r,e)):"";return{pathname:(n?ti(r,0,e):r)||"/",search:a,hash:o}},Bc=t=>{const{pathname:e,search:l,hash:n}=t;return e+l+n};function zc(t,e,l){return ui(l,Gc(t,e))}function Yc(t,e){const l=Xs(Ac(t)),n=Qt(l,!0),i=Qt(e,!0).slice(0,n.length),o=Uf({fullPath:l},ui(...i));return o&&o.uri}const Is="POP",Vc="PUSH",Kc="REPLACE";function Ds(t){return{...t.location,pathname:encodeURI(decodeURI(t.location.pathname)),state:t.history.state,_key:t.history.state&&t.history.state._key||"initial"}}function Qc(t){let e=[],l=Ds(t),n=Is;const i=(o=e)=>o.forEach(r=>r({location:l,action:n}));return{get location(){return l},listen(o){e.push(o);const r=()=>{l=Ds(t),n=Is,i([o])};i([o]);const a=Tf(t,"popstate",r);return()=>{a(),e=e.filter(c=>c!==o)}},navigate(o,r){const{state:a={},replace:c=!1}=r||{};if(n=c?Kc:Vc,Cf(o))r&&rs(Rf,"Navigation options (state or replace) are not supported, when passing a number as the first argument to navigate. They are ignored."),n=Is,t.history.go(o);else{const f={...a,_key:$c()};try{t.history[c?"replaceState":"pushState"](f,"",o)}catch{t.location[c?"replace":"assign"](o)}}l=Ds(t),i()}}}function Es(t,e){return{...to(e),state:t}}function Zc(t="/"){let e=0,l=[Es(null,t)];return{get entries(){return l},get location(){return l[e]},addEventListener(){},removeEventListener(){},history:{get state(){return l[e].state},pushState(n,i,o){e++,l=l.slice(0,e),l.push(Es(n,o))},replaceState(n,i,o){l[e]=Es(n,o)},go(n){const i=e+n;i<0||i>l.length-1||(e=i)}}}}const Jc=!!(!yl&&window.document&&window.document.createElement),Xc=!yl&&window.location.origin==="null",Hf=Qc(Jc&&!Xc?window:Zc()),{navigate:qn}=Hf;let rl=null,jf=!0;function xc(t,e){const l=document.querySelectorAll("[data-svnav-router]");for(let n=0;nrl.level||t.level===rl.level&&xc(t.routerId,rl.routerId))&&(rl=t)}function t1(){rl=null}function l1(){jf=!1}function br(t){if(!t)return!1;const e="tabindex";try{if(!t.hasAttribute(e)){t.setAttribute(e,"-1");let l;l=Tf(t,"blur",()=>{t.removeAttribute(e),l()})}return t.focus(),document.activeElement===t}catch{return!1}}function n1(t,e){return Number(t.dataset.svnavRouteEnd)===e}function i1(t){return/^H[1-6]$/i.test(t.tagName)}function kr(t,e=document){return e.querySelector(t)}function s1(t){let l=kr(`[data-svnav-route-start="${t}"]`).nextElementSibling;for(;!n1(l,t);){if(i1(l))return l;const n=kr("h1,h2,h3,h4,h5,h6",l);if(n)return n;l=l.nextElementSibling}return null}function o1(t){Promise.resolve(Hn(t.focusElement)).then(e=>{const l=e||s1(t.id);l||rs(Bl,`Could not find an element to focus. You should always render a header for accessibility reasons, or set a custom focus element via the "useFocus" hook. If you don't want this Route or Router to manage focus, pass "primary={false}" to it.`,t,ps),!br(l)&&br(document.documentElement)})}const u1=(t,e,l)=>(n,i)=>bc().then(()=>{if(!rl||jf){l1();return}if(n&&o1(rl.route),t.announcements&&i){const{path:o,fullPath:r,meta:a,params:c,uri:f}=rl.route,m=t.createAnnouncement({path:o,fullPath:r,meta:a,params:c,uri:f},Hn(l));Promise.resolve(m).then(_=>{e.set(_)})}t1()}),wr="position:fixed;top:-1px;left:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;";function r1(t){let e,l,n=[{role:"status"},{"aria-atomic":"true"},{"aria-live":"polite"},{"data-svnav-announcer":""},Ls(t[6],wr)],i={};for(let o=0;o`Navigated to ${le.uri}`,announcements:!0,...d},k=m,S=Xs(m),A=wl(Os),E=wl(Wn),T=!A,N=f1(),D=g&&!(E&&!E.manageFocus),R=Ze("");zt(t,R,le=>l(0,a=le));const W=E?E.disableInlineStyles:b,H=Ze([]);zt(t,H,le=>l(20,r=le));const F=Ze(null);zt(t,F,le=>l(18,i=le));let L=!1;const j=T?0:E.level+1,q=T?Ze((()=>hr(yl?to(_):h.location,S))()):A;zt(t,q,le=>l(17,n=le));const O=Ze(n);zt(t,O,le=>l(19,o=le));const U=u1($,R,q),x=le=>_e=>_e.filter(Ce=>Ce.id!==le);function X(le){if(yl){if(L)return;const _e=Uf(le,n.pathname);if(_e)return L=!0,_e}else H.update(_e=>{const Ce=x(le.id)(_e);return Ce.push(le),Ce})}function ne(le){H.update(x(le))}return!T&&m!==yr&&rs(Bl,'Only top-level Routers can have a "basepath" prop. It is ignored.',{basepath:m}),T&&(vc(()=>h.listen(_e=>{const Ce=hr(_e.location,S);O.set(n),q.set(Ce)})),ni(Os,q)),ni(Wn,{activeRoute:F,registerRoute:X,unregisterRoute:ne,manageFocus:D,level:j,id:N,history:T?h:E.history,basepath:T?S:E.basepath,disableInlineStyles:W}),t.$$set=le=>{"basepath"in le&&l(11,m=le.basepath),"url"in le&&l(12,_=le.url),"history"in le&&l(13,h=le.history),"primary"in le&&l(14,g=le.primary),"a11y"in le&&l(15,d=le.a11y),"disableInlineStyles"in le&&l(16,b=le.disableInlineStyles),"$$scope"in le&&l(21,f=le.$$scope)},t.$$.update=()=>{if(t.$$.dirty[0]&2048&&m!==k&&rs(Bl,'You cannot change the "basepath" prop. It is ignored.'),t.$$.dirty[0]&1179648){const le=qf(r,n.pathname);F.set(le)}if(t.$$.dirty[0]&655360&&T){const le=!!n.hash,_e=!le&&D,Ce=!le||n.pathname!==o.pathname;U(_e,Ce)}t.$$.dirty[0]&262144&&D&&i&&i.primary&&e1({level:j,routerId:N,route:i})},[a,$,T,N,D,R,W,H,F,q,O,m,_,h,g,d,b,n,i,o,r,f,c]}class Wf extends $e{constructor(e){super(),ye(this,e,c1,a1,ke,{basepath:11,url:12,history:13,primary:14,a11y:15,disableInlineStyles:16},null,[-1,-1])}}function ri(t,e,l=Wn,n=Bl){wl(l)||Of(t,o=>`You cannot use ${o} outside of a ${eo(n)}.`,e)}const p1=t=>{const{subscribe:e}=wl(t);return{subscribe:e}};function Gf(){return ri(Df),p1(Os)}function Bf(){const{history:t}=wl(Wn);return t}function zf(){const t=wl(Mf);return t?Cc(t,e=>e.base):Ze("/")}function Yf(){ri(Ff);const t=zf(),{basepath:e}=wl(Wn);return n=>zc(n,Hn(t),e)}function m1(){ri(Ef);const t=Yf(),{navigate:e}=Bf();return(n,i)=>{const o=Cf(n)?n:t(n);return e(o,i)}}const _1=t=>({params:t&16,location:t&8}),$r=t=>({params:yl?Hn(t[10]):t[4],location:t[3],navigate:t[11]});function Cr(t){let e,l;return e=new Wf({props:{primary:t[1],$$slots:{default:[h1]},$$scope:{ctx:t}}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p(n,i){const o={};i&2&&(o.primary=n[1]),i&528409&&(o.$$scope={dirty:i,ctx:n}),e.$set(o)},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function d1(t){let e;const l=t[18].default,n=Ks(l,t,t[19],$r);return{c(){n&&n.c()},m(i,o){n&&n.m(i,o),e=!0},p(i,o){n&&n.p&&(!e||o&524312)&&Zs(n,l,i,i[19],e?Qs(l,i[19],o,_1):Js(i[19]),$r)},i(i){e||(P(n,i),e=!0)},o(i){I(n,i),e=!1},d(i){n&&n.d(i)}}}function v1(t){let e,l,n;const i=[{location:t[3]},{navigate:t[11]},yl?Hn(t[10]):t[4],t[12]];var o=t[0];function r(a){let c={};for(let f=0;f{K(m,1)}),De()}o?(e=new o(r()),J(e.$$.fragment),P(e.$$.fragment,1),V(e,l.parentNode,l)):e=null}else o&&e.$set(f)},i(a){n||(e&&P(e.$$.fragment,a),n=!0)},o(a){e&&I(e.$$.fragment,a),n=!1},d(a){a&&w(l),e&&K(e,a)}}}function h1(t){let e,l,n,i;const o=[v1,d1],r=[];function a(c,f){return c[0]!==null?0:1}return e=a(t),l=r[e]=o[e](t),{c(){l.c(),n=je()},m(c,f){r[e].m(c,f),y(c,n,f),i=!0},p(c,f){let m=e;e=a(c),e===m?r[e].p(c,f):(Ie(),I(r[m],1,1,()=>{r[m]=null}),De(),l=r[e],l?l.p(c,f):(l=r[e]=o[e](c),l.c()),P(l,1),l.m(n.parentNode,n))},i(c){i||(P(l),i=!0)},o(c){I(l),i=!1},d(c){r[e].d(c),c&&w(n)}}}function g1(t){let e,l,n,i,o,r=[On(t[7]),{"data-svnav-route-start":t[5]}],a={};for(let _=0;_{c=null}),De()),Yt(i,m=jn(f,[On(_[7]),{"data-svnav-route-end":_[5]}]))},i(_){o||(P(c),o=!0)},o(_){I(c),o=!1},d(_){_&&w(e),_&&w(l),c&&c.d(_),_&&w(n),_&&w(i)}}}const b1=Sf();function k1(t,e,l){let n;const i=["path","component","meta","primary"];let o=os(e,i),r,a,c,f,{$$slots:m={},$$scope:_}=e,{path:h=""}=e,{component:g=null}=e,{meta:d={}}=e,{primary:b=!0}=e;ri(ps,e);const $=b1(),{registerRoute:k,unregisterRoute:S,activeRoute:A,disableInlineStyles:E}=wl(Wn);zt(t,A,L=>l(16,r=L));const T=zf();zt(t,T,L=>l(17,c=L));const N=Gf();zt(t,N,L=>l(3,a=L));const D=Ze(null);let R;const W=Ze(),H=Ze({});zt(t,H,L=>l(4,f=L)),ni(Mf,W),ni(Sc,H),ni(Tc,D);const F=m1();return yl||hc(()=>S($)),t.$$set=L=>{l(24,e=qt(qt({},e),ss(L))),l(12,o=os(e,i)),"path"in L&&l(13,h=L.path),"component"in L&&l(0,g=L.component),"meta"in L&&l(14,d=L.meta),"primary"in L&&l(1,b=L.primary),"$$scope"in L&&l(19,_=L.$$scope)},t.$$.update=()=>{if(t.$$.dirty&155658){const L=h==="",j=ui(c,h),B={id:$,path:h,meta:d,default:L,fullPath:L?"":j,base:L?c:Yc(j,a.pathname),primary:b,focusElement:D};W.set(B),l(15,R=k(B))}if(t.$$.dirty&98304&&l(2,n=!!(R||r&&r.id===$)),t.$$.dirty&98308&&n){const{params:L}=R||r;H.set(L)}},e=ss(e),[g,b,n,a,f,$,A,E,T,N,H,F,o,h,d,R,r,c,m,_]}class ul extends $e{constructor(e){super(),ye(this,e,k1,g1,ke,{path:13,component:0,meta:14,primary:1})}}function w1(t){let e,l,n,i;const o=t[13].default,r=Ks(o,t,t[12],null);let a=[{href:t[0]},t[2],t[1]],c={};for(let f=0;fl(11,_=D));const A=gc(),E=Yf(),{navigate:T}=Bf();function N(D){A("click",D),yc(D)&&(D.preventDefault(),T(n,{state:$,replace:r||b}))}return t.$$set=D=>{l(19,e=qt(qt({},e),ss(D))),l(18,m=os(e,f)),"to"in D&&l(5,d=D.to),"replace"in D&&l(6,b=D.replace),"state"in D&&l(7,$=D.state),"getProps"in D&&l(8,k=D.getProps),"$$scope"in D&&l(12,g=D.$$scope)},t.$$.update=()=>{t.$$.dirty&2080&&l(0,n=E(d,_)),t.$$.dirty&2049&&l(10,i=qs(_.pathname,n)),t.$$.dirty&2049&&l(9,o=n===_.pathname),t.$$.dirty&2049&&(r=to(n)===Bc(_)),t.$$.dirty&512&&l(2,a=o?{"aria-current":"page"}:{}),l(1,c=(()=>{if($f(k)){const D=k({location:_,href:n,isPartiallyCurrent:i,isCurrent:o});return{...m,...D}}return m})())},e=ss(e),[n,c,a,S,N,d,b,$,k,o,i,_,g,h]}class kl extends $e{constructor(e){super(),ye(this,e,y1,w1,ke,{to:5,replace:6,state:7,getProps:8})}}let Us=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function bl(t){return t===1?"green":t===2?"yellow":t===3?"red":"gray"}function $1(t){return t>218&&t<242?"#32d900":t>212&&t<248?"#b1d900":t>208&&t<252?"#ffb800":"#d90000"}function Vf(t){return t>90?"#d90000":t>85?"#e32100":t>80?"#ffb800":t>75?"#dcd800":"#32d900"}function C1(t){return t>75?"#32d900":t>50?"#77d900":t>25?"#94d900":"#dcd800"}function as(t){switch(t){case 1:return"Aidon";case 2:return"Kaifa";case 3:return"Kamstrup";case 8:return"Iskra";case 9:return"Landis+Gyr";case 10:return"Sagemcom";default:return""}}function Ee(t){for(t=t.toString();t.length<2;)t="0"+t;return t}function fe(t,e){switch(e){case 5:switch(t){case"esp8266":return"Pow-K (GPIO12)";case"esp32s2":return"Pow-K+"}case 7:switch(t){case"esp8266":return"Pow-U (GPIO12)";case"esp32s2":return"Pow-U+"}case 6:return"Pow-P1";case 51:return"Wemos S2 mini";case 50:return"Generic ESP32-S2";case 201:return"Wemos LOLIN D32";case 202:return"Adafruit HUZZAH32";case 203:return"DevKitC";case 200:return"Generic ESP32";case 2:return"HAN Reader 2.0 by Max Spencer";case 0:return"Custom hardware by Roar Fredriksen";case 1:return"Kamstrup module by Egil Opsahl";case 8:return"\xB5HAN mosquito by dbeinder";case 3:return"Pow-K (UART0)";case 4:return"Pow-U (UART0)";case 101:return"Wemos D1 mini";case 100:return"Generic ESP8266";case 70:return"Generic ESP32-C3";case 71:return"ESP32-C3-DevKitM-1"}}function Sr(t){switch(t){case-1:return"Parse error";case-2:return"Incomplete data received";case-3:return"Payload boundry flag missing";case-4:return"Header checksum error";case-5:return"Footer checksum error";case-9:return"Unknown data received, check meter config";case-41:return"Frame length not equal";case-51:return"Authentication failed";case-52:return"Decryption failed";case-53:return"Encryption key invalid";case 90:return"No HAN data received last 30s";case 98:return"Exception in code, debugging necessary";case 99:return"Autodetection failed"}return t<0?"Unspecified error "+t:""}function Tr(t){switch(t){case-3:return"Connection failed";case-4:return"Network timeout";case-10:return"Connection denied";case-11:return"Failed to subscribe";case-13:return"Connection lost"}return t<0?"Unspecified error "+t:""}function Pr(t){switch(t){case 401:case 403:return"Unauthorized, check API key";case 404:return"Price unavailable, not found";case 425:return"Server says its too early";case 500:return"Internal server error";case-2:return"Incomplete data received";case-3:return"Invalid data, tag missing";case-51:return"Authentication failed";case-52:return"Decryption failed";case-53:return"Encryption key invalid"}return t<0?"Unspecified error "+t:""}function Un(t){switch(t){case 2:case 4:case 7:return!0}return!1}function He(t,e){return t==1||t==2&&e}function Ot(t){return"https://github.com/UtilitechAS/amsreader-firmware/wiki/"+t}function be(t,e){return isNaN(t)?"-":(isNaN(e)&&(e=t<10?1:0),t.toFixed(e))}async function $l(t,e={}){const{timeout:l=8e3}=e,n=new AbortController,i=setTimeout(()=>n.abort(),l),o=await fetch(t,{...e,signal:n.signal});return clearTimeout(i),o}let Bt={version:"",chip:"",mac:null,apmac:null,vndcfg:null,usrcfg:null,fwconsent:null,booting:!1,upgrading:!1,ui:{},security:0,trying:null};const $t=Ze(Bt);async function lo(){Bt=await(await $l("/sysinfo.json?t="+Math.floor(Date.now()/1e3))).json(),$t.set(Bt)}let ts=0,Mr=-127,Ar=null,S1={};const T1=Pf(S1,t=>{let e;async function l(){$l("/data.json").then(n=>n.json()).then(n=>{t(n),Mr!=n.t&&(Mr=n.t,setTimeout(Jf,2e3)),Ar!=n.p&&(Ar=n.p,setTimeout(P1,4e3)),Bt.upgrading?window.location.reload():(!Bt||!Bt.chip||Bt.booting||ts>1&&!Un(Bt.board))&&(lo(),Wl&&clearTimeout(Wl),Wl=setTimeout(no,2e3),Gl&&clearTimeout(Gl),Gl=setTimeout(io,3e3));let i=5e3;if(Un(Bt.board)&&n.v>2.5){let o=3.3-Math.min(3.3,n.v);o>0&&(i=Math.max(o,.1)*10*5e3)}i>5e3&&console.log("Scheduling next data fetch in "+i+"ms"),e&&clearTimeout(e),e=setTimeout(l,i),ts=0}).catch(n=>{ts++,ts>3?(t({em:3,hm:0,wm:0,mm:0}),e=setTimeout(l,15e3)):e=setTimeout(l,Un(Bt.board)?1e4:5e3)})}return l(),function(){clearTimeout(e)}});let Hs={};const Kf=Ze(Hs);async function P1(){Hs=await(await $l("/energyprice.json")).json(),Kf.set(Hs)}let js={},Wl;async function no(){Wl&&(clearTimeout(Wl),Wl=0),js=await(await $l("/dayplot.json")).json(),Qf.set(js);let e=new Date;Wl=setTimeout(no,(60-e.getMinutes())*6e4+20)}const Qf=Ze(js,t=>(no(),function(){}));let Ws={},Gl;async function io(){Gl&&(clearTimeout(Gl),Gl=0),Ws=await(await $l("/monthplot.json")).json(),Zf.set(Ws);let e=new Date;Gl=setTimeout(io,(24-e.getHours())*36e5+40)}const Zf=Ze(Ws,t=>(io(),function(){}));let Gs={};async function Jf(){Gs=await(await $l("/temperature.json")).json(),Xf.set(Gs)}const Xf=Ze(Gs,t=>(Jf(),function(){}));let Bs={},ls;async function xf(){ls&&(clearTimeout(ls),ls=0),Bs=await(await $l("/tariff.json")).json(),ec.set(Bs);let e=new Date;ls=setTimeout(xf,(60-e.getMinutes())*6e4+30)}const ec=Ze(Bs,t=>function(){});let zs=[];const so=Ze(zs);async function M1(){zs=await(await $l("https://api.github.com/repos/UtilitechAS/amsreader-firmware/releases")).json(),so.set(zs)}function fs(t){return"WARNING: "+t+" must be connected to an external power supply during firmware upgrade. Failure to do so may cause power-down during upload resulting in non-functioning unit."}async function tc(){await(await fetch("/upgrade",{method:"POST"})).json()}function lc(t,e){if(/^v\d{1,2}\.\d{1,2}\.\d{1,2}$/.test(t)){let l=t.substring(1).split("."),n=parseInt(l[0]),i=parseInt(l[1]),o=parseInt(l[2]),r=[...e];r.reverse();let a,c,f;for(let m=0;mo&&(a=_):b==i+1&&(c=_);else if(d==n+1)if(f){let k=f.tag_name.substring(1).split(".");parseInt(k[0]);let S=parseInt(k[1]);parseInt(k[2]),b==S&&(f=_)}else f=_}return c||f||a||!1}else return e[0]}const A1="/github.svg";function Nr(t){let e,l;function n(r,a){return r[1]>1?L1:r[1]>0?R1:r[2]>1?F1:r[2]>0?E1:r[3]>1?D1:r[3]>0?I1:N1}let i=n(t),o=i(t);return{c(){e=C(`Up - `),o.c(),l=je()},m(r,a){y(r,e,a),o.m(r,a),y(r,l,a)},p(r,a){i===(i=n(r))&&o?o.p(r,a):(o.d(1),o=i(r),o&&(o.c(),o.m(l.parentNode,l)))},d(r){r&&w(e),o.d(r),r&&w(l)}}}function N1(t){let e,l;return{c(){e=C(t[0]),l=C(" seconds")},m(n,i){y(n,e,i),y(n,l,i)},p(n,i){i&1&&G(e,n[0])},d(n){n&&w(e),n&&w(l)}}}function I1(t){let e,l;return{c(){e=C(t[3]),l=C(" minute")},m(n,i){y(n,e,i),y(n,l,i)},p(n,i){i&8&&G(e,n[3])},d(n){n&&w(e),n&&w(l)}}}function D1(t){let e,l;return{c(){e=C(t[3]),l=C(" minutes")},m(n,i){y(n,e,i),y(n,l,i)},p(n,i){i&8&&G(e,n[3])},d(n){n&&w(e),n&&w(l)}}}function E1(t){let e,l;return{c(){e=C(t[2]),l=C(" hour")},m(n,i){y(n,e,i),y(n,l,i)},p(n,i){i&4&&G(e,n[2])},d(n){n&&w(e),n&&w(l)}}}function F1(t){let e,l;return{c(){e=C(t[2]),l=C(" hours")},m(n,i){y(n,e,i),y(n,l,i)},p(n,i){i&4&&G(e,n[2])},d(n){n&&w(e),n&&w(l)}}}function R1(t){let e,l;return{c(){e=C(t[1]),l=C(" day")},m(n,i){y(n,e,i),y(n,l,i)},p(n,i){i&2&&G(e,n[1])},d(n){n&&w(e),n&&w(l)}}}function L1(t){let e,l;return{c(){e=C(t[1]),l=C(" days")},m(n,i){y(n,e,i),y(n,l,i)},p(n,i){i&2&&G(e,n[1])},d(n){n&&w(e),n&&w(l)}}}function O1(t){let e,l=t[0]&&Nr(t);return{c(){l&&l.c(),e=je()},m(n,i){l&&l.m(n,i),y(n,e,i)},p(n,[i]){n[0]?l?l.p(n,i):(l=Nr(n),l.c(),l.m(e.parentNode,e)):l&&(l.d(1),l=null)},i:ie,o:ie,d(n){l&&l.d(n),n&&w(e)}}}function q1(t,e,l){let{epoch:n}=e,i=0,o=0,r=0;return t.$$set=a=>{"epoch"in a&&l(0,n=a.epoch)},t.$$.update=()=>{t.$$.dirty&1&&(l(1,i=Math.floor(n/86400)),l(2,o=Math.floor(n/3600)),l(3,r=Math.floor(n/60)))},[n,i,o,r]}class U1 extends $e{constructor(e){super(),ye(this,e,q1,O1,ke,{epoch:0})}}function H1(t){let e,l,n;return{c(){e=p("span"),l=C(t[2]),u(e,"title",t[1]),u(e,"class",n="bd-"+t[0])},m(i,o){y(i,e,o),s(e,l)},p(i,[o]){o&4&&G(l,i[2]),o&2&&u(e,"title",i[1]),o&1&&n!==(n="bd-"+i[0])&&u(e,"class",n)},i:ie,o:ie,d(i){i&&w(e)}}}function j1(t,e,l){let{color:n}=e,{title:i}=e,{text:o}=e;return t.$$set=r=>{"color"in r&&l(0,n=r.color),"title"in r&&l(1,i=r.title),"text"in r&&l(2,o=r.text)},[n,i,o]}class Vt extends $e{constructor(e){super(),ye(this,e,j1,H1,ke,{color:0,title:1,text:2})}}function W1(t){let e,l=`${Ee(t[0].getDate())}.${Ee(t[0].getMonth())}.${t[0].getFullYear()} ${Ee(t[0].getHours())}:${Ee(t[0].getMinutes())}`,n;return{c(){e=p("span"),n=C(l),u(e,"class","text-red-500")},m(i,o){y(i,e,o),s(e,n)},p(i,o){o&1&&l!==(l=`${Ee(i[0].getDate())}.${Ee(i[0].getMonth())}.${i[0].getFullYear()} ${Ee(i[0].getHours())}:${Ee(i[0].getMinutes())}`)&&G(n,l)},d(i){i&&w(e)}}}function G1(t){let e=`${Ee(t[0].getDate())}. ${Us[t[0].getMonth()]} ${Ee(t[0].getHours())}:${Ee(t[0].getMinutes())}`,l;return{c(){l=C(e)},m(n,i){y(n,l,i)},p(n,i){i&1&&e!==(e=`${Ee(n[0].getDate())}. ${Us[n[0].getMonth()]} ${Ee(n[0].getHours())}:${Ee(n[0].getMinutes())}`)&&G(l,e)},d(n){n&&w(l)}}}function B1(t){let e,l;function n(r,a){return a&1&&(e=null),e==null&&(e=Math.abs(new Date().getTime()-r[0].getTime())<3e5),e?G1:W1}let i=n(t,-1),o=i(t);return{c(){o.c(),l=je()},m(r,a){o.m(r,a),y(r,l,a)},p(r,[a]){i===(i=n(r,a))&&o?o.p(r,a):(o.d(1),o=i(r),o&&(o.c(),o.m(l.parentNode,l)))},i:ie,o:ie,d(r){o.d(r),r&&w(l)}}}function z1(t,e,l){let{timestamp:n}=e;return t.$$set=i=>{"timestamp"in i&&l(0,n=i.timestamp)},[n]}class Y1 extends $e{constructor(e){super(),ye(this,e,z1,B1,ke,{timestamp:0})}}function V1(t){let e,l,n;return{c(){e=qe("svg"),l=qe("path"),n=qe("path"),u(l,"stroke-linecap","round"),u(l,"stroke-linejoin","round"),u(l,"d","M10.343 3.94c.09-.542.56-.94 1.11-.94h1.093c.55 0 1.02.398 1.11.94l.149.894c.07.424.384.764.78.93.398.164.855.142 1.205-.108l.737-.527a1.125 1.125 0 011.45.12l.773.774c.39.389.44 1.002.12 1.45l-.527.737c-.25.35-.272.806-.107 1.204.165.397.505.71.93.78l.893.15c.543.09.94.56.94 1.109v1.094c0 .55-.397 1.02-.94 1.11l-.893.149c-.425.07-.765.383-.93.78-.165.398-.143.854.107 1.204l.527.738c.32.447.269 1.06-.12 1.45l-.774.773a1.125 1.125 0 01-1.449.12l-.738-.527c-.35-.25-.806-.272-1.203-.107-.397.165-.71.505-.781.929l-.149.894c-.09.542-.56.94-1.11.94h-1.094c-.55 0-1.019-.398-1.11-.94l-.148-.894c-.071-.424-.384-.764-.781-.93-.398-.164-.854-.142-1.204.108l-.738.527c-.447.32-1.06.269-1.45-.12l-.773-.774a1.125 1.125 0 01-.12-1.45l.527-.737c.25-.35.273-.806.108-1.204-.165-.397-.505-.71-.93-.78l-.894-.15c-.542-.09-.94-.56-.94-1.109v-1.094c0-.55.398-1.02.94-1.11l.894-.149c.424-.07.765-.383.93-.78.165-.398.143-.854-.107-1.204l-.527-.738a1.125 1.125 0 01.12-1.45l.773-.773a1.125 1.125 0 011.45-.12l.737.527c.35.25.807.272 1.204.107.397-.165.71-.505.78-.929l.15-.894z"),u(n,"stroke-linecap","round"),u(n,"stroke-linejoin","round"),u(n,"d","M15 12a3 3 0 11-6 0 3 3 0 016 0z"),u(e,"xmlns","http://www.w3.org/2000/svg"),u(e,"fill","none"),u(e,"viewBox","0 0 24 24"),u(e,"stroke-width","1.5"),u(e,"stroke","currentColor"),u(e,"class","w-6 h-6")},m(i,o){y(i,e,o),s(e,l),s(e,n)},p:ie,i:ie,o:ie,d(i){i&&w(e)}}}class K1 extends $e{constructor(e){super(),ye(this,e,null,V1,ke,{})}}function Q1(t){let e,l;return{c(){e=qe("svg"),l=qe("path"),u(l,"stroke-linecap","round"),u(l,"stroke-linejoin","round"),u(l,"d","M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z"),u(e,"xmlns","http://www.w3.org/2000/svg"),u(e,"fill","none"),u(e,"viewBox","0 0 24 24"),u(e,"stroke-width","1.5"),u(e,"stroke","currentColor"),u(e,"class","w-6 h-6")},m(n,i){y(n,e,i),s(e,l)},p:ie,i:ie,o:ie,d(n){n&&w(e)}}}class Z1 extends $e{constructor(e){super(),ye(this,e,null,Q1,ke,{})}}function J1(t){let e,l;return{c(){e=qe("svg"),l=qe("path"),u(l,"stroke-linecap","round"),u(l,"stroke-linejoin","round"),u(l,"d","M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z"),u(e,"xmlns","http://www.w3.org/2000/svg"),u(e,"fill","none"),u(e,"viewBox","0 0 24 24"),u(e,"stroke-width","1.5"),u(e,"stroke","currentColor"),u(e,"class","w-6 h-6")},m(n,i){y(n,e,i),s(e,l)},p:ie,i:ie,o:ie,d(n){n&&w(e)}}}class Lt extends $e{constructor(e){super(),ye(this,e,null,J1,ke,{})}}function X1(t){let e,l;return{c(){e=qe("svg"),l=qe("path"),u(l,"stroke-linecap","round"),u(l,"stroke-linejoin","round"),u(l,"d","M9 8.25H7.5a2.25 2.25 0 00-2.25 2.25v9a2.25 2.25 0 002.25 2.25h9a2.25 2.25 0 002.25-2.25v-9a2.25 2.25 0 00-2.25-2.25H15M9 12l3 3m0 0l3-3m-3 3V2.25"),u(e,"xmlns","http://www.w3.org/2000/svg"),u(e,"fill","none"),u(e,"viewBox","0 0 24 24"),u(e,"stroke-width","1.5"),u(e,"stroke","currentColor"),u(e,"class","w-6 h-6")},m(n,i){y(n,e,i),s(e,l)},p:ie,i:ie,o:ie,d(n){n&&w(e)}}}class nc extends $e{constructor(e){super(),ye(this,e,null,X1,ke,{})}}function x1(t){let e,l,n=t[1].version+"",i;return{c(){e=C("AMS reader "),l=p("span"),i=C(n)},m(o,r){y(o,e,r),y(o,l,r),s(l,i)},p(o,r){r&2&&n!==(n=o[1].version+"")&&G(i,n)},d(o){o&&w(e),o&&w(l)}}}function Ir(t){let e,l=(t[0].t>-50?t[0].t.toFixed(1):"-")+"",n,i;return{c(){e=p("div"),n=C(l),i=C("\xB0C"),u(e,"class","flex-none my-auto")},m(o,r){y(o,e,r),s(e,n),s(e,i)},p(o,r){r&1&&l!==(l=(o[0].t>-50?o[0].t.toFixed(1):"-")+"")&&G(n,l)},d(o){o&&w(e)}}}function Dr(t){let e,l="HAN: "+Sr(t[0].he),n;return{c(){e=p("div"),n=C(l),u(e,"class","bd-red")},m(i,o){y(i,e,o),s(e,n)},p(i,o){o&1&&l!==(l="HAN: "+Sr(i[0].he))&&G(n,l)},d(i){i&&w(e)}}}function Er(t){let e,l="MQTT: "+Tr(t[0].me),n;return{c(){e=p("div"),n=C(l),u(e,"class","bd-red")},m(i,o){y(i,e,o),s(e,n)},p(i,o){o&1&&l!==(l="MQTT: "+Tr(i[0].me))&&G(n,l)},d(i){i&&w(e)}}}function Fr(t){let e,l="PriceAPI: "+Pr(t[0].ee),n;return{c(){e=p("div"),n=C(l),u(e,"class","bd-red")},m(i,o){y(i,e,o),s(e,n)},p(i,o){o&1&&l!==(l="PriceAPI: "+Pr(i[0].ee))&&G(n,l)},d(i){i&&w(e)}}}function Rr(t){let e,l,n,i,o,r;return l=new kl({props:{to:"/configuration",$$slots:{default:[ep]},$$scope:{ctx:t}}}),o=new kl({props:{to:"/status",$$slots:{default:[tp]},$$scope:{ctx:t}}}),{c(){e=p("div"),J(l.$$.fragment),n=v(),i=p("div"),J(o.$$.fragment),u(e,"class","flex-none px-1 mt-1"),u(e,"title","Configuration"),u(i,"class","flex-none px-1 mt-1"),u(i,"title","Device information")},m(a,c){y(a,e,c),V(l,e,null),y(a,n,c),y(a,i,c),V(o,i,null),r=!0},i(a){r||(P(l.$$.fragment,a),P(o.$$.fragment,a),r=!0)},o(a){I(l.$$.fragment,a),I(o.$$.fragment,a),r=!1},d(a){a&&w(e),K(l),a&&w(n),a&&w(i),K(o)}}}function ep(t){let e,l;return e=new K1({}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function tp(t){let e,l;return e=new Z1({}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function Lr(t){let e,l,n,i,o;const r=[np,lp],a=[];function c(f,m){return f[1].security==0||f[0].a?0:1}return l=c(t),n=a[l]=r[l](t),{c(){e=p("div"),n.c(),u(e,"class","flex-none mr-3 text-yellow-500"),u(e,"title",i="New version: "+t[2].tag_name)},m(f,m){y(f,e,m),a[l].m(e,null),o=!0},p(f,m){let _=l;l=c(f),l===_?a[l].p(f,m):(Ie(),I(a[_],1,1,()=>{a[_]=null}),De(),n=a[l],n?n.p(f,m):(n=a[l]=r[l](f),n.c()),P(n,1),n.m(e,null)),(!o||m&4&&i!==(i="New version: "+f[2].tag_name))&&u(e,"title",i)},i(f){o||(P(n),o=!0)},o(f){I(n),o=!1},d(f){f&&w(e),a[l].d()}}}function lp(t){let e,l,n=t[2].tag_name+"",i;return{c(){e=p("span"),l=C("New version: "),i=C(n)},m(o,r){y(o,e,r),s(e,l),s(e,i)},p(o,r){r&4&&n!==(n=o[2].tag_name+"")&&G(i,n)},i:ie,o:ie,d(o){o&&w(e)}}}function np(t){let e,l,n,i=t[2].tag_name+"",o,r,a,c,f,m;return a=new nc({}),{c(){e=p("button"),l=p("span"),n=C("New version: "),o=C(i),r=v(),J(a.$$.fragment),u(l,"class","mt-1"),u(e,"class","flex")},m(_,h){y(_,e,h),s(e,l),s(l,n),s(l,o),s(e,r),V(a,e,null),c=!0,f||(m=Y(e,"click",t[3]),f=!0)},p(_,h){(!c||h&4)&&i!==(i=_[2].tag_name+"")&&G(o,i)},i(_){c||(P(a.$$.fragment,_),c=!0)},o(_){I(a.$$.fragment,_),c=!1},d(_){_&&w(e),K(a),f=!1,m()}}}function ip(t){let e,l,n,i,o,r,a,c,f,m,_,h,g=(t[0].m?(t[0].m/1e3).toFixed(1):"-")+"",d,b,$,k,S,A,E,T,N,D,R,W,H,F,L,j,B,q,O,U,x,X,ne,le,_e,Ce,ve,Oe,he,Fe;i=new kl({props:{to:"/",$$slots:{default:[x1]},$$scope:{ctx:t}}}),c=new U1({props:{epoch:t[0].u}});let ge=t[0].t>-50&&Ir(t);S=new Vt({props:{title:"ESP",text:t[1].booting?"Booting":t[0].v>2?t[0].v.toFixed(2)+"V":"ESP",color:bl(t[1].booting?2:t[0].em)}}),E=new Vt({props:{title:"HAN",text:"HAN",color:bl(t[1].booting?9:t[0].hm)}}),N=new Vt({props:{title:"WiFi",text:t[0].r?t[0].r.toFixed(0)+"dBm":"WiFi",color:bl(t[1].booting?9:t[0].wm)}}),R=new Vt({props:{title:"MQTT",text:"MQTT",color:bl(t[1].booting?9:t[0].mm)}});let Ae=(t[0].he<0||t[0].he>0)&&Dr(t),me=t[0].me<0&&Er(t),pe=(t[0].ee>0||t[0].ee<0)&&Fr(t);ne=new Y1({props:{timestamp:t[0].c?new Date(t[0].c*1e3):new Date(0)}});let se=t[1].vndcfg&&t[1].usrcfg&&Rr(t);Oe=new Lt({});let re=t[1].fwconsent===1&&t[2]&&Lr(t);return{c(){e=p("nav"),l=p("div"),n=p("div"),J(i.$$.fragment),o=v(),r=p("div"),a=p("div"),J(c.$$.fragment),f=v(),ge&&ge.c(),m=v(),_=p("div"),h=C("Free mem: "),d=C(g),b=C("kb"),$=v(),k=p("div"),J(S.$$.fragment),A=v(),J(E.$$.fragment),T=v(),J(N.$$.fragment),D=v(),J(R.$$.fragment),W=v(),Ae&&Ae.c(),H=v(),me&&me.c(),F=v(),pe&&pe.c(),L=v(),j=p("div"),B=p("div"),q=p("a"),O=p("img"),x=v(),X=p("div"),J(ne.$$.fragment),le=v(),se&&se.c(),_e=v(),Ce=p("div"),ve=p("a"),J(Oe.$$.fragment),he=v(),re&&re.c(),u(n,"class","flex text-lg text-gray-100 p-2"),u(a,"class","flex-none my-auto"),u(_,"class","flex-none my-auto"),u(r,"class","flex-none my-auto p-2 flex space-x-4"),u(k,"class","flex-auto flex-wrap my-auto justify-center p-2"),u(O,"class","gh-logo"),fc(O.src,U=A1)||u(O,"src",U),u(O,"alt","GitHub repo"),u(q,"class","float-right"),u(q,"href","https://github.com/UtilitechAS/amsreader-firmware"),u(q,"target","_blank"),u(q,"rel","noreferrer"),u(q,"aria-label","GitHub"),u(B,"class","flex-none"),u(X,"class","flex-none my-auto px-2"),u(ve,"href",Ot("")),u(ve,"target","_blank"),u(ve,"rel","noreferrer"),u(Ce,"class","flex-none px-1 mt-1"),u(Ce,"title","Documentation"),u(j,"class","flex-auto p-2 flex flex-row-reverse flex-wrap"),u(l,"class","flex flex-wrap space-x-4 text-sm text-gray-300"),u(e,"class","bg-violet-600 p-1 rounded-md mx-2")},m(z,ae){y(z,e,ae),s(e,l),s(l,n),V(i,n,null),s(l,o),s(l,r),s(r,a),V(c,a,null),s(r,f),ge&&ge.m(r,null),s(r,m),s(r,_),s(_,h),s(_,d),s(_,b),s(l,$),s(l,k),V(S,k,null),s(k,A),V(E,k,null),s(k,T),V(N,k,null),s(k,D),V(R,k,null),s(l,W),Ae&&Ae.m(l,null),s(l,H),me&&me.m(l,null),s(l,F),pe&&pe.m(l,null),s(l,L),s(l,j),s(j,B),s(B,q),s(q,O),s(j,x),s(j,X),V(ne,X,null),s(j,le),se&&se.m(j,null),s(j,_e),s(j,Ce),s(Ce,ve),V(Oe,ve,null),s(j,he),re&&re.m(j,null),Fe=!0},p(z,[ae]){const Pe={};ae&18&&(Pe.$$scope={dirty:ae,ctx:z}),i.$set(Pe);const ee={};ae&1&&(ee.epoch=z[0].u),c.$set(ee),z[0].t>-50?ge?ge.p(z,ae):(ge=Ir(z),ge.c(),ge.m(r,m)):ge&&(ge.d(1),ge=null),(!Fe||ae&1)&&g!==(g=(z[0].m?(z[0].m/1e3).toFixed(1):"-")+"")&&G(d,g);const ue={};ae&3&&(ue.text=z[1].booting?"Booting":z[0].v>2?z[0].v.toFixed(2)+"V":"ESP"),ae&3&&(ue.color=bl(z[1].booting?2:z[0].em)),S.$set(ue);const Ue={};ae&3&&(Ue.color=bl(z[1].booting?9:z[0].hm)),E.$set(Ue);const Se={};ae&1&&(Se.text=z[0].r?z[0].r.toFixed(0)+"dBm":"WiFi"),ae&3&&(Se.color=bl(z[1].booting?9:z[0].wm)),N.$set(Se);const de={};ae&3&&(de.color=bl(z[1].booting?9:z[0].mm)),R.$set(de),z[0].he<0||z[0].he>0?Ae?Ae.p(z,ae):(Ae=Dr(z),Ae.c(),Ae.m(l,H)):Ae&&(Ae.d(1),Ae=null),z[0].me<0?me?me.p(z,ae):(me=Er(z),me.c(),me.m(l,F)):me&&(me.d(1),me=null),z[0].ee>0||z[0].ee<0?pe?pe.p(z,ae):(pe=Fr(z),pe.c(),pe.m(l,L)):pe&&(pe.d(1),pe=null);const Me={};ae&1&&(Me.timestamp=z[0].c?new Date(z[0].c*1e3):new Date(0)),ne.$set(Me),z[1].vndcfg&&z[1].usrcfg?se?ae&2&&P(se,1):(se=Rr(z),se.c(),P(se,1),se.m(j,_e)):se&&(Ie(),I(se,1,1,()=>{se=null}),De()),z[1].fwconsent===1&&z[2]?re?(re.p(z,ae),ae&6&&P(re,1)):(re=Lr(z),re.c(),P(re,1),re.m(j,null)):re&&(Ie(),I(re,1,1,()=>{re=null}),De())},i(z){Fe||(P(i.$$.fragment,z),P(c.$$.fragment,z),P(S.$$.fragment,z),P(E.$$.fragment,z),P(N.$$.fragment,z),P(R.$$.fragment,z),P(ne.$$.fragment,z),P(se),P(Oe.$$.fragment,z),P(re),Fe=!0)},o(z){I(i.$$.fragment,z),I(c.$$.fragment,z),I(S.$$.fragment,z),I(E.$$.fragment,z),I(N.$$.fragment,z),I(R.$$.fragment,z),I(ne.$$.fragment,z),I(se),I(Oe.$$.fragment,z),I(re),Fe=!1},d(z){z&&w(e),K(i),K(c),ge&&ge.d(),K(S),K(E),K(N),K(R),Ae&&Ae.d(),me&&me.d(),pe&&pe.d(),K(ne),se&&se.d(),K(Oe),re&&re.d()}}}function sp(t,e,l){let{data:n={}}=e,i={},o={};function r(){confirm("Do you want to upgrade this device to "+o.tag_name+"?")&&(!Un(i.board)||confirm(fs(fe(i.chip,i.board))))&&($t.update(a=>(a.upgrading=!0,a)),tc())}return $t.subscribe(a=>{l(1,i=a),a.fwconsent===1&&M1()}),so.subscribe(a=>{l(2,o=lc(i.version,a))}),t.$$set=a=>{"data"in a&&l(0,n=a.data)},[n,i,o,r]}class op extends $e{constructor(e){super(),ye(this,e,sp,ip,ke,{data:0})}}function up(t){let e,l,n,i;return{c(){e=qe("svg"),l=qe("path"),n=qe("path"),u(l,"d",Fs(150,150,115,210,510)),u(l,"stroke","#eee"),u(l,"fill","none"),u(l,"stroke-width","55"),u(n,"d",i=Fs(150,150,115,210,210+300*t[0]/100)),u(n,"stroke",t[1]),u(n,"fill","none"),u(n,"stroke-width","55"),u(e,"viewBox","0 0 300 300"),u(e,"xmlns","http://www.w3.org/2000/svg"),u(e,"height","100%")},m(o,r){y(o,e,r),s(e,l),s(e,n)},p(o,[r]){r&1&&i!==(i=Fs(150,150,115,210,210+300*o[0]/100))&&u(n,"d",i),r&2&&u(n,"stroke",o[1])},i:ie,o:ie,d(o){o&&w(e)}}}function Or(t,e,l,n){var i=(n-90)*Math.PI/180;return{x:t+l*Math.cos(i),y:e+l*Math.sin(i)}}function Fs(t,e,l,n,i){var o=Or(t,e,l,i),r=Or(t,e,l,n),a=i-n<=180?"0":"1",c=["M",o.x,o.y,"A",l,l,0,a,0,r.x,r.y].join(" ");return c}function rp(t,e,l){let{pct:n=0}=e,{color:i="red"}=e;return t.$$set=o=>{"pct"in o&&l(0,n=o.pct),"color"in o&&l(1,i=o.color)},[n,i]}class ap extends $e{constructor(e){super(),ye(this,e,rp,up,ke,{pct:0,color:1})}}function qr(t){let e,l,n,i,o,r,a,c;return{c(){e=p("br"),l=v(),n=p("span"),i=C(t[3]),o=v(),r=p("span"),a=C(t[4]),c=C("/kWh"),u(n,"class","pl-sub"),u(r,"class","pl-snt")},m(f,m){y(f,e,m),y(f,l,m),y(f,n,m),s(n,i),y(f,o,m),y(f,r,m),s(r,a),s(r,c)},p(f,m){m&8&&G(i,f[3]),m&16&&G(a,f[4])},d(f){f&&w(e),f&&w(l),f&&w(n),f&&w(o),f&&w(r)}}}function fp(t){let e,l,n,i,o,r,a,c,f,m,_,h,g,d,b,$;l=new ap({props:{pct:t[6],color:t[5](t[6])}});let k=t[3]&&qr(t);return{c(){e=p("div"),J(l.$$.fragment),n=v(),i=p("span"),o=p("span"),r=C(t[2]),a=v(),c=p("br"),f=v(),m=p("span"),_=C(t[0]),h=v(),g=p("span"),d=C(t[1]),b=v(),k&&k.c(),u(o,"class","pl-lab"),u(m,"class","pl-val"),u(g,"class","pl-unt"),u(i,"class","pl-ov"),u(e,"class","pl-root")},m(S,A){y(S,e,A),V(l,e,null),s(e,n),s(e,i),s(i,o),s(o,r),s(i,a),s(i,c),s(i,f),s(i,m),s(m,_),s(i,h),s(i,g),s(g,d),s(i,b),k&&k.m(i,null),$=!0},p(S,[A]){const E={};A&64&&(E.pct=S[6]),A&96&&(E.color=S[5](S[6])),l.$set(E),(!$||A&4)&&G(r,S[2]),(!$||A&1)&&G(_,S[0]),(!$||A&2)&&G(d,S[1]),S[3]?k?k.p(S,A):(k=qr(S),k.c(),k.m(i,null)):k&&(k.d(1),k=null)},i(S){$||(P(l.$$.fragment,S),$=!0)},o(S){I(l.$$.fragment,S),$=!1},d(S){S&&w(e),K(l),k&&k.d()}}}function cp(t,e,l){let{val:n}=e,{max:i}=e,{unit:o}=e,{label:r}=e,{sub:a=""}=e,{subunit:c=""}=e,{colorFn:f}=e,m=0;return t.$$set=_=>{"val"in _&&l(0,n=_.val),"max"in _&&l(7,i=_.max),"unit"in _&&l(1,o=_.unit),"label"in _&&l(2,r=_.label),"sub"in _&&l(3,a=_.sub),"subunit"in _&&l(4,c=_.subunit),"colorFn"in _&&l(5,f=_.colorFn)},t.$$.update=()=>{t.$$.dirty&129&&l(6,m=Math.min(n,i)/i*100)},[n,o,r,a,c,f,m,i]}class ic extends $e{constructor(e){super(),ye(this,e,cp,fp,ke,{val:0,max:7,unit:1,label:2,sub:3,subunit:4,colorFn:5})}}function Ur(t,e,l){const n=t.slice();return n[9]=e[l],n[11]=l,n}function Hr(t,e,l){const n=t.slice();return n[9]=e[l],n[11]=l,n}function jr(t,e,l){const n=t.slice();return n[13]=e[l],n}function Wr(t){let e,l=t[0].title+"",n;return{c(){e=p("strong"),n=C(l),u(e,"class","text-sm")},m(i,o){y(i,e,o),s(e,n)},p(i,o){o&1&&l!==(l=i[0].title+"")&&G(n,l)},d(i){i&&w(e)}}}function Gr(t){let e,l,n,i=t[13].label+"",o,r,a,c;return{c(){e=qe("g"),l=qe("line"),n=qe("text"),o=C(i),u(l,"x2","100%"),u(n,"y","-4"),u(n,"x",r=t[13].align=="right"?"85%":""),u(e,"class",a="tick tick-"+t[13].value+" tick-"+t[13].color),u(e,"transform",c="translate(0, "+t[6](t[13].value)+")")},m(f,m){y(f,e,m),s(e,l),s(e,n),s(n,o)},p(f,m){m&1&&i!==(i=f[13].label+"")&&G(o,i),m&1&&r!==(r=f[13].align=="right"?"85%":"")&&u(n,"x",r),m&1&&a!==(a="tick tick-"+f[13].value+" tick-"+f[13].color)&&u(e,"class",a),m&65&&c!==(c="translate(0, "+f[6](f[13].value)+")")&&u(e,"transform",c)},d(f){f&&w(e)}}}function Br(t){let e,l,n=t[9].label+"",i,o,r;return{c(){e=qe("g"),l=qe("text"),i=C(n),u(l,"x",o=t[3]/2),u(l,"y","-4"),u(e,"class","tick"),u(e,"transform",r="translate("+t[5](t[11])+","+t[4]+")")},m(a,c){y(a,e,c),s(e,l),s(l,i)},p(a,c){c&1&&n!==(n=a[9].label+"")&&G(i,n),c&8&&o!==(o=a[3]/2)&&u(l,"x",o),c&48&&r!==(r="translate("+a[5](a[11])+","+a[4]+")")&&u(e,"transform",r)},d(a){a&&w(e)}}}function zr(t){let e,l,n,i,o,r,a,c=t[3]>15&&Yr(t);return{c(){e=qe("rect"),c&&c.c(),a=je(),u(e,"x",l=t[5](t[11])+2),u(e,"y",n=t[6](t[9].value)),u(e,"width",i=t[3]-4),u(e,"height",o=t[6](t[0].y.min)-t[6](Math.min(t[0].y.min,0)+t[9].value)),u(e,"fill",r=t[9].color)},m(f,m){y(f,e,m),c&&c.m(f,m),y(f,a,m)},p(f,m){m&32&&l!==(l=f[5](f[11])+2)&&u(e,"x",l),m&65&&n!==(n=f[6](f[9].value))&&u(e,"y",n),m&8&&i!==(i=f[3]-4)&&u(e,"width",i),m&65&&o!==(o=f[6](f[0].y.min)-f[6](Math.min(f[0].y.min,0)+f[9].value))&&u(e,"height",o),m&1&&r!==(r=f[9].color)&&u(e,"fill",r),f[3]>15?c?c.p(f,m):(c=Yr(f),c.c(),c.m(a.parentNode,a)):c&&(c.d(1),c=null)},d(f){f&&w(e),c&&c.d(f),f&&w(a)}}}function Yr(t){let e,l=t[9].label+"",n,i,o,r,a,c,f;return{c(){e=qe("text"),n=C(l),u(e,"y",i=t[6](t[9].value)>t[6](0)-t[7]?t[6](t[9].value)-t[7]:t[6](t[9].value)+10),u(e,"x",o=t[5](t[11])+t[3]/2),u(e,"width",r=t[3]-4),u(e,"dominant-baseline","middle"),u(e,"text-anchor",a=t[3]<25?"left":"middle"),u(e,"fill",c=t[6](t[9].value)>t[6](0)-t[7]?t[9].color:"white"),u(e,"transform",f="rotate("+(t[3]<25?90:0)+", "+(t[5](t[11])+t[3]/2)+", "+(t[6](t[9].value)>t[6](0)-t[7]?t[6](t[9].value)-t[7]:t[6](t[9].value)+9)+")")},m(m,_){y(m,e,_),s(e,n)},p(m,_){_&1&&l!==(l=m[9].label+"")&&G(n,l),_&193&&i!==(i=m[6](m[9].value)>m[6](0)-m[7]?m[6](m[9].value)-m[7]:m[6](m[9].value)+10)&&u(e,"y",i),_&40&&o!==(o=m[5](m[11])+m[3]/2)&&u(e,"x",o),_&8&&r!==(r=m[3]-4)&&u(e,"width",r),_&8&&a!==(a=m[3]<25?"left":"middle")&&u(e,"text-anchor",a),_&193&&c!==(c=m[6](m[9].value)>m[6](0)-m[7]?m[9].color:"white")&&u(e,"fill",c),_&233&&f!==(f="rotate("+(m[3]<25?90:0)+", "+(m[5](m[11])+m[3]/2)+", "+(m[6](m[9].value)>m[6](0)-m[7]?m[6](m[9].value)-m[7]:m[6](m[9].value)+9)+")")&&u(e,"transform",f)},d(m){m&&w(e)}}}function Vr(t){let e,l,n,i,o,r,a,c=t[3]>15&&Kr(t);return{c(){e=qe("rect"),c&&c.c(),a=je(),u(e,"x",l=t[5](t[11])+2),u(e,"y",n=t[6](0)),u(e,"width",i=t[3]-4),u(e,"height",o=t[6](t[0].y.min)-t[6](t[0].y.min+t[9].value2)),u(e,"fill",r=t[9].color)},m(f,m){y(f,e,m),c&&c.m(f,m),y(f,a,m)},p(f,m){m&32&&l!==(l=f[5](f[11])+2)&&u(e,"x",l),m&64&&n!==(n=f[6](0))&&u(e,"y",n),m&8&&i!==(i=f[3]-4)&&u(e,"width",i),m&65&&o!==(o=f[6](f[0].y.min)-f[6](f[0].y.min+f[9].value2))&&u(e,"height",o),m&1&&r!==(r=f[9].color)&&u(e,"fill",r),f[3]>15?c?c.p(f,m):(c=Kr(f),c.c(),c.m(a.parentNode,a)):c&&(c.d(1),c=null)},d(f){f&&w(e),c&&c.d(f),f&&w(a)}}}function Kr(t){let e,l=t[9].label2+"",n,i,o,r,a,c,f;return{c(){e=qe("text"),n=C(l),u(e,"y",i=t[6](-t[9].value2)t[6](0)-12?t[6](t[9].value2-t[0].y.min)-12:t[6](t[9].value2-t[0].y.min)+9)+")")},m(m,_){y(m,e,_),s(e,n)},p(m,_){_&1&&l!==(l=m[9].label2+"")&&G(n,l),_&65&&i!==(i=m[6](-m[9].value2)m[6](0)-12?m[6](m[9].value2-m[0].y.min)-12:m[6](m[9].value2-m[0].y.min)+9)+")")&&u(e,"transform",f)},d(m){m&&w(e)}}}function Qr(t){let e,l,n=t[9].value!==void 0&&zr(t),i=t[9].value2>1e-4&&Vr(t);return{c(){n&&n.c(),e=je(),i&&i.c(),l=je()},m(o,r){n&&n.m(o,r),y(o,e,r),i&&i.m(o,r),y(o,l,r)},p(o,r){o[9].value!==void 0?n?n.p(o,r):(n=zr(o),n.c(),n.m(e.parentNode,e)):n&&(n.d(1),n=null),o[9].value2>1e-4?i?i.p(o,r):(i=Vr(o),i.c(),i.m(l.parentNode,l)):i&&(i.d(1),i=null)},d(o){n&&n.d(o),o&&w(e),i&&i.d(o),o&&w(l)}}}function pp(t){let e,l,n,i,o,r,a,c=t[0].title&&Wr(t),f=t[0].y.ticks,m=[];for(let b=0;bt[8].call(e))},m(b,$){y(b,e,$),c&&c.m(e,null),s(e,l),s(e,n),s(n,i);for(let k=0;k{"config"in h&&l(0,n=h.config)},t.$$.update=()=>{if(t.$$.dirty&31){l(4,f=o-(n.title?20:0));let h=i-(n.padding.left+n.padding.right);l(3,r=h/n.points.length),l(7,m=r<25?28:17);let g=(f-n.padding.top-n.padding.bottom)/(n.y.max-n.y.min);l(5,a=function(d){return d*r+n.padding.left}),l(6,c=function(d){let b=0;return d>n.y.max?b=n.padding.bottom:df||b<0?0:b})}},[n,i,o,r,f,a,c,m,_]}class zl extends $e{constructor(e){super(),ye(this,e,mp,pp,ke,{config:0})}}function _p(t){let e,l;return e=new zl({props:{config:t[0]}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p(n,[i]){const o={};i&1&&(o.config=n[0]),e.$set(o)},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function dp(t,e,l){let{u1:n}=e,{u2:i}=e,{u3:o}=e,{ds:r}=e,a={};function c(f){return{label:be(f)+"V",value:isNaN(f)?0:f,color:$1(f||0)}}return t.$$set=f=>{"u1"in f&&l(1,n=f.u1),"u2"in f&&l(2,i=f.u2),"u3"in f&&l(3,o=f.u3),"ds"in f&&l(4,r=f.ds)},t.$$.update=()=>{if(t.$$.dirty&30){let f=[],m=[];n>0&&(f.push({label:r===1?"L1-L2":"L1"}),m.push(c(n))),i>0&&(f.push({label:r===1?"L1-L3":"L2"}),m.push(c(i))),o>0&&(f.push({label:r===1?"L2-L3":"L3"}),m.push(c(o))),l(0,a={padding:{top:20,right:15,bottom:20,left:35},y:{min:200,max:260,ticks:[{value:207,label:"-10%"},{value:230,label:"230v"},{value:253,label:"+10%"}]},x:{ticks:f},points:m})}},[a,n,i,o,r]}class vp extends $e{constructor(e){super(),ye(this,e,dp,_p,ke,{u1:1,u2:2,u3:3,ds:4})}}function hp(t){let e,l;return e=new zl({props:{config:t[0]}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p(n,[i]){const o={};i&1&&(o.config=n[0]),e.$set(o)},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function gp(t,e,l){let{u1:n}=e,{u2:i}=e,{u3:o}=e,{i1:r}=e,{i2:a}=e,{i3:c}=e,{max:f}=e,m={};function _(h){return{label:be(h)+"A",value:isNaN(h)?0:h,color:Vf(h?h/f*100:0)}}return t.$$set=h=>{"u1"in h&&l(1,n=h.u1),"u2"in h&&l(2,i=h.u2),"u3"in h&&l(3,o=h.u3),"i1"in h&&l(4,r=h.i1),"i2"in h&&l(5,a=h.i2),"i3"in h&&l(6,c=h.i3),"max"in h&&l(7,f=h.max)},t.$$.update=()=>{if(t.$$.dirty&254){let h=[],g=[];n>0&&(h.push({label:"L1"}),g.push(_(r))),i>0&&(h.push({label:"L2"}),g.push(_(a))),o>0&&(h.push({label:"L3"}),g.push(_(c))),l(0,m={padding:{top:20,right:15,bottom:20,left:35},y:{min:0,max:f,ticks:[{value:0,label:"0%"},{value:f/4,label:"25%"},{value:f/2,label:"50%"},{value:f/4*3,label:"75%"},{value:f,label:"100%"}]},x:{ticks:h},points:g})}},[m,n,i,o,r,a,c,f]}class bp extends $e{constructor(e){super(),ye(this,e,gp,hp,ke,{u1:1,u2:2,u3:3,i1:4,i2:5,i3:6,max:7})}}function kp(t){let e,l,n,i,o,r,a,c=(typeof t[0]<"u"?t[0].toFixed(0):"-")+"",f,m,_,h,g,d,b=(typeof t[1]<"u"?t[1].toFixed(0):"-")+"",$,k,S,A,E,T,N,D=(typeof t[2]<"u"?t[2].toFixed(1):"-")+"",R,W,H,F,L,j,B=(typeof t[3]<"u"?t[3].toFixed(1):"-")+"",q,O;return{c(){e=p("div"),l=p("strong"),l.textContent="Reactive",n=v(),i=p("div"),o=p("div"),o.textContent="Instant in",r=v(),a=p("div"),f=C(c),m=C(" VAr"),_=v(),h=p("div"),h.textContent="Instant out",g=v(),d=p("div"),$=C(b),k=C(" VAr"),S=v(),A=p("div"),E=p("div"),E.textContent="Total in",T=v(),N=p("div"),R=C(D),W=C(" kVArh"),H=v(),F=p("div"),F.textContent="Total out",L=v(),j=p("div"),q=C(B),O=C(" kVArh"),u(a,"class","text-right"),u(d,"class","text-right"),u(i,"class","grid grid-cols-2 mt-4"),u(N,"class","text-right"),u(j,"class","text-right"),u(A,"class","grid grid-cols-2 mt-4"),u(e,"class","mx-2 text-sm")},m(U,x){y(U,e,x),s(e,l),s(e,n),s(e,i),s(i,o),s(i,r),s(i,a),s(a,f),s(a,m),s(i,_),s(i,h),s(i,g),s(i,d),s(d,$),s(d,k),s(e,S),s(e,A),s(A,E),s(A,T),s(A,N),s(N,R),s(N,W),s(A,H),s(A,F),s(A,L),s(A,j),s(j,q),s(j,O)},p(U,[x]){x&1&&c!==(c=(typeof U[0]<"u"?U[0].toFixed(0):"-")+"")&&G(f,c),x&2&&b!==(b=(typeof U[1]<"u"?U[1].toFixed(0):"-")+"")&&G($,b),x&4&&D!==(D=(typeof U[2]<"u"?U[2].toFixed(1):"-")+"")&&G(R,D),x&8&&B!==(B=(typeof U[3]<"u"?U[3].toFixed(1):"-")+"")&&G(q,B)},i:ie,o:ie,d(U){U&&w(e)}}}function wp(t,e,l){let{importInstant:n}=e,{exportInstant:i}=e,{importTotal:o}=e,{exportTotal:r}=e;return t.$$set=a=>{"importInstant"in a&&l(0,n=a.importInstant),"exportInstant"in a&&l(1,i=a.exportInstant),"importTotal"in a&&l(2,o=a.importTotal),"exportTotal"in a&&l(3,r=a.exportTotal)},[n,i,o,r]}class yp extends $e{constructor(e){super(),ye(this,e,wp,kp,ke,{importInstant:0,exportInstant:1,importTotal:2,exportTotal:3})}}function Zr(t){let e;function l(o,r){return o[2]?Cp:$p}let n=l(t),i=n(t);return{c(){i.c(),e=je()},m(o,r){i.m(o,r),y(o,e,r)},p(o,r){n===(n=l(o))&&i?i.p(o,r):(i.d(1),i=n(o),i&&(i.c(),i.m(e.parentNode,e)))},d(o){i.d(o),o&&w(e)}}}function $p(t){let e,l,n,i,o,r,a=be(t[0].h.u,2)+"",c,f,m,_,h,g,d=be(t[0].d.u,1)+"",b,$,k,S,A,E,T=be(t[0].m.u)+"",N,D,R,W,H=t[1]&&Jr(t);return{c(){e=p("strong"),e.textContent="Consumption",l=v(),n=p("div"),i=p("div"),i.textContent="Hour",o=v(),r=p("div"),c=C(a),f=C(" kWh"),m=v(),_=p("div"),_.textContent="Day",h=v(),g=p("div"),b=C(d),$=C(" kWh"),k=v(),S=p("div"),S.textContent="Month",A=v(),E=p("div"),N=C(T),D=C(" kWh"),R=v(),H&&H.c(),W=je(),u(r,"class","text-right"),u(g,"class","text-right"),u(E,"class","text-right"),u(n,"class","grid grid-cols-2 mb-3")},m(F,L){y(F,e,L),y(F,l,L),y(F,n,L),s(n,i),s(n,o),s(n,r),s(r,c),s(r,f),s(n,m),s(n,_),s(n,h),s(n,g),s(g,b),s(g,$),s(n,k),s(n,S),s(n,A),s(n,E),s(E,N),s(E,D),y(F,R,L),H&&H.m(F,L),y(F,W,L)},p(F,L){L&1&&a!==(a=be(F[0].h.u,2)+"")&&G(c,a),L&1&&d!==(d=be(F[0].d.u,1)+"")&&G(b,d),L&1&&T!==(T=be(F[0].m.u)+"")&&G(N,T),F[1]?H?H.p(F,L):(H=Jr(F),H.c(),H.m(W.parentNode,W)):H&&(H.d(1),H=null)},d(F){F&&w(e),F&&w(l),F&&w(n),F&&w(R),H&&H.d(F),F&&w(W)}}}function Cp(t){let e,l,n,i,o,r,a=be(t[0].h.u,2)+"",c,f,m,_,h,g,d,b=be(t[0].d.u,1)+"",$,k,S,A,E,T,N,D=be(t[0].m.u)+"",R,W,H,F,L,j,B,q,O,U,x,X=be(t[0].h.p,2)+"",ne,le,_e,Ce,ve,Oe,he,Fe=be(t[0].d.p,1)+"",ge,Ae,me,pe,se,re,z,ae=be(t[0].m.p)+"",Pe,ee,ue,Ue,Se=t[1]&&Xr(t),de=t[1]&&xr(t),Me=t[1]&&ea(t),Le=t[1]&&ta(t),Te=t[1]&&la(t),we=t[1]&&na(t);return{c(){e=p("strong"),e.textContent="Import",l=v(),n=p("div"),i=p("div"),i.textContent="Hour",o=v(),r=p("div"),c=C(a),f=C(" kWh"),m=v(),Se&&Se.c(),_=v(),h=p("div"),h.textContent="Day",g=v(),d=p("div"),$=C(b),k=C(" kWh"),S=v(),de&&de.c(),A=v(),E=p("div"),E.textContent="Month",T=v(),N=p("div"),R=C(D),W=C(" kWh"),H=v(),Me&&Me.c(),L=v(),j=p("strong"),j.textContent="Export",B=v(),q=p("div"),O=p("div"),O.textContent="Hour",U=v(),x=p("div"),ne=C(X),le=C(" kWh"),_e=v(),Le&&Le.c(),Ce=v(),ve=p("div"),ve.textContent="Day",Oe=v(),he=p("div"),ge=C(Fe),Ae=C(" kWh"),me=v(),Te&&Te.c(),pe=v(),se=p("div"),se.textContent="Month",re=v(),z=p("div"),Pe=C(ae),ee=C(" kWh"),ue=v(),we&&we.c(),u(r,"class","text-right"),u(d,"class","text-right"),u(N,"class","text-right"),u(n,"class",F="grid grid-cols-"+t[3]+" mb-3"),u(x,"class","text-right"),u(he,"class","text-right"),u(z,"class","text-right"),u(q,"class",Ue="grid grid-cols-"+t[3])},m(Q,oe){y(Q,e,oe),y(Q,l,oe),y(Q,n,oe),s(n,i),s(n,o),s(n,r),s(r,c),s(r,f),s(n,m),Se&&Se.m(n,null),s(n,_),s(n,h),s(n,g),s(n,d),s(d,$),s(d,k),s(n,S),de&&de.m(n,null),s(n,A),s(n,E),s(n,T),s(n,N),s(N,R),s(N,W),s(n,H),Me&&Me.m(n,null),y(Q,L,oe),y(Q,j,oe),y(Q,B,oe),y(Q,q,oe),s(q,O),s(q,U),s(q,x),s(x,ne),s(x,le),s(q,_e),Le&&Le.m(q,null),s(q,Ce),s(q,ve),s(q,Oe),s(q,he),s(he,ge),s(he,Ae),s(q,me),Te&&Te.m(q,null),s(q,pe),s(q,se),s(q,re),s(q,z),s(z,Pe),s(z,ee),s(q,ue),we&&we.m(q,null)},p(Q,oe){oe&1&&a!==(a=be(Q[0].h.u,2)+"")&&G(c,a),Q[1]?Se?Se.p(Q,oe):(Se=Xr(Q),Se.c(),Se.m(n,_)):Se&&(Se.d(1),Se=null),oe&1&&b!==(b=be(Q[0].d.u,1)+"")&&G($,b),Q[1]?de?de.p(Q,oe):(de=xr(Q),de.c(),de.m(n,A)):de&&(de.d(1),de=null),oe&1&&D!==(D=be(Q[0].m.u)+"")&&G(R,D),Q[1]?Me?Me.p(Q,oe):(Me=ea(Q),Me.c(),Me.m(n,null)):Me&&(Me.d(1),Me=null),oe&8&&F!==(F="grid grid-cols-"+Q[3]+" mb-3")&&u(n,"class",F),oe&1&&X!==(X=be(Q[0].h.p,2)+"")&&G(ne,X),Q[1]?Le?Le.p(Q,oe):(Le=ta(Q),Le.c(),Le.m(q,Ce)):Le&&(Le.d(1),Le=null),oe&1&&Fe!==(Fe=be(Q[0].d.p,1)+"")&&G(ge,Fe),Q[1]?Te?Te.p(Q,oe):(Te=la(Q),Te.c(),Te.m(q,pe)):Te&&(Te.d(1),Te=null),oe&1&&ae!==(ae=be(Q[0].m.p)+"")&&G(Pe,ae),Q[1]?we?we.p(Q,oe):(we=na(Q),we.c(),we.m(q,null)):we&&(we.d(1),we=null),oe&8&&Ue!==(Ue="grid grid-cols-"+Q[3])&&u(q,"class",Ue)},d(Q){Q&&w(e),Q&&w(l),Q&&w(n),Se&&Se.d(),de&&de.d(),Me&&Me.d(),Q&&w(L),Q&&w(j),Q&&w(B),Q&&w(q),Le&&Le.d(),Te&&Te.d(),we&&we.d()}}}function Jr(t){let e,l,n,i,o,r,a=be(t[0].h.c,2)+"",c,f,m,_,h,g,d,b=be(t[0].d.c,1)+"",$,k,S,A,E,T,N,D=be(t[0].m.c)+"",R,W,H;return{c(){e=p("strong"),e.textContent="Cost",l=v(),n=p("div"),i=p("div"),i.textContent="Hour",o=v(),r=p("div"),c=C(a),f=v(),m=C(t[1]),_=v(),h=p("div"),h.textContent="Day",g=v(),d=p("div"),$=C(b),k=v(),S=C(t[1]),A=v(),E=p("div"),E.textContent="Month",T=v(),N=p("div"),R=C(D),W=v(),H=C(t[1]),u(r,"class","text-right"),u(d,"class","text-right"),u(N,"class","text-right"),u(n,"class","grid grid-cols-2")},m(F,L){y(F,e,L),y(F,l,L),y(F,n,L),s(n,i),s(n,o),s(n,r),s(r,c),s(r,f),s(r,m),s(n,_),s(n,h),s(n,g),s(n,d),s(d,$),s(d,k),s(d,S),s(n,A),s(n,E),s(n,T),s(n,N),s(N,R),s(N,W),s(N,H)},p(F,L){L&1&&a!==(a=be(F[0].h.c,2)+"")&&G(c,a),L&2&&G(m,F[1]),L&1&&b!==(b=be(F[0].d.c,1)+"")&&G($,b),L&2&&G(S,F[1]),L&1&&D!==(D=be(F[0].m.c)+"")&&G(R,D),L&2&&G(H,F[1])},d(F){F&&w(e),F&&w(l),F&&w(n)}}}function Xr(t){let e,l=be(t[0].h.c,2)+"",n,i,o;return{c(){e=p("div"),n=C(l),i=v(),o=C(t[1]),u(e,"class","text-right")},m(r,a){y(r,e,a),s(e,n),s(e,i),s(e,o)},p(r,a){a&1&&l!==(l=be(r[0].h.c,2)+"")&&G(n,l),a&2&&G(o,r[1])},d(r){r&&w(e)}}}function xr(t){let e,l=be(t[0].d.c,1)+"",n,i,o;return{c(){e=p("div"),n=C(l),i=v(),o=C(t[1]),u(e,"class","text-right")},m(r,a){y(r,e,a),s(e,n),s(e,i),s(e,o)},p(r,a){a&1&&l!==(l=be(r[0].d.c,1)+"")&&G(n,l),a&2&&G(o,r[1])},d(r){r&&w(e)}}}function ea(t){let e,l=be(t[0].m.c)+"",n,i,o;return{c(){e=p("div"),n=C(l),i=v(),o=C(t[1]),u(e,"class","text-right")},m(r,a){y(r,e,a),s(e,n),s(e,i),s(e,o)},p(r,a){a&1&&l!==(l=be(r[0].m.c)+"")&&G(n,l),a&2&&G(o,r[1])},d(r){r&&w(e)}}}function ta(t){let e,l=be(t[0].h.i,2)+"",n,i,o;return{c(){e=p("div"),n=C(l),i=v(),o=C(t[1]),u(e,"class","text-right")},m(r,a){y(r,e,a),s(e,n),s(e,i),s(e,o)},p(r,a){a&1&&l!==(l=be(r[0].h.i,2)+"")&&G(n,l),a&2&&G(o,r[1])},d(r){r&&w(e)}}}function la(t){let e,l=be(t[0].d.i,1)+"",n,i,o;return{c(){e=p("div"),n=C(l),i=v(),o=C(t[1]),u(e,"class","text-right")},m(r,a){y(r,e,a),s(e,n),s(e,i),s(e,o)},p(r,a){a&1&&l!==(l=be(r[0].d.i,1)+"")&&G(n,l),a&2&&G(o,r[1])},d(r){r&&w(e)}}}function na(t){let e,l=be(t[0].m.i)+"",n,i,o;return{c(){e=p("div"),n=C(l),i=v(),o=C(t[1]),u(e,"class","text-right")},m(r,a){y(r,e,a),s(e,n),s(e,i),s(e,o)},p(r,a){a&1&&l!==(l=be(r[0].m.i)+"")&&G(n,l),a&2&&G(o,r[1])},d(r){r&&w(e)}}}function Sp(t){let e,l,n,i,o,r,a=t[0]&&Zr(t);return{c(){e=p("div"),l=p("strong"),l.textContent="Real time calculation",n=v(),i=p("br"),o=p("br"),r=v(),a&&a.c(),u(e,"class","mx-2 text-sm")},m(c,f){y(c,e,f),s(e,l),s(e,n),s(e,i),s(e,o),s(e,r),a&&a.m(e,null)},p(c,[f]){c[0]?a?a.p(c,f):(a=Zr(c),a.c(),a.m(e,null)):a&&(a.d(1),a=null)},i:ie,o:ie,d(c){c&&w(e),a&&a.d()}}}function Tp(t,e,l){let{data:n}=e,{currency:i}=e,{hasExport:o}=e,r=3;return t.$$set=a=>{"data"in a&&l(0,n=a.data),"currency"in a&&l(1,i=a.currency),"hasExport"in a&&l(2,o=a.hasExport)},t.$$.update=()=>{t.$$.dirty&2&&l(3,r=i?3:2)},[n,i,o,r]}class Pp extends $e{constructor(e){super(),ye(this,e,Tp,Sp,ke,{data:0,currency:1,hasExport:2})}}function Mp(t){let e,l,n,i;return n=new zl({props:{config:t[0]}}),{c(){e=p("a"),e.textContent="Provided by ENTSO-E",l=v(),J(n.$$.fragment),u(e,"href","https://transparency.entsoe.eu/"),u(e,"target","_blank"),u(e,"class","text-xs float-right z-40")},m(o,r){y(o,e,r),y(o,l,r),V(n,o,r),i=!0},p(o,[r]){const a={};r&1&&(a.config=o[0]),n.$set(a)},i(o){i||(P(n.$$.fragment,o),i=!0)},o(o){I(n.$$.fragment,o),i=!1},d(o){o&&w(e),o&&w(l),K(n,o)}}}function Ap(t,e,l){let{json:n}=e,i={},o=0,r=0;return t.$$set=a=>{"json"in a&&l(1,n=a.json)},t.$$.update=()=>{if(t.$$.dirty&14){let a=new Date().getUTCHours(),c=0,f=0,m=0,_=n[20]==null?2:1,h=[],g=[],d=[],b=new Date;for(c=a;c<24&&(b.setUTCHours(c),f=n[Ee(m++)],f!=null);c++)g.push({label:Ee(b.getHours())}),d.push({label:f>0?f.toFixed(_):"",value:f>0?Math.abs(f*100):0,label2:f<0?f.toFixed(_):"",value2:f<0?Math.abs(f*100):0,color:"#7c3aed"}),l(3,r=Math.min(r,f*100)),l(2,o=Math.max(o,f*100));for(c=0;c<24&&(b.setUTCHours(c),f=n[Ee(m++)],f!=null);c++)g.push({label:Ee(b.getHours())}),d.push({label:f>0?f.toFixed(_):"",value:f>0?Math.abs(f*100):0,label2:f<0?f.toFixed(_):"",value2:f<0?Math.abs(f*100):0,color:"#7c3aed"}),l(3,r=Math.min(r,f*100)),l(2,o=Math.max(o,f*100));if(l(2,o=Math.ceil(o)),l(3,r=Math.floor(r)),r<0){let k=r/4;for(c=1;c<5;c++){let S=k*c;h.push({value:S,label:(S/100).toFixed(2)})}}let $=o/4;for(c=0;c<5;c++){let k=$*c;h.push({value:k,label:(k/100).toFixed(2)})}l(0,i={title:"Future energy price ("+n.currency+")",padding:{top:20,right:15,bottom:20,left:35},y:{min:r,max:o,ticks:h},x:{ticks:g},points:d})}},[i,n,o,r]}class Np extends $e{constructor(e){super(),ye(this,e,Ap,Mp,ke,{json:1})}}function Ip(t){let e,l;return e=new zl({props:{config:t[0]}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p(n,[i]){const o={};i&1&&(o.config=n[0]),e.$set(o)},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function Dp(t,e,l){let{json:n}=e,i={},o=0,r=0;return t.$$set=a=>{"json"in a&&l(1,n=a.json)},t.$$.update=()=>{if(t.$$.dirty&14){let a=0,c=[],f=[],m=[],_=new Date,h=-_.getTimezoneOffset()/60;for(a=_.getUTCHours();a<24;a++){let b=n["i"+Ee(a)],$=n["e"+Ee(a)];b===void 0&&(b=0),$===void 0&&($=0),f.push({label:Ee((a+h)%24)}),m.push({label:b.toFixed(1),value:b*10,label2:$.toFixed(1),value2:$*10,color:"#7c3aed"}),l(3,r=Math.max(r,$*10)),l(2,o=Math.max(o,b*10))}for(a=0;a<_.getUTCHours();a++){let b=n["i"+Ee(a)],$=n["e"+Ee(a)];b===void 0&&(b=0),$===void 0&&($=0),f.push({label:Ee((a+h)%24)}),m.push({label:b.toFixed(1),value:b*10,label2:$.toFixed(1),value2:$*10,color:"#7c3aed"}),l(3,r=Math.max(r,$*10)),l(2,o=Math.max(o,b*10))}let g=Math.ceil(Math.max(r,o));if(l(2,o=g),l(3,r=r==0?0:g*-1),r<0){let b=r/4;for(a=1;a<5;a++){let $=b*a;c.push({value:$,label:($/10).toFixed(1)})}}let d=o/4;for(a=0;a<5;a++){let b=d*a;c.push({value:b,label:(b/10).toFixed(1)})}l(0,i={title:"Energy use last 24 hours (kWh)",height:226,width:1520,padding:{top:20,right:15,bottom:20,left:35},y:{min:r,max:o,ticks:c},x:{ticks:f},points:m})}},[i,n,o,r]}class Ep extends $e{constructor(e){super(),ye(this,e,Dp,Ip,ke,{json:1})}}function Fp(t){let e,l;return e=new zl({props:{config:t[0]}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p(n,[i]){const o={};i&1&&(o.config=n[0]),e.$set(o)},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function Rp(t,e,l){let{json:n}=e,i={},o=0,r=0;return t.$$set=a=>{"json"in a&&l(1,n=a.json)},t.$$.update=()=>{if(t.$$.dirty&14){let a=0,c=[],f=[],m=[],_=new Date,h=new Date;for(h.setDate(0),a=_.getDate();a<=h.getDate();a++){let b=n["i"+Ee(a)],$=n["e"+Ee(a)];b===void 0&&(b=0),$===void 0&&($=0),f.push({label:Ee(a)}),m.push({label:b.toFixed(0),value:b,label2:$.toFixed(0),value2:$,color:"#7c3aed"}),l(3,r=Math.max(r,$)),l(2,o=Math.max(o,b))}for(a=1;a<_.getDate();a++){let b=n["i"+Ee(a)],$=n["e"+Ee(a)];b===void 0&&(b=0),$===void 0&&($=0),f.push({label:Ee(a)}),m.push({label:b.toFixed(0),value:b,label2:$.toFixed(0),value2:$,color:"#7c3aed"}),l(3,r=Math.max(r,$)),l(2,o=Math.max(o,b))}let g=Math.ceil(Math.max(r,o)/10)*10;if(l(2,o=g),l(3,r=r==0?0:g*-1),r<0){let b=r/4;for(a=0;a<5;a++){let $=b*a;c.push({value:$,label:$.toFixed(0)})}}let d=o/4;for(a=0;a<5;a++){let b=d*a;c.push({value:b,label:b.toFixed(0)})}l(0,i={title:"Energy use last month (kWh)",height:226,width:1520,padding:{top:20,right:15,bottom:20,left:35},y:{min:r,max:o,ticks:c},x:{ticks:f},points:m})}},[i,n,o,r]}class Lp extends $e{constructor(e){super(),ye(this,e,Rp,Fp,ke,{json:1})}}function Op(t){let e,l;return e=new zl({props:{config:t[0]}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p(n,[i]){const o={};i&1&&(o.config=n[0]),e.$set(o)},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function qp(t,e,l){let{json:n}=e,i={},o=0,r=0;return t.$$set=a=>{"json"in a&&l(1,n=a.json)},t.$$.update=()=>{if(t.$$.dirty&14){let a=0,c=0,f=[],m=[],_=[];n.s&&n.s.forEach((d,b)=>{var $=d.n?d.n:d.a;c=d.v,c==-127&&(c=0),m.push({label:$.slice(-4)}),_.push({label:c.toFixed(1),value:c,color:"#7c3aed"}),l(3,r=Math.min(r,c)),l(2,o=Math.max(o,c))}),l(2,o=Math.ceil(o)),l(3,r=Math.floor(r));let h=o;r<0&&(h+=Math.abs(r));let g=h/4;for(a=0;a<5;a++)c=r+g*a,f.push({value:c,label:c.toFixed(1)});l(0,i={title:"Temperature sensors (\xB0C)",height:226,width:1520,padding:{top:20,right:15,bottom:20,left:35},y:{min:r,max:o,ticks:f},x:{ticks:m},points:_})}},[i,n,o,r]}class Up extends $e{constructor(e){super(),ye(this,e,qp,Op,ke,{json:1})}}function Hp(t){let e,l;return e=new zl({props:{config:t[0]}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p(n,[i]){const o={};i&1&&(o.config=n[0]),e.$set(o)},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}let jp=0;function Wp(t,e,l){let n={},i=0,o;return ec.subscribe(r=>{l(2,o=r)}),xf(),t.$$.update=()=>{if(t.$$.dirty&6){let r=0,a=[],c=[],f=[];if(a.push({value:0,label:0}),o&&o.p)for(r=0;r0?Ee(m.d)+"."+Us[new Date().getMonth()]:"-"}),l(1,i=Math.max(i,m.v))}if(o&&o.t){for(r=0;r=i)break;a.push({value:m,label:m})}a.push({label:o.m.toFixed(1),align:"right",color:"green",value:o.m})}o&&o.c&&(a.push({label:o.c.toFixed(0),color:"orange",value:o.c}),l(1,i=Math.max(i,o.c))),l(1,i=Math.ceil(i)),l(0,n={title:"Tariff peaks",padding:{top:20,right:35,bottom:20,left:35},y:{min:jp,max:i,ticks:a},x:{ticks:c},points:f})}},[n,i,o]}class Gp extends $e{constructor(e){super(),ye(this,e,Wp,Hp,ke,{})}}function ia(t){let e,l,n,i,o,r,a=(t[0].mt?as(t[0].mt):"-")+"",c,f,m,_=(t[0].ic?t[0].ic.toFixed(1):"-")+"",h,g,d;return i=new ic({props:{val:t[0].i?t[0].i:0,max:t[0].im?t[0].im:15e3,unit:"W",label:"Import",sub:t[0].p,subunit:t[2].currency,colorFn:Vf}}),{c(){e=p("div"),l=p("div"),n=p("div"),J(i.$$.fragment),o=v(),r=p("div"),c=C(a),f=v(),m=p("div"),h=C(_),g=C(" kWh"),u(n,"class","col-span-2"),u(m,"class","text-right"),u(l,"class","grid grid-cols-2"),u(e,"class","cnt")},m(b,$){y(b,e,$),s(e,l),s(l,n),V(i,n,null),s(l,o),s(l,r),s(r,c),s(l,f),s(l,m),s(m,h),s(m,g),d=!0},p(b,$){const k={};$&1&&(k.val=b[0].i?b[0].i:0),$&1&&(k.max=b[0].im?b[0].im:15e3),$&1&&(k.sub=b[0].p),$&4&&(k.subunit=b[2].currency),i.$set(k),(!d||$&1)&&a!==(a=(b[0].mt?as(b[0].mt):"-")+"")&&G(c,a),(!d||$&1)&&_!==(_=(b[0].ic?b[0].ic.toFixed(1):"-")+"")&&G(h,_)},i(b){d||(P(i.$$.fragment,b),d=!0)},o(b){I(i.$$.fragment,b),d=!1},d(b){b&&w(e),K(i)}}}function sa(t){let e,l,n,i,o,r,a,c,f=(t[0].ec?t[0].ec.toFixed(1):"-")+"",m,_,h;return i=new ic({props:{val:t[0].e?t[0].e:0,max:t[0].om?t[0].om*1e3:1e4,unit:"W",label:"Export",colorFn:C1}}),{c(){e=p("div"),l=p("div"),n=p("div"),J(i.$$.fragment),o=v(),r=p("div"),a=v(),c=p("div"),m=C(f),_=C(" kWh"),u(n,"class","col-span-2"),u(c,"class","text-right"),u(l,"class","grid grid-cols-2"),u(e,"class","cnt")},m(g,d){y(g,e,d),s(e,l),s(l,n),V(i,n,null),s(l,o),s(l,r),s(l,a),s(l,c),s(c,m),s(c,_),h=!0},p(g,d){const b={};d&1&&(b.val=g[0].e?g[0].e:0),d&1&&(b.max=g[0].om?g[0].om*1e3:1e4),i.$set(b),(!h||d&1)&&f!==(f=(g[0].ec?g[0].ec.toFixed(1):"-")+"")&&G(m,f)},i(g){h||(P(i.$$.fragment,g),h=!0)},o(g){I(i.$$.fragment,g),h=!1},d(g){g&&w(e),K(i)}}}function oa(t){let e,l,n;return l=new vp({props:{u1:t[0].u1,u2:t[0].u2,u3:t[0].u3,ds:t[0].ds}}),{c(){e=p("div"),J(l.$$.fragment),u(e,"class","cnt")},m(i,o){y(i,e,o),V(l,e,null),n=!0},p(i,o){const r={};o&1&&(r.u1=i[0].u1),o&1&&(r.u2=i[0].u2),o&1&&(r.u3=i[0].u3),o&1&&(r.ds=i[0].ds),l.$set(r)},i(i){n||(P(l.$$.fragment,i),n=!0)},o(i){I(l.$$.fragment,i),n=!1},d(i){i&&w(e),K(l)}}}function ua(t){let e,l,n;return l=new bp({props:{u1:t[0].u1,u2:t[0].u2,u3:t[0].u3,i1:t[0].i1,i2:t[0].i2,i3:t[0].i3,max:t[0].mf?t[0].mf:32}}),{c(){e=p("div"),J(l.$$.fragment),u(e,"class","cnt")},m(i,o){y(i,e,o),V(l,e,null),n=!0},p(i,o){const r={};o&1&&(r.u1=i[0].u1),o&1&&(r.u2=i[0].u2),o&1&&(r.u3=i[0].u3),o&1&&(r.i1=i[0].i1),o&1&&(r.i2=i[0].i2),o&1&&(r.i3=i[0].i3),o&1&&(r.max=i[0].mf?i[0].mf:32),l.$set(r)},i(i){n||(P(l.$$.fragment,i),n=!0)},o(i){I(l.$$.fragment,i),n=!1},d(i){i&&w(e),K(l)}}}function ra(t){let e,l,n;return l=new yp({props:{importInstant:t[0].ri,exportInstant:t[0].re,importTotal:t[0].ric,exportTotal:t[0].rec}}),{c(){e=p("div"),J(l.$$.fragment),u(e,"class","cnt")},m(i,o){y(i,e,o),V(l,e,null),n=!0},p(i,o){const r={};o&1&&(r.importInstant=i[0].ri),o&1&&(r.exportInstant=i[0].re),o&1&&(r.importTotal=i[0].ric),o&1&&(r.exportTotal=i[0].rec),l.$set(r)},i(i){n||(P(l.$$.fragment,i),n=!0)},o(i){I(l.$$.fragment,i),n=!1},d(i){i&&w(e),K(l)}}}function aa(t){let e,l,n;return l=new Pp({props:{data:t[0].ea,currency:t[2].currency,hasExport:t[0].om>0||t[0].e>0}}),{c(){e=p("div"),J(l.$$.fragment),u(e,"class","cnt")},m(i,o){y(i,e,o),V(l,e,null),n=!0},p(i,o){const r={};o&1&&(r.data=i[0].ea),o&4&&(r.currency=i[2].currency),o&1&&(r.hasExport=i[0].om>0||i[0].e>0),l.$set(r)},i(i){n||(P(l.$$.fragment,i),n=!0)},o(i){I(l.$$.fragment,i),n=!1},d(i){i&&w(e),K(l)}}}function fa(t){let e,l,n;return l=new Gp({}),{c(){e=p("div"),J(l.$$.fragment),u(e,"class","cnt h-64")},m(i,o){y(i,e,o),V(l,e,null),n=!0},i(i){n||(P(l.$$.fragment,i),n=!0)},o(i){I(l.$$.fragment,i),n=!1},d(i){i&&w(e),K(l)}}}function ca(t){let e,l,n;return l=new Np({props:{json:t[2]}}),{c(){e=p("div"),J(l.$$.fragment),u(e,"class","cnt gwf")},m(i,o){y(i,e,o),V(l,e,null),n=!0},p(i,o){const r={};o&4&&(r.json=i[2]),l.$set(r)},i(i){n||(P(l.$$.fragment,i),n=!0)},o(i){I(l.$$.fragment,i),n=!1},d(i){i&&w(e),K(l)}}}function pa(t){let e,l,n;return l=new Ep({props:{json:t[3]}}),{c(){e=p("div"),J(l.$$.fragment),u(e,"class","cnt gwf")},m(i,o){y(i,e,o),V(l,e,null),n=!0},p(i,o){const r={};o&8&&(r.json=i[3]),l.$set(r)},i(i){n||(P(l.$$.fragment,i),n=!0)},o(i){I(l.$$.fragment,i),n=!1},d(i){i&&w(e),K(l)}}}function ma(t){let e,l,n;return l=new Lp({props:{json:t[4]}}),{c(){e=p("div"),J(l.$$.fragment),u(e,"class","cnt gwf")},m(i,o){y(i,e,o),V(l,e,null),n=!0},p(i,o){const r={};o&16&&(r.json=i[4]),l.$set(r)},i(i){n||(P(l.$$.fragment,i),n=!0)},o(i){I(l.$$.fragment,i),n=!1},d(i){i&&w(e),K(l)}}}function _a(t){let e,l,n;return l=new Up({props:{json:t[5]}}),{c(){e=p("div"),J(l.$$.fragment),u(e,"class","cnt gwf")},m(i,o){y(i,e,o),V(l,e,null),n=!0},p(i,o){const r={};o&32&&(r.json=i[5]),l.$set(r)},i(i){n||(P(l.$$.fragment,i),n=!0)},o(i){I(l.$$.fragment,i),n=!1},d(i){i&&w(e),K(l)}}}function Bp(t){let e,l=He(t[1].ui.i,t[0].i),n,i=He(t[1].ui.e,t[0].om||t[0].e>0),o,r=He(t[1].ui.v,t[0].u1>100||t[0].u2>100||t[0].u3>100),a,c=He(t[1].ui.a,t[0].i1>.01||t[0].i2>.01||t[0].i3>.01),f,m=He(t[1].ui.r,t[0].ri>0||t[0].re>0||t[0].ric>0||t[0].rec>0),_,h=He(t[1].ui.c,t[0].ea),g,d=He(t[1].ui.t,t[0].pr&&(t[0].pr.startsWith("10YNO")||t[0].pr=="10Y1001A1001A48H")),b,$=He(t[1].ui.p,typeof t[0].p=="number"&&!Number.isNaN(t[0].p)),k,S=He(t[1].ui.d,t[3]),A,E=He(t[1].ui.m,t[4]),T,N=He(t[1].ui.s,t[0].t&&t[0].t!=-127&&t[5].c>1),D,R=l&&ia(t),W=i&&sa(t),H=r&&oa(t),F=c&&ua(t),L=m&&ra(t),j=h&&aa(t),B=d&&fa(),q=$&&ca(t),O=S&&pa(t),U=E&&ma(t),x=N&&_a(t);return{c(){e=p("div"),R&&R.c(),n=v(),W&&W.c(),o=v(),H&&H.c(),a=v(),F&&F.c(),f=v(),L&&L.c(),_=v(),j&&j.c(),g=v(),B&&B.c(),b=v(),q&&q.c(),k=v(),O&&O.c(),A=v(),U&&U.c(),T=v(),x&&x.c(),u(e,"class","grid 2xl:grid-cols-6 xl:grid-cols-5 lg:grid-cols-4 md:grid-cols-3 sm:grid-cols-2")},m(X,ne){y(X,e,ne),R&&R.m(e,null),s(e,n),W&&W.m(e,null),s(e,o),H&&H.m(e,null),s(e,a),F&&F.m(e,null),s(e,f),L&&L.m(e,null),s(e,_),j&&j.m(e,null),s(e,g),B&&B.m(e,null),s(e,b),q&&q.m(e,null),s(e,k),O&&O.m(e,null),s(e,A),U&&U.m(e,null),s(e,T),x&&x.m(e,null),D=!0},p(X,[ne]){ne&3&&(l=He(X[1].ui.i,X[0].i)),l?R?(R.p(X,ne),ne&3&&P(R,1)):(R=ia(X),R.c(),P(R,1),R.m(e,n)):R&&(Ie(),I(R,1,1,()=>{R=null}),De()),ne&3&&(i=He(X[1].ui.e,X[0].om||X[0].e>0)),i?W?(W.p(X,ne),ne&3&&P(W,1)):(W=sa(X),W.c(),P(W,1),W.m(e,o)):W&&(Ie(),I(W,1,1,()=>{W=null}),De()),ne&3&&(r=He(X[1].ui.v,X[0].u1>100||X[0].u2>100||X[0].u3>100)),r?H?(H.p(X,ne),ne&3&&P(H,1)):(H=oa(X),H.c(),P(H,1),H.m(e,a)):H&&(Ie(),I(H,1,1,()=>{H=null}),De()),ne&3&&(c=He(X[1].ui.a,X[0].i1>.01||X[0].i2>.01||X[0].i3>.01)),c?F?(F.p(X,ne),ne&3&&P(F,1)):(F=ua(X),F.c(),P(F,1),F.m(e,f)):F&&(Ie(),I(F,1,1,()=>{F=null}),De()),ne&3&&(m=He(X[1].ui.r,X[0].ri>0||X[0].re>0||X[0].ric>0||X[0].rec>0)),m?L?(L.p(X,ne),ne&3&&P(L,1)):(L=ra(X),L.c(),P(L,1),L.m(e,_)):L&&(Ie(),I(L,1,1,()=>{L=null}),De()),ne&3&&(h=He(X[1].ui.c,X[0].ea)),h?j?(j.p(X,ne),ne&3&&P(j,1)):(j=aa(X),j.c(),P(j,1),j.m(e,g)):j&&(Ie(),I(j,1,1,()=>{j=null}),De()),ne&3&&(d=He(X[1].ui.t,X[0].pr&&(X[0].pr.startsWith("10YNO")||X[0].pr=="10Y1001A1001A48H"))),d?B?ne&3&&P(B,1):(B=fa(),B.c(),P(B,1),B.m(e,b)):B&&(Ie(),I(B,1,1,()=>{B=null}),De()),ne&3&&($=He(X[1].ui.p,typeof X[0].p=="number"&&!Number.isNaN(X[0].p))),$?q?(q.p(X,ne),ne&3&&P(q,1)):(q=ca(X),q.c(),P(q,1),q.m(e,k)):q&&(Ie(),I(q,1,1,()=>{q=null}),De()),ne&10&&(S=He(X[1].ui.d,X[3])),S?O?(O.p(X,ne),ne&10&&P(O,1)):(O=pa(X),O.c(),P(O,1),O.m(e,A)):O&&(Ie(),I(O,1,1,()=>{O=null}),De()),ne&18&&(E=He(X[1].ui.m,X[4])),E?U?(U.p(X,ne),ne&18&&P(U,1)):(U=ma(X),U.c(),P(U,1),U.m(e,T)):U&&(Ie(),I(U,1,1,()=>{U=null}),De()),ne&35&&(N=He(X[1].ui.s,X[0].t&&X[0].t!=-127&&X[5].c>1)),N?x?(x.p(X,ne),ne&35&&P(x,1)):(x=_a(X),x.c(),P(x,1),x.m(e,null)):x&&(Ie(),I(x,1,1,()=>{x=null}),De())},i(X){D||(P(R),P(W),P(H),P(F),P(L),P(j),P(B),P(q),P(O),P(U),P(x),D=!0)},o(X){I(R),I(W),I(H),I(F),I(L),I(j),I(B),I(q),I(O),I(U),I(x),D=!1},d(X){X&&w(e),R&&R.d(),W&&W.d(),H&&H.d(),F&&F.d(),L&&L.d(),j&&j.d(),B&&B.d(),q&&q.d(),O&&O.d(),U&&U.d(),x&&x.d()}}}function zp(t,e,l){let{data:n={}}=e,{sysinfo:i={}}=e,o={},r={},a={},c={};return Kf.subscribe(f=>{l(2,o=f)}),Qf.subscribe(f=>{l(3,r=f)}),Zf.subscribe(f=>{l(4,a=f)}),Xf.subscribe(f=>{l(5,c=f)}),t.$$set=f=>{"data"in f&&l(0,n=f.data),"sysinfo"in f&&l(1,i=f.sysinfo)},[n,i,o,r,a,c]}class Yp extends $e{constructor(e){super(),ye(this,e,zp,Bp,ke,{data:0,sysinfo:1})}}let Ys={};const sc=Ze(Ys);async function Vp(){Ys=await(await fetch("/configuration.json")).json(),sc.set(Ys)}function da(t,e,l){const n=t.slice();return n[2]=e[l],n[4]=l,n}function Kp(t){let e;return{c(){e=p("option"),e.textContent="UART0",e.__value=3,e.value=e.__value},m(l,n){y(l,e,n)},d(l){l&&w(e)}}}function Qp(t){let e;return{c(){e=p("option"),e.textContent="UART0",e.__value=20,e.value=e.__value},m(l,n){y(l,e,n)},d(l){l&&w(e)}}}function va(t){let e;return{c(){e=p("option"),e.textContent="UART2",e.__value=113,e.value=e.__value},m(l,n){y(l,e,n)},d(l){l&&w(e)}}}function ha(t){let e,l,n;return{c(){e=p("option"),e.textContent="UART1",l=v(),n=p("option"),n.textContent="UART2",e.__value=9,e.value=e.__value,n.__value=16,n.value=n.__value},m(i,o){y(i,e,o),y(i,l,o),y(i,n,o)},d(i){i&&w(e),i&&w(l),i&&w(n)}}}function ga(t){let e;return{c(){e=p("option"),e.textContent="UART1",e.__value=18,e.value=e.__value},m(l,n){y(l,e,n)},d(l){l&&w(e)}}}function ba(t){let e,l,n;return{c(){e=p("option"),l=C("GPIO"),n=C(t[4]),e.__value=t[4],e.value=e.__value},m(i,o){y(i,e,o),s(e,l),s(e,n)},d(i){i&&w(e)}}}function ka(t){let e,l=t[4]>3&&!(t[0]=="esp32"&&(t[4]==9||t[4]==16))&&!(t[0]=="esp32s2"&&t[4]==18)&&!(t[0]=="esp8266"&&(t[4]==3||t[4]==113))&&ba(t);return{c(){l&&l.c(),e=je()},m(n,i){l&&l.m(n,i),y(n,e,i)},p(n,i){n[4]>3&&!(n[0]=="esp32"&&(n[4]==9||n[4]==16))&&!(n[0]=="esp32s2"&&n[4]==18)&&!(n[0]=="esp8266"&&(n[4]==3||n[4]==113))?l||(l=ba(n),l.c(),l.m(e.parentNode,e)):l&&(l.d(1),l=null)},d(n){l&&l.d(n),n&&w(e)}}}function Zp(t){let e,l,n,i,o;function r(d,b){return d[0]=="esp32c3"?Qp:Kp}let a=r(t),c=a(t),f=t[0]=="esp8266"&&va(),m=(t[0]=="esp32"||t[0]=="esp32solo")&&ha(),_=t[0]=="esp32s2"&&ga(),h={length:t[1]+1},g=[];for(let d=0;d{"chip"in o&&l(0,n=o.chip)},t.$$.update=()=>{if(t.$$.dirty&1)switch(n){case"esp8266":l(1,i=16);break;case"esp32s2":l(1,i=44);break;case"esp32c3":l(1,i=19);break}},[n,i]}class oc extends $e{constructor(e){super(),ye(this,e,Jp,Zp,ke,{chip:0})}}function wa(t){let e,l,n=t[1]&&ya(t);return{c(){e=p("div"),l=p("div"),n&&n.c(),u(l,"class","fixed inset-0 bg-gray-500 bg-opacity-50 flex items-center justify-center"),u(e,"class","z-50"),u(e,"aria-modal","true")},m(i,o){y(i,e,o),s(e,l),n&&n.m(l,null)},p(i,o){i[1]?n?n.p(i,o):(n=ya(i),n.c(),n.m(l,null)):n&&(n.d(1),n=null)},d(i){i&&w(e),n&&n.d()}}}function ya(t){let e,l;return{c(){e=p("div"),l=C(t[1]),u(e,"class","bg-white m-2 p-3 rounded-md shadow-lg pb-4 text-gray-700 w-96")},m(n,i){y(n,e,i),s(e,l)},p(n,i){i&2&&G(l,n[1])},d(n){n&&w(e)}}}function Xp(t){let e,l=t[0]&&wa(t);return{c(){l&&l.c(),e=je()},m(n,i){l&&l.m(n,i),y(n,e,i)},p(n,[i]){n[0]?l?l.p(n,i):(l=wa(n),l.c(),l.m(e.parentNode,e)):l&&(l.d(1),l=null)},i:ie,o:ie,d(n){l&&l.d(n),n&&w(e)}}}function xp(t,e,l){let{active:n}=e,{message:i}=e;return t.$$set=o=>{"active"in o&&l(0,n=o.active),"message"in o&&l(1,i=o.message)},[n,i]}class gt extends $e{constructor(e){super(),ye(this,e,xp,Xp,ke,{active:0,message:1})}}function $a(t,e,l){const n=t.slice();return n[1]=e[l],n}function Ca(t){let e,l,n=t[1]+"",i;return{c(){e=p("option"),l=C("Europe/"),i=C(n),e.__value="Europe/"+t[1],e.value=e.__value},m(o,r){y(o,e,r),s(e,l),s(e,i)},p:ie,d(o){o&&w(e)}}}function em(t){let e,l,n,i=t[0],o=[];for(let r=0;r{r[m]=null}),De(),l=r[e],l||(l=r[e]=o[e](c),l.c()),P(l,1),l.m(n.parentNode,n))},i(c){i||(P(l),i=!0)},o(c){I(l),i=!1},d(c){r[e].d(c),c&&w(n)}}}function cm(t){let e,l;return e=new Vt({props:{color:"blue",text:"Upload cert",title:"Click here to upload certificate"}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function pm(t){let e,l;return e=new Vt({props:{color:"green",text:"Cert OK",title:"Click here to replace certificate"}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function mm(t){let e,l,n,i;const o=[pm,cm],r=[];function a(c,f){return c[3].q.s.r?0:1}return e=a(t),l=r[e]=o[e](t),{c(){l.c(),n=je()},m(c,f){r[e].m(c,f),y(c,n,f),i=!0},p(c,f){let m=e;e=a(c),e!==m&&(Ie(),I(r[m],1,1,()=>{r[m]=null}),De(),l=r[e],l||(l=r[e]=o[e](c),l.c()),P(l,1),l.m(n.parentNode,n))},i(c){i||(P(l),i=!0)},o(c){I(l),i=!1},d(c){r[e].d(c),c&&w(n)}}}function _m(t){let e,l;return e=new Vt({props:{color:"blue",text:"Upload key",title:"Click here to upload key"}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function dm(t){let e,l;return e=new Vt({props:{color:"green",text:"Key OK",title:"Click here to replace key"}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function vm(t){let e,l,n,i;const o=[dm,_m],r=[];function a(c,f){return c[3].q.s.k?0:1}return e=a(t),l=r[e]=o[e](t),{c(){l.c(),n=je()},m(c,f){r[e].m(c,f),y(c,n,f),i=!0},p(c,f){let m=e;e=a(c),e!==m&&(Ie(),I(r[m],1,1,()=>{r[m]=null}),De(),l=r[e],l||(l=r[e]=o[e](c),l.c()),P(l,1),l.m(n.parentNode,n))},i(c){i||(P(l),i=!0)},o(c){I(l),i=!1},d(c){r[e].d(c),c&&w(n)}}}function Ra(t){let e,l,n,i,o,r,a,c,f,m,_,h,g,d,b,$,k,S,A,E,T,N,D,R,W,H,F,L,j,B,q,O;return o=new Lt({}),{c(){e=p("div"),l=p("strong"),l.textContent="Domoticz",n=v(),i=p("a"),J(o.$$.fragment),r=v(),a=p("input"),c=v(),f=p("div"),m=p("div"),_=C("Electricity IDX"),h=p("br"),g=v(),d=p("input"),b=v(),$=p("div"),k=C("Current IDX"),S=p("br"),A=v(),E=p("input"),T=v(),N=p("div"),D=C(`Voltage IDX: L1, L2 & L3 - `),R=p("div"),W=p("input"),H=v(),F=p("input"),L=v(),j=p("input"),u(l,"class","text-sm"),u(i,"href",Ot("MQTT-configuration#domoticz")),u(i,"target","_blank"),u(i,"class","float-right"),u(a,"type","hidden"),u(a,"name","o"),a.value="true",u(d,"name","oe"),u(d,"type","text"),u(d,"class","in-f tr w-full"),u(m,"class","w-1/2"),u(E,"name","oc"),u(E,"type","text"),u(E,"class","in-l tr w-full"),u($,"class","w-1/2"),u(f,"class","my-1 flex"),u(W,"name","ou1"),u(W,"type","text"),u(W,"class","in-f tr w-1/3"),u(F,"name","ou2"),u(F,"type","text"),u(F,"class","in-m tr w-1/3"),u(j,"name","ou3"),u(j,"type","text"),u(j,"class","in-l tr w-1/3"),u(R,"class","flex"),u(N,"class","my-1"),u(e,"class","cnt")},m(U,x){y(U,e,x),s(e,l),s(e,n),s(e,i),V(o,i,null),s(e,r),s(e,a),s(e,c),s(e,f),s(f,m),s(m,_),s(m,h),s(m,g),s(m,d),Z(d,t[3].o.e),s(f,b),s(f,$),s($,k),s($,S),s($,A),s($,E),Z(E,t[3].o.c),s(e,T),s(e,N),s(N,D),s(N,R),s(R,W),Z(W,t[3].o.u1),s(R,H),s(R,F),Z(F,t[3].o.u2),s(R,L),s(R,j),Z(j,t[3].o.u3),B=!0,q||(O=[Y(d,"input",t[58]),Y(E,"input",t[59]),Y(W,"input",t[60]),Y(F,"input",t[61]),Y(j,"input",t[62])],q=!0)},p(U,x){x[0]&8&&d.value!==U[3].o.e&&Z(d,U[3].o.e),x[0]&8&&E.value!==U[3].o.c&&Z(E,U[3].o.c),x[0]&8&&W.value!==U[3].o.u1&&Z(W,U[3].o.u1),x[0]&8&&F.value!==U[3].o.u2&&Z(F,U[3].o.u2),x[0]&8&&j.value!==U[3].o.u3&&Z(j,U[3].o.u3)},i(U){B||(P(o.$$.fragment,U),B=!0)},o(U){I(o.$$.fragment,U),B=!1},d(U){U&&w(e),K(o),q=!1,Be(O)}}}function La(t){let e,l,n,i,o,r,a,c,f,m,_,h,g,d,b,$,k,S,A;o=new Lt({});let E={length:9},T=[];for(let N=0;N20&&Ha(t),m=t[0].chip=="esp8266"&&Ga(t);return{c(){e=p("div"),l=p("strong"),l.textContent="Hardware",n=v(),i=p("a"),J(o.$$.fragment),r=v(),f&&f.c(),a=v(),m&&m.c(),u(l,"class","text-sm"),u(i,"href",Ot("GPIO-configuration")),u(i,"target","_blank"),u(i,"class","float-right"),u(e,"class","cnt")},m(_,h){y(_,e,h),s(e,l),s(e,n),s(e,i),V(o,i,null),s(e,r),f&&f.m(e,null),s(e,a),m&&m.m(e,null),c=!0},p(_,h){_[0].board>20?f?(f.p(_,h),h[0]&1&&P(f,1)):(f=Ha(_),f.c(),P(f,1),f.m(e,a)):f&&(Ie(),I(f,1,1,()=>{f=null}),De()),_[0].chip=="esp8266"?m?m.p(_,h):(m=Ga(_),m.c(),m.m(e,null)):m&&(m.d(1),m=null)},i(_){c||(P(o.$$.fragment,_),P(f),c=!0)},o(_){I(o.$$.fragment,_),I(f),c=!1},d(_){_&&w(e),K(o),f&&f.d(),m&&m.d()}}}function Ha(t){let e,l,n,i,o,r,a,c,f,m,_,h,g,d,b,$,k,S,A,E,T,N,D,R,W,H,F,L,j,B,q,O,U,x,X,ne,le,_e,Ce,ve,Oe,he,Fe,ge,Ae,me,pe,se,re,z,ae,Pe,ee,ue,Ue,Se,de,Me,Le;h=new oc({props:{chip:t[0].chip}});let Te=t[0].chip!="esp8266"&&ja(t),we=t[3].i.v.p>0&&Wa(t);return{c(){e=p("input"),l=v(),n=p("div"),i=p("div"),o=C("HAN"),r=p("label"),a=p("input"),c=C(" pullup"),f=p("br"),m=v(),_=p("select"),J(h.$$.fragment),g=v(),d=p("div"),b=C("AP button"),$=p("br"),k=v(),S=p("input"),A=v(),E=p("div"),T=C("LED"),N=p("label"),D=p("input"),R=C(" inv"),W=p("br"),H=v(),F=p("div"),L=p("input"),j=v(),B=p("div"),q=C("RGB"),O=p("label"),U=p("input"),x=C(" inverted"),X=p("br"),ne=v(),le=p("div"),_e=p("input"),Ce=v(),ve=p("input"),Oe=v(),he=p("input"),Fe=v(),ge=p("div"),Ae=C("Temperature"),me=p("br"),pe=v(),se=p("input"),re=v(),z=p("div"),ae=C("Analog temp"),Pe=p("br"),ee=v(),ue=p("input"),Ue=v(),Te&&Te.c(),Se=v(),we&&we.c(),u(e,"type","hidden"),u(e,"name","i"),e.value="true",u(a,"name","ihu"),a.__value="true",a.value=a.__value,u(a,"type","checkbox"),u(a,"class","rounded mb-1"),u(r,"class","ml-2"),u(_,"name","ihp"),u(_,"class","in-f w-full"),t[3].i.h.p===void 0&&ze(()=>t[67].call(_)),u(i,"class","w-1/3"),u(S,"name","ia"),u(S,"type","number"),u(S,"min","0"),u(S,"max",t[6]),u(S,"class","in-m tr w-full"),u(d,"class","w-1/3"),u(D,"name","ili"),D.__value="true",D.value=D.__value,u(D,"type","checkbox"),u(D,"class","rounded mb-1"),u(N,"class","ml-4"),u(L,"name","ilp"),u(L,"type","number"),u(L,"min","0"),u(L,"max",t[6]),u(L,"class","in-l tr w-full"),u(F,"class","flex"),u(E,"class","w-1/3"),u(U,"name","iri"),U.__value="true",U.value=U.__value,u(U,"type","checkbox"),u(U,"class","rounded mb-1"),u(O,"class","ml-4"),u(_e,"name","irr"),u(_e,"type","number"),u(_e,"min","0"),u(_e,"max",t[6]),u(_e,"class","in-f tr w-1/3"),u(ve,"name","irg"),u(ve,"type","number"),u(ve,"min","0"),u(ve,"max",t[6]),u(ve,"class","in-m tr w-1/3"),u(he,"name","irb"),u(he,"type","number"),u(he,"min","0"),u(he,"max",t[6]),u(he,"class","in-l tr w-1/3"),u(le,"class","flex"),u(B,"class","w-full"),u(se,"name","itd"),u(se,"type","number"),u(se,"min","0"),u(se,"max",t[6]),u(se,"class","in-f tr w-full"),u(ge,"class","my-1 w-1/3"),u(ue,"name","ita"),u(ue,"type","number"),u(ue,"min","0"),u(ue,"max",t[6]),u(ue,"class","in-l tr w-full"),u(z,"class","my-1 pr-1 w-1/3"),u(n,"class","flex flex-wrap")},m(Q,oe){y(Q,e,oe),y(Q,l,oe),y(Q,n,oe),s(n,i),s(i,o),s(i,r),s(r,a),a.checked=t[3].i.h.u,s(r,c),s(i,f),s(i,m),s(i,_),V(h,_,null),Re(_,t[3].i.h.p),s(n,g),s(n,d),s(d,b),s(d,$),s(d,k),s(d,S),Z(S,t[3].i.a),s(n,A),s(n,E),s(E,T),s(E,N),s(N,D),D.checked=t[3].i.l.i,s(N,R),s(E,W),s(E,H),s(E,F),s(F,L),Z(L,t[3].i.l.p),s(n,j),s(n,B),s(B,q),s(B,O),s(O,U),U.checked=t[3].i.r.i,s(O,x),s(B,X),s(B,ne),s(B,le),s(le,_e),Z(_e,t[3].i.r.r),s(le,Ce),s(le,ve),Z(ve,t[3].i.r.g),s(le,Oe),s(le,he),Z(he,t[3].i.r.b),s(n,Fe),s(n,ge),s(ge,Ae),s(ge,me),s(ge,pe),s(ge,se),Z(se,t[3].i.t.d),s(n,re),s(n,z),s(z,ae),s(z,Pe),s(z,ee),s(z,ue),Z(ue,t[3].i.t.a),s(n,Ue),Te&&Te.m(n,null),s(n,Se),we&&we.m(n,null),de=!0,Me||(Le=[Y(a,"change",t[66]),Y(_,"change",t[67]),Y(S,"input",t[68]),Y(D,"change",t[69]),Y(L,"input",t[70]),Y(U,"change",t[71]),Y(_e,"input",t[72]),Y(ve,"input",t[73]),Y(he,"input",t[74]),Y(se,"input",t[75]),Y(ue,"input",t[76])],Me=!0)},p(Q,oe){oe[0]&8&&(a.checked=Q[3].i.h.u);const Cl={};oe[0]&1&&(Cl.chip=Q[0].chip),h.$set(Cl),oe[0]&8&&Re(_,Q[3].i.h.p),(!de||oe[0]&64)&&u(S,"max",Q[6]),oe[0]&8&&ce(S.value)!==Q[3].i.a&&Z(S,Q[3].i.a),oe[0]&8&&(D.checked=Q[3].i.l.i),(!de||oe[0]&64)&&u(L,"max",Q[6]),oe[0]&8&&ce(L.value)!==Q[3].i.l.p&&Z(L,Q[3].i.l.p),oe[0]&8&&(U.checked=Q[3].i.r.i),(!de||oe[0]&64)&&u(_e,"max",Q[6]),oe[0]&8&&ce(_e.value)!==Q[3].i.r.r&&Z(_e,Q[3].i.r.r),(!de||oe[0]&64)&&u(ve,"max",Q[6]),oe[0]&8&&ce(ve.value)!==Q[3].i.r.g&&Z(ve,Q[3].i.r.g),(!de||oe[0]&64)&&u(he,"max",Q[6]),oe[0]&8&&ce(he.value)!==Q[3].i.r.b&&Z(he,Q[3].i.r.b),(!de||oe[0]&64)&&u(se,"max",Q[6]),oe[0]&8&&ce(se.value)!==Q[3].i.t.d&&Z(se,Q[3].i.t.d),(!de||oe[0]&64)&&u(ue,"max",Q[6]),oe[0]&8&&ce(ue.value)!==Q[3].i.t.a&&Z(ue,Q[3].i.t.a),Q[0].chip!="esp8266"?Te?Te.p(Q,oe):(Te=ja(Q),Te.c(),Te.m(n,Se)):Te&&(Te.d(1),Te=null),Q[3].i.v.p>0?we?we.p(Q,oe):(we=Wa(Q),we.c(),we.m(n,null)):we&&(we.d(1),we=null)},i(Q){de||(P(h.$$.fragment,Q),de=!0)},o(Q){I(h.$$.fragment,Q),de=!1},d(Q){Q&&w(e),Q&&w(l),Q&&w(n),K(h),Te&&Te.d(),we&&we.d(),Me=!1,Be(Le)}}}function ja(t){let e,l,n,i,o,r,a;return{c(){e=p("div"),l=C("Vcc"),n=p("br"),i=v(),o=p("input"),u(o,"name","ivp"),u(o,"type","number"),u(o,"min","0"),u(o,"max",t[6]),u(o,"class","in-s tr w-full"),u(e,"class","my-1 pl-1 w-1/3")},m(c,f){y(c,e,f),s(e,l),s(e,n),s(e,i),s(e,o),Z(o,t[3].i.v.p),r||(a=Y(o,"input",t[77]),r=!0)},p(c,f){f[0]&64&&u(o,"max",c[6]),f[0]&8&&ce(o.value)!==c[3].i.v.p&&Z(o,c[3].i.v.p)},d(c){c&&w(e),r=!1,a()}}}function Wa(t){let e,l,n,i,o,r,a,c,f,m;return{c(){e=p("div"),l=C("Voltage divider"),n=p("br"),i=v(),o=p("div"),r=p("input"),a=v(),c=p("input"),u(r,"name","ivdv"),u(r,"type","number"),u(r,"min","0"),u(r,"max","65535"),u(r,"class","in-f tr w-full"),u(r,"placeholder","VCC"),u(c,"name","ivdg"),u(c,"type","number"),u(c,"min","0"),u(c,"max","65535"),u(c,"class","in-l tr w-full"),u(c,"placeholder","GND"),u(o,"class","flex"),u(e,"class","my-1")},m(_,h){y(_,e,h),s(e,l),s(e,n),s(e,i),s(e,o),s(o,r),Z(r,t[3].i.v.d.v),s(o,a),s(o,c),Z(c,t[3].i.v.d.g),f||(m=[Y(r,"input",t[78]),Y(c,"input",t[79])],f=!0)},p(_,h){h[0]&8&&ce(r.value)!==_[3].i.v.d.v&&Z(r,_[3].i.v.d.v),h[0]&8&&ce(c.value)!==_[3].i.v.d.g&&Z(c,_[3].i.v.d.g)},d(_){_&&w(e),f=!1,Be(m)}}}function Ga(t){let e,l,n,i,o,r,a,c,f,m,_,h,g,d,b,$,k,S=(t[0].board==2||t[0].board==100)&&Ba(t);return{c(){e=p("input"),l=v(),n=p("div"),i=p("div"),o=C("Vcc offset"),r=p("br"),a=v(),c=p("input"),f=v(),m=p("div"),_=C("Multiplier"),h=p("br"),g=v(),d=p("input"),b=v(),S&&S.c(),u(e,"type","hidden"),u(e,"name","iv"),e.value="true",u(c,"name","ivo"),u(c,"type","number"),u(c,"min","0.0"),u(c,"max","3.5"),u(c,"step","0.01"),u(c,"class","in-f tr w-full"),u(i,"class","w-1/3"),u(d,"name","ivm"),u(d,"type","number"),u(d,"min","0.1"),u(d,"max","10"),u(d,"step","0.01"),u(d,"class","in-l tr w-full"),u(m,"class","w-1/3 pr-1"),u(n,"class","my-1 flex flex-wrap")},m(A,E){y(A,e,E),y(A,l,E),y(A,n,E),s(n,i),s(i,o),s(i,r),s(i,a),s(i,c),Z(c,t[3].i.v.o),s(n,f),s(n,m),s(m,_),s(m,h),s(m,g),s(m,d),Z(d,t[3].i.v.m),s(n,b),S&&S.m(n,null),$||(k=[Y(c,"input",t[80]),Y(d,"input",t[81])],$=!0)},p(A,E){E[0]&8&&ce(c.value)!==A[3].i.v.o&&Z(c,A[3].i.v.o),E[0]&8&&ce(d.value)!==A[3].i.v.m&&Z(d,A[3].i.v.m),A[0].board==2||A[0].board==100?S?S.p(A,E):(S=Ba(A),S.c(),S.m(n,null)):S&&(S.d(1),S=null)},d(A){A&&w(e),A&&w(l),A&&w(n),S&&S.d(),$=!1,Be(k)}}}function Ba(t){let e,l,n,i,o,r,a;return{c(){e=p("div"),l=C("Boot limit"),n=p("br"),i=v(),o=p("input"),u(o,"name","ivb"),u(o,"type","number"),u(o,"min","2.5"),u(o,"max","3.5"),u(o,"step","0.1"),u(o,"class","in-s tr w-full"),u(e,"class","w-1/3 pl-1")},m(c,f){y(c,e,f),s(e,l),s(e,n),s(e,i),s(e,o),Z(o,t[3].i.v.b),r||(a=Y(o,"input",t[82]),r=!0)},p(c,f){f[0]&8&&ce(o.value)!==c[3].i.v.b&&Z(o,c[3].i.v.b)},d(c){c&&w(e),r=!1,a()}}}function za(t){let e,l,n,i,o,r,a,c,f,m,_,h,g,d,b,$,k=t[3].d.t&&Ya();return{c(){e=p("div"),e.textContent="Debug can cause sudden reboots. Do not leave on!",l=v(),n=p("div"),i=p("label"),o=p("input"),r=C(" Enable telnet"),a=v(),k&&k.c(),c=v(),f=p("div"),m=p("select"),_=p("option"),_.textContent="Verbose",h=p("option"),h.textContent="Debug",g=p("option"),g.textContent="Info",d=p("option"),d.textContent="Warning",u(e,"class","bd-red"),u(o,"type","checkbox"),u(o,"name","dt"),o.__value="true",o.value=o.__value,u(o,"class","rounded mb-1"),u(n,"class","my-1"),_.__value=1,_.value=_.__value,h.__value=2,h.value=h.__value,g.__value=3,g.value=g.__value,d.__value=4,d.value=d.__value,u(m,"name","dl"),u(m,"class","in-s"),t[3].d.l===void 0&&ze(()=>t[85].call(m)),u(f,"class","my-1")},m(S,A){y(S,e,A),y(S,l,A),y(S,n,A),s(n,i),s(i,o),o.checked=t[3].d.t,s(i,r),y(S,a,A),k&&k.m(S,A),y(S,c,A),y(S,f,A),s(f,m),s(m,_),s(m,h),s(m,g),s(m,d),Re(m,t[3].d.l),b||($=[Y(o,"change",t[84]),Y(m,"change",t[85])],b=!0)},p(S,A){A[0]&8&&(o.checked=S[3].d.t),S[3].d.t?k||(k=Ya(),k.c(),k.m(c.parentNode,c)):k&&(k.d(1),k=null),A[0]&8&&Re(m,S[3].d.l)},d(S){S&&w(e),S&&w(l),S&&w(n),S&&w(a),k&&k.d(S),S&&w(c),S&&w(f),b=!1,Be($)}}}function Ya(t){let e;return{c(){e=p("div"),e.textContent="Telnet is unsafe and should be off when not in use",u(e,"class","bd-red")},m(l,n){y(l,e,n)},d(l){l&&w(e)}}}function hm(t){let e,l,n,i,o,r,a,c,f,m,_,h,g,d,b,$,k,S,A,E,T,N,D,R,W,H,F,L,j,B,q,O,U,x,X,ne,le,_e,Ce,ve,Oe,he,Fe,ge,Ae,me,pe,se,re,z,ae,Pe,ee,ue,Ue,Se,de,Me,Le,Te,we,Q,oe,Cl,ai,fi,Ct,ci,Zt,pi,mi,_i,tt,di,Jt,Yl,mt,vi,hi,gi,Xt,bi,ki,wi,_t,al,fl,cl,Ge,Gn,Ne,Bn,yi,bt,pl,$i,zn,uo,Vl,ms,ro,ml,Ut,_l,ao,Ci,fo,xe,dl,co,Si,Kl,Ql,Zl,Jl,Ti,po,Yn,St,mo,_o,Sl,vo,ho,go,Ht,Xl,xl,bo,en,Tl,ko,wo,yo,tn,Tt,$o,Pi,Co,Pl,So,To,Po,ln,Pt,Mo,Mi,Ao,_s,No,Ml,Ai,Mt,Io,Do,Eo,ds,Ni,At,Fo,Ro,Lo,Xe,Ii,Oo,nn,sn,qo,Vn,Uo,Al,Ho,jo,Wo,xt,Go,Nl,Bo,zo,Yo,el,Vo,on,Il,Ko,Qo,Zo,kt,un,rn,an,fn,Jo,Dl,Xo,xo,eu,cn,wt,tu,Di,lu,Ei,Fi,Nt,nu,iu,Je,Ri,su,pn,mn,ou,El,uu,ru,au,vl,jt,_n,dn,fu,dt,Li,Oi,cu,vt,vn,qi,Ui,pu,vs,Hi,ji,It,mu,_u,Kn,du,hl,vu,Qn,Dt,hu,gu,bu,Wi,tl,ku,We,Gi,wu,hn,gn,yu,Zn,$u,Wt,Cu,hs,Su,Tu,bn,ll,Pu,Et,Mu,gs,Fl,Au,Nu,Iu,nl,Du,Rl,Eu,Fu,Ru,il,Lu,kn,wn,Ou,qu,Uu,sl,Hu,yn,ju,Wu,Gu,lt,$n,Cn,Sn,Tn,Pn,Mn,Bu,Ll,zu,Yu,Vu,ol,Ku,bs,ks=t[3].p.r.startsWith("10YNO")||t[3].p.r=="10Y1001A1001A48H",ws,Gt,Bi,Qu,An,Nn,Zu,Jn,Ju,Xn,Xu,ys,ht,zi,xu,In,Dn,er,xn,tr,Yi,Vi,Ft,lr,nr,ir,gl,$s,En,sr,Ki,Fn,or,Qi,Cs,Ol,Ss,ql,Ts,Ul,Ps,Hl,Rt,Ms,ur;a=new Lt({}),R=new lm({});let rc=["NOK","SEK","DKK","EUR"],Zi=[];for(let M=0;M<4;M+=1)Zi[M]=om(sm(t,rc,M));let nt=t[3].p.e&&t[0].chip!="esp8266"&&Pa(t),it=t[3].g.s>0&&Ma(t);pl=new Lt({});let ac=[24,48,96,192,384,576,1152],Ji=[];for(let M=0;M<7;M+=1)Ji[M]=um(im(t,ac,M));let st=t[3].m.e.e&&Aa(t),ot=t[3].m.e.e&&Na(t),ut=t[3].m.m.e&&Ia(t);sn=new Lt({}),mn=new Lt({}),vn=new uc({});let rt=t[3].n.m=="static"&&Da(t);gn=new Lt({});let at=t[0].chip!="esp8266"&&Ea(t),Ye=t[3].q.s.e&&Fa(t),Ve=t[3].q.m==3&&Ra(t),Ke=ks&&La(t);Nn=new Lt({});let Rn=t[7],ft=[];for(let M=0;M20||t[0].chip=="esp8266")&&Ua(t);Dn=new Lt({});let ct=t[3].d.s&&za(t);return Ol=new gt({props:{active:t[1],message:"Loading configuration"}}),ql=new gt({props:{active:t[2],message:"Saving configuration"}}),Ul=new gt({props:{active:t[4],message:"Performing factory reset"}}),Hl=new gt({props:{active:t[5],message:"Device have been factory reset and switched to AP mode"}}),{c(){e=p("form"),l=p("div"),n=p("div"),i=p("strong"),i.textContent="General",o=v(),r=p("a"),J(a.$$.fragment),c=v(),f=p("input"),m=v(),_=p("div"),h=p("div"),g=p("div"),d=C("Hostname"),b=p("br"),$=v(),k=p("input"),S=v(),A=p("div"),E=C("Time zone"),T=p("br"),N=v(),D=p("select"),J(R.$$.fragment),W=v(),H=p("input"),F=v(),L=p("div"),j=C("Price region"),B=p("br"),q=v(),O=p("select"),U=p("optgroup"),x=p("option"),x.textContent="NO1",X=p("option"),X.textContent="NO2",ne=p("option"),ne.textContent="NO3",le=p("option"),le.textContent="NO4",_e=p("option"),_e.textContent="NO5",Ce=p("optgroup"),ve=p("option"),ve.textContent="SE1",Oe=p("option"),Oe.textContent="SE2",he=p("option"),he.textContent="SE3",Fe=p("option"),Fe.textContent="SE4",ge=p("optgroup"),Ae=p("option"),Ae.textContent="DK1",me=p("option"),me.textContent="DK2",pe=p("option"),pe.textContent="Austria",se=p("option"),se.textContent="Belgium",re=p("option"),re.textContent="Czech Republic",z=p("option"),z.textContent="Estonia",ae=p("option"),ae.textContent="Finland",Pe=p("option"),Pe.textContent="France",ee=p("option"),ee.textContent="Germany",ue=p("option"),ue.textContent="Great Britain",Ue=p("option"),Ue.textContent="Latvia",Se=p("option"),Se.textContent="Lithuania",de=p("option"),de.textContent="Netherland",Me=p("option"),Me.textContent="Poland",Le=p("option"),Le.textContent="Switzerland",Te=v(),we=p("div"),Q=p("div"),oe=p("div"),Cl=C("Currency"),ai=p("br"),fi=v(),Ct=p("select");for(let M=0;M<4;M+=1)Zi[M].c();ci=v(),Zt=p("div"),pi=C("Multiplier"),mi=p("br"),_i=v(),tt=p("input"),di=v(),Jt=p("div"),Yl=p("label"),mt=p("input"),vi=C(" Enable price fetch from remote server"),hi=v(),nt&&nt.c(),gi=v(),Xt=p("div"),bi=C("Security"),ki=p("br"),wi=v(),_t=p("select"),al=p("option"),al.textContent="None",fl=p("option"),fl.textContent="Only configuration",cl=p("option"),cl.textContent="Everything",Ge=v(),it&&it.c(),Gn=v(),Ne=p("div"),Bn=p("strong"),Bn.textContent="Meter",yi=v(),bt=p("a"),J(pl.$$.fragment),$i=v(),zn=p("input"),uo=v(),Vl=p("div"),ms=p("span"),ms.textContent="Serial configuration",ro=v(),ml=p("div"),Ut=p("select"),_l=p("option"),ao=C("Autodetect");for(let M=0;M<7;M+=1)Ji[M].c();fo=v(),xe=p("select"),dl=p("option"),co=C("-"),Kl=p("option"),Kl.textContent="7N1",Ql=p("option"),Ql.textContent="8N1",Zl=p("option"),Zl.textContent="7E1",Jl=p("option"),Jl.textContent="8E1",po=v(),Yn=p("label"),St=p("input"),mo=C(" inverted"),_o=v(),Sl=p("div"),vo=C("Voltage"),ho=p("br"),go=v(),Ht=p("select"),Xl=p("option"),Xl.textContent="400V (TN)",xl=p("option"),xl.textContent="230V (IT/TT)",bo=v(),en=p("div"),Tl=p("div"),ko=C("Main fuse"),wo=p("br"),yo=v(),tn=p("label"),Tt=p("input"),$o=v(),Pi=p("span"),Pi.textContent="A",Co=v(),Pl=p("div"),So=C("Production"),To=p("br"),Po=v(),ln=p("label"),Pt=p("input"),Mo=v(),Mi=p("span"),Mi.textContent="kWp",Ao=v(),_s=p("div"),No=v(),Ml=p("div"),Ai=p("label"),Mt=p("input"),Io=C(" Meter is encrypted"),Do=v(),st&&st.c(),Eo=v(),ot&&ot.c(),ds=v(),Ni=p("label"),At=p("input"),Fo=C(" Multipliers"),Ro=v(),ut&&ut.c(),Lo=v(),Xe=p("div"),Ii=p("strong"),Ii.textContent="WiFi",Oo=v(),nn=p("a"),J(sn.$$.fragment),qo=v(),Vn=p("input"),Uo=v(),Al=p("div"),Ho=C("SSID"),jo=p("br"),Wo=v(),xt=p("input"),Go=v(),Nl=p("div"),Bo=C("Password"),zo=p("br"),Yo=v(),el=p("input"),Vo=v(),on=p("div"),Il=p("div"),Ko=C("Power saving"),Qo=p("br"),Zo=v(),kt=p("select"),un=p("option"),un.textContent="Default",rn=p("option"),rn.textContent="Off",an=p("option"),an.textContent="Minimum",fn=p("option"),fn.textContent="Maximum",Jo=v(),Dl=p("div"),Xo=C("Power"),xo=p("br"),eu=v(),cn=p("div"),wt=p("input"),tu=v(),Di=p("span"),Di.textContent="dBm",lu=v(),Ei=p("div"),Fi=p("label"),Nt=p("input"),nu=C(" Auto reboot on connection problem"),iu=v(),Je=p("div"),Ri=p("strong"),Ri.textContent="Network",su=v(),pn=p("a"),J(mn.$$.fragment),ou=v(),El=p("div"),uu=C("IP"),ru=p("br"),au=v(),vl=p("div"),jt=p("select"),_n=p("option"),_n.textContent="DHCP",dn=p("option"),dn.textContent="Static",fu=v(),dt=p("input"),cu=v(),vt=p("select"),J(vn.$$.fragment),pu=v(),rt&&rt.c(),vs=v(),Hi=p("div"),ji=p("label"),It=p("input"),mu=C(" enable mDNS"),_u=v(),Kn=p("input"),du=v(),hl=p("div"),vu=C("NTP "),Qn=p("label"),Dt=p("input"),hu=C(" obtain from DHCP"),gu=p("br"),bu=v(),Wi=p("div"),tl=p("input"),ku=v(),We=p("div"),Gi=p("strong"),Gi.textContent="MQTT",wu=v(),hn=p("a"),J(gn.$$.fragment),yu=v(),Zn=p("input"),$u=v(),Wt=p("div"),Cu=C(`Server - `),at&&at.c(),hs=v(),Su=p("br"),Tu=v(),bn=p("div"),ll=p("input"),Pu=v(),Et=p("input"),Mu=v(),Ye&&Ye.c(),gs=v(),Fl=p("div"),Au=C("Username"),Nu=p("br"),Iu=v(),nl=p("input"),Du=v(),Rl=p("div"),Eu=C("Password"),Fu=p("br"),Ru=v(),il=p("input"),Lu=v(),kn=p("div"),wn=p("div"),Ou=C("Client ID"),qu=p("br"),Uu=v(),sl=p("input"),Hu=v(),yn=p("div"),ju=C("Payload"),Wu=p("br"),Gu=v(),lt=p("select"),$n=p("option"),$n.textContent="JSON",Cn=p("option"),Cn.textContent="Raw (minimal)",Sn=p("option"),Sn.textContent="Raw (full)",Tn=p("option"),Tn.textContent="Domoticz",Pn=p("option"),Pn.textContent="HomeAssistant",Mn=p("option"),Mn.textContent="HEX dump",Bu=v(),Ll=p("div"),zu=C("Publish topic"),Yu=p("br"),Vu=v(),ol=p("input"),Ku=v(),Ve&&Ve.c(),bs=v(),Ke&&Ke.c(),ws=v(),Gt=p("div"),Bi=p("strong"),Bi.textContent="User interface",Qu=v(),An=p("a"),J(Nn.$$.fragment),Zu=v(),Jn=p("input"),Ju=v(),Xn=p("div");for(let M=0;MSave',Cs=v(),J(Ol.$$.fragment),Ss=v(),J(ql.$$.fragment),Ts=v(),J(Ul.$$.fragment),Ps=v(),J(Hl.$$.fragment),u(i,"class","text-sm"),u(r,"href",Ot("General-configuration")),u(r,"target","_blank"),u(r,"class","float-right"),u(f,"type","hidden"),u(f,"name","g"),f.value="true",u(k,"name","gh"),u(k,"type","text"),u(k,"class","in-f w-full"),u(k,"pattern","[A-Za-z0-9-]+"),u(D,"name","gt"),u(D,"class","in-l w-full"),t[3].g.t===void 0&&ze(()=>t[13].call(D)),u(h,"class","flex"),u(_,"class","my-1"),u(H,"type","hidden"),u(H,"name","p"),H.value="true",x.__value="10YNO-1--------2",x.value=x.__value,X.__value="10YNO-2--------T",X.value=X.__value,ne.__value="10YNO-3--------J",ne.value=ne.__value,le.__value="10YNO-4--------9",le.value=le.__value,_e.__value="10Y1001A1001A48H",_e.value=_e.__value,u(U,"label","Norway"),ve.__value="10Y1001A1001A44P",ve.value=ve.__value,Oe.__value="10Y1001A1001A45N",Oe.value=Oe.__value,he.__value="10Y1001A1001A46L",he.value=he.__value,Fe.__value="10Y1001A1001A47J",Fe.value=Fe.__value,u(Ce,"label","Sweden"),Ae.__value="10YDK-1--------W",Ae.value=Ae.__value,me.__value="10YDK-2--------M",me.value=me.__value,u(ge,"label","Denmark"),pe.__value="10YAT-APG------L",pe.value=pe.__value,se.__value="10YBE----------2",se.value=se.__value,re.__value="10YCZ-CEPS-----N",re.value=re.__value,z.__value="10Y1001A1001A39I",z.value=z.__value,ae.__value="10YFI-1--------U",ae.value=ae.__value,Pe.__value="10YFR-RTE------C",Pe.value=Pe.__value,ee.__value="10Y1001A1001A83F",ee.value=ee.__value,ue.__value="10YGB----------A",ue.value=ue.__value,Ue.__value="10YLV-1001A00074",Ue.value=Ue.__value,Se.__value="10YLT-1001A0008Q",Se.value=Se.__value,de.__value="10YNL----------L",de.value=de.__value,Me.__value="10YPL-AREA-----S",Me.value=Me.__value,Le.__value="10YCH-SWISSGRIDZ",Le.value=Le.__value,u(O,"name","pr"),u(O,"class","in-s"),t[3].p.r===void 0&&ze(()=>t[14].call(O)),u(L,"class","my-1"),u(Ct,"name","pc"),u(Ct,"class","in-f w-full"),t[3].p.c===void 0&&ze(()=>t[15].call(Ct)),u(oe,"class","w-1/2"),u(tt,"name","pm"),u(tt,"type","number"),u(tt,"min","0.001"),u(tt,"max","1000"),u(tt,"step","0.001"),u(tt,"class","in-l tr w-full"),u(Zt,"class","w-1/2"),u(Q,"class","flex"),u(we,"class","my-1"),u(mt,"type","checkbox"),u(mt,"name","pe"),mt.__value="true",mt.value=mt.__value,u(mt,"class","rounded mb-1"),u(Jt,"class","my-1"),al.__value=0,al.value=al.__value,fl.__value=1,fl.value=fl.__value,cl.__value=2,cl.value=cl.__value,u(_t,"name","gs"),u(_t,"class","in-s"),t[3].g.s===void 0&&ze(()=>t[19].call(_t)),u(Xt,"class","my-1"),u(n,"class","cnt"),u(Bn,"class","text-sm"),u(bt,"href",Ot("Meter-configuration")),u(bt,"target","_blank"),u(bt,"class","float-right"),u(zn,"type","hidden"),u(zn,"name","m"),zn.value="true",_l.__value=0,_l.value=_l.__value,_l.disabled=Ci=t[3].m.b!=0,u(Ut,"name","mb"),u(Ut,"class","in-f"),t[3].m.b===void 0&&ze(()=>t[22].call(Ut)),dl.__value=0,dl.value=dl.__value,dl.disabled=Si=t[3].m.b!=0,Kl.__value=2,Kl.value=Kl.__value,Ql.__value=3,Ql.value=Ql.__value,Zl.__value=10,Zl.value=Zl.__value,Jl.__value=11,Jl.value=Jl.__value,u(xe,"name","mp"),u(xe,"class","in-l"),xe.disabled=Ti=t[3].m.b==0,t[3].m.p===void 0&&ze(()=>t[23].call(xe)),u(St,"name","mi"),St.__value="true",St.value=St.__value,u(St,"type","checkbox"),u(St,"class","rounded mb-1"),u(Yn,"class","mt-2 ml-3 whitespace-nowrap"),u(ml,"class","flex"),u(Vl,"class","my-1"),Xl.__value=2,Xl.value=Xl.__value,xl.__value=1,xl.value=xl.__value,u(Ht,"name","md"),u(Ht,"class","in-s"),t[3].m.d===void 0&&ze(()=>t[25].call(Ht)),u(Sl,"class","my-1"),u(Tt,"name","mf"),u(Tt,"type","number"),u(Tt,"min","5"),u(Tt,"max","65535"),u(Tt,"class","in-f tr w-full"),u(Pi,"class","in-post"),u(tn,"class","flex"),u(Tl,"class","mx-1"),u(Pt,"name","mr"),u(Pt,"type","number"),u(Pt,"min","0"),u(Pt,"max","65535"),u(Pt,"class","in-f tr w-full"),u(Mi,"class","in-post"),u(ln,"class","flex"),u(Pl,"class","mx-1"),u(en,"class","my-1 flex"),u(_s,"class","my-1"),u(Mt,"type","checkbox"),u(Mt,"name","me"),Mt.__value="true",Mt.value=Mt.__value,u(Mt,"class","rounded mb-1"),u(Ml,"class","my-1"),u(At,"type","checkbox"),u(At,"name","mm"),At.__value="true",At.value=At.__value,u(At,"class","rounded mb-1"),u(Ne,"class","cnt"),u(Ii,"class","text-sm"),u(nn,"href",Ot("WiFi-configuration")),u(nn,"target","_blank"),u(nn,"class","float-right"),u(Vn,"type","hidden"),u(Vn,"name","w"),Vn.value="true",u(xt,"name","ws"),u(xt,"type","text"),u(xt,"class","in-s"),u(Al,"class","my-1"),u(el,"name","wp"),u(el,"type","password"),u(el,"class","in-s"),u(Nl,"class","my-1"),un.__value=255,un.value=un.__value,rn.__value=0,rn.value=rn.__value,an.__value=1,an.value=an.__value,fn.__value=2,fn.value=fn.__value,u(kt,"name","wz"),u(kt,"class","in-s"),t[3].w.z===void 0&&ze(()=>t[38].call(kt)),u(Il,"class","w-1/2"),u(wt,"name","ww"),u(wt,"type","number"),u(wt,"min","0"),u(wt,"max","20.5"),u(wt,"step","0.5"),u(wt,"class","in-f tr w-full"),u(Di,"class","in-post"),u(cn,"class","flex"),u(Dl,"class","ml-2 w-1/2"),u(on,"class","my-1 flex"),u(Nt,"type","checkbox"),u(Nt,"name","wa"),Nt.__value="true",Nt.value=Nt.__value,u(Nt,"class","rounded mb-1"),u(Ei,"class","my-3"),u(Xe,"class","cnt"),u(Ri,"class","text-sm"),u(pn,"href",Ot("Network-configuration")),u(pn,"target","_blank"),u(pn,"class","float-right"),_n.__value="dhcp",_n.value=_n.__value,dn.__value="static",dn.value=dn.__value,u(jt,"name","nm"),u(jt,"class","in-f"),t[3].n.m===void 0&&ze(()=>t[41].call(jt)),u(dt,"name","ni"),u(dt,"type","text"),u(dt,"class","in-m w-full"),dt.disabled=Li=t[3].n.m=="dhcp",dt.required=Oi=t[3].n.m=="static",u(vt,"name","ns"),u(vt,"class","in-l"),vt.disabled=qi=t[3].n.m=="dhcp",vt.required=Ui=t[3].n.m=="static",t[3].n.s===void 0&&ze(()=>t[43].call(vt)),u(vl,"class","flex"),u(El,"class","my-1"),u(It,"name","nd"),It.__value="true",It.value=It.__value,u(It,"type","checkbox"),u(It,"class","rounded mb-1"),u(Hi,"class","my-1"),u(Kn,"type","hidden"),u(Kn,"name","ntp"),Kn.value="true",u(Dt,"name","ntpd"),Dt.__value="true",Dt.value=Dt.__value,u(Dt,"type","checkbox"),u(Dt,"class","rounded mb-1"),u(Qn,"class","ml-4"),u(tl,"name","ntph"),u(tl,"type","text"),u(tl,"class","in-s"),u(Wi,"class","flex"),u(hl,"class","my-1"),u(Je,"class","cnt"),u(Gi,"class","text-sm"),u(hn,"href",Ot("MQTT-configuration")),u(hn,"target","_blank"),u(hn,"class","float-right"),u(Zn,"type","hidden"),u(Zn,"name","q"),Zn.value="true",u(ll,"name","qh"),u(ll,"type","text"),u(ll,"class","in-f w-3/4"),u(Et,"name","qp"),u(Et,"type","number"),u(Et,"min","1024"),u(Et,"max","65535"),u(Et,"class","in-l tr w-1/4"),u(bn,"class","flex"),u(Wt,"class","my-1"),u(nl,"name","qu"),u(nl,"type","text"),u(nl,"class","in-s"),u(Fl,"class","my-1"),u(il,"name","qa"),u(il,"type","password"),u(il,"class","in-s"),u(Rl,"class","my-1"),u(sl,"name","qc"),u(sl,"type","text"),u(sl,"class","in-f w-full"),$n.__value=0,$n.value=$n.__value,Cn.__value=1,Cn.value=Cn.__value,Sn.__value=2,Sn.value=Sn.__value,Tn.__value=3,Tn.value=Tn.__value,Pn.__value=4,Pn.value=Pn.__value,Mn.__value=255,Mn.value=Mn.__value,u(lt,"name","qm"),u(lt,"class","in-l"),t[3].q.m===void 0&&ze(()=>t[56].call(lt)),u(kn,"class","my-1 flex"),u(ol,"name","qb"),u(ol,"type","text"),u(ol,"class","in-s"),u(Ll,"class","my-1"),u(We,"class","cnt"),u(Bi,"class","text-sm"),u(An,"href",Ot("User-interface")),u(An,"target","_blank"),u(An,"class","float-right"),u(Jn,"type","hidden"),u(Jn,"name","u"),Jn.value="true",u(Xn,"class","flex flex-wrap"),u(Gt,"class","cnt"),u(zi,"class","text-sm"),u(In,"href","https://amsleser.no/blog/post/24-telnet-debug"),u(In,"target","_blank"),u(In,"class","float-right"),u(xn,"type","hidden"),u(xn,"name","d"),xn.value="true",u(Ft,"type","checkbox"),u(Ft,"name","ds"),Ft.__value="true",Ft.value=Ft.__value,u(Ft,"class","rounded mb-1"),u(Yi,"class","mt-3"),u(ht,"class","cnt"),u(l,"class","grid xl:grid-cols-4 lg:grid-cols-2 md:grid-cols-2"),u(En,"type","button"),u(En,"class","py-2 px-4 rounded bg-red-500 text-white ml-2"),u(Fn,"type","button"),u(Fn,"class","py-2 px-4 rounded bg-yellow-500 text-white"),u(Ki,"class","text-center"),u(Qi,"class","text-right"),u(gl,"class","grid grid-cols-3"),u(e,"autocomplete","off")},m(M,te){y(M,e,te),s(e,l),s(l,n),s(n,i),s(n,o),s(n,r),V(a,r,null),s(n,c),s(n,f),s(n,m),s(n,_),s(_,h),s(h,g),s(g,d),s(g,b),s(g,$),s(g,k),Z(k,t[3].g.h),s(h,S),s(h,A),s(A,E),s(A,T),s(A,N),s(A,D),V(R,D,null),Re(D,t[3].g.t),s(n,W),s(n,H),s(n,F),s(n,L),s(L,j),s(L,B),s(L,q),s(L,O),s(O,U),s(U,x),s(U,X),s(U,ne),s(U,le),s(U,_e),s(O,Ce),s(Ce,ve),s(Ce,Oe),s(Ce,he),s(Ce,Fe),s(O,ge),s(ge,Ae),s(ge,me),s(O,pe),s(O,se),s(O,re),s(O,z),s(O,ae),s(O,Pe),s(O,ee),s(O,ue),s(O,Ue),s(O,Se),s(O,de),s(O,Me),s(O,Le),Re(O,t[3].p.r),s(n,Te),s(n,we),s(we,Q),s(Q,oe),s(oe,Cl),s(oe,ai),s(oe,fi),s(oe,Ct);for(let pt=0;pt<4;pt+=1)Zi[pt].m(Ct,null);Re(Ct,t[3].p.c),s(Q,ci),s(Q,Zt),s(Zt,pi),s(Zt,mi),s(Zt,_i),s(Zt,tt),Z(tt,t[3].p.m),s(n,di),s(n,Jt),s(Jt,Yl),s(Yl,mt),mt.checked=t[3].p.e,s(Yl,vi),s(Jt,hi),nt&&nt.m(Jt,null),s(n,gi),s(n,Xt),s(Xt,bi),s(Xt,ki),s(Xt,wi),s(Xt,_t),s(_t,al),s(_t,fl),s(_t,cl),Re(_t,t[3].g.s),s(n,Ge),it&&it.m(n,null),s(l,Gn),s(l,Ne),s(Ne,Bn),s(Ne,yi),s(Ne,bt),V(pl,bt,null),s(Ne,$i),s(Ne,zn),s(Ne,uo),s(Ne,Vl),s(Vl,ms),s(Vl,ro),s(Vl,ml),s(ml,Ut),s(Ut,_l),s(_l,ao);for(let pt=0;pt<7;pt+=1)Ji[pt].m(Ut,null);Re(Ut,t[3].m.b),s(ml,fo),s(ml,xe),s(xe,dl),s(dl,co),s(xe,Kl),s(xe,Ql),s(xe,Zl),s(xe,Jl),Re(xe,t[3].m.p),s(ml,po),s(ml,Yn),s(Yn,St),St.checked=t[3].m.i,s(Yn,mo),s(Ne,_o),s(Ne,Sl),s(Sl,vo),s(Sl,ho),s(Sl,go),s(Sl,Ht),s(Ht,Xl),s(Ht,xl),Re(Ht,t[3].m.d),s(Ne,bo),s(Ne,en),s(en,Tl),s(Tl,ko),s(Tl,wo),s(Tl,yo),s(Tl,tn),s(tn,Tt),Z(Tt,t[3].m.f),s(tn,$o),s(tn,Pi),s(en,Co),s(en,Pl),s(Pl,So),s(Pl,To),s(Pl,Po),s(Pl,ln),s(ln,Pt),Z(Pt,t[3].m.r),s(ln,Mo),s(ln,Mi),s(Ne,Ao),s(Ne,_s),s(Ne,No),s(Ne,Ml),s(Ml,Ai),s(Ai,Mt),Mt.checked=t[3].m.e.e,s(Ai,Io),s(Ml,Do),st&&st.m(Ml,null),s(Ne,Eo),ot&&ot.m(Ne,null),s(Ne,ds),s(Ne,Ni),s(Ni,At),At.checked=t[3].m.m.e,s(Ni,Fo),s(Ne,Ro),ut&&ut.m(Ne,null),s(l,Lo),s(l,Xe),s(Xe,Ii),s(Xe,Oo),s(Xe,nn),V(sn,nn,null),s(Xe,qo),s(Xe,Vn),s(Xe,Uo),s(Xe,Al),s(Al,Ho),s(Al,jo),s(Al,Wo),s(Al,xt),Z(xt,t[3].w.s),s(Xe,Go),s(Xe,Nl),s(Nl,Bo),s(Nl,zo),s(Nl,Yo),s(Nl,el),Z(el,t[3].w.p),s(Xe,Vo),s(Xe,on),s(on,Il),s(Il,Ko),s(Il,Qo),s(Il,Zo),s(Il,kt),s(kt,un),s(kt,rn),s(kt,an),s(kt,fn),Re(kt,t[3].w.z),s(on,Jo),s(on,Dl),s(Dl,Xo),s(Dl,xo),s(Dl,eu),s(Dl,cn),s(cn,wt),Z(wt,t[3].w.w),s(cn,tu),s(cn,Di),s(Xe,lu),s(Xe,Ei),s(Ei,Fi),s(Fi,Nt),Nt.checked=t[3].w.a,s(Fi,nu),s(l,iu),s(l,Je),s(Je,Ri),s(Je,su),s(Je,pn),V(mn,pn,null),s(Je,ou),s(Je,El),s(El,uu),s(El,ru),s(El,au),s(El,vl),s(vl,jt),s(jt,_n),s(jt,dn),Re(jt,t[3].n.m),s(vl,fu),s(vl,dt),Z(dt,t[3].n.i),s(vl,cu),s(vl,vt),V(vn,vt,null),Re(vt,t[3].n.s),s(Je,pu),rt&&rt.m(Je,null),s(Je,vs),s(Je,Hi),s(Hi,ji),s(ji,It),It.checked=t[3].n.d,s(ji,mu),s(Je,_u),s(Je,Kn),s(Je,du),s(Je,hl),s(hl,vu),s(hl,Qn),s(Qn,Dt),Dt.checked=t[3].n.h,s(Qn,hu),s(hl,gu),s(hl,bu),s(hl,Wi),s(Wi,tl),Z(tl,t[3].n.n1),s(l,ku),s(l,We),s(We,Gi),s(We,wu),s(We,hn),V(gn,hn,null),s(We,yu),s(We,Zn),s(We,$u),s(We,Wt),s(Wt,Cu),at&&at.m(Wt,null),s(Wt,hs),s(Wt,Su),s(Wt,Tu),s(Wt,bn),s(bn,ll),Z(ll,t[3].q.h),s(bn,Pu),s(bn,Et),Z(Et,t[3].q.p),s(We,Mu),Ye&&Ye.m(We,null),s(We,gs),s(We,Fl),s(Fl,Au),s(Fl,Nu),s(Fl,Iu),s(Fl,nl),Z(nl,t[3].q.u),s(We,Du),s(We,Rl),s(Rl,Eu),s(Rl,Fu),s(Rl,Ru),s(Rl,il),Z(il,t[3].q.a),s(We,Lu),s(We,kn),s(kn,wn),s(wn,Ou),s(wn,qu),s(wn,Uu),s(wn,sl),Z(sl,t[3].q.c),s(kn,Hu),s(kn,yn),s(yn,ju),s(yn,Wu),s(yn,Gu),s(yn,lt),s(lt,$n),s(lt,Cn),s(lt,Sn),s(lt,Tn),s(lt,Pn),s(lt,Mn),Re(lt,t[3].q.m),s(We,Bu),s(We,Ll),s(Ll,zu),s(Ll,Yu),s(Ll,Vu),s(Ll,ol),Z(ol,t[3].q.b),s(l,Ku),Ve&&Ve.m(l,null),s(l,bs),Ke&&Ke.m(l,null),s(l,ws),s(l,Gt),s(Gt,Bi),s(Gt,Qu),s(Gt,An),V(Nn,An,null),s(Gt,Zu),s(Gt,Jn),s(Gt,Ju),s(Gt,Xn);for(let pt=0;pt0?it?it.p(M,te):(it=Ma(M),it.c(),it.m(n,null)):it&&(it.d(1),it=null),(!Rt||te[0]&8&&Ci!==(Ci=M[3].m.b!=0))&&(_l.disabled=Ci),te[0]&8&&Re(Ut,M[3].m.b),(!Rt||te[0]&8&&Si!==(Si=M[3].m.b!=0))&&(dl.disabled=Si),(!Rt||te[0]&8&&Ti!==(Ti=M[3].m.b==0))&&(xe.disabled=Ti),te[0]&8&&Re(xe,M[3].m.p),te[0]&8&&(St.checked=M[3].m.i),te[0]&8&&Re(Ht,M[3].m.d),te[0]&8&&ce(Tt.value)!==M[3].m.f&&Z(Tt,M[3].m.f),te[0]&8&&ce(Pt.value)!==M[3].m.r&&Z(Pt,M[3].m.r),te[0]&8&&(Mt.checked=M[3].m.e.e),M[3].m.e.e?st?st.p(M,te):(st=Aa(M),st.c(),st.m(Ml,null)):st&&(st.d(1),st=null),M[3].m.e.e?ot?ot.p(M,te):(ot=Na(M),ot.c(),ot.m(Ne,ds)):ot&&(ot.d(1),ot=null),te[0]&8&&(At.checked=M[3].m.m.e),M[3].m.m.e?ut?ut.p(M,te):(ut=Ia(M),ut.c(),ut.m(Ne,null)):ut&&(ut.d(1),ut=null),te[0]&8&&xt.value!==M[3].w.s&&Z(xt,M[3].w.s),te[0]&8&&el.value!==M[3].w.p&&Z(el,M[3].w.p),te[0]&8&&Re(kt,M[3].w.z),te[0]&8&&ce(wt.value)!==M[3].w.w&&Z(wt,M[3].w.w),te[0]&8&&(Nt.checked=M[3].w.a),te[0]&8&&Re(jt,M[3].n.m),(!Rt||te[0]&8&&Li!==(Li=M[3].n.m=="dhcp"))&&(dt.disabled=Li),(!Rt||te[0]&8&&Oi!==(Oi=M[3].n.m=="static"))&&(dt.required=Oi),te[0]&8&&dt.value!==M[3].n.i&&Z(dt,M[3].n.i),(!Rt||te[0]&8&&qi!==(qi=M[3].n.m=="dhcp"))&&(vt.disabled=qi),(!Rt||te[0]&8&&Ui!==(Ui=M[3].n.m=="static"))&&(vt.required=Ui),te[0]&8&&Re(vt,M[3].n.s),M[3].n.m=="static"?rt?rt.p(M,te):(rt=Da(M),rt.c(),rt.m(Je,vs)):rt&&(rt.d(1),rt=null),te[0]&8&&(It.checked=M[3].n.d),te[0]&8&&(Dt.checked=M[3].n.h),te[0]&8&&tl.value!==M[3].n.n1&&Z(tl,M[3].n.n1),M[0].chip!="esp8266"?at?at.p(M,te):(at=Ea(M),at.c(),at.m(Wt,hs)):at&&(at.d(1),at=null),te[0]&8&&ll.value!==M[3].q.h&&Z(ll,M[3].q.h),te[0]&8&&ce(Et.value)!==M[3].q.p&&Z(Et,M[3].q.p),M[3].q.s.e?Ye?(Ye.p(M,te),te[0]&8&&P(Ye,1)):(Ye=Fa(M),Ye.c(),P(Ye,1),Ye.m(We,gs)):Ye&&(Ie(),I(Ye,1,1,()=>{Ye=null}),De()),te[0]&8&&nl.value!==M[3].q.u&&Z(nl,M[3].q.u),te[0]&8&&il.value!==M[3].q.a&&Z(il,M[3].q.a),te[0]&8&&sl.value!==M[3].q.c&&Z(sl,M[3].q.c),te[0]&8&&Re(lt,M[3].q.m),te[0]&8&&ol.value!==M[3].q.b&&Z(ol,M[3].q.b),M[3].q.m==3?Ve?(Ve.p(M,te),te[0]&8&&P(Ve,1)):(Ve=Ra(M),Ve.c(),P(Ve,1),Ve.m(l,bs)):Ve&&(Ie(),I(Ve,1,1,()=>{Ve=null}),De()),te[0]&8&&(ks=M[3].p.r.startsWith("10YNO")||M[3].p.r=="10Y1001A1001A48H"),ks?Ke?(Ke.p(M,te),te[0]&8&&P(Ke,1)):(Ke=La(M),Ke.c(),P(Ke,1),Ke.m(l,ws)):Ke&&(Ie(),I(Ke,1,1,()=>{Ke=null}),De()),te[0]&136){Rn=M[7];let yt;for(yt=0;yt20||M[0].chip=="esp8266"?Qe?(Qe.p(M,te),te[0]&1&&P(Qe,1)):(Qe=Ua(M),Qe.c(),P(Qe,1),Qe.m(l,ys)):Qe&&(Ie(),I(Qe,1,1,()=>{Qe=null}),De()),te[0]&8&&(Ft.checked=M[3].d.s),M[3].d.s?ct?ct.p(M,te):(ct=za(M),ct.c(),ct.m(ht,null)):ct&&(ct.d(1),ct=null);const pt={};te[0]&2&&(pt.active=M[1]),Ol.$set(pt);const rr={};te[0]&4&&(rr.active=M[2]),ql.$set(rr);const ar={};te[0]&16&&(ar.active=M[4]),Ul.$set(ar);const fr={};te[0]&32&&(fr.active=M[5]),Hl.$set(fr)},i(M){Rt||(P(a.$$.fragment,M),P(R.$$.fragment,M),P(pl.$$.fragment,M),P(sn.$$.fragment,M),P(mn.$$.fragment,M),P(vn.$$.fragment,M),P(gn.$$.fragment,M),P(Ye),P(Ve),P(Ke),P(Nn.$$.fragment,M),P(Qe),P(Dn.$$.fragment,M),P(Ol.$$.fragment,M),P(ql.$$.fragment,M),P(Ul.$$.fragment,M),P(Hl.$$.fragment,M),Rt=!0)},o(M){I(a.$$.fragment,M),I(R.$$.fragment,M),I(pl.$$.fragment,M),I(sn.$$.fragment,M),I(mn.$$.fragment,M),I(vn.$$.fragment,M),I(gn.$$.fragment,M),I(Ye),I(Ve),I(Ke),I(Nn.$$.fragment,M),I(Qe),I(Dn.$$.fragment,M),I(Ol.$$.fragment,M),I(ql.$$.fragment,M),I(Ul.$$.fragment,M),I(Hl.$$.fragment,M),Rt=!1},d(M){M&&w(e),K(a),K(R),Kt(Zi,M),nt&&nt.d(),it&&it.d(),K(pl),Kt(Ji,M),st&&st.d(),ot&&ot.d(),ut&&ut.d(),K(sn),K(mn),K(vn),rt&&rt.d(),K(gn),at&&at.d(),Ye&&Ye.d(),Ve&&Ve.d(),Ke&&Ke.d(),K(Nn),Kt(ft,M),Qe&&Qe.d(),K(Dn),ct&&ct.d(),M&&w(Cs),K(Ol,M),M&&w(Ss),K(ql,M),M&&w(Ts),K(Ul,M),M&&w(Ps),K(Hl,M),Ms=!1,Be(ur)}}}async function gm(){await(await fetch("/reboot",{method:"POST"})).json()}function bm(t,e,l){let{sysinfo:n={}}=e,i=[{name:"Import gauge",key:"i"},{name:"Export gauge",key:"e"},{name:"Voltage",key:"v"},{name:"Amperage",key:"a"},{name:"Reactive",key:"r"},{name:"Realtime",key:"c"},{name:"Peaks",key:"t"},{name:"Price",key:"p"},{name:"Day plot",key:"d"},{name:"Month plot",key:"m"},{name:"Temperature plot",key:"s"}],o=!0,r=!1,a={g:{t:"",h:"",s:0,u:"",p:""},m:{b:2400,p:11,i:!1,d:0,f:0,r:0,e:{e:!1,k:"",a:""},m:{e:!1,w:!1,v:!1,a:!1,c:!1}},w:{s:"",p:"",w:0,z:255,a:!0},n:{m:"",i:"",s:"",g:"",d1:"",d2:"",d:!1,n1:"",n2:"",h:!1},q:{h:"",p:1883,u:"",a:"",b:"",s:{e:!1,c:!1,r:!0,k:!1}},o:{e:"",c:"",u1:"",u2:"",u3:""},t:{t:[0,0,0,0,0,0,0,0,0,0],h:1},p:{e:!1,t:"",r:"",c:"",m:1},d:{s:!1,t:!1,l:5},u:{i:0,e:0,v:0,a:0,r:0,c:0,t:0,p:0,d:0,m:0,s:0},i:{h:{p:null,u:!0},a:null,l:{p:null,i:!1},r:{r:null,g:null,b:null,i:!1},t:{d:null,a:null},v:{p:null,d:{v:null,g:null},o:null,m:null,b:null}}};sc.subscribe(Ge=>{Ge.version&&(l(3,a=Ge),l(1,o=!1))}),Vp();let c=!1,f=!1;async function m(){if(confirm("Are you sure you want to factory reset the device?")){l(4,c=!0);const Ge=new URLSearchParams;Ge.append("perform","true");let Ne=await(await fetch("/reset",{method:"POST",body:Ge})).json();l(4,c=!1),l(5,f=Ne.success)}}async function _(Ge){l(2,r=!0);const Gn=new FormData(Ge.target),Ne=new URLSearchParams;for(let bt of Gn){const[pl,$i]=bt;Ne.append(pl,$i)}let yi=await(await fetch("/save",{method:"POST",body:Ne})).json();$t.update(bt=>(bt.booting=yi.reboot,bt.ui=a.u,bt)),l(2,r=!1),qn("/")}const h=function(){confirm("Are you sure you want to reboot the device?")&&($t.update(Ge=>(Ge.booting=!0,Ge)),gm())},g=function(){a.q.s.e?a.q.p==1883&&l(3,a.q.p=8883,a):a.q.p==8883&&l(3,a.q.p=1883,a)};let d=44;function b(){a.g.h=this.value,l(3,a)}function $(){a.g.t=et(this),l(3,a)}function k(){a.p.r=et(this),l(3,a)}function S(){a.p.c=et(this),l(3,a)}function A(){a.p.m=ce(this.value),l(3,a)}function E(){a.p.e=this.checked,l(3,a)}function T(){a.p.t=this.value,l(3,a)}function N(){a.g.s=et(this),l(3,a)}function D(){a.g.u=this.value,l(3,a)}function R(){a.g.p=this.value,l(3,a)}function W(){a.m.b=et(this),l(3,a)}function H(){a.m.p=et(this),l(3,a)}function F(){a.m.i=this.checked,l(3,a)}function L(){a.m.d=et(this),l(3,a)}function j(){a.m.f=ce(this.value),l(3,a)}function B(){a.m.r=ce(this.value),l(3,a)}function q(){a.m.e.e=this.checked,l(3,a)}function O(){a.m.e.k=this.value,l(3,a)}function U(){a.m.e.a=this.value,l(3,a)}function x(){a.m.m.e=this.checked,l(3,a)}function X(){a.m.m.w=ce(this.value),l(3,a)}function ne(){a.m.m.v=ce(this.value),l(3,a)}function le(){a.m.m.a=ce(this.value),l(3,a)}function _e(){a.m.m.c=ce(this.value),l(3,a)}function Ce(){a.w.s=this.value,l(3,a)}function ve(){a.w.p=this.value,l(3,a)}function Oe(){a.w.z=et(this),l(3,a)}function he(){a.w.w=ce(this.value),l(3,a)}function Fe(){a.w.a=this.checked,l(3,a)}function ge(){a.n.m=et(this),l(3,a)}function Ae(){a.n.i=this.value,l(3,a)}function me(){a.n.s=et(this),l(3,a)}function pe(){a.n.g=this.value,l(3,a)}function se(){a.n.d1=this.value,l(3,a)}function re(){a.n.d2=this.value,l(3,a)}function z(){a.n.d=this.checked,l(3,a)}function ae(){a.n.h=this.checked,l(3,a)}function Pe(){a.n.n1=this.value,l(3,a)}function ee(){a.q.s.e=this.checked,l(3,a)}function ue(){a.q.h=this.value,l(3,a)}function Ue(){a.q.p=ce(this.value),l(3,a)}function Se(){a.q.u=this.value,l(3,a)}function de(){a.q.a=this.value,l(3,a)}function Me(){a.q.c=this.value,l(3,a)}function Le(){a.q.m=et(this),l(3,a)}function Te(){a.q.b=this.value,l(3,a)}function we(){a.o.e=this.value,l(3,a)}function Q(){a.o.c=this.value,l(3,a)}function oe(){a.o.u1=this.value,l(3,a)}function Cl(){a.o.u2=this.value,l(3,a)}function ai(){a.o.u3=this.value,l(3,a)}function fi(Ge){a.t.t[Ge]=ce(this.value),l(3,a)}function Ct(){a.t.h=ce(this.value),l(3,a)}function ci(Ge){a.u[Ge.key]=et(this),l(3,a)}function Zt(){a.i.h.u=this.checked,l(3,a)}function pi(){a.i.h.p=et(this),l(3,a)}function mi(){a.i.a=ce(this.value),l(3,a)}function _i(){a.i.l.i=this.checked,l(3,a)}function tt(){a.i.l.p=ce(this.value),l(3,a)}function di(){a.i.r.i=this.checked,l(3,a)}function Jt(){a.i.r.r=ce(this.value),l(3,a)}function Yl(){a.i.r.g=ce(this.value),l(3,a)}function mt(){a.i.r.b=ce(this.value),l(3,a)}function vi(){a.i.t.d=ce(this.value),l(3,a)}function hi(){a.i.t.a=ce(this.value),l(3,a)}function gi(){a.i.v.p=ce(this.value),l(3,a)}function Xt(){a.i.v.d.v=ce(this.value),l(3,a)}function bi(){a.i.v.d.g=ce(this.value),l(3,a)}function ki(){a.i.v.o=ce(this.value),l(3,a)}function wi(){a.i.v.m=ce(this.value),l(3,a)}function _t(){a.i.v.b=ce(this.value),l(3,a)}function al(){a.d.s=this.checked,l(3,a)}function fl(){a.d.t=this.checked,l(3,a)}function cl(){a.d.l=et(this),l(3,a)}return t.$$set=Ge=>{"sysinfo"in Ge&&l(0,n=Ge.sysinfo)},t.$$.update=()=>{t.$$.dirty[0]&1&&l(6,d=n.chip=="esp8266"?16:n.chip=="esp32s2"?44:39)},[n,o,r,a,c,f,d,i,m,_,h,g,b,$,k,S,A,E,T,N,D,R,W,H,F,L,j,B,q,O,U,x,X,ne,le,_e,Ce,ve,Oe,he,Fe,ge,Ae,me,pe,se,re,z,ae,Pe,ee,ue,Ue,Se,de,Me,Le,Te,we,Q,oe,Cl,ai,fi,Ct,ci,Zt,pi,mi,_i,tt,di,Jt,Yl,mt,vi,hi,gi,Xt,bi,ki,wi,_t,al,fl,cl]}class km extends $e{constructor(e){super(),ye(this,e,bm,hm,ke,{sysinfo:0},null,[-1,-1,-1,-1])}}function Va(t,e,l){const n=t.slice();return n[20]=e[l],n}function wm(t){let e=fe(t[1].chip,t[1].board)+"",l;return{c(){l=C(e)},m(n,i){y(n,l,i)},p(n,i){i&2&&e!==(e=fe(n[1].chip,n[1].board)+"")&&G(l,e)},d(n){n&&w(l)}}}function Ka(t){let e,l,n=t[1].apmac+"",i;return{c(){e=p("div"),l=C("AP MAC: "),i=C(n),u(e,"class","my-2")},m(o,r){y(o,e,r),s(e,l),s(e,i)},p(o,r){r&2&&n!==(n=o[1].apmac+"")&&G(i,n)},d(o){o&&w(e)}}}function ym(t){let e;return{c(){e=p("span"),e.textContent="Update consents",u(e,"class","btn-pri-sm")},m(l,n){y(l,e,n)},p:ie,d(l){l&&w(e)}}}function Qa(t){let e,l,n,i,o,r=as(t[1].meter.mfg)+"",a,c,f,m,_=t[1].meter.model+"",h,g,d,b,$=t[1].meter.id+"",k;return{c(){e=p("div"),l=p("strong"),l.textContent="Meter",n=v(),i=p("div"),o=C("Manufacturer: "),a=C(r),c=v(),f=p("div"),m=C("Model: "),h=C(_),g=v(),d=p("div"),b=C("ID: "),k=C($),u(l,"class","text-sm"),u(i,"class","my-2"),u(f,"class","my-2"),u(d,"class","my-2"),u(e,"class","cnt")},m(S,A){y(S,e,A),s(e,l),s(e,n),s(e,i),s(i,o),s(i,a),s(e,c),s(e,f),s(f,m),s(f,h),s(e,g),s(e,d),s(d,b),s(d,k)},p(S,A){A&2&&r!==(r=as(S[1].meter.mfg)+"")&&G(a,r),A&2&&_!==(_=S[1].meter.model+"")&&G(h,_),A&2&&$!==($=S[1].meter.id+"")&&G(k,$)},d(S){S&&w(e)}}}function Za(t){let e,l,n,i,o,r=t[1].net.ip+"",a,c,f,m,_=t[1].net.mask+"",h,g,d,b,$=t[1].net.gw+"",k,S,A,E,T=t[1].net.dns1+"",N,D,R=t[1].net.dns2&&Ja(t);return{c(){e=p("div"),l=p("strong"),l.textContent="Network",n=v(),i=p("div"),o=C("IP: "),a=C(r),c=v(),f=p("div"),m=C("Mask: "),h=C(_),g=v(),d=p("div"),b=C("Gateway: "),k=C($),S=v(),A=p("div"),E=C("DNS: "),N=C(T),D=v(),R&&R.c(),u(l,"class","text-sm"),u(i,"class","my-2"),u(f,"class","my-2"),u(d,"class","my-2"),u(A,"class","my-2"),u(e,"class","cnt")},m(W,H){y(W,e,H),s(e,l),s(e,n),s(e,i),s(i,o),s(i,a),s(e,c),s(e,f),s(f,m),s(f,h),s(e,g),s(e,d),s(d,b),s(d,k),s(e,S),s(e,A),s(A,E),s(A,N),s(A,D),R&&R.m(A,null)},p(W,H){H&2&&r!==(r=W[1].net.ip+"")&&G(a,r),H&2&&_!==(_=W[1].net.mask+"")&&G(h,_),H&2&&$!==($=W[1].net.gw+"")&&G(k,$),H&2&&T!==(T=W[1].net.dns1+"")&&G(N,T),W[1].net.dns2?R?R.p(W,H):(R=Ja(W),R.c(),R.m(A,null)):R&&(R.d(1),R=null)},d(W){W&&w(e),R&&R.d()}}}function Ja(t){let e,l=t[1].net.dns2+"",n;return{c(){e=C("/ "),n=C(l)},m(i,o){y(i,e,o),y(i,n,o)},p(i,o){o&2&&l!==(l=i[1].net.dns2+"")&&G(n,l)},d(i){i&&w(e),i&&w(n)}}}function Xa(t){let e,l,n,i=t[2].tag_name+"",o,r,a,c,f,m,_=(t[1].security==0||t[0].a)&&t[1].fwconsent===1&&t[2]&&t[2].tag_name&&xa(t),h=t[1].fwconsent===2&&ef();return{c(){e=p("div"),l=C(`Latest version: - `),n=p("a"),o=C(i),a=v(),_&&_.c(),c=v(),h&&h.c(),f=je(),u(n,"href",r=t[2].html_url),u(n,"class","ml-2 text-blue-600 hover:text-blue-800"),u(n,"target","_blank"),u(n,"rel","noreferrer"),u(e,"class","my-2 flex")},m(g,d){y(g,e,d),s(e,l),s(e,n),s(n,o),s(e,a),_&&_.m(e,null),y(g,c,d),h&&h.m(g,d),y(g,f,d),m=!0},p(g,d){(!m||d&4)&&i!==(i=g[2].tag_name+"")&&G(o,i),(!m||d&4&&r!==(r=g[2].html_url))&&u(n,"href",r),(g[1].security==0||g[0].a)&&g[1].fwconsent===1&&g[2]&&g[2].tag_name?_?(_.p(g,d),d&7&&P(_,1)):(_=xa(g),_.c(),P(_,1),_.m(e,null)):_&&(Ie(),I(_,1,1,()=>{_=null}),De()),g[1].fwconsent===2?h||(h=ef(),h.c(),h.m(f.parentNode,f)):h&&(h.d(1),h=null)},i(g){m||(P(_),m=!0)},o(g){I(_),m=!1},d(g){g&&w(e),_&&_.d(),g&&w(c),h&&h.d(g),g&&w(f)}}}function xa(t){let e,l,n,i,o,r;return n=new nc({}),{c(){e=p("div"),l=p("button"),J(n.$$.fragment),u(e,"class","flex-none ml-2 text-green-500"),u(e,"title","Install this version")},m(a,c){y(a,e,c),s(e,l),V(n,l,null),i=!0,o||(r=Y(l,"click",t[10]),o=!0)},p:ie,i(a){i||(P(n.$$.fragment,a),i=!0)},o(a){I(n.$$.fragment,a),i=!1},d(a){a&&w(e),K(n),o=!1,r()}}}function ef(t){let e;return{c(){e=p("div"),e.innerHTML='
You have disabled one-click firmware upgrade, link to self-upgrade is disabled
',u(e,"class","my-2")},m(l,n){y(l,e,n)},d(l){l&&w(e)}}}function tf(t){let e,l=fs(fe(t[1].chip,t[1].board))+"",n;return{c(){e=p("div"),n=C(l),u(e,"class","bd-red")},m(i,o){y(i,e,o),s(e,n)},p(i,o){o&2&&l!==(l=fs(fe(i[1].chip,i[1].board))+"")&&G(n,l)},d(i){i&&w(e)}}}function lf(t){let e,l,n,i,o,r;function a(m,_){return m[4].length==0?Cm:$m}let c=a(t),f=c(t);return{c(){e=p("div"),l=p("form"),n=p("input"),i=v(),f.c(),bf(n,"display","none"),u(n,"name","file"),u(n,"type","file"),u(n,"accept",".bin"),u(l,"action","/firmware"),u(l,"enctype","multipart/form-data"),u(l,"method","post"),u(l,"autocomplete","off"),u(e,"class","my-2 flex")},m(m,_){y(m,e,_),s(e,l),s(l,n),t[12](n),s(l,i),f.m(l,null),o||(r=[Y(n,"change",t[13]),Y(l,"submit",t[15])],o=!0)},p(m,_){c===(c=a(m))&&f?f.p(m,_):(f.d(1),f=c(m),f&&(f.c(),f.m(l,null)))},d(m){m&&w(e),t[12](null),f.d(),o=!1,Be(r)}}}function $m(t){let e=t[4][0].name+"",l,n,i;return{c(){l=C(e),n=v(),i=p("button"),i.textContent="Upload",u(i,"type","submit"),u(i,"class","btn-pri-sm float-right")},m(o,r){y(o,l,r),y(o,n,r),y(o,i,r)},p(o,r){r&16&&e!==(e=o[4][0].name+"")&&G(l,e)},d(o){o&&w(l),o&&w(n),o&&w(i)}}}function Cm(t){let e,l,n;return{c(){e=p("button"),e.textContent="Select firmware file for upgrade",u(e,"type","button"),u(e,"class","btn-pri-sm float-right")},m(i,o){y(i,e,o),l||(n=Y(e,"click",t[14]),l=!0)},p:ie,d(i){i&&w(e),l=!1,n()}}}function nf(t){let e,l,n,i,o,r,a,c,f,m,_,h,g,d,b=t[9],$=[];for(let T=0;T Include Secrets
(SSID, PSK, passwords and tokens)',c=v(),k&&k.c(),f=v(),m=p("form"),_=p("input"),h=v(),E.c(),u(l,"class","text-sm"),u(a,"class","my-1 mx-3 col-span-2"),u(o,"class","grid grid-cols-2"),u(i,"method","get"),u(i,"action","/configfile.cfg"),u(i,"autocomplete","off"),bf(_,"display","none"),u(_,"name","file"),u(_,"type","file"),u(_,"accept",".cfg"),u(m,"action","/configfile"),u(m,"enctype","multipart/form-data"),u(m,"method","post"),u(m,"autocomplete","off"),u(e,"class","cnt")},m(T,N){y(T,e,N),s(e,l),s(e,n),s(e,i),s(i,o);for(let D=0;D<$.length;D+=1)$[D].m(o,null);s(o,r),s(o,a),s(i,c),k&&k.m(i,null),s(e,f),s(e,m),s(m,_),t[16](_),s(m,h),E.m(m,null),g||(d=[Y(_,"change",t[17]),Y(m,"submit",t[19])],g=!0)},p(T,N){if(N&512){b=T[9];let D;for(D=0;D{re=null}),De()),ue&3&&(ne=(ee[1].security==0||ee[0].a)&&Un(ee[1].board)),ne?z?z.p(ee,ue):(z=tf(ee),z.c(),z.m(F,le)):z&&(z.d(1),z=null),ee[1].security==0||ee[0].a?ae?ae.p(ee,ue):(ae=lf(ee),ae.c(),ae.m(F,null)):ae&&(ae.d(1),ae=null),ee[1].security==0||ee[0].a?Pe?Pe.p(ee,ue):(Pe=nf(ee),Pe.c(),Pe.m(e,null)):Pe&&(Pe.d(1),Pe=null);const de={};ue&32&&(de.active=ee[5]),ve.$set(de);const Me={};ue&256&&(Me.active=ee[8]),he.$set(Me)},i(ee){Fe||(P(h.$$.fragment,ee),P(T.$$.fragment,ee),P(re),P(ve.$$.fragment,ee),P(he.$$.fragment,ee),Fe=!0)},o(ee){I(h.$$.fragment,ee),I(T.$$.fragment,ee),I(re),I(ve.$$.fragment,ee),I(he.$$.fragment,ee),Fe=!1},d(ee){ee&&w(e),K(h),me&&me.d(),K(T),pe&&pe.d(),se&&se.d(),re&&re.d(),z&&z.d(),ae&&ae.d(),Pe&&Pe.d(),ee&&w(Ce),K(ve,ee),ee&&w(Oe),K(he,ee),ge=!1,Ae()}}}async function Mm(){await(await fetch("/reboot",{method:"POST"})).json()}function Am(t,e,l){let{data:n}=e,{sysinfo:i}=e,o=[{name:"WiFi",key:"iw"},{name:"MQTT",key:"im"},{name:"Web",key:"ie"},{name:"Meter",key:"it"},{name:"Thresholds",key:"ih"},{name:"GPIO",key:"ig"},{name:"Domoticz",key:"id"},{name:"NTP",key:"in"},{name:"Price API",key:"is"}],r={};so.subscribe(D=>{l(2,r=lc(i.version,D)),r||l(2,r=D[0])});function a(){confirm("Do you want to upgrade this device to "+r.tag_name+"?")&&(i.board!=2&&i.board!=4&&i.board!=7||confirm(fs(fe(i.chip,i.board))))&&($t.update(D=>(D.upgrading=!0,D)),tc())}const c=function(){confirm("Are you sure you want to reboot the device?")&&($t.update(D=>(D.booting=!0,D)),Mm())};let f,m=[],_=!1,h,g=[],d=!1;lo();function b(D){us[D?"unshift":"push"](()=>{f=D,l(3,f)})}function $(){m=this.files,l(4,m)}const k=()=>{f.click()},S=()=>l(5,_=!0);function A(D){us[D?"unshift":"push"](()=>{h=D,l(6,h)})}function E(){g=this.files,l(7,g)}const T=()=>{h.click()},N=()=>l(8,d=!0);return t.$$set=D=>{"data"in D&&l(0,n=D.data),"sysinfo"in D&&l(1,i=D.sysinfo)},[n,i,r,f,m,_,h,g,d,o,a,c,b,$,k,S,A,E,T,N]}class Nm extends $e{constructor(e){super(),ye(this,e,Am,Pm,ke,{data:0,sysinfo:1})}}function uf(t){let e,l,n=fe(t[0],7)+"",i,o,r=fe(t[0],5)+"",a,c,f=fe(t[0],4)+"",m,_,h=fe(t[0],3)+"",g,d,b,$,k=fe(t[0],2)+"",S,A,E=fe(t[0],1)+"",T,N,D=fe(t[0],0)+"",R,W,H,F,L=fe(t[0],101)+"",j,B,q=fe(t[0],100)+"",O;return{c(){e=p("optgroup"),l=p("option"),i=C(n),o=p("option"),a=C(r),c=p("option"),m=C(f),_=p("option"),g=C(h),d=v(),b=p("optgroup"),$=p("option"),S=C(k),A=p("option"),T=C(E),N=p("option"),R=C(D),W=v(),H=p("optgroup"),F=p("option"),j=C(L),B=p("option"),O=C(q),l.__value=7,l.value=l.__value,o.__value=5,o.value=o.__value,c.__value=4,c.value=c.__value,_.__value=3,_.value=_.__value,u(e,"label","amsleser.no"),$.__value=2,$.value=$.__value,A.__value=1,A.value=A.__value,N.__value=0,N.value=N.__value,u(b,"label","Custom hardware"),F.__value=101,F.value=F.__value,B.__value=100,B.value=B.__value,u(H,"label","Generic hardware")},m(U,x){y(U,e,x),s(e,l),s(l,i),s(e,o),s(o,a),s(e,c),s(c,m),s(e,_),s(_,g),y(U,d,x),y(U,b,x),s(b,$),s($,S),s(b,A),s(A,T),s(b,N),s(N,R),y(U,W,x),y(U,H,x),s(H,F),s(F,j),s(H,B),s(B,O)},p(U,x){x&1&&n!==(n=fe(U[0],7)+"")&&G(i,n),x&1&&r!==(r=fe(U[0],5)+"")&&G(a,r),x&1&&f!==(f=fe(U[0],4)+"")&&G(m,f),x&1&&h!==(h=fe(U[0],3)+"")&&G(g,h),x&1&&k!==(k=fe(U[0],2)+"")&&G(S,k),x&1&&E!==(E=fe(U[0],1)+"")&&G(T,E),x&1&&D!==(D=fe(U[0],0)+"")&&G(R,D),x&1&&L!==(L=fe(U[0],101)+"")&&G(j,L),x&1&&q!==(q=fe(U[0],100)+"")&&G(O,q)},d(U){U&&w(e),U&&w(d),U&&w(b),U&&w(W),U&&w(H)}}}function rf(t){let e,l,n=fe(t[0],201)+"",i,o,r=fe(t[0],202)+"",a,c,f=fe(t[0],203)+"",m,_,h=fe(t[0],200)+"",g;return{c(){e=p("optgroup"),l=p("option"),i=C(n),o=p("option"),a=C(r),c=p("option"),m=C(f),_=p("option"),g=C(h),l.__value=201,l.value=l.__value,o.__value=202,o.value=o.__value,c.__value=203,c.value=c.__value,_.__value=200,_.value=_.__value,u(e,"label","Generic hardware")},m(d,b){y(d,e,b),s(e,l),s(l,i),s(e,o),s(o,a),s(e,c),s(c,m),s(e,_),s(_,g)},p(d,b){b&1&&n!==(n=fe(d[0],201)+"")&&G(i,n),b&1&&r!==(r=fe(d[0],202)+"")&&G(a,r),b&1&&f!==(f=fe(d[0],203)+"")&&G(m,f),b&1&&h!==(h=fe(d[0],200)+"")&&G(g,h)},d(d){d&&w(e)}}}function af(t){let e,l,n=fe(t[0],7)+"",i,o,r=fe(t[0],6)+"",a,c,f=fe(t[0],5)+"",m,_,h,g,d=fe(t[0],51)+"",b,$,k=fe(t[0],50)+"",S;return{c(){e=p("optgroup"),l=p("option"),i=C(n),o=p("option"),a=C(r),c=p("option"),m=C(f),_=v(),h=p("optgroup"),g=p("option"),b=C(d),$=p("option"),S=C(k),l.__value=7,l.value=l.__value,o.__value=6,o.value=o.__value,c.__value=5,c.value=c.__value,u(e,"label","amsleser.no"),g.__value=51,g.value=g.__value,$.__value=50,$.value=$.__value,u(h,"label","Generic hardware")},m(A,E){y(A,e,E),s(e,l),s(l,i),s(e,o),s(o,a),s(e,c),s(c,m),y(A,_,E),y(A,h,E),s(h,g),s(g,b),s(h,$),s($,S)},p(A,E){E&1&&n!==(n=fe(A[0],7)+"")&&G(i,n),E&1&&r!==(r=fe(A[0],6)+"")&&G(a,r),E&1&&f!==(f=fe(A[0],5)+"")&&G(m,f),E&1&&d!==(d=fe(A[0],51)+"")&&G(b,d),E&1&&k!==(k=fe(A[0],50)+"")&&G(S,k)},d(A){A&&w(e),A&&w(_),A&&w(h)}}}function ff(t){let e,l,n=fe(t[0],8)+"",i,o,r,a,c=fe(t[0],71)+"",f,m,_=fe(t[0],70)+"",h;return{c(){e=p("optgroup"),l=p("option"),i=C(n),o=v(),r=p("optgroup"),a=p("option"),f=C(c),m=p("option"),h=C(_),l.__value=8,l.value=l.__value,u(e,"label","Custom hardware"),a.__value=71,a.value=a.__value,m.__value=70,m.value=m.__value,u(r,"label","Generic hardware")},m(g,d){y(g,e,d),s(e,l),s(l,i),y(g,o,d),y(g,r,d),s(r,a),s(a,f),s(r,m),s(m,h)},p(g,d){d&1&&n!==(n=fe(g[0],8)+"")&&G(i,n),d&1&&c!==(c=fe(g[0],71)+"")&&G(f,c),d&1&&_!==(_=fe(g[0],70)+"")&&G(h,_)},d(g){g&&w(e),g&&w(o),g&&w(r)}}}function cf(t){let e,l,n=fe(t[0],200)+"",i;return{c(){e=p("optgroup"),l=p("option"),i=C(n),l.__value=200,l.value=l.__value,u(e,"label","Generic hardware")},m(o,r){y(o,e,r),s(e,l),s(l,i)},p(o,r){r&1&&n!==(n=fe(o[0],200)+"")&&G(i,n)},d(o){o&&w(e)}}}function Im(t){let e,l,n,i,o,r,a,c=t[0]=="esp8266"&&uf(t),f=t[0]=="esp32"&&rf(t),m=t[0]=="esp32s2"&&af(t),_=t[0]=="esp32c3"&&ff(t),h=t[0]=="esp32solo"&&cf(t);return{c(){e=p("option"),l=v(),c&&c.c(),n=v(),f&&f.c(),i=v(),m&&m.c(),o=v(),_&&_.c(),r=v(),h&&h.c(),a=je(),e.__value=-1,e.value=e.__value},m(g,d){y(g,e,d),y(g,l,d),c&&c.m(g,d),y(g,n,d),f&&f.m(g,d),y(g,i,d),m&&m.m(g,d),y(g,o,d),_&&_.m(g,d),y(g,r,d),h&&h.m(g,d),y(g,a,d)},p(g,[d]){g[0]=="esp8266"?c?c.p(g,d):(c=uf(g),c.c(),c.m(n.parentNode,n)):c&&(c.d(1),c=null),g[0]=="esp32"?f?f.p(g,d):(f=rf(g),f.c(),f.m(i.parentNode,i)):f&&(f.d(1),f=null),g[0]=="esp32s2"?m?m.p(g,d):(m=af(g),m.c(),m.m(o.parentNode,o)):m&&(m.d(1),m=null),g[0]=="esp32c3"?_?_.p(g,d):(_=ff(g),_.c(),_.m(r.parentNode,r)):_&&(_.d(1),_=null),g[0]=="esp32solo"?h?h.p(g,d):(h=cf(g),h.c(),h.m(a.parentNode,a)):h&&(h.d(1),h=null)},i:ie,o:ie,d(g){g&&w(e),g&&w(l),c&&c.d(g),g&&w(n),f&&f.d(g),g&&w(i),m&&m.d(g),g&&w(o),_&&_.d(g),g&&w(r),h&&h.d(g),g&&w(a)}}}function Dm(t,e,l){let{chip:n}=e;return t.$$set=i=>{"chip"in i&&l(0,n=i.chip)},[n]}class Em extends $e{constructor(e){super(),ye(this,e,Dm,Im,ke,{chip:0})}}function pf(t){let e;return{c(){e=p("div"),e.textContent="WARNING: Changing this configuration will affect basic configuration of your device. Only make changes here if instructed by vendor",u(e,"class","bd-red")},m(l,n){y(l,e,n)},d(l){l&&w(e)}}}function mf(t){let e,l,n,i,o,r,a;return r=new oc({props:{chip:t[0].chip}}),{c(){e=p("div"),l=C("HAN GPIO"),n=p("br"),i=v(),o=p("select"),J(r.$$.fragment),u(o,"name","vh"),u(o,"class","in-s"),u(e,"class","my-3")},m(c,f){y(c,e,f),s(e,l),s(e,n),s(e,i),s(e,o),V(r,o,null),a=!0},p(c,f){const m={};f&1&&(m.chip=c[0].chip),r.$set(m)},i(c){a||(P(r.$$.fragment,c),a=!0)},o(c){I(r.$$.fragment,c),a=!1},d(c){c&&w(e),K(r)}}}function Fm(t){let e,l,n,i,o,r,a,c,f,m,_,h,g,d,b,$,k,S,A,E,T,N,D,R,W,H,F,L,j,B=t[0].usrcfg&&pf();d=new Em({props:{chip:t[0].chip}});let q=t[0].board&&t[0].board>20&&mf(t);return H=new gt({props:{active:t[1],message:"Saving device configuration"}}),{c(){e=p("div"),l=p("div"),n=p("form"),i=p("input"),o=v(),r=p("strong"),r.textContent="Initial configuration",a=v(),B&&B.c(),c=v(),f=p("div"),m=C("Board type"),_=p("br"),h=v(),g=p("select"),J(d.$$.fragment),b=v(),q&&q.c(),$=v(),k=p("div"),S=p("label"),A=p("input"),E=C(" Clear all other configuration"),T=v(),N=p("div"),N.innerHTML='',D=v(),R=p("span"),R.textContent="\xA0",W=v(),J(H.$$.fragment),u(i,"type","hidden"),u(i,"name","v"),i.value="true",u(r,"class","text-sm"),u(g,"name","vb"),u(g,"class","in-s"),t[0].board===void 0&&ze(()=>t[4].call(g)),u(f,"class","my-3"),u(A,"type","checkbox"),u(A,"name","vr"),A.__value="true",A.value=A.__value,u(A,"class","rounded mb-1"),u(k,"class","my-3"),u(N,"class","my-3"),u(R,"class","clear-both"),u(n,"autocomplete","off"),u(l,"class","cnt"),u(e,"class","grid xl:grid-cols-4 lg:grid-cols-3 md:grid-cols-2")},m(O,U){y(O,e,U),s(e,l),s(l,n),s(n,i),s(n,o),s(n,r),s(n,a),B&&B.m(n,null),s(n,c),s(n,f),s(f,m),s(f,_),s(f,h),s(f,g),V(d,g,null),Re(g,t[0].board),s(n,b),q&&q.m(n,null),s(n,$),s(n,k),s(k,S),s(S,A),A.checked=t[2],s(S,E),s(n,T),s(n,N),s(n,D),s(n,R),y(O,W,U),V(H,O,U),F=!0,L||(j=[Y(g,"change",t[4]),Y(A,"change",t[5]),Y(n,"submit",cs(t[3]))],L=!0)},p(O,[U]){O[0].usrcfg?B||(B=pf(),B.c(),B.m(n,c)):B&&(B.d(1),B=null);const x={};U&1&&(x.chip=O[0].chip),d.$set(x),U&1&&Re(g,O[0].board),O[0].board&&O[0].board>20?q?(q.p(O,U),U&1&&P(q,1)):(q=mf(O),q.c(),P(q,1),q.m(n,$)):q&&(Ie(),I(q,1,1,()=>{q=null}),De()),U&4&&(A.checked=O[2]);const X={};U&2&&(X.active=O[1]),H.$set(X)},i(O){F||(P(d.$$.fragment,O),P(q),P(H.$$.fragment,O),F=!0)},o(O){I(d.$$.fragment,O),I(q),I(H.$$.fragment,O),F=!1},d(O){O&&w(e),B&&B.d(),K(d),q&&q.d(),O&&w(W),K(H,O),L=!1,Be(j)}}}function Rm(t,e,l){let{sysinfo:n={}}=e,i=!1;async function o(f){l(1,i=!0);const m=new FormData(f.target),_=new URLSearchParams;for(let d of m){const[b,$]=d;_.append(b,$)}let g=await(await fetch("/save",{method:"POST",body:_})).json();l(1,i=!1),$t.update(d=>(d.vndcfg=g.success,d.booting=g.reboot,d)),qn(n.usrcfg?"/":"/setup")}let r=!1;function a(){n.board=et(this),l(0,n)}function c(){r=this.checked,l(2,r),l(0,n)}return t.$$set=f=>{"sysinfo"in f&&l(0,n=f.sysinfo)},t.$$.update=()=>{t.$$.dirty&1&&l(2,r=!n.usrcfg)},[n,i,r,o,a,c]}class Lm extends $e{constructor(e){super(),ye(this,e,Rm,Fm,ke,{sysinfo:0})}}function _f(t){let e,l,n,i,o,r,a,c;return a=new uc({}),{c(){e=p("br"),l=v(),n=p("div"),i=p("input"),o=v(),r=p("select"),J(a.$$.fragment),u(i,"name","si"),u(i,"type","text"),u(i,"class","in-f w-full"),i.required=t[1],u(r,"name","su"),u(r,"class","in-l"),r.required=t[1],u(n,"class","flex")},m(f,m){y(f,e,m),y(f,l,m),y(f,n,m),s(n,i),s(n,o),s(n,r),V(a,r,null),c=!0},p(f,m){(!c||m&2)&&(i.required=f[1]),(!c||m&2)&&(r.required=f[1])},i(f){c||(P(a.$$.fragment,f),c=!0)},o(f){I(a.$$.fragment,f),c=!1},d(f){f&&w(e),f&&w(l),f&&w(n),K(a)}}}function df(t){let e;return{c(){e=p("div"),e.innerHTML=`
Gateway
+Occurred in: ${i}`:"",r=io(t),a=Mf(e)?e(r):e;return`<${r}> ${a}${o}`}const jf=t=>(...e)=>t(Wc(...e)),Wf=jf(t=>{throw new Error(t)}),cs=jf(console.warn),br=4,Gc=3,Bc=2,Yc=1,zc=1;function Vc(t,e){const l=t.default?0:Kt(t.fullPath).reduce((n,i)=>{let o=n;return o+=br,Ec(i)?o+=zc:Rc(i)?o+=Bc:Ff(i)?o-=br+Yc:o+=Gc,o},0);return{route:t,score:l,index:e}}function Kc(t){return t.map(Vc).sort((e,l)=>e.scorel.score?-1:e.index-l.index)}function Gf(t,e){let l,n;const[i]=e.split("?"),o=Kt(i),r=o[0]==="",a=Kc(t);for(let c=0,f=a.length;c({...p,params:d,uri:k});if(p.default){n=g(e);continue}const h=Kt(p.fullPath),b=Math.max(o.length,h.length);let $=0;for(;${f===".."?c.pop():f!=="."&&c.push(f)}),Rs(`/${c.join("/")}`,n)}function kr(t,e){const{pathname:l,hash:n="",search:i="",state:o}=t,r=Kt(e,!0),a=Kt(l,!0);for(;r.length;)r[0]!==a[0]&&Wf(Vl,`Invalid state: All locations must begin with the basepath "${e}", found "${l}"`),r.shift(),a.shift();return{pathname:ri(...a),hash:n,search:i,state:o}}const wr=t=>t.length===1?"":t,so=t=>{const e=t.indexOf("?"),l=t.indexOf("#"),n=e!==-1,i=l!==-1,o=i?wr(ti(t,l)):"",r=i?ti(t,0,l):t,a=n?wr(ti(r,e)):"";return{pathname:(n?ti(r,0,e):r)||"/",search:a,hash:o}},Zc=t=>{const{pathname:e,search:l,hash:n}=t;return e+l+n};function Jc(t,e,l){return ri(l,Qc(t,e))}function Xc(t,e){const l=lo(Fc(t)),n=Kt(l,!0),i=Kt(e,!0).slice(0,n.length),o=Bf({fullPath:l},ri(...i));return o&&o.uri}const Fs="POP",xc="PUSH",e1="REPLACE";function Ls(t){return{...t.location,pathname:encodeURI(decodeURI(t.location.pathname)),state:t.history.state,_key:t.history.state&&t.history.state._key||"initial"}}function t1(t){let e=[],l=Ls(t),n=Fs;const i=(o=e)=>o.forEach(r=>r({location:l,action:n}));return{get location(){return l},listen(o){e.push(o);const r=()=>{l=Ls(t),n=Fs,i([o])};i([o]);const a=Nf(t,"popstate",r);return()=>{a(),e=e.filter(c=>c!==o)}},navigate(o,r){const{state:a={},replace:c=!1}=r||{};if(n=c?e1:xc,Af(o))r&&cs(Hf,"Navigation options (state or replace) are not supported, when passing a number as the first argument to navigate. They are ignored."),n=Fs,t.history.go(o);else{const f={...a,_key:Ac()};try{t.history[c?"replaceState":"pushState"](f,"",o)}catch{t.location[c?"replace":"assign"](o)}}l=Ls(t),i()}}}function Os(t,e){return{...so(e),state:t}}function l1(t="/"){let e=0,l=[Os(null,t)];return{get entries(){return l},get location(){return l[e]},addEventListener(){},removeEventListener(){},history:{get state(){return l[e].state},pushState(n,i,o){e++,l=l.slice(0,e),l.push(Os(n,o))},replaceState(n,i,o){l[e]=Os(n,o)},go(n){const i=e+n;i<0||i>l.length-1||(e=i)}}}}const n1=!!(!yl&&window.document&&window.document.createElement),i1=!yl&&window.location.origin==="null",Yf=t1(n1&&!i1?window:l1()),{navigate:jn}=Yf;let ul=null,zf=!0;function s1(t,e){const l=document.querySelectorAll("[data-svnav-router]");for(let n=0;nul.level||t.level===ul.level&&s1(t.routerId,ul.routerId))&&(ul=t)}function u1(){ul=null}function r1(){zf=!1}function yr(t){if(!t)return!1;const e="tabindex";try{if(!t.hasAttribute(e)){t.setAttribute(e,"-1");let l;l=Nf(t,"blur",()=>{t.removeAttribute(e),l()})}return t.focus(),document.activeElement===t}catch{return!1}}function a1(t,e){return Number(t.dataset.svnavRouteEnd)===e}function f1(t){return/^H[1-6]$/i.test(t.tagName)}function $r(t,e=document){return e.querySelector(t)}function c1(t){let l=$r(`[data-svnav-route-start="${t}"]`).nextElementSibling;for(;!a1(l,t);){if(f1(l))return l;const n=$r("h1,h2,h3,h4,h5,h6",l);if(n)return n;l=l.nextElementSibling}return null}function m1(t){Promise.resolve(Gn(t.focusElement)).then(e=>{const l=e||c1(t.id);l||cs(Vl,`Could not find an element to focus. You should always render a header for accessibility reasons, or set a custom focus element via the "useFocus" hook. If you don't want this Route or Router to manage focus, pass "primary={false}" to it.`,t,ds),!yr(l)&&yr(document.documentElement)})}const p1=(t,e,l)=>(n,i)=>Tc().then(()=>{if(!ul||zf){r1();return}if(n&&m1(ul.route),t.announcements&&i){const{path:o,fullPath:r,meta:a,params:c,uri:f}=ul.route,p=t.createAnnouncement({path:o,fullPath:r,meta:a,params:c,uri:f},Gn(l));Promise.resolve(p).then(_=>{e.set(_)})}u1()}),Cr="position:fixed;top:-1px;left:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;";function _1(t){let e,l,n=[{role:"status"},{"aria-atomic":"true"},{"aria-live":"polite"},{"data-svnav-announcer":""},Hs(t[6],Cr)],i={};for(let o=0;o`Navigated to ${te.uri}`,announcements:!0,...h},k=p,T=lo(p),P=wl(js),E=wl(Yn),S=!P,N=v1(),D=g&&!(E&&!E.manageFocus),R=Ze("");Bt(t,R,te=>l(0,a=te));const H=E?E.disableInlineStyles:b,U=Ze([]);Bt(t,U,te=>l(20,r=te));const F=Ze(null);Bt(t,F,te=>l(18,i=te));let L=!1;const G=S?0:E.level+1,O=S?Ze((()=>kr(yl?so(_):d.location,T))()):P;Bt(t,O,te=>l(17,n=te));const q=Ze(n);Bt(t,q,te=>l(19,o=te));const W=p1($,R,O),X=te=>Ae=>Ae.filter(_e=>_e.id!==te);function Y(te){if(yl){if(L)return;const Ae=Bf(te,n.pathname);if(Ae)return L=!0,Ae}else U.update(Ae=>{const _e=X(te.id)(Ae);return _e.push(te),_e})}function ne(te){U.update(X(te))}return!S&&p!==Tr&&cs(Vl,'Only top-level Routers can have a "basepath" prop. It is ignored.',{basepath:p}),S&&(yc(()=>d.listen(Ae=>{const _e=kr(Ae.location,T);q.set(n),O.set(_e)})),ni(js,O)),ni(Yn,{activeRoute:F,registerRoute:Y,unregisterRoute:ne,manageFocus:D,level:G,id:N,history:S?d:E.history,basepath:S?T:E.basepath,disableInlineStyles:H}),t.$$set=te=>{"basepath"in te&&l(11,p=te.basepath),"url"in te&&l(12,_=te.url),"history"in te&&l(13,d=te.history),"primary"in te&&l(14,g=te.primary),"a11y"in te&&l(15,h=te.a11y),"disableInlineStyles"in te&&l(16,b=te.disableInlineStyles),"$$scope"in te&&l(21,f=te.$$scope)},t.$$.update=()=>{if(t.$$.dirty[0]&2048&&p!==k&&cs(Vl,'You cannot change the "basepath" prop. It is ignored.'),t.$$.dirty[0]&1179648){const te=Gf(r,n.pathname);F.set(te)}if(t.$$.dirty[0]&655360&&S){const te=!!n.hash,Ae=!te&&D,_e=!te||n.pathname!==o.pathname;W(Ae,_e)}t.$$.dirty[0]&262144&&D&&i&&i.primary&&o1({level:G,routerId:N,route:i})},[a,$,S,N,D,R,H,U,F,O,q,p,_,d,g,h,b,n,i,o,r,f,c]}class Vf extends $e{constructor(e){super(),ye(this,e,h1,d1,we,{basepath:11,url:12,history:13,primary:14,a11y:15,disableInlineStyles:16},null,[-1,-1])}}function ai(t,e,l=Yn,n=Vl){wl(l)||Wf(t,o=>`You cannot use ${o} outside of a ${io(n)}.`,e)}const g1=t=>{const{subscribe:e}=wl(t);return{subscribe:e}};function Kf(){return ai(Of),g1(js)}function Qf(){const{history:t}=wl(Yn);return t}function Zf(){const t=wl(Ef);return t?Dc(t,e=>e.base):Ze("/")}function Jf(){ai(Uf);const t=Zf(),{basepath:e}=wl(Yn);return n=>Jc(n,Gn(t),e)}function b1(){ai(qf);const t=Jf(),{navigate:e}=Qf();return(n,i)=>{const o=Af(n)?n:t(n);return e(o,i)}}const k1=t=>({params:t&16,location:t&8}),Sr=t=>({params:yl?Gn(t[10]):t[4],location:t[3],navigate:t[11]});function Pr(t){let e,l;return e=new Vf({props:{primary:t[1],$$slots:{default:[$1]},$$scope:{ctx:t}}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p(n,i){const o={};i&2&&(o.primary=n[1]),i&528409&&(o.$$scope={dirty:i,ctx:n}),e.$set(o)},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function w1(t){let e;const l=t[18].default,n=Xs(l,t,t[19],Sr);return{c(){n&&n.c()},m(i,o){n&&n.m(i,o),e=!0},p(i,o){n&&n.p&&(!e||o&524312)&&eo(n,l,i,i[19],e?xs(l,i[19],o,k1):to(i[19]),Sr)},i(i){e||(M(n,i),e=!0)},o(i){I(n,i),e=!1},d(i){n&&n.d(i)}}}function y1(t){let e,l,n;const i=[{location:t[3]},{navigate:t[11]},yl?Gn(t[10]):t[4],t[12]];var o=t[0];function r(a){let c={};for(let f=0;f{Q(p,1)}),Te()}o?(e=new o(r()),Z(e.$$.fragment),M(e.$$.fragment,1),K(e,l.parentNode,l)):e=null}else o&&e.$set(f)},i(a){n||(e&&M(e.$$.fragment,a),n=!0)},o(a){e&&I(e.$$.fragment,a),n=!1},d(a){a&&w(l),e&&Q(e,a)}}}function $1(t){let e,l,n,i;const o=[y1,w1],r=[];function a(c,f){return c[0]!==null?0:1}return e=a(t),l=r[e]=o[e](t),{c(){l.c(),n=je()},m(c,f){r[e].m(c,f),y(c,n,f),i=!0},p(c,f){let p=e;e=a(c),e===p?r[e].p(c,f):(Ce(),I(r[p],1,1,()=>{r[p]=null}),Te(),l=r[e],l?l.p(c,f):(l=r[e]=o[e](c),l.c()),M(l,1),l.m(n.parentNode,n))},i(c){i||(M(l),i=!0)},o(c){I(l),i=!1},d(c){r[e].d(c),c&&w(n)}}}function C1(t){let e,l,n,i,o,r=[Hn(t[7]),{"data-svnav-route-start":t[5]}],a={};for(let _=0;_{c=null}),Te()),Yt(i,p=Bn(f,[Hn(_[7]),{"data-svnav-route-end":_[5]}]))},i(_){o||(M(c),o=!0)},o(_){I(c),o=!1},d(_){_&&w(e),_&&w(l),c&&c.d(_),_&&w(n),_&&w(i)}}}const T1=Df();function S1(t,e,l){let n;const i=["path","component","meta","primary"];let o=as(e,i),r,a,c,f,{$$slots:p={},$$scope:_}=e,{path:d=""}=e,{component:g=null}=e,{meta:h={}}=e,{primary:b=!0}=e;ai(ds,e);const $=T1(),{registerRoute:k,unregisterRoute:T,activeRoute:P,disableInlineStyles:E}=wl(Yn);Bt(t,P,L=>l(16,r=L));const S=Zf();Bt(t,S,L=>l(17,c=L));const N=Kf();Bt(t,N,L=>l(3,a=L));const D=Ze(null);let R;const H=Ze(),U=Ze({});Bt(t,U,L=>l(4,f=L)),ni(Ef,H),ni(Nc,U),ni(Ic,D);const F=b1();return yl||$c(()=>T($)),t.$$set=L=>{l(24,e=Ot(Ot({},e),rs(L))),l(12,o=as(e,i)),"path"in L&&l(13,d=L.path),"component"in L&&l(0,g=L.component),"meta"in L&&l(14,h=L.meta),"primary"in L&&l(1,b=L.primary),"$$scope"in L&&l(19,_=L.$$scope)},t.$$.update=()=>{if(t.$$.dirty&155658){const L=d==="",G=ri(c,d),j={id:$,path:d,meta:h,default:L,fullPath:L?"":G,base:L?c:Xc(G,a.pathname),primary:b,focusElement:D};H.set(j),l(15,R=k(j))}if(t.$$.dirty&98304&&l(2,n=!!(R||r&&r.id===$)),t.$$.dirty&98308&&n){const{params:L}=R||r;U.set(L)}},e=rs(e),[g,b,n,a,f,$,P,E,S,N,U,F,o,d,h,R,r,c,p,_]}class ol extends $e{constructor(e){super(),ye(this,e,S1,C1,we,{path:13,component:0,meta:14,primary:1})}}function P1(t){let e,l,n,i;const o=t[13].default,r=Xs(o,t,t[12],null);let a=[{href:t[0]},t[2],t[1]],c={};for(let f=0;fl(11,_=D));const P=Cc(),E=Jf(),{navigate:S}=Qf();function N(D){P("click",D),Mc(D)&&(D.preventDefault(),S(n,{state:$,replace:r||b}))}return t.$$set=D=>{l(19,e=Ot(Ot({},e),rs(D))),l(18,p=as(e,f)),"to"in D&&l(5,h=D.to),"replace"in D&&l(6,b=D.replace),"state"in D&&l(7,$=D.state),"getProps"in D&&l(8,k=D.getProps),"$$scope"in D&&l(12,g=D.$$scope)},t.$$.update=()=>{t.$$.dirty&2080&&l(0,n=E(h,_)),t.$$.dirty&2049&&l(10,i=Ws(_.pathname,n)),t.$$.dirty&2049&&l(9,o=n===_.pathname),t.$$.dirty&2049&&(r=so(n)===Zc(_)),t.$$.dirty&512&&l(2,a=o?{"aria-current":"page"}:{}),l(1,c=(()=>{if(Mf(k)){const D=k({location:_,href:n,isPartiallyCurrent:i,isCurrent:o});return{...p,...D}}return p})())},e=rs(e),[n,c,a,T,N,h,b,$,k,o,i,_,g,d]}class kl extends $e{constructor(e){super(),ye(this,e,M1,P1,we,{to:5,replace:6,state:7,getProps:8})}}let Gs=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function bl(t){return t===1?"green":t===2?"yellow":t===3?"red":"gray"}function A1(t){return t>218&&t<242?"#32d900":t>212&&t<248?"#b1d900":t>208&&t<252?"#ffb800":"#d90000"}function Xf(t){return t>90?"#d90000":t>85?"#e32100":t>80?"#ffb800":t>75?"#dcd800":"#32d900"}function D1(t){return t>75?"#32d900":t>50?"#77d900":t>25?"#94d900":"#dcd800"}function ms(t){switch(t){case 1:return"Aidon";case 2:return"Kaifa";case 3:return"Kamstrup";case 8:return"Iskra";case 9:return"Landis+Gyr";case 10:return"Sagemcom";default:return""}}function Ne(t){for(t=t.toString();t.length<2;)t="0"+t;return t}function pe(t,e){switch(e){case 5:switch(t){case"esp8266":return"Pow-K (GPIO12)";case"esp32s2":return"Pow-K+"}case 7:switch(t){case"esp8266":return"Pow-U (GPIO12)";case"esp32s2":return"Pow-U+"}case 6:return"Pow-P1";case 51:return"Wemos S2 mini";case 50:return"Generic ESP32-S2";case 201:return"Wemos LOLIN D32";case 202:return"Adafruit HUZZAH32";case 203:return"DevKitC";case 200:return"Generic ESP32";case 2:return"HAN Reader 2.0 by Max Spencer";case 0:return"Custom hardware by Roar Fredriksen";case 1:return"Kamstrup module by Egil Opsahl";case 3:return"Pow-K (UART0)";case 4:return"Pow-U (UART0)";case 101:return"Wemos D1 mini";case 100:return"Generic ESP8266";case 70:return"Generic ESP32-C3";case 71:return"ESP32-C3-DevKitM-1"}}function Mr(t){switch(t){case-1:return"Parse error";case-2:return"Incomplete data received";case-3:return"Payload boundry flag missing";case-4:return"Header checksum error";case-5:return"Footer checksum error";case-9:return"Unknown data received, check meter config";case-41:return"Frame length not equal";case-51:return"Authentication failed";case-52:return"Decryption failed";case-53:return"Encryption key invalid";case 90:return"No HAN data received last 30s";case 98:return"Exception in code, debugging necessary";case 99:return"Autodetection failed"}return t<0?"Unspecified error "+t:""}function Ar(t){switch(t){case-3:return"Connection failed";case-4:return"Network timeout";case-10:return"Connection denied";case-11:return"Failed to subscribe";case-13:return"Connection lost"}return t<0?"Unspecified error "+t:""}function Dr(t){switch(t){case 401:case 403:return"Unauthorized, check API key";case 404:return"Price unavailable, not found";case 425:return"Server says its too early";case 429:return"Exceeded API rate limit";case 500:return"Internal server error";case-2:return"Incomplete data received";case-3:return"Invalid data, tag missing";case-51:return"Authentication failed";case-52:return"Decryption failed";case-53:return"Encryption key invalid"}return t<0?"Unspecified error "+t:""}function Wn(t){switch(t){case 2:case 4:case 7:return!0}return!1}function He(t,e){return t==1||t==2&&e}function $t(t){return"https://github.com/UtilitechAS/amsreader-firmware/wiki/"+t}function ke(t,e){return isNaN(t)?"-":(isNaN(e)&&(e=t<10?1:0),t.toFixed(e))}function ii(t,e){return t.setTime(t.getTime()+e*36e5),t}function Nr(t){if(t.chip=="esp8266")switch(t.boot_reason){case 0:return"Normal";case 1:return"WDT reset";case 2:return"Exception reset";case 3:return"Soft WDT reset";case 4:return"Software restart";case 5:return"Deep sleep";case 6:return"External reset";default:return"Unknown (8266)"}else switch(t.boot_reason){case 1:return"Vbat power on reset";case 3:return"Software reset";case 4:return"WDT reset";case 5:return"Deep sleep";case 6:return"SLC reset";case 7:return"Timer Group0 WDT reset";case 8:return"Timer Group1 WDT reset";case 9:return"RTC WDT reset";case 10:return"Instrusion test reset CPU";case 11:return"Time Group reset CPU";case 12:return"Software reset CPU";case 13:return"RTC WTD reset CPU";case 14:return"PRO CPU";case 15:return"Brownout";case 16:return"RTC reset";default:return"Unknown"}}async function $l(t,e={}){const{timeout:l=8e3}=e,n=new AbortController,i=setTimeout(()=>n.abort(),l),o=await fetch(t,{...e,signal:n.signal});return clearTimeout(i),o}let Gt={version:"",chip:"",mac:null,apmac:null,vndcfg:null,usrcfg:null,fwconsent:null,booting:!1,upgrading:!1,ui:{},security:0,trying:null};const Ct=Ze(Gt);async function oo(){Gt=await(await $l("/sysinfo.json?t="+Math.floor(Date.now()/1e3))).json(),Ct.set(Gt)}let is=0,Ir=-127,Er=null,N1={};const I1=If(N1,t=>{let e;async function l(){$l("/data.json").then(n=>n.json()).then(n=>{t(n),Ir!=n.t&&(Ir=n.t,setTimeout(lc,2e3)),Er!=n.p&&(Er=n.p,setTimeout(E1,4e3)),Gt.upgrading?window.location.reload():(!Gt||!Gt.chip||Gt.booting||is>1&&!Wn(Gt.board))&&(oo(),Yl&&clearTimeout(Yl),Yl=setTimeout(uo,2e3),zl&&clearTimeout(zl),zl=setTimeout(ro,3e3));let i=5e3;if(Wn(Gt.board)&&n.v>2.5){let o=3.3-Math.min(3.3,n.v);o>0&&(i=Math.max(o,.1)*10*5e3)}i>5e3&&console.log("Scheduling next data fetch in "+i+"ms"),e&&clearTimeout(e),e=setTimeout(l,i),is=0}).catch(n=>{is++,is>3?(t({em:3,hm:0,wm:0,mm:0}),e=setTimeout(l,15e3)):e=setTimeout(l,Wn(Gt.board)?1e4:5e3)})}return l(),function(){clearTimeout(e)}});let Bs={};const xf=Ze(Bs);async function E1(){Bs=await(await $l("/energyprice.json")).json(),xf.set(Bs)}let Ys={},Yl;async function uo(){Yl&&(clearTimeout(Yl),Yl=0),Ys=await(await $l("/dayplot.json")).json(),ec.set(Ys);let e=new Date;Yl=setTimeout(uo,(60-e.getMinutes())*6e4+20)}const ec=Ze(Ys,t=>(uo(),function(){}));let zs={},zl;async function ro(){zl&&(clearTimeout(zl),zl=0),zs=await(await $l("/monthplot.json")).json(),tc.set(zs);let e=new Date;zl=setTimeout(ro,(24-e.getHours())*36e5+40)}const tc=Ze(zs,t=>(ro(),function(){}));let Vs={};async function lc(){Vs=await(await $l("/temperature.json")).json(),nc.set(Vs)}const nc=Ze(Vs,t=>(lc(),function(){}));let Ks={},ss;async function ic(){ss&&(clearTimeout(ss),ss=0),Ks=await(await $l("/tariff.json")).json(),sc.set(Ks);let e=new Date;ss=setTimeout(ic,(60-e.getMinutes())*6e4+30)}const sc=Ze(Ks,t=>function(){});let Qs=[];const ao=Ze(Qs);async function R1(){Qs=await(await $l("https://api.github.com/repos/UtilitechAS/amsreader-firmware/releases")).json(),ao.set(Qs)}function ps(t){return"WARNING: "+t+" must be connected to an external power supply during firmware upgrade. Failure to do so may cause power-down during upload resulting in non-functioning unit."}async function oc(){await(await fetch("/upgrade",{method:"POST"})).json()}function uc(t,e){if(/^v\d{1,2}\.\d{1,2}\.\d{1,2}$/.test(t)){let l=t.substring(1).split("."),n=parseInt(l[0]),i=parseInt(l[1]),o=parseInt(l[2]),r=[...e];r.reverse();let a,c,f;for(let p=0;po&&(a=_):b==i+1&&(c=_);else if(h==n+1)if(f){let k=f.tag_name.substring(1).split(".");parseInt(k[0]);let T=parseInt(k[1]);parseInt(k[2]),b==T&&(f=_)}else f=_}return c||f||a||!1}else return e[0]}const F1="/github.svg";function Rr(t){let e,l;function n(r,a){return r[1]>1?W1:r[1]>0?j1:r[2]>1?H1:r[2]>0?U1:r[3]>1?q1:r[3]>0?O1:L1}let i=n(t),o=i(t);return{c(){e=C(`Up + `),o.c(),l=je()},m(r,a){y(r,e,a),o.m(r,a),y(r,l,a)},p(r,a){i===(i=n(r))&&o?o.p(r,a):(o.d(1),o=i(r),o&&(o.c(),o.m(l.parentNode,l)))},d(r){r&&w(e),o.d(r),r&&w(l)}}}function L1(t){let e,l;return{c(){e=C(t[0]),l=C(" seconds")},m(n,i){y(n,e,i),y(n,l,i)},p(n,i){i&1&&B(e,n[0])},d(n){n&&w(e),n&&w(l)}}}function O1(t){let e,l;return{c(){e=C(t[3]),l=C(" minute")},m(n,i){y(n,e,i),y(n,l,i)},p(n,i){i&8&&B(e,n[3])},d(n){n&&w(e),n&&w(l)}}}function q1(t){let e,l;return{c(){e=C(t[3]),l=C(" minutes")},m(n,i){y(n,e,i),y(n,l,i)},p(n,i){i&8&&B(e,n[3])},d(n){n&&w(e),n&&w(l)}}}function U1(t){let e,l;return{c(){e=C(t[2]),l=C(" hour")},m(n,i){y(n,e,i),y(n,l,i)},p(n,i){i&4&&B(e,n[2])},d(n){n&&w(e),n&&w(l)}}}function H1(t){let e,l;return{c(){e=C(t[2]),l=C(" hours")},m(n,i){y(n,e,i),y(n,l,i)},p(n,i){i&4&&B(e,n[2])},d(n){n&&w(e),n&&w(l)}}}function j1(t){let e,l;return{c(){e=C(t[1]),l=C(" day")},m(n,i){y(n,e,i),y(n,l,i)},p(n,i){i&2&&B(e,n[1])},d(n){n&&w(e),n&&w(l)}}}function W1(t){let e,l;return{c(){e=C(t[1]),l=C(" days")},m(n,i){y(n,e,i),y(n,l,i)},p(n,i){i&2&&B(e,n[1])},d(n){n&&w(e),n&&w(l)}}}function G1(t){let e,l=t[0]&&Rr(t);return{c(){l&&l.c(),e=je()},m(n,i){l&&l.m(n,i),y(n,e,i)},p(n,[i]){n[0]?l?l.p(n,i):(l=Rr(n),l.c(),l.m(e.parentNode,e)):l&&(l.d(1),l=null)},i:ie,o:ie,d(n){l&&l.d(n),n&&w(e)}}}function B1(t,e,l){let{epoch:n}=e,i=0,o=0,r=0;return t.$$set=a=>{"epoch"in a&&l(0,n=a.epoch)},t.$$.update=()=>{t.$$.dirty&1&&(l(1,i=Math.floor(n/86400)),l(2,o=Math.floor(n/3600)),l(3,r=Math.floor(n/60)))},[n,i,o,r]}class Y1 extends $e{constructor(e){super(),ye(this,e,B1,G1,we,{epoch:0})}}function z1(t){let e,l,n;return{c(){e=m("span"),l=C(t[2]),u(e,"title",t[1]),u(e,"class",n="bd-"+t[0])},m(i,o){y(i,e,o),s(e,l)},p(i,[o]){o&4&&B(l,i[2]),o&2&&u(e,"title",i[1]),o&1&&n!==(n="bd-"+i[0])&&u(e,"class",n)},i:ie,o:ie,d(i){i&&w(e)}}}function V1(t,e,l){let{color:n}=e,{title:i}=e,{text:o}=e;return t.$$set=r=>{"color"in r&&l(0,n=r.color),"title"in r&&l(1,i=r.title),"text"in r&&l(2,o=r.text)},[n,i,o]}class zt extends $e{constructor(e){super(),ye(this,e,V1,z1,we,{color:0,title:1,text:2})}}function K1(t){let e,l=`${Ne(t[0].getDate())}.${Ne(t[0].getMonth())}.${t[0].getFullYear()} ${Ne(t[0].getHours())}:${Ne(t[0].getMinutes())}`,n;return{c(){e=m("span"),n=C(l),u(e,"class",t[1])},m(i,o){y(i,e,o),s(e,n)},p(i,o){o&1&&l!==(l=`${Ne(i[0].getDate())}.${Ne(i[0].getMonth())}.${i[0].getFullYear()} ${Ne(i[0].getHours())}:${Ne(i[0].getMinutes())}`)&&B(n,l),o&2&&u(e,"class",i[1])},d(i){i&&w(e)}}}function Q1(t){let e=`${Ne(t[0].getDate())}. ${Gs[t[0].getMonth()]} ${Ne(t[0].getHours())}:${Ne(t[0].getMinutes())}`,l;return{c(){l=C(e)},m(n,i){y(n,l,i)},p(n,i){i&1&&e!==(e=`${Ne(n[0].getDate())}. ${Gs[n[0].getMonth()]} ${Ne(n[0].getHours())}:${Ne(n[0].getMinutes())}`)&&B(l,e)},d(n){n&&w(l)}}}function Z1(t){let e,l;function n(r,a){return a&1&&(e=null),e==null&&(e=Math.abs(new Date().getTime()-r[0].getTime())<3e5),e?Q1:K1}let i=n(t,-1),o=i(t);return{c(){o.c(),l=je()},m(r,a){o.m(r,a),y(r,l,a)},p(r,[a]){i===(i=n(r,a))&&o?o.p(r,a):(o.d(1),o=i(r),o&&(o.c(),o.m(l.parentNode,l)))},i:ie,o:ie,d(r){o.d(r),r&&w(l)}}}function J1(t,e,l){let{timestamp:n}=e,{fullTimeColor:i}=e;return t.$$set=o=>{"timestamp"in o&&l(0,n=o.timestamp),"fullTimeColor"in o&&l(1,i=o.fullTimeColor)},[n,i]}class rc extends $e{constructor(e){super(),ye(this,e,J1,Z1,we,{timestamp:0,fullTimeColor:1})}}function X1(t){let e,l,n;return{c(){e=Oe("svg"),l=Oe("path"),n=Oe("path"),u(l,"stroke-linecap","round"),u(l,"stroke-linejoin","round"),u(l,"d","M10.343 3.94c.09-.542.56-.94 1.11-.94h1.093c.55 0 1.02.398 1.11.94l.149.894c.07.424.384.764.78.93.398.164.855.142 1.205-.108l.737-.527a1.125 1.125 0 011.45.12l.773.774c.39.389.44 1.002.12 1.45l-.527.737c-.25.35-.272.806-.107 1.204.165.397.505.71.93.78l.893.15c.543.09.94.56.94 1.109v1.094c0 .55-.397 1.02-.94 1.11l-.893.149c-.425.07-.765.383-.93.78-.165.398-.143.854.107 1.204l.527.738c.32.447.269 1.06-.12 1.45l-.774.773a1.125 1.125 0 01-1.449.12l-.738-.527c-.35-.25-.806-.272-1.203-.107-.397.165-.71.505-.781.929l-.149.894c-.09.542-.56.94-1.11.94h-1.094c-.55 0-1.019-.398-1.11-.94l-.148-.894c-.071-.424-.384-.764-.781-.93-.398-.164-.854-.142-1.204.108l-.738.527c-.447.32-1.06.269-1.45-.12l-.773-.774a1.125 1.125 0 01-.12-1.45l.527-.737c.25-.35.273-.806.108-1.204-.165-.397-.505-.71-.93-.78l-.894-.15c-.542-.09-.94-.56-.94-1.109v-1.094c0-.55.398-1.02.94-1.11l.894-.149c.424-.07.765-.383.93-.78.165-.398.143-.854-.107-1.204l-.527-.738a1.125 1.125 0 01.12-1.45l.773-.773a1.125 1.125 0 011.45-.12l.737.527c.35.25.807.272 1.204.107.397-.165.71-.505.78-.929l.15-.894z"),u(n,"stroke-linecap","round"),u(n,"stroke-linejoin","round"),u(n,"d","M15 12a3 3 0 11-6 0 3 3 0 016 0z"),u(e,"xmlns","http://www.w3.org/2000/svg"),u(e,"fill","none"),u(e,"viewBox","0 0 24 24"),u(e,"stroke-width","1.5"),u(e,"stroke","currentColor"),u(e,"class","w-6 h-6")},m(i,o){y(i,e,o),s(e,l),s(e,n)},p:ie,i:ie,o:ie,d(i){i&&w(e)}}}class x1 extends $e{constructor(e){super(),ye(this,e,null,X1,we,{})}}function em(t){let e,l;return{c(){e=Oe("svg"),l=Oe("path"),u(l,"stroke-linecap","round"),u(l,"stroke-linejoin","round"),u(l,"d","M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z"),u(e,"xmlns","http://www.w3.org/2000/svg"),u(e,"fill","none"),u(e,"viewBox","0 0 24 24"),u(e,"stroke-width","1.5"),u(e,"stroke","currentColor"),u(e,"class","w-6 h-6")},m(n,i){y(n,e,i),s(e,l)},p:ie,i:ie,o:ie,d(n){n&&w(e)}}}class tm extends $e{constructor(e){super(),ye(this,e,null,em,we,{})}}function lm(t){let e,l;return{c(){e=Oe("svg"),l=Oe("path"),u(l,"stroke-linecap","round"),u(l,"stroke-linejoin","round"),u(l,"d","M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z"),u(e,"xmlns","http://www.w3.org/2000/svg"),u(e,"fill","none"),u(e,"viewBox","0 0 24 24"),u(e,"stroke-width","1.5"),u(e,"stroke","currentColor"),u(e,"class","w-6 h-6")},m(n,i){y(n,e,i),s(e,l)},p:ie,i:ie,o:ie,d(n){n&&w(e)}}}class yt extends $e{constructor(e){super(),ye(this,e,null,lm,we,{})}}function nm(t){let e,l;return{c(){e=Oe("svg"),l=Oe("path"),u(l,"stroke-linecap","round"),u(l,"stroke-linejoin","round"),u(l,"d","M9 8.25H7.5a2.25 2.25 0 00-2.25 2.25v9a2.25 2.25 0 002.25 2.25h9a2.25 2.25 0 002.25-2.25v-9a2.25 2.25 0 00-2.25-2.25H15M9 12l3 3m0 0l3-3m-3 3V2.25"),u(e,"xmlns","http://www.w3.org/2000/svg"),u(e,"fill","none"),u(e,"viewBox","0 0 24 24"),u(e,"stroke-width","1.5"),u(e,"stroke","currentColor"),u(e,"class","w-6 h-6")},m(n,i){y(n,e,i),s(e,l)},p:ie,i:ie,o:ie,d(n){n&&w(e)}}}class ac extends $e{constructor(e){super(),ye(this,e,null,nm,we,{})}}function im(t){let e,l,n=t[1].version+"",i;return{c(){e=C("AMS reader "),l=m("span"),i=C(n)},m(o,r){y(o,e,r),y(o,l,r),s(l,i)},p(o,r){r&2&&n!==(n=o[1].version+"")&&B(i,n)},d(o){o&&w(e),o&&w(l)}}}function Fr(t){let e,l=(t[0].t>-50?t[0].t.toFixed(1):"-")+"",n,i;return{c(){e=m("div"),n=C(l),i=C("\xB0C"),u(e,"class","flex-none my-auto")},m(o,r){y(o,e,r),s(e,n),s(e,i)},p(o,r){r&1&&l!==(l=(o[0].t>-50?o[0].t.toFixed(1):"-")+"")&&B(n,l)},d(o){o&&w(e)}}}function Lr(t){let e,l="HAN: "+Mr(t[0].he),n;return{c(){e=m("div"),n=C(l),u(e,"class","bd-red")},m(i,o){y(i,e,o),s(e,n)},p(i,o){o&1&&l!==(l="HAN: "+Mr(i[0].he))&&B(n,l)},d(i){i&&w(e)}}}function Or(t){let e,l="MQTT: "+Ar(t[0].me),n;return{c(){e=m("div"),n=C(l),u(e,"class","bd-red")},m(i,o){y(i,e,o),s(e,n)},p(i,o){o&1&&l!==(l="MQTT: "+Ar(i[0].me))&&B(n,l)},d(i){i&&w(e)}}}function qr(t){let e,l="PriceAPI: "+Dr(t[0].ee),n;return{c(){e=m("div"),n=C(l),u(e,"class","bd-red")},m(i,o){y(i,e,o),s(e,n)},p(i,o){o&1&&l!==(l="PriceAPI: "+Dr(i[0].ee))&&B(n,l)},d(i){i&&w(e)}}}function Ur(t){let e,l,n,i,o,r;return l=new kl({props:{to:"/configuration",$$slots:{default:[sm]},$$scope:{ctx:t}}}),o=new kl({props:{to:"/status",$$slots:{default:[om]},$$scope:{ctx:t}}}),{c(){e=m("div"),Z(l.$$.fragment),n=v(),i=m("div"),Z(o.$$.fragment),u(e,"class","flex-none px-1 mt-1"),u(e,"title","Configuration"),u(i,"class","flex-none px-1 mt-1"),u(i,"title","Device information")},m(a,c){y(a,e,c),K(l,e,null),y(a,n,c),y(a,i,c),K(o,i,null),r=!0},i(a){r||(M(l.$$.fragment,a),M(o.$$.fragment,a),r=!0)},o(a){I(l.$$.fragment,a),I(o.$$.fragment,a),r=!1},d(a){a&&w(e),Q(l),a&&w(n),a&&w(i),Q(o)}}}function sm(t){let e,l;return e=new x1({}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function om(t){let e,l;return e=new tm({}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function Hr(t){let e,l,n,i,o;const r=[rm,um],a=[];function c(f,p){return f[1].security==0||f[0].a?0:1}return l=c(t),n=a[l]=r[l](t),{c(){e=m("div"),n.c(),u(e,"class","flex-none mr-3 text-yellow-500"),u(e,"title",i="New version: "+t[2].tag_name)},m(f,p){y(f,e,p),a[l].m(e,null),o=!0},p(f,p){let _=l;l=c(f),l===_?a[l].p(f,p):(Ce(),I(a[_],1,1,()=>{a[_]=null}),Te(),n=a[l],n?n.p(f,p):(n=a[l]=r[l](f),n.c()),M(n,1),n.m(e,null)),(!o||p&4&&i!==(i="New version: "+f[2].tag_name))&&u(e,"title",i)},i(f){o||(M(n),o=!0)},o(f){I(n),o=!1},d(f){f&&w(e),a[l].d()}}}function um(t){let e,l,n=t[2].tag_name+"",i;return{c(){e=m("span"),l=C("New version: "),i=C(n)},m(o,r){y(o,e,r),s(e,l),s(e,i)},p(o,r){r&4&&n!==(n=o[2].tag_name+"")&&B(i,n)},i:ie,o:ie,d(o){o&&w(e)}}}function rm(t){let e,l,n,i=t[2].tag_name+"",o,r,a,c,f,p;return a=new ac({}),{c(){e=m("button"),l=m("span"),n=C("New version: "),o=C(i),r=v(),Z(a.$$.fragment),u(l,"class","mt-1"),u(e,"class","flex")},m(_,d){y(_,e,d),s(e,l),s(l,n),s(l,o),s(e,r),K(a,e,null),c=!0,f||(p=V(e,"click",t[3]),f=!0)},p(_,d){(!c||d&4)&&i!==(i=_[2].tag_name+"")&&B(o,i)},i(_){c||(M(a.$$.fragment,_),c=!0)},o(_){I(a.$$.fragment,_),c=!1},d(_){_&&w(e),Q(a),f=!1,p()}}}function am(t){let e,l,n,i,o,r,a,c,f,p,_,d,g=(t[0].m?(t[0].m/1e3).toFixed(1):"-")+"",h,b,$,k,T,P,E,S,N,D,R,H,U,F,L,G,j,O,q,W,X,Y,ne,te,Ae,_e,Ie,Ee,Le,Re;i=new kl({props:{to:"/",$$slots:{default:[im]},$$scope:{ctx:t}}}),c=new Y1({props:{epoch:t[0].u}});let Se=t[0].t>-50&&Fr(t);T=new zt({props:{title:"ESP",text:t[1].booting?"Booting":t[0].v>2?t[0].v.toFixed(2)+"V":"ESP",color:bl(t[1].booting?2:t[0].em)}}),E=new zt({props:{title:"HAN",text:"HAN",color:bl(t[1].booting?9:t[0].hm)}}),N=new zt({props:{title:"WiFi",text:t[0].r?t[0].r.toFixed(0)+"dBm":"WiFi",color:bl(t[1].booting?9:t[0].wm)}}),R=new zt({props:{title:"MQTT",text:"MQTT",color:bl(t[1].booting?9:t[0].mm)}});let be=(t[0].he<0||t[0].he>0)&&Lr(t),fe=t[0].me<0&&Or(t),ae=(t[0].ee>0||t[0].ee<0)&&qr(t);ne=new rc({props:{timestamp:t[0].c?new Date(t[0].c*1e3):new Date(0),fullTimeColor:"text-red-500"}});let ce=t[1].vndcfg&&t[1].usrcfg&&Ur(t);Ee=new yt({});let ue=t[1].fwconsent===1&&t[2]&&Hr(t);return{c(){e=m("nav"),l=m("div"),n=m("div"),Z(i.$$.fragment),o=v(),r=m("div"),a=m("div"),Z(c.$$.fragment),f=v(),Se&&Se.c(),p=v(),_=m("div"),d=C("Free mem: "),h=C(g),b=C("kb"),$=v(),k=m("div"),Z(T.$$.fragment),P=v(),Z(E.$$.fragment),S=v(),Z(N.$$.fragment),D=v(),Z(R.$$.fragment),H=v(),be&&be.c(),U=v(),fe&&fe.c(),F=v(),ae&&ae.c(),L=v(),G=m("div"),j=m("div"),O=m("a"),q=m("img"),X=v(),Y=m("div"),Z(ne.$$.fragment),te=v(),ce&&ce.c(),Ae=v(),_e=m("div"),Ie=m("a"),Z(Ee.$$.fragment),Le=v(),ue&&ue.c(),u(n,"class","flex text-lg text-gray-100 p-2"),u(a,"class","flex-none my-auto"),u(_,"class","flex-none my-auto"),u(r,"class","flex-none my-auto p-2 flex space-x-4"),u(k,"class","flex-auto flex-wrap my-auto justify-center p-2"),u(q,"class","gh-logo"),vc(q.src,W=F1)||u(q,"src",W),u(q,"alt","GitHub repo"),u(O,"class","float-right"),u(O,"href","https://github.com/UtilitechAS/amsreader-firmware"),u(O,"target","_blank"),u(O,"rel","noreferrer"),u(O,"aria-label","GitHub"),u(j,"class","flex-none"),u(Y,"class","flex-none my-auto px-2"),u(Ie,"href",$t("")),u(Ie,"target","_blank"),u(Ie,"rel","noreferrer"),u(_e,"class","flex-none px-1 mt-1"),u(_e,"title","Documentation"),u(G,"class","flex-auto p-2 flex flex-row-reverse flex-wrap"),u(l,"class","flex flex-wrap space-x-4 text-sm text-gray-300"),u(e,"class","bg-violet-600 p-1 rounded-md mx-2")},m(J,se){y(J,e,se),s(e,l),s(l,n),K(i,n,null),s(l,o),s(l,r),s(r,a),K(c,a,null),s(r,f),Se&&Se.m(r,null),s(r,p),s(r,_),s(_,d),s(_,h),s(_,b),s(l,$),s(l,k),K(T,k,null),s(k,P),K(E,k,null),s(k,S),K(N,k,null),s(k,D),K(R,k,null),s(l,H),be&&be.m(l,null),s(l,U),fe&&fe.m(l,null),s(l,F),ae&&ae.m(l,null),s(l,L),s(l,G),s(G,j),s(j,O),s(O,q),s(G,X),s(G,Y),K(ne,Y,null),s(G,te),ce&&ce.m(G,null),s(G,Ae),s(G,_e),s(_e,Ie),K(Ee,Ie,null),s(G,Le),ue&&ue.m(G,null),Re=!0},p(J,[se]){const Pe={};se&18&&(Pe.$$scope={dirty:se,ctx:J}),i.$set(Pe);const ee={};se&1&&(ee.epoch=J[0].u),c.$set(ee),J[0].t>-50?Se?Se.p(J,se):(Se=Fr(J),Se.c(),Se.m(r,p)):Se&&(Se.d(1),Se=null),(!Re||se&1)&&g!==(g=(J[0].m?(J[0].m/1e3).toFixed(1):"-")+"")&&B(h,g);const oe={};se&3&&(oe.text=J[1].booting?"Booting":J[0].v>2?J[0].v.toFixed(2)+"V":"ESP"),se&3&&(oe.color=bl(J[1].booting?2:J[0].em)),T.$set(oe);const Ue={};se&3&&(Ue.color=bl(J[1].booting?9:J[0].hm)),E.$set(Ue);const Me={};se&1&&(Me.text=J[0].r?J[0].r.toFixed(0)+"dBm":"WiFi"),se&3&&(Me.color=bl(J[1].booting?9:J[0].wm)),N.$set(Me);const de={};se&3&&(de.color=bl(J[1].booting?9:J[0].mm)),R.$set(de),J[0].he<0||J[0].he>0?be?be.p(J,se):(be=Lr(J),be.c(),be.m(l,U)):be&&(be.d(1),be=null),J[0].me<0?fe?fe.p(J,se):(fe=Or(J),fe.c(),fe.m(l,F)):fe&&(fe.d(1),fe=null),J[0].ee>0||J[0].ee<0?ae?ae.p(J,se):(ae=qr(J),ae.c(),ae.m(l,L)):ae&&(ae.d(1),ae=null);const ve={};se&1&&(ve.timestamp=J[0].c?new Date(J[0].c*1e3):new Date(0)),ne.$set(ve),J[1].vndcfg&&J[1].usrcfg?ce?se&2&&M(ce,1):(ce=Ur(J),ce.c(),M(ce,1),ce.m(G,Ae)):ce&&(Ce(),I(ce,1,1,()=>{ce=null}),Te()),J[1].fwconsent===1&&J[2]?ue?(ue.p(J,se),se&6&&M(ue,1)):(ue=Hr(J),ue.c(),M(ue,1),ue.m(G,null)):ue&&(Ce(),I(ue,1,1,()=>{ue=null}),Te())},i(J){Re||(M(i.$$.fragment,J),M(c.$$.fragment,J),M(T.$$.fragment,J),M(E.$$.fragment,J),M(N.$$.fragment,J),M(R.$$.fragment,J),M(ne.$$.fragment,J),M(ce),M(Ee.$$.fragment,J),M(ue),Re=!0)},o(J){I(i.$$.fragment,J),I(c.$$.fragment,J),I(T.$$.fragment,J),I(E.$$.fragment,J),I(N.$$.fragment,J),I(R.$$.fragment,J),I(ne.$$.fragment,J),I(ce),I(Ee.$$.fragment,J),I(ue),Re=!1},d(J){J&&w(e),Q(i),Q(c),Se&&Se.d(),Q(T),Q(E),Q(N),Q(R),be&&be.d(),fe&&fe.d(),ae&&ae.d(),Q(ne),ce&&ce.d(),Q(Ee),ue&&ue.d()}}}function fm(t,e,l){let{data:n={}}=e,i={},o={};function r(){confirm("Do you want to upgrade this device to "+o.tag_name+"?")&&(!Wn(i.board)||confirm(ps(pe(i.chip,i.board))))&&(Ct.update(a=>(a.upgrading=!0,a)),oc())}return Ct.subscribe(a=>{l(1,i=a),a.fwconsent===1&&R1()}),ao.subscribe(a=>{l(2,o=uc(i.version,a))}),t.$$set=a=>{"data"in a&&l(0,n=a.data)},[n,i,o,r]}class cm extends $e{constructor(e){super(),ye(this,e,fm,am,we,{data:0})}}function mm(t){let e,l,n,i;return{c(){e=Oe("svg"),l=Oe("path"),n=Oe("path"),u(l,"d",qs(150,150,115,210,510)),u(l,"stroke","#eee"),u(l,"fill","none"),u(l,"stroke-width","55"),u(n,"d",i=qs(150,150,115,210,210+300*t[0]/100)),u(n,"stroke",t[1]),u(n,"fill","none"),u(n,"stroke-width","55"),u(e,"viewBox","0 0 300 300"),u(e,"xmlns","http://www.w3.org/2000/svg"),u(e,"height","100%")},m(o,r){y(o,e,r),s(e,l),s(e,n)},p(o,[r]){r&1&&i!==(i=qs(150,150,115,210,210+300*o[0]/100))&&u(n,"d",i),r&2&&u(n,"stroke",o[1])},i:ie,o:ie,d(o){o&&w(e)}}}function jr(t,e,l,n){var i=(n-90)*Math.PI/180;return{x:t+l*Math.cos(i),y:e+l*Math.sin(i)}}function qs(t,e,l,n,i){var o=jr(t,e,l,i),r=jr(t,e,l,n),a=i-n<=180?"0":"1",c=["M",o.x,o.y,"A",l,l,0,a,0,r.x,r.y].join(" ");return c}function pm(t,e,l){let{pct:n=0}=e,{color:i="red"}=e;return t.$$set=o=>{"pct"in o&&l(0,n=o.pct),"color"in o&&l(1,i=o.color)},[n,i]}class _m extends $e{constructor(e){super(),ye(this,e,pm,mm,we,{pct:0,color:1})}}function Wr(t){let e,l,n,i,o,r,a,c;return{c(){e=m("br"),l=v(),n=m("span"),i=C(t[3]),o=v(),r=m("span"),a=C(t[4]),c=C("/kWh"),u(n,"class","pl-sub"),u(r,"class","pl-snt")},m(f,p){y(f,e,p),y(f,l,p),y(f,n,p),s(n,i),y(f,o,p),y(f,r,p),s(r,a),s(r,c)},p(f,p){p&8&&B(i,f[3]),p&16&&B(a,f[4])},d(f){f&&w(e),f&&w(l),f&&w(n),f&&w(o),f&&w(r)}}}function dm(t){let e,l,n,i,o,r,a,c,f,p,_,d,g,h,b,$;l=new _m({props:{pct:t[6],color:t[5](t[6])}});let k=t[3]&&Wr(t);return{c(){e=m("div"),Z(l.$$.fragment),n=v(),i=m("span"),o=m("span"),r=C(t[2]),a=v(),c=m("br"),f=v(),p=m("span"),_=C(t[0]),d=v(),g=m("span"),h=C(t[1]),b=v(),k&&k.c(),u(o,"class","pl-lab"),u(p,"class","pl-val"),u(g,"class","pl-unt"),u(i,"class","pl-ov"),u(e,"class","pl-root")},m(T,P){y(T,e,P),K(l,e,null),s(e,n),s(e,i),s(i,o),s(o,r),s(i,a),s(i,c),s(i,f),s(i,p),s(p,_),s(i,d),s(i,g),s(g,h),s(i,b),k&&k.m(i,null),$=!0},p(T,[P]){const E={};P&64&&(E.pct=T[6]),P&96&&(E.color=T[5](T[6])),l.$set(E),(!$||P&4)&&B(r,T[2]),(!$||P&1)&&B(_,T[0]),(!$||P&2)&&B(h,T[1]),T[3]?k?k.p(T,P):(k=Wr(T),k.c(),k.m(i,null)):k&&(k.d(1),k=null)},i(T){$||(M(l.$$.fragment,T),$=!0)},o(T){I(l.$$.fragment,T),$=!1},d(T){T&&w(e),Q(l),k&&k.d()}}}function vm(t,e,l){let{val:n}=e,{max:i}=e,{unit:o}=e,{label:r}=e,{sub:a=""}=e,{subunit:c=""}=e,{colorFn:f}=e,p=0;return t.$$set=_=>{"val"in _&&l(0,n=_.val),"max"in _&&l(7,i=_.max),"unit"in _&&l(1,o=_.unit),"label"in _&&l(2,r=_.label),"sub"in _&&l(3,a=_.sub),"subunit"in _&&l(4,c=_.subunit),"colorFn"in _&&l(5,f=_.colorFn)},t.$$.update=()=>{t.$$.dirty&129&&l(6,p=Math.min(n,i)/i*100)},[n,o,r,a,c,f,p,i]}class fc extends $e{constructor(e){super(),ye(this,e,vm,dm,we,{val:0,max:7,unit:1,label:2,sub:3,subunit:4,colorFn:5})}}function Gr(t,e,l){const n=t.slice();return n[9]=e[l],n[11]=l,n}function Br(t,e,l){const n=t.slice();return n[9]=e[l],n[11]=l,n}function Yr(t,e,l){const n=t.slice();return n[13]=e[l],n}function zr(t){let e,l=t[0].title+"",n;return{c(){e=m("strong"),n=C(l),u(e,"class","text-sm")},m(i,o){y(i,e,o),s(e,n)},p(i,o){o&1&&l!==(l=i[0].title+"")&&B(n,l)},d(i){i&&w(e)}}}function Vr(t){let e,l,n,i=t[13].label+"",o,r,a,c;return{c(){e=Oe("g"),l=Oe("line"),n=Oe("text"),o=C(i),u(l,"x2","100%"),u(n,"y","-4"),u(n,"x",r=t[13].align=="right"?"85%":""),u(e,"class",a="tick tick-"+t[13].value+" tick-"+t[13].color),u(e,"transform",c="translate(0, "+t[6](t[13].value)+")")},m(f,p){y(f,e,p),s(e,l),s(e,n),s(n,o)},p(f,p){p&1&&i!==(i=f[13].label+"")&&B(o,i),p&1&&r!==(r=f[13].align=="right"?"85%":"")&&u(n,"x",r),p&1&&a!==(a="tick tick-"+f[13].value+" tick-"+f[13].color)&&u(e,"class",a),p&65&&c!==(c="translate(0, "+f[6](f[13].value)+")")&&u(e,"transform",c)},d(f){f&&w(e)}}}function Kr(t){let e,l,n=t[9].label+"",i,o,r;return{c(){e=Oe("g"),l=Oe("text"),i=C(n),u(l,"x",o=t[3]/2),u(l,"y","-4"),u(e,"class","tick"),u(e,"transform",r="translate("+t[5](t[11])+","+t[4]+")")},m(a,c){y(a,e,c),s(e,l),s(l,i)},p(a,c){c&1&&n!==(n=a[9].label+"")&&B(i,n),c&8&&o!==(o=a[3]/2)&&u(l,"x",o),c&48&&r!==(r="translate("+a[5](a[11])+","+a[4]+")")&&u(e,"transform",r)},d(a){a&&w(e)}}}function Qr(t){let e,l,n,i,o,r,a,c=t[3]>15&&Zr(t);return{c(){e=Oe("rect"),c&&c.c(),a=je(),u(e,"x",l=t[5](t[11])+2),u(e,"y",n=t[6](t[9].value)),u(e,"width",i=t[3]-4),u(e,"height",o=t[6](t[0].y.min)-t[6](Math.min(t[0].y.min,0)+t[9].value)),u(e,"fill",r=t[9].color)},m(f,p){y(f,e,p),c&&c.m(f,p),y(f,a,p)},p(f,p){p&32&&l!==(l=f[5](f[11])+2)&&u(e,"x",l),p&65&&n!==(n=f[6](f[9].value))&&u(e,"y",n),p&8&&i!==(i=f[3]-4)&&u(e,"width",i),p&65&&o!==(o=f[6](f[0].y.min)-f[6](Math.min(f[0].y.min,0)+f[9].value))&&u(e,"height",o),p&1&&r!==(r=f[9].color)&&u(e,"fill",r),f[3]>15?c?c.p(f,p):(c=Zr(f),c.c(),c.m(a.parentNode,a)):c&&(c.d(1),c=null)},d(f){f&&w(e),c&&c.d(f),f&&w(a)}}}function Zr(t){let e,l=t[9].label+"",n,i,o,r,a,c,f;return{c(){e=Oe("text"),n=C(l),u(e,"y",i=t[6](t[9].value)>t[6](0)-t[7]?t[6](t[9].value)-t[7]:t[6](t[9].value)+10),u(e,"x",o=t[5](t[11])+t[3]/2),u(e,"width",r=t[3]-4),u(e,"dominant-baseline","middle"),u(e,"text-anchor",a=t[3]<25?"left":"middle"),u(e,"fill",c=t[6](t[9].value)>t[6](0)-t[7]?t[9].color:"white"),u(e,"transform",f="rotate("+(t[3]<25?90:0)+", "+(t[5](t[11])+t[3]/2)+", "+(t[6](t[9].value)>t[6](0)-t[7]?t[6](t[9].value)-t[7]:t[6](t[9].value)+9)+")")},m(p,_){y(p,e,_),s(e,n)},p(p,_){_&1&&l!==(l=p[9].label+"")&&B(n,l),_&193&&i!==(i=p[6](p[9].value)>p[6](0)-p[7]?p[6](p[9].value)-p[7]:p[6](p[9].value)+10)&&u(e,"y",i),_&40&&o!==(o=p[5](p[11])+p[3]/2)&&u(e,"x",o),_&8&&r!==(r=p[3]-4)&&u(e,"width",r),_&8&&a!==(a=p[3]<25?"left":"middle")&&u(e,"text-anchor",a),_&193&&c!==(c=p[6](p[9].value)>p[6](0)-p[7]?p[9].color:"white")&&u(e,"fill",c),_&233&&f!==(f="rotate("+(p[3]<25?90:0)+", "+(p[5](p[11])+p[3]/2)+", "+(p[6](p[9].value)>p[6](0)-p[7]?p[6](p[9].value)-p[7]:p[6](p[9].value)+9)+")")&&u(e,"transform",f)},d(p){p&&w(e)}}}function Jr(t){let e,l,n,i,o,r,a,c=t[3]>15&&Xr(t);return{c(){e=Oe("rect"),c&&c.c(),a=je(),u(e,"x",l=t[5](t[11])+2),u(e,"y",n=t[6](0)),u(e,"width",i=t[3]-4),u(e,"height",o=t[6](t[0].y.min)-t[6](t[0].y.min+t[9].value2)),u(e,"fill",r=t[9].color)},m(f,p){y(f,e,p),c&&c.m(f,p),y(f,a,p)},p(f,p){p&32&&l!==(l=f[5](f[11])+2)&&u(e,"x",l),p&64&&n!==(n=f[6](0))&&u(e,"y",n),p&8&&i!==(i=f[3]-4)&&u(e,"width",i),p&65&&o!==(o=f[6](f[0].y.min)-f[6](f[0].y.min+f[9].value2))&&u(e,"height",o),p&1&&r!==(r=f[9].color)&&u(e,"fill",r),f[3]>15?c?c.p(f,p):(c=Xr(f),c.c(),c.m(a.parentNode,a)):c&&(c.d(1),c=null)},d(f){f&&w(e),c&&c.d(f),f&&w(a)}}}function Xr(t){let e,l=t[9].label2+"",n,i,o,r,a,c,f;return{c(){e=Oe("text"),n=C(l),u(e,"y",i=t[6](-t[9].value2)t[6](0)-12?t[6](t[9].value2-t[0].y.min)-12:t[6](t[9].value2-t[0].y.min)+9)+")")},m(p,_){y(p,e,_),s(e,n)},p(p,_){_&1&&l!==(l=p[9].label2+"")&&B(n,l),_&65&&i!==(i=p[6](-p[9].value2)p[6](0)-12?p[6](p[9].value2-p[0].y.min)-12:p[6](p[9].value2-p[0].y.min)+9)+")")&&u(e,"transform",f)},d(p){p&&w(e)}}}function xr(t){let e,l,n=t[9].value!==void 0&&Qr(t),i=t[9].value2>1e-4&&Jr(t);return{c(){n&&n.c(),e=je(),i&&i.c(),l=je()},m(o,r){n&&n.m(o,r),y(o,e,r),i&&i.m(o,r),y(o,l,r)},p(o,r){o[9].value!==void 0?n?n.p(o,r):(n=Qr(o),n.c(),n.m(e.parentNode,e)):n&&(n.d(1),n=null),o[9].value2>1e-4?i?i.p(o,r):(i=Jr(o),i.c(),i.m(l.parentNode,l)):i&&(i.d(1),i=null)},d(o){n&&n.d(o),o&&w(e),i&&i.d(o),o&&w(l)}}}function hm(t){let e,l,n,i,o,r,a,c=t[0].title&&zr(t),f=t[0].y.ticks,p=[];for(let b=0;bt[8].call(e))},m(b,$){y(b,e,$),c&&c.m(e,null),s(e,l),s(e,n),s(n,i);for(let k=0;k{"config"in d&&l(0,n=d.config)},t.$$.update=()=>{if(t.$$.dirty&31){l(4,f=o-(n.title?20:0));let d=i-(n.padding.left+n.padding.right);l(3,r=d/n.points.length),l(7,p=r<25?28:17);let g=(f-n.padding.top-n.padding.bottom)/(n.y.max-n.y.min);l(5,a=function(h){return h*r+n.padding.left}),l(6,c=function(h){let b=0;return h>n.y.max?b=n.padding.bottom:hf||b<0?0:b})}},[n,i,o,r,f,a,c,p,_]}class Kl extends $e{constructor(e){super(),ye(this,e,gm,hm,we,{config:0})}}function bm(t){let e,l;return e=new Kl({props:{config:t[0]}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p(n,[i]){const o={};i&1&&(o.config=n[0]),e.$set(o)},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function km(t,e,l){let{u1:n}=e,{u2:i}=e,{u3:o}=e,{ds:r}=e,a={};function c(f){return{label:ke(f)+"V",value:isNaN(f)?0:f,color:A1(f||0)}}return t.$$set=f=>{"u1"in f&&l(1,n=f.u1),"u2"in f&&l(2,i=f.u2),"u3"in f&&l(3,o=f.u3),"ds"in f&&l(4,r=f.ds)},t.$$.update=()=>{if(t.$$.dirty&30){let f=[],p=[];n>0&&(f.push({label:r===1?"L1-L2":"L1"}),p.push(c(n))),i>0&&(f.push({label:r===1?"L1-L3":"L2"}),p.push(c(i))),o>0&&(f.push({label:r===1?"L2-L3":"L3"}),p.push(c(o))),l(0,a={padding:{top:20,right:15,bottom:20,left:35},y:{min:200,max:260,ticks:[{value:207,label:"-10%"},{value:230,label:"230v"},{value:253,label:"+10%"}]},x:{ticks:f},points:p})}},[a,n,i,o,r]}class wm extends $e{constructor(e){super(),ye(this,e,km,bm,we,{u1:1,u2:2,u3:3,ds:4})}}function ym(t){let e,l;return e=new Kl({props:{config:t[0]}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p(n,[i]){const o={};i&1&&(o.config=n[0]),e.$set(o)},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function $m(t,e,l){let{u1:n}=e,{u2:i}=e,{u3:o}=e,{i1:r}=e,{i2:a}=e,{i3:c}=e,{max:f}=e,p={};function _(d){return{label:ke(d)+"A",value:isNaN(d)?0:d,color:Xf(d?d/f*100:0)}}return t.$$set=d=>{"u1"in d&&l(1,n=d.u1),"u2"in d&&l(2,i=d.u2),"u3"in d&&l(3,o=d.u3),"i1"in d&&l(4,r=d.i1),"i2"in d&&l(5,a=d.i2),"i3"in d&&l(6,c=d.i3),"max"in d&&l(7,f=d.max)},t.$$.update=()=>{if(t.$$.dirty&254){let d=[],g=[];n>0&&(d.push({label:"L1"}),g.push(_(r))),i>0&&(d.push({label:"L2"}),g.push(_(a))),o>0&&(d.push({label:"L3"}),g.push(_(c))),l(0,p={padding:{top:20,right:15,bottom:20,left:35},y:{min:0,max:f,ticks:[{value:0,label:"0%"},{value:f/4,label:"25%"},{value:f/2,label:"50%"},{value:f/4*3,label:"75%"},{value:f,label:"100%"}]},x:{ticks:d},points:g})}},[p,n,i,o,r,a,c,f]}class Cm extends $e{constructor(e){super(),ye(this,e,$m,ym,we,{u1:1,u2:2,u3:3,i1:4,i2:5,i3:6,max:7})}}function Tm(t){let e,l,n,i,o,r,a,c=(typeof t[0]<"u"?t[0].toFixed(0):"-")+"",f,p,_,d,g,h,b=(typeof t[1]<"u"?t[1].toFixed(0):"-")+"",$,k,T,P,E,S,N,D=(typeof t[2]<"u"?t[2].toFixed(1):"-")+"",R,H,U,F,L,G,j=(typeof t[3]<"u"?t[3].toFixed(1):"-")+"",O,q;return{c(){e=m("div"),l=m("strong"),l.textContent="Reactive",n=v(),i=m("div"),o=m("div"),o.textContent="Instant in",r=v(),a=m("div"),f=C(c),p=C(" VAr"),_=v(),d=m("div"),d.textContent="Instant out",g=v(),h=m("div"),$=C(b),k=C(" VAr"),T=v(),P=m("div"),E=m("div"),E.textContent="Total in",S=v(),N=m("div"),R=C(D),H=C(" kVArh"),U=v(),F=m("div"),F.textContent="Total out",L=v(),G=m("div"),O=C(j),q=C(" kVArh"),u(a,"class","text-right"),u(h,"class","text-right"),u(i,"class","grid grid-cols-2 mt-4"),u(N,"class","text-right"),u(G,"class","text-right"),u(P,"class","grid grid-cols-2 mt-4"),u(e,"class","mx-2 text-sm")},m(W,X){y(W,e,X),s(e,l),s(e,n),s(e,i),s(i,o),s(i,r),s(i,a),s(a,f),s(a,p),s(i,_),s(i,d),s(i,g),s(i,h),s(h,$),s(h,k),s(e,T),s(e,P),s(P,E),s(P,S),s(P,N),s(N,R),s(N,H),s(P,U),s(P,F),s(P,L),s(P,G),s(G,O),s(G,q)},p(W,[X]){X&1&&c!==(c=(typeof W[0]<"u"?W[0].toFixed(0):"-")+"")&&B(f,c),X&2&&b!==(b=(typeof W[1]<"u"?W[1].toFixed(0):"-")+"")&&B($,b),X&4&&D!==(D=(typeof W[2]<"u"?W[2].toFixed(1):"-")+"")&&B(R,D),X&8&&j!==(j=(typeof W[3]<"u"?W[3].toFixed(1):"-")+"")&&B(O,j)},i:ie,o:ie,d(W){W&&w(e)}}}function Sm(t,e,l){let{importInstant:n}=e,{exportInstant:i}=e,{importTotal:o}=e,{exportTotal:r}=e;return t.$$set=a=>{"importInstant"in a&&l(0,n=a.importInstant),"exportInstant"in a&&l(1,i=a.exportInstant),"importTotal"in a&&l(2,o=a.importTotal),"exportTotal"in a&&l(3,r=a.exportTotal)},[n,i,o,r]}class Pm extends $e{constructor(e){super(),ye(this,e,Sm,Tm,we,{importInstant:0,exportInstant:1,importTotal:2,exportTotal:3})}}function ea(t){let e;function l(o,r){return o[2]?Am:Mm}let n=l(t),i=n(t);return{c(){i.c(),e=je()},m(o,r){i.m(o,r),y(o,e,r)},p(o,r){n===(n=l(o))&&i?i.p(o,r):(i.d(1),i=n(o),i&&(i.c(),i.m(e.parentNode,e)))},d(o){i.d(o),o&&w(e)}}}function Mm(t){let e,l,n,i,o,r,a=ke(t[0].h.u,2)+"",c,f,p,_,d,g,h=ke(t[0].d.u,1)+"",b,$,k,T,P,E,S=ke(t[0].m.u)+"",N,D,R,H,U=t[1]&&ta(t);return{c(){e=m("strong"),e.textContent="Consumption",l=v(),n=m("div"),i=m("div"),i.textContent="Hour",o=v(),r=m("div"),c=C(a),f=C(" kWh"),p=v(),_=m("div"),_.textContent="Day",d=v(),g=m("div"),b=C(h),$=C(" kWh"),k=v(),T=m("div"),T.textContent="Month",P=v(),E=m("div"),N=C(S),D=C(" kWh"),R=v(),U&&U.c(),H=je(),u(r,"class","text-right"),u(g,"class","text-right"),u(E,"class","text-right"),u(n,"class","grid grid-cols-2 mb-3")},m(F,L){y(F,e,L),y(F,l,L),y(F,n,L),s(n,i),s(n,o),s(n,r),s(r,c),s(r,f),s(n,p),s(n,_),s(n,d),s(n,g),s(g,b),s(g,$),s(n,k),s(n,T),s(n,P),s(n,E),s(E,N),s(E,D),y(F,R,L),U&&U.m(F,L),y(F,H,L)},p(F,L){L&1&&a!==(a=ke(F[0].h.u,2)+"")&&B(c,a),L&1&&h!==(h=ke(F[0].d.u,1)+"")&&B(b,h),L&1&&S!==(S=ke(F[0].m.u)+"")&&B(N,S),F[1]?U?U.p(F,L):(U=ta(F),U.c(),U.m(H.parentNode,H)):U&&(U.d(1),U=null)},d(F){F&&w(e),F&&w(l),F&&w(n),F&&w(R),U&&U.d(F),F&&w(H)}}}function Am(t){let e,l,n,i,o,r,a=ke(t[0].h.u,2)+"",c,f,p,_,d,g,h,b=ke(t[0].d.u,1)+"",$,k,T,P,E,S,N,D=ke(t[0].m.u)+"",R,H,U,F,L,G,j,O,q,W,X,Y=ke(t[0].h.p,2)+"",ne,te,Ae,_e,Ie,Ee,Le,Re=ke(t[0].d.p,1)+"",Se,be,fe,ae,ce,ue,J,se=ke(t[0].m.p)+"",Pe,ee,oe,Ue,Me=t[1]&&la(t),de=t[1]&&na(t),ve=t[1]&&ia(t),le=t[1]&&sa(t),he=t[1]&&oa(t),qe=t[1]&&ua(t);return{c(){e=m("strong"),e.textContent="Import",l=v(),n=m("div"),i=m("div"),i.textContent="Hour",o=v(),r=m("div"),c=C(a),f=C(" kWh"),p=v(),Me&&Me.c(),_=v(),d=m("div"),d.textContent="Day",g=v(),h=m("div"),$=C(b),k=C(" kWh"),T=v(),de&&de.c(),P=v(),E=m("div"),E.textContent="Month",S=v(),N=m("div"),R=C(D),H=C(" kWh"),U=v(),ve&&ve.c(),L=v(),G=m("strong"),G.textContent="Export",j=v(),O=m("div"),q=m("div"),q.textContent="Hour",W=v(),X=m("div"),ne=C(Y),te=C(" kWh"),Ae=v(),le&&le.c(),_e=v(),Ie=m("div"),Ie.textContent="Day",Ee=v(),Le=m("div"),Se=C(Re),be=C(" kWh"),fe=v(),he&&he.c(),ae=v(),ce=m("div"),ce.textContent="Month",ue=v(),J=m("div"),Pe=C(se),ee=C(" kWh"),oe=v(),qe&&qe.c(),u(r,"class","text-right"),u(h,"class","text-right"),u(N,"class","text-right"),u(n,"class",F="grid grid-cols-"+t[3]+" mb-3"),u(X,"class","text-right"),u(Le,"class","text-right"),u(J,"class","text-right"),u(O,"class",Ue="grid grid-cols-"+t[3])},m(re,De){y(re,e,De),y(re,l,De),y(re,n,De),s(n,i),s(n,o),s(n,r),s(r,c),s(r,f),s(n,p),Me&&Me.m(n,null),s(n,_),s(n,d),s(n,g),s(n,h),s(h,$),s(h,k),s(n,T),de&&de.m(n,null),s(n,P),s(n,E),s(n,S),s(n,N),s(N,R),s(N,H),s(n,U),ve&&ve.m(n,null),y(re,L,De),y(re,G,De),y(re,j,De),y(re,O,De),s(O,q),s(O,W),s(O,X),s(X,ne),s(X,te),s(O,Ae),le&&le.m(O,null),s(O,_e),s(O,Ie),s(O,Ee),s(O,Le),s(Le,Se),s(Le,be),s(O,fe),he&&he.m(O,null),s(O,ae),s(O,ce),s(O,ue),s(O,J),s(J,Pe),s(J,ee),s(O,oe),qe&&qe.m(O,null)},p(re,De){De&1&&a!==(a=ke(re[0].h.u,2)+"")&&B(c,a),re[1]?Me?Me.p(re,De):(Me=la(re),Me.c(),Me.m(n,_)):Me&&(Me.d(1),Me=null),De&1&&b!==(b=ke(re[0].d.u,1)+"")&&B($,b),re[1]?de?de.p(re,De):(de=na(re),de.c(),de.m(n,P)):de&&(de.d(1),de=null),De&1&&D!==(D=ke(re[0].m.u)+"")&&B(R,D),re[1]?ve?ve.p(re,De):(ve=ia(re),ve.c(),ve.m(n,null)):ve&&(ve.d(1),ve=null),De&8&&F!==(F="grid grid-cols-"+re[3]+" mb-3")&&u(n,"class",F),De&1&&Y!==(Y=ke(re[0].h.p,2)+"")&&B(ne,Y),re[1]?le?le.p(re,De):(le=sa(re),le.c(),le.m(O,_e)):le&&(le.d(1),le=null),De&1&&Re!==(Re=ke(re[0].d.p,1)+"")&&B(Se,Re),re[1]?he?he.p(re,De):(he=oa(re),he.c(),he.m(O,ae)):he&&(he.d(1),he=null),De&1&&se!==(se=ke(re[0].m.p)+"")&&B(Pe,se),re[1]?qe?qe.p(re,De):(qe=ua(re),qe.c(),qe.m(O,null)):qe&&(qe.d(1),qe=null),De&8&&Ue!==(Ue="grid grid-cols-"+re[3])&&u(O,"class",Ue)},d(re){re&&w(e),re&&w(l),re&&w(n),Me&&Me.d(),de&&de.d(),ve&&ve.d(),re&&w(L),re&&w(G),re&&w(j),re&&w(O),le&&le.d(),he&&he.d(),qe&&qe.d()}}}function ta(t){let e,l,n,i,o,r,a=ke(t[0].h.c,2)+"",c,f,p,_,d,g,h,b=ke(t[0].d.c,1)+"",$,k,T,P,E,S,N,D=ke(t[0].m.c)+"",R,H,U;return{c(){e=m("strong"),e.textContent="Cost",l=v(),n=m("div"),i=m("div"),i.textContent="Hour",o=v(),r=m("div"),c=C(a),f=v(),p=C(t[1]),_=v(),d=m("div"),d.textContent="Day",g=v(),h=m("div"),$=C(b),k=v(),T=C(t[1]),P=v(),E=m("div"),E.textContent="Month",S=v(),N=m("div"),R=C(D),H=v(),U=C(t[1]),u(r,"class","text-right"),u(h,"class","text-right"),u(N,"class","text-right"),u(n,"class","grid grid-cols-2")},m(F,L){y(F,e,L),y(F,l,L),y(F,n,L),s(n,i),s(n,o),s(n,r),s(r,c),s(r,f),s(r,p),s(n,_),s(n,d),s(n,g),s(n,h),s(h,$),s(h,k),s(h,T),s(n,P),s(n,E),s(n,S),s(n,N),s(N,R),s(N,H),s(N,U)},p(F,L){L&1&&a!==(a=ke(F[0].h.c,2)+"")&&B(c,a),L&2&&B(p,F[1]),L&1&&b!==(b=ke(F[0].d.c,1)+"")&&B($,b),L&2&&B(T,F[1]),L&1&&D!==(D=ke(F[0].m.c)+"")&&B(R,D),L&2&&B(U,F[1])},d(F){F&&w(e),F&&w(l),F&&w(n)}}}function la(t){let e,l=ke(t[0].h.c,2)+"",n,i,o;return{c(){e=m("div"),n=C(l),i=v(),o=C(t[1]),u(e,"class","text-right")},m(r,a){y(r,e,a),s(e,n),s(e,i),s(e,o)},p(r,a){a&1&&l!==(l=ke(r[0].h.c,2)+"")&&B(n,l),a&2&&B(o,r[1])},d(r){r&&w(e)}}}function na(t){let e,l=ke(t[0].d.c,1)+"",n,i,o;return{c(){e=m("div"),n=C(l),i=v(),o=C(t[1]),u(e,"class","text-right")},m(r,a){y(r,e,a),s(e,n),s(e,i),s(e,o)},p(r,a){a&1&&l!==(l=ke(r[0].d.c,1)+"")&&B(n,l),a&2&&B(o,r[1])},d(r){r&&w(e)}}}function ia(t){let e,l=ke(t[0].m.c)+"",n,i,o;return{c(){e=m("div"),n=C(l),i=v(),o=C(t[1]),u(e,"class","text-right")},m(r,a){y(r,e,a),s(e,n),s(e,i),s(e,o)},p(r,a){a&1&&l!==(l=ke(r[0].m.c)+"")&&B(n,l),a&2&&B(o,r[1])},d(r){r&&w(e)}}}function sa(t){let e,l=ke(t[0].h.i,2)+"",n,i,o;return{c(){e=m("div"),n=C(l),i=v(),o=C(t[1]),u(e,"class","text-right")},m(r,a){y(r,e,a),s(e,n),s(e,i),s(e,o)},p(r,a){a&1&&l!==(l=ke(r[0].h.i,2)+"")&&B(n,l),a&2&&B(o,r[1])},d(r){r&&w(e)}}}function oa(t){let e,l=ke(t[0].d.i,1)+"",n,i,o;return{c(){e=m("div"),n=C(l),i=v(),o=C(t[1]),u(e,"class","text-right")},m(r,a){y(r,e,a),s(e,n),s(e,i),s(e,o)},p(r,a){a&1&&l!==(l=ke(r[0].d.i,1)+"")&&B(n,l),a&2&&B(o,r[1])},d(r){r&&w(e)}}}function ua(t){let e,l=ke(t[0].m.i)+"",n,i,o;return{c(){e=m("div"),n=C(l),i=v(),o=C(t[1]),u(e,"class","text-right")},m(r,a){y(r,e,a),s(e,n),s(e,i),s(e,o)},p(r,a){a&1&&l!==(l=ke(r[0].m.i)+"")&&B(n,l),a&2&&B(o,r[1])},d(r){r&&w(e)}}}function Dm(t){let e,l,n,i,o,r,a=t[0]&&ea(t);return{c(){e=m("div"),l=m("strong"),l.textContent="Real time calculation",n=v(),i=m("br"),o=m("br"),r=v(),a&&a.c(),u(e,"class","mx-2 text-sm")},m(c,f){y(c,e,f),s(e,l),s(e,n),s(e,i),s(e,o),s(e,r),a&&a.m(e,null)},p(c,[f]){c[0]?a?a.p(c,f):(a=ea(c),a.c(),a.m(e,null)):a&&(a.d(1),a=null)},i:ie,o:ie,d(c){c&&w(e),a&&a.d()}}}function Nm(t,e,l){let{data:n}=e,{currency:i}=e,{hasExport:o}=e,r=3;return t.$$set=a=>{"data"in a&&l(0,n=a.data),"currency"in a&&l(1,i=a.currency),"hasExport"in a&&l(2,o=a.hasExport)},t.$$.update=()=>{t.$$.dirty&2&&l(3,r=i?3:2)},[n,i,o,r]}class Im extends $e{constructor(e){super(),ye(this,e,Nm,Dm,we,{data:0,currency:1,hasExport:2})}}function Em(t){let e,l,n,i;return n=new Kl({props:{config:t[0]}}),{c(){e=m("a"),e.textContent="Provided by ENTSO-E",l=v(),Z(n.$$.fragment),u(e,"href","https://transparency.entsoe.eu/"),u(e,"target","_blank"),u(e,"class","text-xs float-right z-40")},m(o,r){y(o,e,r),y(o,l,r),K(n,o,r),i=!0},p(o,[r]){const a={};r&1&&(a.config=o[0]),n.$set(a)},i(o){i||(M(n.$$.fragment,o),i=!0)},o(o){I(n.$$.fragment,o),i=!1},d(o){o&&w(e),o&&w(l),Q(n,o)}}}function Rm(t,e,l){let{json:n}=e,i={},o=0,r=0;return t.$$set=a=>{"json"in a&&l(1,n=a.json)},t.$$.update=()=>{if(t.$$.dirty&14){let a=new Date().getUTCHours(),c=0,f=0,p=0,_=n[20]==null?2:1,d=[],g=[],h=[],b=new Date;for(c=a;c<24&&(f=n[Ne(p++)],f!=null);c++)g.push({label:Ne(b.getHours())}),h.push({label:f>0?f.toFixed(_):"",value:f>0?Math.abs(f*100):0,label2:f<0?f.toFixed(_):"",value2:f<0?Math.abs(f*100):0,color:"#7c3aed"}),l(3,r=Math.min(r,f*100)),l(2,o=Math.max(o,f*100)),ii(b,1);for(c=0;c<24&&(f=n[Ne(p++)],f!=null);c++)g.push({label:Ne(b.getHours())}),h.push({label:f>0?f.toFixed(_):"",value:f>0?Math.abs(f*100):0,label2:f<0?f.toFixed(_):"",value2:f<0?Math.abs(f*100):0,color:"#7c3aed"}),l(3,r=Math.min(r,f*100)),l(2,o=Math.max(o,f*100)),ii(b,1);if(l(2,o=Math.ceil(o)),l(3,r=Math.floor(r)),r<0){let k=r/4;for(c=1;c<5;c++){let T=k*c;d.push({value:T,label:(T/100).toFixed(2)})}}let $=o/4;for(c=0;c<5;c++){let k=$*c;d.push({value:k,label:(k/100).toFixed(2)})}l(0,i={title:"Future energy price ("+n.currency+")",padding:{top:20,right:15,bottom:20,left:35},y:{min:r,max:o,ticks:d},x:{ticks:g},points:h})}},[i,n,o,r]}class Fm extends $e{constructor(e){super(),ye(this,e,Rm,Em,we,{json:1})}}function Lm(t){let e,l;return e=new Kl({props:{config:t[0]}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p(n,[i]){const o={};i&1&&(o.config=n[0]),e.$set(o)},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function Om(t,e,l){let{json:n}=e,i={},o=0,r=0;return t.$$set=a=>{"json"in a&&l(1,n=a.json)},t.$$.update=()=>{if(t.$$.dirty&14){let a=0,c=[],f=[],p=[],_=ii(new Date,-24),d=new Date().getUTCHours();for(a=d;a<24;a++){let b=n["i"+Ne(a)],$=n["e"+Ne(a)];b===void 0&&(b=0),$===void 0&&($=0),f.push({label:Ne(_.getHours())}),p.push({label:b.toFixed(1),value:b*10,label2:$.toFixed(1),value2:$*10,color:"#7c3aed"}),l(3,r=Math.max(r,$*10)),l(2,o=Math.max(o,b*10)),ii(_,1)}for(a=0;a{"json"in a&&l(1,n=a.json)},t.$$.update=()=>{if(t.$$.dirty&14){let a=0,c=[],f=[],p=[],_=new Date,d=new Date;for(d.setDate(0),a=_.getDate();a<=d.getDate();a++){let b=n["i"+Ne(a)],$=n["e"+Ne(a)];b===void 0&&(b=0),$===void 0&&($=0),f.push({label:Ne(a)}),p.push({label:b.toFixed(0),value:b,label2:$.toFixed(0),value2:$,color:"#7c3aed"}),l(3,r=Math.max(r,$)),l(2,o=Math.max(o,b))}for(a=1;a<_.getDate();a++){let b=n["i"+Ne(a)],$=n["e"+Ne(a)];b===void 0&&(b=0),$===void 0&&($=0),f.push({label:Ne(a)}),p.push({label:b.toFixed(0),value:b,label2:$.toFixed(0),value2:$,color:"#7c3aed"}),l(3,r=Math.max(r,$)),l(2,o=Math.max(o,b))}let g=Math.ceil(Math.max(r,o)/10)*10;if(l(2,o=g),l(3,r=r==0?0:g*-1),r<0){let b=r/4;for(a=0;a<5;a++){let $=b*a;c.push({value:$,label:$.toFixed(0)})}}let h=o/4;for(a=0;a<5;a++){let b=h*a;c.push({value:b,label:b.toFixed(0)})}l(0,i={title:"Energy use last month (kWh)",height:226,width:1520,padding:{top:20,right:15,bottom:20,left:35},y:{min:r,max:o,ticks:c},x:{ticks:f},points:p})}},[i,n,o,r]}class jm extends $e{constructor(e){super(),ye(this,e,Hm,Um,we,{json:1})}}function Wm(t){let e,l;return e=new Kl({props:{config:t[0]}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p(n,[i]){const o={};i&1&&(o.config=n[0]),e.$set(o)},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function Gm(t,e,l){let{json:n}=e,i={},o=0,r=0;return t.$$set=a=>{"json"in a&&l(1,n=a.json)},t.$$.update=()=>{if(t.$$.dirty&14){let a=0,c=0,f=[],p=[],_=[];n.s&&n.s.forEach((h,b)=>{var $=h.n?h.n:h.a;c=h.v,c==-127&&(c=0),p.push({label:$.slice(-4)}),_.push({label:c.toFixed(1),value:c,color:"#7c3aed"}),l(3,r=Math.min(r,c)),l(2,o=Math.max(o,c))}),l(2,o=Math.ceil(o)),l(3,r=Math.floor(r));let d=o;r<0&&(d+=Math.abs(r));let g=d/4;for(a=0;a<5;a++)c=r+g*a,f.push({value:c,label:c.toFixed(1)});l(0,i={title:"Temperature sensors (\xB0C)",height:226,width:1520,padding:{top:20,right:15,bottom:20,left:35},y:{min:r,max:o,ticks:f},x:{ticks:p},points:_})}},[i,n,o,r]}class Bm extends $e{constructor(e){super(),ye(this,e,Gm,Wm,we,{json:1})}}function Ym(t){let e,l;return e=new Kl({props:{config:t[0]}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p(n,[i]){const o={};i&1&&(o.config=n[0]),e.$set(o)},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}let zm=0;function Vm(t,e,l){let n={},i=0,o;return sc.subscribe(r=>{l(2,o=r)}),ic(),t.$$.update=()=>{if(t.$$.dirty&6){let r=0,a=[],c=[],f=[];if(a.push({value:0,label:0}),o&&o.p)for(r=0;r0?Ne(p.d)+"."+Gs[new Date().getMonth()]:"-"}),l(1,i=Math.max(i,p.v))}if(o&&o.t){for(r=0;r=i)break;a.push({value:p,label:p})}a.push({label:o.m.toFixed(1),align:"right",color:"green",value:o.m})}o&&o.c&&(a.push({label:o.c.toFixed(0),color:"orange",value:o.c}),l(1,i=Math.max(i,o.c))),l(1,i=Math.ceil(i)),l(0,n={title:"Tariff peaks",padding:{top:20,right:35,bottom:20,left:35},y:{min:zm,max:i,ticks:a},x:{ticks:c},points:f})}},[n,i,o]}class Km extends $e{constructor(e){super(),ye(this,e,Vm,Ym,we,{})}}function ra(t){let e,l,n,i,o,r,a=(t[0].mt?ms(t[0].mt):"-")+"",c,f,p,_=(t[0].ic?t[0].ic.toFixed(1):"-")+"",d,g,h;return i=new fc({props:{val:t[0].i?t[0].i:0,max:t[0].im?t[0].im:15e3,unit:"W",label:"Import",sub:t[0].p,subunit:t[2].currency,colorFn:Xf}}),{c(){e=m("div"),l=m("div"),n=m("div"),Z(i.$$.fragment),o=v(),r=m("div"),c=C(a),f=v(),p=m("div"),d=C(_),g=C(" kWh"),u(n,"class","col-span-2"),u(p,"class","text-right"),u(l,"class","grid grid-cols-2"),u(e,"class","cnt")},m(b,$){y(b,e,$),s(e,l),s(l,n),K(i,n,null),s(l,o),s(l,r),s(r,c),s(l,f),s(l,p),s(p,d),s(p,g),h=!0},p(b,$){const k={};$&1&&(k.val=b[0].i?b[0].i:0),$&1&&(k.max=b[0].im?b[0].im:15e3),$&1&&(k.sub=b[0].p),$&4&&(k.subunit=b[2].currency),i.$set(k),(!h||$&1)&&a!==(a=(b[0].mt?ms(b[0].mt):"-")+"")&&B(c,a),(!h||$&1)&&_!==(_=(b[0].ic?b[0].ic.toFixed(1):"-")+"")&&B(d,_)},i(b){h||(M(i.$$.fragment,b),h=!0)},o(b){I(i.$$.fragment,b),h=!1},d(b){b&&w(e),Q(i)}}}function aa(t){let e,l,n,i,o,r,a,c,f=(t[0].ec?t[0].ec.toFixed(1):"-")+"",p,_,d;return i=new fc({props:{val:t[0].e?t[0].e:0,max:t[0].om?t[0].om*1e3:1e4,unit:"W",label:"Export",colorFn:D1}}),{c(){e=m("div"),l=m("div"),n=m("div"),Z(i.$$.fragment),o=v(),r=m("div"),a=v(),c=m("div"),p=C(f),_=C(" kWh"),u(n,"class","col-span-2"),u(c,"class","text-right"),u(l,"class","grid grid-cols-2"),u(e,"class","cnt")},m(g,h){y(g,e,h),s(e,l),s(l,n),K(i,n,null),s(l,o),s(l,r),s(l,a),s(l,c),s(c,p),s(c,_),d=!0},p(g,h){const b={};h&1&&(b.val=g[0].e?g[0].e:0),h&1&&(b.max=g[0].om?g[0].om*1e3:1e4),i.$set(b),(!d||h&1)&&f!==(f=(g[0].ec?g[0].ec.toFixed(1):"-")+"")&&B(p,f)},i(g){d||(M(i.$$.fragment,g),d=!0)},o(g){I(i.$$.fragment,g),d=!1},d(g){g&&w(e),Q(i)}}}function fa(t){let e,l,n;return l=new wm({props:{u1:t[0].u1,u2:t[0].u2,u3:t[0].u3,ds:t[0].ds}}),{c(){e=m("div"),Z(l.$$.fragment),u(e,"class","cnt")},m(i,o){y(i,e,o),K(l,e,null),n=!0},p(i,o){const r={};o&1&&(r.u1=i[0].u1),o&1&&(r.u2=i[0].u2),o&1&&(r.u3=i[0].u3),o&1&&(r.ds=i[0].ds),l.$set(r)},i(i){n||(M(l.$$.fragment,i),n=!0)},o(i){I(l.$$.fragment,i),n=!1},d(i){i&&w(e),Q(l)}}}function ca(t){let e,l,n;return l=new Cm({props:{u1:t[0].u1,u2:t[0].u2,u3:t[0].u3,i1:t[0].i1,i2:t[0].i2,i3:t[0].i3,max:t[0].mf?t[0].mf:32}}),{c(){e=m("div"),Z(l.$$.fragment),u(e,"class","cnt")},m(i,o){y(i,e,o),K(l,e,null),n=!0},p(i,o){const r={};o&1&&(r.u1=i[0].u1),o&1&&(r.u2=i[0].u2),o&1&&(r.u3=i[0].u3),o&1&&(r.i1=i[0].i1),o&1&&(r.i2=i[0].i2),o&1&&(r.i3=i[0].i3),o&1&&(r.max=i[0].mf?i[0].mf:32),l.$set(r)},i(i){n||(M(l.$$.fragment,i),n=!0)},o(i){I(l.$$.fragment,i),n=!1},d(i){i&&w(e),Q(l)}}}function ma(t){let e,l,n;return l=new Pm({props:{importInstant:t[0].ri,exportInstant:t[0].re,importTotal:t[0].ric,exportTotal:t[0].rec}}),{c(){e=m("div"),Z(l.$$.fragment),u(e,"class","cnt")},m(i,o){y(i,e,o),K(l,e,null),n=!0},p(i,o){const r={};o&1&&(r.importInstant=i[0].ri),o&1&&(r.exportInstant=i[0].re),o&1&&(r.importTotal=i[0].ric),o&1&&(r.exportTotal=i[0].rec),l.$set(r)},i(i){n||(M(l.$$.fragment,i),n=!0)},o(i){I(l.$$.fragment,i),n=!1},d(i){i&&w(e),Q(l)}}}function pa(t){let e,l,n;return l=new Im({props:{data:t[0].ea,currency:t[2].currency,hasExport:t[0].om>0||t[0].e>0}}),{c(){e=m("div"),Z(l.$$.fragment),u(e,"class","cnt")},m(i,o){y(i,e,o),K(l,e,null),n=!0},p(i,o){const r={};o&1&&(r.data=i[0].ea),o&4&&(r.currency=i[2].currency),o&1&&(r.hasExport=i[0].om>0||i[0].e>0),l.$set(r)},i(i){n||(M(l.$$.fragment,i),n=!0)},o(i){I(l.$$.fragment,i),n=!1},d(i){i&&w(e),Q(l)}}}function _a(t){let e,l,n;return l=new Km({}),{c(){e=m("div"),Z(l.$$.fragment),u(e,"class","cnt h-64")},m(i,o){y(i,e,o),K(l,e,null),n=!0},i(i){n||(M(l.$$.fragment,i),n=!0)},o(i){I(l.$$.fragment,i),n=!1},d(i){i&&w(e),Q(l)}}}function da(t){let e,l,n;return l=new Fm({props:{json:t[2]}}),{c(){e=m("div"),Z(l.$$.fragment),u(e,"class","cnt gwf")},m(i,o){y(i,e,o),K(l,e,null),n=!0},p(i,o){const r={};o&4&&(r.json=i[2]),l.$set(r)},i(i){n||(M(l.$$.fragment,i),n=!0)},o(i){I(l.$$.fragment,i),n=!1},d(i){i&&w(e),Q(l)}}}function va(t){let e,l,n;return l=new qm({props:{json:t[3]}}),{c(){e=m("div"),Z(l.$$.fragment),u(e,"class","cnt gwf")},m(i,o){y(i,e,o),K(l,e,null),n=!0},p(i,o){const r={};o&8&&(r.json=i[3]),l.$set(r)},i(i){n||(M(l.$$.fragment,i),n=!0)},o(i){I(l.$$.fragment,i),n=!1},d(i){i&&w(e),Q(l)}}}function ha(t){let e,l,n;return l=new jm({props:{json:t[4]}}),{c(){e=m("div"),Z(l.$$.fragment),u(e,"class","cnt gwf")},m(i,o){y(i,e,o),K(l,e,null),n=!0},p(i,o){const r={};o&16&&(r.json=i[4]),l.$set(r)},i(i){n||(M(l.$$.fragment,i),n=!0)},o(i){I(l.$$.fragment,i),n=!1},d(i){i&&w(e),Q(l)}}}function ga(t){let e,l,n;return l=new Bm({props:{json:t[5]}}),{c(){e=m("div"),Z(l.$$.fragment),u(e,"class","cnt gwf")},m(i,o){y(i,e,o),K(l,e,null),n=!0},p(i,o){const r={};o&32&&(r.json=i[5]),l.$set(r)},i(i){n||(M(l.$$.fragment,i),n=!0)},o(i){I(l.$$.fragment,i),n=!1},d(i){i&&w(e),Q(l)}}}function Qm(t){let e,l=He(t[1].ui.i,t[0].i),n,i=He(t[1].ui.e,t[0].om||t[0].e>0),o,r=He(t[1].ui.v,t[0].u1>100||t[0].u2>100||t[0].u3>100),a,c=He(t[1].ui.a,t[0].i1>.01||t[0].i2>.01||t[0].i3>.01),f,p=He(t[1].ui.r,t[0].ri>0||t[0].re>0||t[0].ric>0||t[0].rec>0),_,d=He(t[1].ui.c,t[0].ea),g,h=He(t[1].ui.t,t[0].pr&&(t[0].pr.startsWith("10YNO")||t[0].pr=="10Y1001A1001A48H")),b,$=He(t[1].ui.p,typeof t[0].p=="number"&&!Number.isNaN(t[0].p)),k,T=He(t[1].ui.d,t[3]),P,E=He(t[1].ui.m,t[4]),S,N=He(t[1].ui.s,t[0].t&&t[0].t!=-127&&t[5].c>1),D,R=l&&ra(t),H=i&&aa(t),U=r&&fa(t),F=c&&ca(t),L=p&&ma(t),G=d&&pa(t),j=h&&_a(),O=$&&da(t),q=T&&va(t),W=E&&ha(t),X=N&&ga(t);return{c(){e=m("div"),R&&R.c(),n=v(),H&&H.c(),o=v(),U&&U.c(),a=v(),F&&F.c(),f=v(),L&&L.c(),_=v(),G&&G.c(),g=v(),j&&j.c(),b=v(),O&&O.c(),k=v(),q&&q.c(),P=v(),W&&W.c(),S=v(),X&&X.c(),u(e,"class","grid 2xl:grid-cols-6 xl:grid-cols-5 lg:grid-cols-4 md:grid-cols-3 sm:grid-cols-2")},m(Y,ne){y(Y,e,ne),R&&R.m(e,null),s(e,n),H&&H.m(e,null),s(e,o),U&&U.m(e,null),s(e,a),F&&F.m(e,null),s(e,f),L&&L.m(e,null),s(e,_),G&&G.m(e,null),s(e,g),j&&j.m(e,null),s(e,b),O&&O.m(e,null),s(e,k),q&&q.m(e,null),s(e,P),W&&W.m(e,null),s(e,S),X&&X.m(e,null),D=!0},p(Y,[ne]){ne&3&&(l=He(Y[1].ui.i,Y[0].i)),l?R?(R.p(Y,ne),ne&3&&M(R,1)):(R=ra(Y),R.c(),M(R,1),R.m(e,n)):R&&(Ce(),I(R,1,1,()=>{R=null}),Te()),ne&3&&(i=He(Y[1].ui.e,Y[0].om||Y[0].e>0)),i?H?(H.p(Y,ne),ne&3&&M(H,1)):(H=aa(Y),H.c(),M(H,1),H.m(e,o)):H&&(Ce(),I(H,1,1,()=>{H=null}),Te()),ne&3&&(r=He(Y[1].ui.v,Y[0].u1>100||Y[0].u2>100||Y[0].u3>100)),r?U?(U.p(Y,ne),ne&3&&M(U,1)):(U=fa(Y),U.c(),M(U,1),U.m(e,a)):U&&(Ce(),I(U,1,1,()=>{U=null}),Te()),ne&3&&(c=He(Y[1].ui.a,Y[0].i1>.01||Y[0].i2>.01||Y[0].i3>.01)),c?F?(F.p(Y,ne),ne&3&&M(F,1)):(F=ca(Y),F.c(),M(F,1),F.m(e,f)):F&&(Ce(),I(F,1,1,()=>{F=null}),Te()),ne&3&&(p=He(Y[1].ui.r,Y[0].ri>0||Y[0].re>0||Y[0].ric>0||Y[0].rec>0)),p?L?(L.p(Y,ne),ne&3&&M(L,1)):(L=ma(Y),L.c(),M(L,1),L.m(e,_)):L&&(Ce(),I(L,1,1,()=>{L=null}),Te()),ne&3&&(d=He(Y[1].ui.c,Y[0].ea)),d?G?(G.p(Y,ne),ne&3&&M(G,1)):(G=pa(Y),G.c(),M(G,1),G.m(e,g)):G&&(Ce(),I(G,1,1,()=>{G=null}),Te()),ne&3&&(h=He(Y[1].ui.t,Y[0].pr&&(Y[0].pr.startsWith("10YNO")||Y[0].pr=="10Y1001A1001A48H"))),h?j?ne&3&&M(j,1):(j=_a(),j.c(),M(j,1),j.m(e,b)):j&&(Ce(),I(j,1,1,()=>{j=null}),Te()),ne&3&&($=He(Y[1].ui.p,typeof Y[0].p=="number"&&!Number.isNaN(Y[0].p))),$?O?(O.p(Y,ne),ne&3&&M(O,1)):(O=da(Y),O.c(),M(O,1),O.m(e,k)):O&&(Ce(),I(O,1,1,()=>{O=null}),Te()),ne&10&&(T=He(Y[1].ui.d,Y[3])),T?q?(q.p(Y,ne),ne&10&&M(q,1)):(q=va(Y),q.c(),M(q,1),q.m(e,P)):q&&(Ce(),I(q,1,1,()=>{q=null}),Te()),ne&18&&(E=He(Y[1].ui.m,Y[4])),E?W?(W.p(Y,ne),ne&18&&M(W,1)):(W=ha(Y),W.c(),M(W,1),W.m(e,S)):W&&(Ce(),I(W,1,1,()=>{W=null}),Te()),ne&35&&(N=He(Y[1].ui.s,Y[0].t&&Y[0].t!=-127&&Y[5].c>1)),N?X?(X.p(Y,ne),ne&35&&M(X,1)):(X=ga(Y),X.c(),M(X,1),X.m(e,null)):X&&(Ce(),I(X,1,1,()=>{X=null}),Te())},i(Y){D||(M(R),M(H),M(U),M(F),M(L),M(G),M(j),M(O),M(q),M(W),M(X),D=!0)},o(Y){I(R),I(H),I(U),I(F),I(L),I(G),I(j),I(O),I(q),I(W),I(X),D=!1},d(Y){Y&&w(e),R&&R.d(),H&&H.d(),U&&U.d(),F&&F.d(),L&&L.d(),G&&G.d(),j&&j.d(),O&&O.d(),q&&q.d(),W&&W.d(),X&&X.d()}}}function Zm(t,e,l){let{data:n={}}=e,{sysinfo:i={}}=e,o={},r={},a={},c={};return xf.subscribe(f=>{l(2,o=f)}),ec.subscribe(f=>{l(3,r=f)}),tc.subscribe(f=>{l(4,a=f)}),nc.subscribe(f=>{l(5,c=f)}),t.$$set=f=>{"data"in f&&l(0,n=f.data),"sysinfo"in f&&l(1,i=f.sysinfo)},[n,i,o,r,a,c]}class Jm extends $e{constructor(e){super(),ye(this,e,Zm,Qm,we,{data:0,sysinfo:1})}}let Zs={};const cc=Ze(Zs);async function Xm(){Zs=await(await fetch("/configuration.json")).json(),cc.set(Zs)}function ba(t,e,l){const n=t.slice();return n[2]=e[l],n[4]=l,n}function ka(t){let e;return{c(){e=m("option"),e.textContent="UART2",e.__value=113,e.value=e.__value},m(l,n){y(l,e,n)},d(l){l&&w(e)}}}function wa(t){let e,l,n;return{c(){e=m("option"),e.textContent="UART1",l=v(),n=m("option"),n.textContent="UART2",e.__value=9,e.value=e.__value,n.__value=16,n.value=n.__value},m(i,o){y(i,e,o),y(i,l,o),y(i,n,o)},d(i){i&&w(e),i&&w(l),i&&w(n)}}}function ya(t){let e;return{c(){e=m("option"),e.textContent="UART1",e.__value=18,e.value=e.__value},m(l,n){y(l,e,n)},d(l){l&&w(e)}}}function $a(t){let e,l,n;return{c(){e=m("option"),l=C("GPIO"),n=C(t[4]),e.__value=t[4],e.value=e.__value},m(i,o){y(i,e,o),s(e,l),s(e,n)},d(i){i&&w(e)}}}function Ca(t){let e,l=t[4]>3&&!(t[0]=="esp32"&&(t[4]==9||t[4]==16))&&!(t[0]=="esp32s2"&&t[4]==18)&&!(t[0]=="esp8266"&&(t[4]==3||t[4]==113))&&$a(t);return{c(){l&&l.c(),e=je()},m(n,i){l&&l.m(n,i),y(n,e,i)},p(n,i){n[4]>3&&!(n[0]=="esp32"&&(n[4]==9||n[4]==16))&&!(n[0]=="esp32s2"&&n[4]==18)&&!(n[0]=="esp8266"&&(n[4]==3||n[4]==113))?l||(l=$a(n),l.c(),l.m(e.parentNode,e)):l&&(l.d(1),l=null)},d(n){l&&l.d(n),n&&w(e)}}}function xm(t){let e,l,n,i,o,r,a=t[0]=="esp8266"&&ka(),c=(t[0]=="esp32"||t[0]=="esp32solo")&&wa(),f=t[0]=="esp32s2"&&ya(),p={length:t[1]+1},_=[];for(let d=0;d{"chip"in o&&l(0,n=o.chip)},t.$$.update=()=>{t.$$.dirty&1&&l(1,i=n=="esp8266"?16:n=="esp32s2"?44:39)},[n,i]}class mc extends $e{constructor(e){super(),ye(this,e,ep,xm,we,{chip:0})}}function Ta(t){let e,l,n=t[1]&&Sa(t);return{c(){e=m("div"),l=m("div"),n&&n.c(),u(l,"class","fixed inset-0 bg-gray-500 bg-opacity-50 flex items-center justify-center"),u(e,"class","z-50"),u(e,"aria-modal","true")},m(i,o){y(i,e,o),s(e,l),n&&n.m(l,null)},p(i,o){i[1]?n?n.p(i,o):(n=Sa(i),n.c(),n.m(l,null)):n&&(n.d(1),n=null)},d(i){i&&w(e),n&&n.d()}}}function Sa(t){let e,l;return{c(){e=m("div"),l=C(t[1]),u(e,"class","bg-white m-2 p-3 rounded-md shadow-lg pb-4 text-gray-700 w-96")},m(n,i){y(n,e,i),s(e,l)},p(n,i){i&2&&B(l,n[1])},d(n){n&&w(e)}}}function tp(t){let e,l=t[0]&&Ta(t);return{c(){l&&l.c(),e=je()},m(n,i){l&&l.m(n,i),y(n,e,i)},p(n,[i]){n[0]?l?l.p(n,i):(l=Ta(n),l.c(),l.m(e.parentNode,e)):l&&(l.d(1),l=null)},i:ie,o:ie,d(n){l&&l.d(n),n&&w(e)}}}function lp(t,e,l){let{active:n}=e,{message:i}=e;return t.$$set=o=>{"active"in o&&l(0,n=o.active),"message"in o&&l(1,i=o.message)},[n,i]}class gt extends $e{constructor(e){super(),ye(this,e,lp,tp,we,{active:0,message:1})}}function Pa(t,e,l){const n=t.slice();return n[1]=e[l],n}function Ma(t){let e,l,n=t[1]+"",i;return{c(){e=m("option"),l=C("Europe/"),i=C(n),e.__value="Europe/"+t[1],e.value=e.__value},m(o,r){y(o,e,r),s(e,l),s(e,i)},p:ie,d(o){o&&w(e)}}}function np(t){let e,l,n,i=t[0],o=[];for(let r=0;r{r[p]=null}),Te(),l=r[e],l||(l=r[e]=o[e](c),l.c()),M(l,1),l.m(n.parentNode,n))},i(c){i||(M(l),i=!0)},o(c){I(l),i=!1},d(c){r[e].d(c),c&&w(n)}}}function _p(t){let e,l;return e=new zt({props:{color:"blue",text:"Upload cert",title:"Click here to upload certificate"}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function dp(t){let e,l;return e=new zt({props:{color:"green",text:"Cert OK",title:"Click here to replace certificate"}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function vp(t){let e,l,n,i;const o=[dp,_p],r=[];function a(c,f){return c[3].q.s.r?0:1}return e=a(t),l=r[e]=o[e](t),{c(){l.c(),n=je()},m(c,f){r[e].m(c,f),y(c,n,f),i=!0},p(c,f){let p=e;e=a(c),e!==p&&(Ce(),I(r[p],1,1,()=>{r[p]=null}),Te(),l=r[e],l||(l=r[e]=o[e](c),l.c()),M(l,1),l.m(n.parentNode,n))},i(c){i||(M(l),i=!0)},o(c){I(l),i=!1},d(c){r[e].d(c),c&&w(n)}}}function hp(t){let e,l;return e=new zt({props:{color:"blue",text:"Upload key",title:"Click here to upload key"}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function gp(t){let e,l;return e=new zt({props:{color:"green",text:"Key OK",title:"Click here to replace key"}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function bp(t){let e,l,n,i;const o=[gp,hp],r=[];function a(c,f){return c[3].q.s.k?0:1}return e=a(t),l=r[e]=o[e](t),{c(){l.c(),n=je()},m(c,f){r[e].m(c,f),y(c,n,f),i=!0},p(c,f){let p=e;e=a(c),e!==p&&(Ce(),I(r[p],1,1,()=>{r[p]=null}),Te(),l=r[e],l||(l=r[e]=o[e](c),l.c()),M(l,1),l.m(n.parentNode,n))},i(c){i||(M(l),i=!0)},o(c){I(l),i=!1},d(c){r[e].d(c),c&&w(n)}}}function Ua(t){let e,l,n,i,o,r,a,c,f,p,_,d,g,h,b,$,k,T,P,E,S,N,D,R,H,U,F,L,G,j,O,q;return o=new yt({}),{c(){e=m("div"),l=m("strong"),l.textContent="Domoticz",n=v(),i=m("a"),Z(o.$$.fragment),r=v(),a=m("input"),c=v(),f=m("div"),p=m("div"),_=C("Electricity IDX"),d=m("br"),g=v(),h=m("input"),b=v(),$=m("div"),k=C("Current IDX"),T=m("br"),P=v(),E=m("input"),S=v(),N=m("div"),D=C(`Voltage IDX: L1, L2 & L3 + `),R=m("div"),H=m("input"),U=v(),F=m("input"),L=v(),G=m("input"),u(l,"class","text-sm"),u(i,"href",$t("MQTT-configuration#domoticz")),u(i,"target","_blank"),u(i,"class","float-right"),u(a,"type","hidden"),u(a,"name","o"),a.value="true",u(h,"name","oe"),u(h,"type","text"),u(h,"class","in-f tr w-full"),u(p,"class","w-1/2"),u(E,"name","oc"),u(E,"type","text"),u(E,"class","in-l tr w-full"),u($,"class","w-1/2"),u(f,"class","my-1 flex"),u(H,"name","ou1"),u(H,"type","text"),u(H,"class","in-f tr w-1/3"),u(F,"name","ou2"),u(F,"type","text"),u(F,"class","in-m tr w-1/3"),u(G,"name","ou3"),u(G,"type","text"),u(G,"class","in-l tr w-1/3"),u(R,"class","flex"),u(N,"class","my-1"),u(e,"class","cnt")},m(W,X){y(W,e,X),s(e,l),s(e,n),s(e,i),K(o,i,null),s(e,r),s(e,a),s(e,c),s(e,f),s(f,p),s(p,_),s(p,d),s(p,g),s(p,h),z(h,t[3].o.e),s(f,b),s(f,$),s($,k),s($,T),s($,P),s($,E),z(E,t[3].o.c),s(e,S),s(e,N),s(N,D),s(N,R),s(R,H),z(H,t[3].o.u1),s(R,U),s(R,F),z(F,t[3].o.u2),s(R,L),s(R,G),z(G,t[3].o.u3),j=!0,O||(q=[V(h,"input",t[58]),V(E,"input",t[59]),V(H,"input",t[60]),V(F,"input",t[61]),V(G,"input",t[62])],O=!0)},p(W,X){X[0]&8&&h.value!==W[3].o.e&&z(h,W[3].o.e),X[0]&8&&E.value!==W[3].o.c&&z(E,W[3].o.c),X[0]&8&&H.value!==W[3].o.u1&&z(H,W[3].o.u1),X[0]&8&&F.value!==W[3].o.u2&&z(F,W[3].o.u2),X[0]&8&&G.value!==W[3].o.u3&&z(G,W[3].o.u3)},i(W){j||(M(o.$$.fragment,W),j=!0)},o(W){I(o.$$.fragment,W),j=!1},d(W){W&&w(e),Q(o),O=!1,Ge(q)}}}function Ha(t){let e,l,n,i,o,r,a,c,f,p,_,d,g,h,b,$,k,T,P,E,S,N,D,R,H,U,F,L,G;return o=new yt({}),{c(){e=m("div"),l=m("strong"),l.textContent="Home-Assistant",n=v(),i=m("a"),Z(o.$$.fragment),r=v(),a=m("input"),c=v(),f=m("div"),p=C("Discovery topic prefix"),_=m("br"),d=v(),g=m("input"),h=v(),b=m("div"),$=C("Hostname for URL"),k=m("br"),T=v(),P=m("input"),S=v(),N=m("div"),D=C("Name tag"),R=m("br"),H=v(),U=m("input"),u(l,"class","text-sm"),u(i,"href",$t("MQTT-configuration#home-assistant")),u(i,"target","_blank"),u(i,"class","float-right"),u(a,"type","hidden"),u(a,"name","h"),a.value="true",u(g,"name","ht"),u(g,"type","text"),u(g,"class","in-s"),u(g,"placeholder","homeassistant"),u(f,"class","my-1"),u(P,"name","hh"),u(P,"type","text"),u(P,"class","in-s"),u(P,"placeholder",E=t[3].g.h+".local"),u(b,"class","my-1"),u(U,"name","hn"),u(U,"type","text"),u(U,"class","in-s"),u(N,"class","my-1"),u(e,"class","cnt")},m(j,O){y(j,e,O),s(e,l),s(e,n),s(e,i),K(o,i,null),s(e,r),s(e,a),s(e,c),s(e,f),s(f,p),s(f,_),s(f,d),s(f,g),z(g,t[3].h.t),s(e,h),s(e,b),s(b,$),s(b,k),s(b,T),s(b,P),z(P,t[3].h.h),s(e,S),s(e,N),s(N,D),s(N,R),s(N,H),s(N,U),z(U,t[3].h.n),F=!0,L||(G=[V(g,"input",t[63]),V(P,"input",t[64]),V(U,"input",t[65])],L=!0)},p(j,O){O[0]&8&&g.value!==j[3].h.t&&z(g,j[3].h.t),(!F||O[0]&8&&E!==(E=j[3].g.h+".local"))&&u(P,"placeholder",E),O[0]&8&&P.value!==j[3].h.h&&z(P,j[3].h.h),O[0]&8&&U.value!==j[3].h.n&&z(U,j[3].h.n)},i(j){F||(M(o.$$.fragment,j),F=!0)},o(j){I(o.$$.fragment,j),F=!1},d(j){j&&w(e),Q(o),L=!1,Ge(G)}}}function ja(t){let e,l,n,i,o,r,a,c,f,p,_,d,g,h,b,$,k,T,P;o=new yt({});let E={length:9},S=[];for(let N=0;N20&&Ya(t),p=t[0].chip=="esp8266"&&Ka(t);return{c(){e=m("div"),l=m("strong"),l.textContent="Hardware",n=v(),i=m("a"),Z(o.$$.fragment),r=v(),f&&f.c(),a=v(),p&&p.c(),u(l,"class","text-sm"),u(i,"href",$t("GPIO-configuration")),u(i,"target","_blank"),u(i,"class","float-right"),u(e,"class","cnt")},m(_,d){y(_,e,d),s(e,l),s(e,n),s(e,i),K(o,i,null),s(e,r),f&&f.m(e,null),s(e,a),p&&p.m(e,null),c=!0},p(_,d){_[0].board>20?f?(f.p(_,d),d[0]&1&&M(f,1)):(f=Ya(_),f.c(),M(f,1),f.m(e,a)):f&&(Ce(),I(f,1,1,()=>{f=null}),Te()),_[0].chip=="esp8266"?p?p.p(_,d):(p=Ka(_),p.c(),p.m(e,null)):p&&(p.d(1),p=null)},i(_){c||(M(o.$$.fragment,_),M(f),c=!0)},o(_){I(o.$$.fragment,_),I(f),c=!1},d(_){_&&w(e),Q(o),f&&f.d(),p&&p.d()}}}function Ya(t){let e,l,n,i,o,r,a,c,f,p,_,d,g,h,b,$,k,T,P,E,S,N,D,R,H,U,F,L,G,j,O,q,W,X,Y,ne,te,Ae,_e,Ie,Ee,Le,Re,Se,be,fe,ae,ce,ue,J,se,Pe,ee,oe,Ue,Me;f=new mc({props:{chip:t[0].chip}});let de=t[0].chip!="esp8266"&&za(t),ve=t[3].i.v.p>0&&Va(t);return{c(){e=m("input"),l=v(),n=m("div"),i=m("div"),o=C("HAN"),r=m("br"),a=v(),c=m("select"),Z(f.$$.fragment),p=v(),_=m("div"),d=C("AP button"),g=m("br"),h=v(),b=m("input"),$=v(),k=m("div"),T=C("LED"),P=m("label"),E=m("input"),S=C(" inv"),N=m("br"),D=v(),R=m("div"),H=m("input"),U=v(),F=m("div"),L=C("RGB"),G=m("label"),j=m("input"),O=C(" inverted"),q=m("br"),W=v(),X=m("div"),Y=m("input"),ne=v(),te=m("input"),Ae=v(),_e=m("input"),Ie=v(),Ee=m("div"),Le=C("Temperature"),Re=m("br"),Se=v(),be=m("input"),fe=v(),ae=m("div"),ce=C("Analog temp"),ue=m("br"),J=v(),se=m("input"),Pe=v(),de&&de.c(),ee=v(),ve&&ve.c(),u(e,"type","hidden"),u(e,"name","i"),e.value="true",u(c,"name","ih"),u(c,"class","in-f w-full"),t[3].i.h===void 0&&Be(()=>t[69].call(c)),u(i,"class","w-1/3"),u(b,"name","ia"),u(b,"type","number"),u(b,"min","0"),u(b,"max",t[6]),u(b,"class","in-m tr w-full"),u(_,"class","w-1/3"),u(E,"name","ili"),E.__value="true",E.value=E.__value,u(E,"type","checkbox"),u(E,"class","rounded mb-1"),u(P,"class","ml-4"),u(H,"name","ilp"),u(H,"type","number"),u(H,"min","0"),u(H,"max",t[6]),u(H,"class","in-l tr w-full"),u(R,"class","flex"),u(k,"class","w-1/3"),u(j,"name","iri"),j.__value="true",j.value=j.__value,u(j,"type","checkbox"),u(j,"class","rounded mb-1"),u(G,"class","ml-4"),u(Y,"name","irr"),u(Y,"type","number"),u(Y,"min","0"),u(Y,"max",t[6]),u(Y,"class","in-f tr w-1/3"),u(te,"name","irg"),u(te,"type","number"),u(te,"min","0"),u(te,"max",t[6]),u(te,"class","in-m tr w-1/3"),u(_e,"name","irb"),u(_e,"type","number"),u(_e,"min","0"),u(_e,"max",t[6]),u(_e,"class","in-l tr w-1/3"),u(X,"class","flex"),u(F,"class","w-full"),u(be,"name","itd"),u(be,"type","number"),u(be,"min","0"),u(be,"max",t[6]),u(be,"class","in-f tr w-full"),u(Ee,"class","my-1 w-1/3"),u(se,"name","ita"),u(se,"type","number"),u(se,"min","0"),u(se,"max",t[6]),u(se,"class","in-l tr w-full"),u(ae,"class","my-1 pr-1 w-1/3"),u(n,"class","flex flex-wrap")},m(le,he){y(le,e,he),y(le,l,he),y(le,n,he),s(n,i),s(i,o),s(i,r),s(i,a),s(i,c),K(f,c,null),Fe(c,t[3].i.h),s(n,p),s(n,_),s(_,d),s(_,g),s(_,h),s(_,b),z(b,t[3].i.a),s(n,$),s(n,k),s(k,T),s(k,P),s(P,E),E.checked=t[3].i.l.i,s(P,S),s(k,N),s(k,D),s(k,R),s(R,H),z(H,t[3].i.l.p),s(n,U),s(n,F),s(F,L),s(F,G),s(G,j),j.checked=t[3].i.r.i,s(G,O),s(F,q),s(F,W),s(F,X),s(X,Y),z(Y,t[3].i.r.r),s(X,ne),s(X,te),z(te,t[3].i.r.g),s(X,Ae),s(X,_e),z(_e,t[3].i.r.b),s(n,Ie),s(n,Ee),s(Ee,Le),s(Ee,Re),s(Ee,Se),s(Ee,be),z(be,t[3].i.t.d),s(n,fe),s(n,ae),s(ae,ce),s(ae,ue),s(ae,J),s(ae,se),z(se,t[3].i.t.a),s(n,Pe),de&&de.m(n,null),s(n,ee),ve&&ve.m(n,null),oe=!0,Ue||(Me=[V(c,"change",t[69]),V(b,"input",t[70]),V(E,"change",t[71]),V(H,"input",t[72]),V(j,"change",t[73]),V(Y,"input",t[74]),V(te,"input",t[75]),V(_e,"input",t[76]),V(be,"input",t[77]),V(se,"input",t[78])],Ue=!0)},p(le,he){const qe={};he[0]&1&&(qe.chip=le[0].chip),f.$set(qe),he[0]&8&&Fe(c,le[3].i.h),(!oe||he[0]&64)&&u(b,"max",le[6]),he[0]&8&&me(b.value)!==le[3].i.a&&z(b,le[3].i.a),he[0]&8&&(E.checked=le[3].i.l.i),(!oe||he[0]&64)&&u(H,"max",le[6]),he[0]&8&&me(H.value)!==le[3].i.l.p&&z(H,le[3].i.l.p),he[0]&8&&(j.checked=le[3].i.r.i),(!oe||he[0]&64)&&u(Y,"max",le[6]),he[0]&8&&me(Y.value)!==le[3].i.r.r&&z(Y,le[3].i.r.r),(!oe||he[0]&64)&&u(te,"max",le[6]),he[0]&8&&me(te.value)!==le[3].i.r.g&&z(te,le[3].i.r.g),(!oe||he[0]&64)&&u(_e,"max",le[6]),he[0]&8&&me(_e.value)!==le[3].i.r.b&&z(_e,le[3].i.r.b),(!oe||he[0]&64)&&u(be,"max",le[6]),he[0]&8&&me(be.value)!==le[3].i.t.d&&z(be,le[3].i.t.d),(!oe||he[0]&64)&&u(se,"max",le[6]),he[0]&8&&me(se.value)!==le[3].i.t.a&&z(se,le[3].i.t.a),le[0].chip!="esp8266"?de?de.p(le,he):(de=za(le),de.c(),de.m(n,ee)):de&&(de.d(1),de=null),le[3].i.v.p>0?ve?ve.p(le,he):(ve=Va(le),ve.c(),ve.m(n,null)):ve&&(ve.d(1),ve=null)},i(le){oe||(M(f.$$.fragment,le),oe=!0)},o(le){I(f.$$.fragment,le),oe=!1},d(le){le&&w(e),le&&w(l),le&&w(n),Q(f),de&&de.d(),ve&&ve.d(),Ue=!1,Ge(Me)}}}function za(t){let e,l,n,i,o,r,a;return{c(){e=m("div"),l=C("Vcc"),n=m("br"),i=v(),o=m("input"),u(o,"name","ivp"),u(o,"type","number"),u(o,"min","0"),u(o,"max",t[6]),u(o,"class","in-s tr w-full"),u(e,"class","my-1 pl-1 w-1/3")},m(c,f){y(c,e,f),s(e,l),s(e,n),s(e,i),s(e,o),z(o,t[3].i.v.p),r||(a=V(o,"input",t[79]),r=!0)},p(c,f){f[0]&64&&u(o,"max",c[6]),f[0]&8&&me(o.value)!==c[3].i.v.p&&z(o,c[3].i.v.p)},d(c){c&&w(e),r=!1,a()}}}function Va(t){let e,l,n,i,o,r,a,c,f,p;return{c(){e=m("div"),l=C("Voltage divider"),n=m("br"),i=v(),o=m("div"),r=m("input"),a=v(),c=m("input"),u(r,"name","ivdv"),u(r,"type","number"),u(r,"min","0"),u(r,"max","65535"),u(r,"class","in-f tr w-full"),u(r,"placeholder","VCC"),u(c,"name","ivdg"),u(c,"type","number"),u(c,"min","0"),u(c,"max","65535"),u(c,"class","in-l tr w-full"),u(c,"placeholder","GND"),u(o,"class","flex"),u(e,"class","my-1")},m(_,d){y(_,e,d),s(e,l),s(e,n),s(e,i),s(e,o),s(o,r),z(r,t[3].i.v.d.v),s(o,a),s(o,c),z(c,t[3].i.v.d.g),f||(p=[V(r,"input",t[80]),V(c,"input",t[81])],f=!0)},p(_,d){d[0]&8&&me(r.value)!==_[3].i.v.d.v&&z(r,_[3].i.v.d.v),d[0]&8&&me(c.value)!==_[3].i.v.d.g&&z(c,_[3].i.v.d.g)},d(_){_&&w(e),f=!1,Ge(p)}}}function Ka(t){let e,l,n,i,o,r,a,c,f,p,_,d,g,h,b,$,k,T=(t[0].board==2||t[0].board==100)&&Qa(t);return{c(){e=m("input"),l=v(),n=m("div"),i=m("div"),o=C("Vcc offset"),r=m("br"),a=v(),c=m("input"),f=v(),p=m("div"),_=C("Multiplier"),d=m("br"),g=v(),h=m("input"),b=v(),T&&T.c(),u(e,"type","hidden"),u(e,"name","iv"),e.value="true",u(c,"name","ivo"),u(c,"type","number"),u(c,"min","0.0"),u(c,"max","3.5"),u(c,"step","0.01"),u(c,"class","in-f tr w-full"),u(i,"class","w-1/3"),u(h,"name","ivm"),u(h,"type","number"),u(h,"min","0.1"),u(h,"max","10"),u(h,"step","0.01"),u(h,"class","in-l tr w-full"),u(p,"class","w-1/3 pr-1"),u(n,"class","my-1 flex flex-wrap")},m(P,E){y(P,e,E),y(P,l,E),y(P,n,E),s(n,i),s(i,o),s(i,r),s(i,a),s(i,c),z(c,t[3].i.v.o),s(n,f),s(n,p),s(p,_),s(p,d),s(p,g),s(p,h),z(h,t[3].i.v.m),s(n,b),T&&T.m(n,null),$||(k=[V(c,"input",t[82]),V(h,"input",t[83])],$=!0)},p(P,E){E[0]&8&&me(c.value)!==P[3].i.v.o&&z(c,P[3].i.v.o),E[0]&8&&me(h.value)!==P[3].i.v.m&&z(h,P[3].i.v.m),P[0].board==2||P[0].board==100?T?T.p(P,E):(T=Qa(P),T.c(),T.m(n,null)):T&&(T.d(1),T=null)},d(P){P&&w(e),P&&w(l),P&&w(n),T&&T.d(),$=!1,Ge(k)}}}function Qa(t){let e,l,n,i,o,r,a;return{c(){e=m("div"),l=C("Boot limit"),n=m("br"),i=v(),o=m("input"),u(o,"name","ivb"),u(o,"type","number"),u(o,"min","2.5"),u(o,"max","3.5"),u(o,"step","0.1"),u(o,"class","in-s tr w-full"),u(e,"class","w-1/3 pl-1")},m(c,f){y(c,e,f),s(e,l),s(e,n),s(e,i),s(e,o),z(o,t[3].i.v.b),r||(a=V(o,"input",t[84]),r=!0)},p(c,f){f[0]&8&&me(o.value)!==c[3].i.v.b&&z(o,c[3].i.v.b)},d(c){c&&w(e),r=!1,a()}}}function Za(t){let e,l,n,i,o,r,a,c,f,p,_,d,g,h,b,$,k=t[3].d.t&&Ja();return{c(){e=m("div"),e.textContent="Debug can cause sudden reboots. Do not leave on!",l=v(),n=m("div"),i=m("label"),o=m("input"),r=C(" Enable telnet"),a=v(),k&&k.c(),c=v(),f=m("div"),p=m("select"),_=m("option"),_.textContent="Verbose",d=m("option"),d.textContent="Debug",g=m("option"),g.textContent="Info",h=m("option"),h.textContent="Warning",u(e,"class","bd-red"),u(o,"type","checkbox"),u(o,"name","dt"),o.__value="true",o.value=o.__value,u(o,"class","rounded mb-1"),u(n,"class","my-1"),_.__value=1,_.value=_.__value,d.__value=2,d.value=d.__value,g.__value=3,g.value=g.__value,h.__value=4,h.value=h.__value,u(p,"name","dl"),u(p,"class","in-s"),t[3].d.l===void 0&&Be(()=>t[87].call(p)),u(f,"class","my-1")},m(T,P){y(T,e,P),y(T,l,P),y(T,n,P),s(n,i),s(i,o),o.checked=t[3].d.t,s(i,r),y(T,a,P),k&&k.m(T,P),y(T,c,P),y(T,f,P),s(f,p),s(p,_),s(p,d),s(p,g),s(p,h),Fe(p,t[3].d.l),b||($=[V(o,"change",t[86]),V(p,"change",t[87])],b=!0)},p(T,P){P[0]&8&&(o.checked=T[3].d.t),T[3].d.t?k||(k=Ja(),k.c(),k.m(c.parentNode,c)):k&&(k.d(1),k=null),P[0]&8&&Fe(p,T[3].d.l)},d(T){T&&w(e),T&&w(l),T&&w(n),T&&w(a),k&&k.d(T),T&&w(c),T&&w(f),b=!1,Ge($)}}}function Ja(t){let e;return{c(){e=m("div"),e.textContent="Telnet is unsafe and should be off when not in use",u(e,"class","bd-red")},m(l,n){y(l,e,n)},d(l){l&&w(e)}}}function kp(t){let e,l,n,i,o,r,a,c,f,p,_,d,g,h,b,$,k,T,P,E,S,N,D,R,H,U,F,L,G,j,O,q,W,X,Y,ne,te,Ae,_e,Ie,Ee,Le,Re,Se,be,fe,ae,ce,ue,J,se,Pe,ee,oe,Ue,Me,de,ve,le,he,qe,re,De,fi,ci,mi,Tt,pi,Qt,_i,di,vi,tt,hi,Zt,Ql,pt,gi,bi,ki,Jt,wi,yi,$i,_t,rl,al,fl,Ci,Ti,ge,Cl,Tl,Sl,cl,ml,Pl,Si,Zl,vs,co,pl,qt,_l,mo,Pi,po,xe,dl,_o,Mi,Jl,Xl,xl,en,Ai,vo,zn,St,ho,go,Ml,bo,ko,wo,Ut,tn,ln,yo,nn,Al,$o,Co,To,sn,Pt,So,Di,Po,Dl,Mo,Ao,Do,on,Mt,No,Ni,Io,hs,Eo,Nl,Ii,At,Ro,Fo,Lo,gs,Ei,Dt,Oo,qo,Uo,Xe,Ri,Ho,un,rn,jo,Vn,Wo,Il,Go,Bo,Yo,Xt,zo,El,Vo,Ko,Qo,xt,Zo,an,Rl,Jo,Xo,xo,bt,fn,cn,mn,pn,eu,Fl,tu,lu,nu,_n,kt,iu,Fi,su,Li,Oi,Nt,ou,uu,Je,qi,ru,dn,vn,au,Ll,fu,cu,mu,vl,Ht,hn,gn,pu,dt,Ui,Hi,_u,vt,bn,ji,Wi,du,bs,Gi,Bi,It,vu,hu,Kn,gu,hl,bu,Qn,Et,ku,wu,yu,Yi,el,$u,We,zi,Cu,kn,wn,Tu,Zn,Su,jt,Pu,ks,Mu,Au,yn,tl,Du,Rt,Nu,ws,Ol,Iu,Eu,Ru,ll,Fu,ql,Lu,Ou,qu,nl,Uu,$n,Cn,Hu,ju,Wu,il,Gu,Tn,Bu,Yu,zu,lt,Sn,Pn,Mn,An,Dn,Nn,Vu,Ul,Ku,Qu,Zu,sl,Ju,ys,$s,Cs=t[3].p.r.startsWith("10YNO")||t[3].p.r=="10Y1001A1001A48H",Ts,Wt,Vi,Xu,In,En,xu,Jn,er,Xn,tr,Ss,ht,Ki,lr,Rn,Fn,nr,xn,ir,Qi,Zi,Ft,sr,or,ur,gl,Ps,Ln,rr,Ji,On,ar,Xi,Ms,Hl,As,jl,Ds,Wl,Ns,Gl,Lt,Is,fr;a=new yt({}),R=new sp({});let _c=["NOK","SEK","DKK","EUR"],xi=[];for(let A=0;A<4;A+=1)xi[A]=ap(rp(t,_c,A));let nt=t[3].p.e&&t[0].chip!="esp8266"&&Na(t),it=t[3].g.s>0&&Ia(t);cl=new yt({});let dc=[24,48,96,192,384,576,1152],es=[];for(let A=0;A<7;A+=1)es[A]=fp(up(t,dc,A));let st=t[3].m.e.e&&Ea(t),ot=t[3].m.e.e&&Ra(t),ut=t[3].m.m.e&&Fa(t);rn=new yt({}),vn=new yt({}),bn=new pc({});let rt=t[3].n.m=="static"&&La(t);wn=new yt({});let at=t[0].chip!="esp8266"&&Oa(t),Ye=t[3].q.s.e&&qa(t),ze=t[3].q.m==3&&Ua(t),Ve=t[3].q.m==4&&Ha(t),Ke=Cs&&ja(t);En=new yt({});let qn=t[7],ft=[];for(let A=0;A20||t[0].chip=="esp8266")&&Ba(t);Fn=new yt({});let ct=t[3].d.s&&Za(t);return Hl=new gt({props:{active:t[1],message:"Loading configuration"}}),jl=new gt({props:{active:t[2],message:"Saving configuration"}}),Wl=new gt({props:{active:t[4],message:"Performing factory reset"}}),Gl=new gt({props:{active:t[5],message:"Device have been factory reset and switched to AP mode"}}),{c(){e=m("form"),l=m("div"),n=m("div"),i=m("strong"),i.textContent="General",o=v(),r=m("a"),Z(a.$$.fragment),c=v(),f=m("input"),p=v(),_=m("div"),d=m("div"),g=m("div"),h=C("Hostname"),b=m("br"),$=v(),k=m("input"),T=v(),P=m("div"),E=C("Time zone"),S=m("br"),N=v(),D=m("select"),Z(R.$$.fragment),H=v(),U=m("input"),F=v(),L=m("div"),G=C("Price region"),j=m("br"),O=v(),q=m("select"),W=m("optgroup"),X=m("option"),X.textContent="NO1",Y=m("option"),Y.textContent="NO2",ne=m("option"),ne.textContent="NO3",te=m("option"),te.textContent="NO4",Ae=m("option"),Ae.textContent="NO5",_e=m("optgroup"),Ie=m("option"),Ie.textContent="SE1",Ee=m("option"),Ee.textContent="SE2",Le=m("option"),Le.textContent="SE3",Re=m("option"),Re.textContent="SE4",Se=m("optgroup"),be=m("option"),be.textContent="DK1",fe=m("option"),fe.textContent="DK2",ae=m("option"),ae.textContent="Austria",ce=m("option"),ce.textContent="Belgium",ue=m("option"),ue.textContent="Czech Republic",J=m("option"),J.textContent="Estonia",se=m("option"),se.textContent="Finland",Pe=m("option"),Pe.textContent="France",ee=m("option"),ee.textContent="Germany",oe=m("option"),oe.textContent="Great Britain",Ue=m("option"),Ue.textContent="Latvia",Me=m("option"),Me.textContent="Lithuania",de=m("option"),de.textContent="Netherland",ve=m("option"),ve.textContent="Poland",le=m("option"),le.textContent="Switzerland",he=v(),qe=m("div"),re=m("div"),De=m("div"),fi=C("Currency"),ci=m("br"),mi=v(),Tt=m("select");for(let A=0;A<4;A+=1)xi[A].c();pi=v(),Qt=m("div"),_i=C("Multiplier"),di=m("br"),vi=v(),tt=m("input"),hi=v(),Zt=m("div"),Ql=m("label"),pt=m("input"),gi=C(" Enable price fetch from remote server"),bi=v(),nt&&nt.c(),ki=v(),Jt=m("div"),wi=C("Security"),yi=m("br"),$i=v(),_t=m("select"),rl=m("option"),rl.textContent="None",al=m("option"),al.textContent="Only configuration",fl=m("option"),fl.textContent="Everything",Ci=v(),it&&it.c(),Ti=v(),ge=m("div"),Cl=m("strong"),Cl.textContent="Meter",Tl=v(),Sl=m("a"),Z(cl.$$.fragment),ml=v(),Pl=m("input"),Si=v(),Zl=m("div"),vs=m("span"),vs.textContent="Serial configuration",co=v(),pl=m("div"),qt=m("select"),_l=m("option"),mo=C("Autodetect");for(let A=0;A<7;A+=1)es[A].c();po=v(),xe=m("select"),dl=m("option"),_o=C("-"),Jl=m("option"),Jl.textContent="7N1",Xl=m("option"),Xl.textContent="8N1",xl=m("option"),xl.textContent="7E1",en=m("option"),en.textContent="8E1",vo=v(),zn=m("label"),St=m("input"),ho=C(" inverted"),go=v(),Ml=m("div"),bo=C("Voltage"),ko=m("br"),wo=v(),Ut=m("select"),tn=m("option"),tn.textContent="400V (TN)",ln=m("option"),ln.textContent="230V (IT/TT)",yo=v(),nn=m("div"),Al=m("div"),$o=C("Main fuse"),Co=m("br"),To=v(),sn=m("label"),Pt=m("input"),So=v(),Di=m("span"),Di.textContent="A",Po=v(),Dl=m("div"),Mo=C("Production"),Ao=m("br"),Do=v(),on=m("label"),Mt=m("input"),No=v(),Ni=m("span"),Ni.textContent="kWp",Io=v(),hs=m("div"),Eo=v(),Nl=m("div"),Ii=m("label"),At=m("input"),Ro=C(" Meter is encrypted"),Fo=v(),st&&st.c(),Lo=v(),ot&&ot.c(),gs=v(),Ei=m("label"),Dt=m("input"),Oo=C(" Multipliers"),qo=v(),ut&&ut.c(),Uo=v(),Xe=m("div"),Ri=m("strong"),Ri.textContent="WiFi",Ho=v(),un=m("a"),Z(rn.$$.fragment),jo=v(),Vn=m("input"),Wo=v(),Il=m("div"),Go=C("SSID"),Bo=m("br"),Yo=v(),Xt=m("input"),zo=v(),El=m("div"),Vo=C("Password"),Ko=m("br"),Qo=v(),xt=m("input"),Zo=v(),an=m("div"),Rl=m("div"),Jo=C("Power saving"),Xo=m("br"),xo=v(),bt=m("select"),fn=m("option"),fn.textContent="Default",cn=m("option"),cn.textContent="Off",mn=m("option"),mn.textContent="Minimum",pn=m("option"),pn.textContent="Maximum",eu=v(),Fl=m("div"),tu=C("Power"),lu=m("br"),nu=v(),_n=m("div"),kt=m("input"),iu=v(),Fi=m("span"),Fi.textContent="dBm",su=v(),Li=m("div"),Oi=m("label"),Nt=m("input"),ou=C(" Auto reboot on connection problem"),uu=v(),Je=m("div"),qi=m("strong"),qi.textContent="Network",ru=v(),dn=m("a"),Z(vn.$$.fragment),au=v(),Ll=m("div"),fu=C("IP"),cu=m("br"),mu=v(),vl=m("div"),Ht=m("select"),hn=m("option"),hn.textContent="DHCP",gn=m("option"),gn.textContent="Static",pu=v(),dt=m("input"),_u=v(),vt=m("select"),Z(bn.$$.fragment),du=v(),rt&&rt.c(),bs=v(),Gi=m("div"),Bi=m("label"),It=m("input"),vu=C(" enable mDNS"),hu=v(),Kn=m("input"),gu=v(),hl=m("div"),bu=C("NTP "),Qn=m("label"),Et=m("input"),ku=C(" obtain from DHCP"),wu=m("br"),yu=v(),Yi=m("div"),el=m("input"),$u=v(),We=m("div"),zi=m("strong"),zi.textContent="MQTT",Cu=v(),kn=m("a"),Z(wn.$$.fragment),Tu=v(),Zn=m("input"),Su=v(),jt=m("div"),Pu=C(`Server + `),at&&at.c(),ks=v(),Mu=m("br"),Au=v(),yn=m("div"),tl=m("input"),Du=v(),Rt=m("input"),Nu=v(),Ye&&Ye.c(),ws=v(),Ol=m("div"),Iu=C("Username"),Eu=m("br"),Ru=v(),ll=m("input"),Fu=v(),ql=m("div"),Lu=C("Password"),Ou=m("br"),qu=v(),nl=m("input"),Uu=v(),$n=m("div"),Cn=m("div"),Hu=C("Client ID"),ju=m("br"),Wu=v(),il=m("input"),Gu=v(),Tn=m("div"),Bu=C("Payload"),Yu=m("br"),zu=v(),lt=m("select"),Sn=m("option"),Sn.textContent="JSON",Pn=m("option"),Pn.textContent="Raw (minimal)",Mn=m("option"),Mn.textContent="Raw (full)",An=m("option"),An.textContent="Domoticz",Dn=m("option"),Dn.textContent="HomeAssistant",Nn=m("option"),Nn.textContent="HEX dump",Vu=v(),Ul=m("div"),Ku=C("Publish topic"),Qu=m("br"),Zu=v(),sl=m("input"),Ju=v(),ze&&ze.c(),ys=v(),Ve&&Ve.c(),$s=v(),Ke&&Ke.c(),Ts=v(),Wt=m("div"),Vi=m("strong"),Vi.textContent="User interface",Xu=v(),In=m("a"),Z(En.$$.fragment),xu=v(),Jn=m("input"),er=v(),Xn=m("div");for(let A=0;ASave',Ms=v(),Z(Hl.$$.fragment),As=v(),Z(jl.$$.fragment),Ds=v(),Z(Wl.$$.fragment),Ns=v(),Z(Gl.$$.fragment),u(i,"class","text-sm"),u(r,"href",$t("General-configuration")),u(r,"target","_blank"),u(r,"class","float-right"),u(f,"type","hidden"),u(f,"name","g"),f.value="true",u(k,"name","gh"),u(k,"type","text"),u(k,"class","in-f w-full"),u(k,"pattern","[A-Za-z0-9-]+"),u(D,"name","gt"),u(D,"class","in-l w-full"),t[3].g.t===void 0&&Be(()=>t[13].call(D)),u(d,"class","flex"),u(_,"class","my-1"),u(U,"type","hidden"),u(U,"name","p"),U.value="true",X.__value="10YNO-1--------2",X.value=X.__value,Y.__value="10YNO-2--------T",Y.value=Y.__value,ne.__value="10YNO-3--------J",ne.value=ne.__value,te.__value="10YNO-4--------9",te.value=te.__value,Ae.__value="10Y1001A1001A48H",Ae.value=Ae.__value,u(W,"label","Norway"),Ie.__value="10Y1001A1001A44P",Ie.value=Ie.__value,Ee.__value="10Y1001A1001A45N",Ee.value=Ee.__value,Le.__value="10Y1001A1001A46L",Le.value=Le.__value,Re.__value="10Y1001A1001A47J",Re.value=Re.__value,u(_e,"label","Sweden"),be.__value="10YDK-1--------W",be.value=be.__value,fe.__value="10YDK-2--------M",fe.value=fe.__value,u(Se,"label","Denmark"),ae.__value="10YAT-APG------L",ae.value=ae.__value,ce.__value="10YBE----------2",ce.value=ce.__value,ue.__value="10YCZ-CEPS-----N",ue.value=ue.__value,J.__value="10Y1001A1001A39I",J.value=J.__value,se.__value="10YFI-1--------U",se.value=se.__value,Pe.__value="10YFR-RTE------C",Pe.value=Pe.__value,ee.__value="10Y1001A1001A83F",ee.value=ee.__value,oe.__value="10YGB----------A",oe.value=oe.__value,Ue.__value="10YLV-1001A00074",Ue.value=Ue.__value,Me.__value="10YLT-1001A0008Q",Me.value=Me.__value,de.__value="10YNL----------L",de.value=de.__value,ve.__value="10YPL-AREA-----S",ve.value=ve.__value,le.__value="10YCH-SWISSGRIDZ",le.value=le.__value,u(q,"name","pr"),u(q,"class","in-s"),t[3].p.r===void 0&&Be(()=>t[14].call(q)),u(L,"class","my-1"),u(Tt,"name","pc"),u(Tt,"class","in-f w-full"),t[3].p.c===void 0&&Be(()=>t[15].call(Tt)),u(De,"class","w-1/2"),u(tt,"name","pm"),u(tt,"type","number"),u(tt,"min","0.001"),u(tt,"max","1000"),u(tt,"step","0.001"),u(tt,"class","in-l tr w-full"),u(Qt,"class","w-1/2"),u(re,"class","flex"),u(qe,"class","my-1"),u(pt,"type","checkbox"),u(pt,"name","pe"),pt.__value="true",pt.value=pt.__value,u(pt,"class","rounded mb-1"),u(Zt,"class","my-1"),rl.__value=0,rl.value=rl.__value,al.__value=1,al.value=al.__value,fl.__value=2,fl.value=fl.__value,u(_t,"name","gs"),u(_t,"class","in-s"),t[3].g.s===void 0&&Be(()=>t[19].call(_t)),u(Jt,"class","my-1"),u(n,"class","cnt"),u(Cl,"class","text-sm"),u(Sl,"href",$t("Meter-configuration")),u(Sl,"target","_blank"),u(Sl,"class","float-right"),u(Pl,"type","hidden"),u(Pl,"name","m"),Pl.value="true",_l.__value=0,_l.value=_l.__value,_l.disabled=Pi=t[3].m.b!=0,u(qt,"name","mb"),u(qt,"class","in-f"),t[3].m.b===void 0&&Be(()=>t[22].call(qt)),dl.__value=0,dl.value=dl.__value,dl.disabled=Mi=t[3].m.b!=0,Jl.__value=2,Jl.value=Jl.__value,Xl.__value=3,Xl.value=Xl.__value,xl.__value=10,xl.value=xl.__value,en.__value=11,en.value=en.__value,u(xe,"name","mp"),u(xe,"class","in-l"),xe.disabled=Ai=t[3].m.b==0,t[3].m.p===void 0&&Be(()=>t[23].call(xe)),u(St,"name","mi"),St.__value="true",St.value=St.__value,u(St,"type","checkbox"),u(St,"class","rounded mb-1"),u(zn,"class","mt-2 ml-3 whitespace-nowrap"),u(pl,"class","flex"),u(Zl,"class","my-1"),tn.__value=2,tn.value=tn.__value,ln.__value=1,ln.value=ln.__value,u(Ut,"name","md"),u(Ut,"class","in-s"),t[3].m.d===void 0&&Be(()=>t[25].call(Ut)),u(Ml,"class","my-1"),u(Pt,"name","mf"),u(Pt,"type","number"),u(Pt,"min","5"),u(Pt,"max","65535"),u(Pt,"class","in-f tr w-full"),u(Di,"class","in-post"),u(sn,"class","flex"),u(Al,"class","mx-1"),u(Mt,"name","mr"),u(Mt,"type","number"),u(Mt,"min","0"),u(Mt,"max","65535"),u(Mt,"class","in-f tr w-full"),u(Ni,"class","in-post"),u(on,"class","flex"),u(Dl,"class","mx-1"),u(nn,"class","my-1 flex"),u(hs,"class","my-1"),u(At,"type","checkbox"),u(At,"name","me"),At.__value="true",At.value=At.__value,u(At,"class","rounded mb-1"),u(Nl,"class","my-1"),u(Dt,"type","checkbox"),u(Dt,"name","mm"),Dt.__value="true",Dt.value=Dt.__value,u(Dt,"class","rounded mb-1"),u(ge,"class","cnt"),u(Ri,"class","text-sm"),u(un,"href",$t("WiFi-configuration")),u(un,"target","_blank"),u(un,"class","float-right"),u(Vn,"type","hidden"),u(Vn,"name","w"),Vn.value="true",u(Xt,"name","ws"),u(Xt,"type","text"),u(Xt,"class","in-s"),u(Il,"class","my-1"),u(xt,"name","wp"),u(xt,"type","password"),u(xt,"class","in-s"),u(El,"class","my-1"),fn.__value=255,fn.value=fn.__value,cn.__value=0,cn.value=cn.__value,mn.__value=1,mn.value=mn.__value,pn.__value=2,pn.value=pn.__value,u(bt,"name","wz"),u(bt,"class","in-s"),t[3].w.z===void 0&&Be(()=>t[38].call(bt)),u(Rl,"class","w-1/2"),u(kt,"name","ww"),u(kt,"type","number"),u(kt,"min","0"),u(kt,"max","20.5"),u(kt,"step","0.5"),u(kt,"class","in-f tr w-full"),u(Fi,"class","in-post"),u(_n,"class","flex"),u(Fl,"class","ml-2 w-1/2"),u(an,"class","my-1 flex"),u(Nt,"type","checkbox"),u(Nt,"name","wa"),Nt.__value="true",Nt.value=Nt.__value,u(Nt,"class","rounded mb-1"),u(Li,"class","my-3"),u(Xe,"class","cnt"),u(qi,"class","text-sm"),u(dn,"href",$t("Network-configuration")),u(dn,"target","_blank"),u(dn,"class","float-right"),hn.__value="dhcp",hn.value=hn.__value,gn.__value="static",gn.value=gn.__value,u(Ht,"name","nm"),u(Ht,"class","in-f"),t[3].n.m===void 0&&Be(()=>t[41].call(Ht)),u(dt,"name","ni"),u(dt,"type","text"),u(dt,"class","in-m w-full"),dt.disabled=Ui=t[3].n.m=="dhcp",dt.required=Hi=t[3].n.m=="static",u(vt,"name","ns"),u(vt,"class","in-l"),vt.disabled=ji=t[3].n.m=="dhcp",vt.required=Wi=t[3].n.m=="static",t[3].n.s===void 0&&Be(()=>t[43].call(vt)),u(vl,"class","flex"),u(Ll,"class","my-1"),u(It,"name","nd"),It.__value="true",It.value=It.__value,u(It,"type","checkbox"),u(It,"class","rounded mb-1"),u(Gi,"class","my-1"),u(Kn,"type","hidden"),u(Kn,"name","ntp"),Kn.value="true",u(Et,"name","ntpd"),Et.__value="true",Et.value=Et.__value,u(Et,"type","checkbox"),u(Et,"class","rounded mb-1"),u(Qn,"class","ml-4"),u(el,"name","ntph"),u(el,"type","text"),u(el,"class","in-s"),u(Yi,"class","flex"),u(hl,"class","my-1"),u(Je,"class","cnt"),u(zi,"class","text-sm"),u(kn,"href",$t("MQTT-configuration")),u(kn,"target","_blank"),u(kn,"class","float-right"),u(Zn,"type","hidden"),u(Zn,"name","q"),Zn.value="true",u(tl,"name","qh"),u(tl,"type","text"),u(tl,"class","in-f w-3/4"),u(Rt,"name","qp"),u(Rt,"type","number"),u(Rt,"min","1024"),u(Rt,"max","65535"),u(Rt,"class","in-l tr w-1/4"),u(yn,"class","flex"),u(jt,"class","my-1"),u(ll,"name","qu"),u(ll,"type","text"),u(ll,"class","in-s"),u(Ol,"class","my-1"),u(nl,"name","qa"),u(nl,"type","password"),u(nl,"class","in-s"),u(ql,"class","my-1"),u(il,"name","qc"),u(il,"type","text"),u(il,"class","in-f w-full"),Sn.__value=0,Sn.value=Sn.__value,Pn.__value=1,Pn.value=Pn.__value,Mn.__value=2,Mn.value=Mn.__value,An.__value=3,An.value=An.__value,Dn.__value=4,Dn.value=Dn.__value,Nn.__value=255,Nn.value=Nn.__value,u(lt,"name","qm"),u(lt,"class","in-l"),t[3].q.m===void 0&&Be(()=>t[56].call(lt)),u($n,"class","my-1 flex"),u(sl,"name","qb"),u(sl,"type","text"),u(sl,"class","in-s"),u(Ul,"class","my-1"),u(We,"class","cnt"),u(Vi,"class","text-sm"),u(In,"href",$t("User-interface")),u(In,"target","_blank"),u(In,"class","float-right"),u(Jn,"type","hidden"),u(Jn,"name","u"),Jn.value="true",u(Xn,"class","flex flex-wrap"),u(Wt,"class","cnt"),u(Ki,"class","text-sm"),u(Rn,"href","https://amsleser.no/blog/post/24-telnet-debug"),u(Rn,"target","_blank"),u(Rn,"class","float-right"),u(xn,"type","hidden"),u(xn,"name","d"),xn.value="true",u(Ft,"type","checkbox"),u(Ft,"name","ds"),Ft.__value="true",Ft.value=Ft.__value,u(Ft,"class","rounded mb-1"),u(Qi,"class","mt-3"),u(ht,"class","cnt"),u(l,"class","grid xl:grid-cols-4 lg:grid-cols-2 md:grid-cols-2"),u(Ln,"type","button"),u(Ln,"class","py-2 px-4 rounded bg-red-500 text-white ml-2"),u(On,"type","button"),u(On,"class","py-2 px-4 rounded bg-yellow-500 text-white"),u(Ji,"class","text-center"),u(Xi,"class","text-right"),u(gl,"class","grid grid-cols-3"),u(e,"autocomplete","off")},m(A,x){y(A,e,x),s(e,l),s(l,n),s(n,i),s(n,o),s(n,r),K(a,r,null),s(n,c),s(n,f),s(n,p),s(n,_),s(_,d),s(d,g),s(g,h),s(g,b),s(g,$),s(g,k),z(k,t[3].g.h),s(d,T),s(d,P),s(P,E),s(P,S),s(P,N),s(P,D),K(R,D,null),Fe(D,t[3].g.t),s(n,H),s(n,U),s(n,F),s(n,L),s(L,G),s(L,j),s(L,O),s(L,q),s(q,W),s(W,X),s(W,Y),s(W,ne),s(W,te),s(W,Ae),s(q,_e),s(_e,Ie),s(_e,Ee),s(_e,Le),s(_e,Re),s(q,Se),s(Se,be),s(Se,fe),s(q,ae),s(q,ce),s(q,ue),s(q,J),s(q,se),s(q,Pe),s(q,ee),s(q,oe),s(q,Ue),s(q,Me),s(q,de),s(q,ve),s(q,le),Fe(q,t[3].p.r),s(n,he),s(n,qe),s(qe,re),s(re,De),s(De,fi),s(De,ci),s(De,mi),s(De,Tt);for(let mt=0;mt<4;mt+=1)xi[mt].m(Tt,null);Fe(Tt,t[3].p.c),s(re,pi),s(re,Qt),s(Qt,_i),s(Qt,di),s(Qt,vi),s(Qt,tt),z(tt,t[3].p.m),s(n,hi),s(n,Zt),s(Zt,Ql),s(Ql,pt),pt.checked=t[3].p.e,s(Ql,gi),s(Zt,bi),nt&&nt.m(Zt,null),s(n,ki),s(n,Jt),s(Jt,wi),s(Jt,yi),s(Jt,$i),s(Jt,_t),s(_t,rl),s(_t,al),s(_t,fl),Fe(_t,t[3].g.s),s(n,Ci),it&&it.m(n,null),s(l,Ti),s(l,ge),s(ge,Cl),s(ge,Tl),s(ge,Sl),K(cl,Sl,null),s(ge,ml),s(ge,Pl),s(ge,Si),s(ge,Zl),s(Zl,vs),s(Zl,co),s(Zl,pl),s(pl,qt),s(qt,_l),s(_l,mo);for(let mt=0;mt<7;mt+=1)es[mt].m(qt,null);Fe(qt,t[3].m.b),s(pl,po),s(pl,xe),s(xe,dl),s(dl,_o),s(xe,Jl),s(xe,Xl),s(xe,xl),s(xe,en),Fe(xe,t[3].m.p),s(pl,vo),s(pl,zn),s(zn,St),St.checked=t[3].m.i,s(zn,ho),s(ge,go),s(ge,Ml),s(Ml,bo),s(Ml,ko),s(Ml,wo),s(Ml,Ut),s(Ut,tn),s(Ut,ln),Fe(Ut,t[3].m.d),s(ge,yo),s(ge,nn),s(nn,Al),s(Al,$o),s(Al,Co),s(Al,To),s(Al,sn),s(sn,Pt),z(Pt,t[3].m.f),s(sn,So),s(sn,Di),s(nn,Po),s(nn,Dl),s(Dl,Mo),s(Dl,Ao),s(Dl,Do),s(Dl,on),s(on,Mt),z(Mt,t[3].m.r),s(on,No),s(on,Ni),s(ge,Io),s(ge,hs),s(ge,Eo),s(ge,Nl),s(Nl,Ii),s(Ii,At),At.checked=t[3].m.e.e,s(Ii,Ro),s(Nl,Fo),st&&st.m(Nl,null),s(ge,Lo),ot&&ot.m(ge,null),s(ge,gs),s(ge,Ei),s(Ei,Dt),Dt.checked=t[3].m.m.e,s(Ei,Oo),s(ge,qo),ut&&ut.m(ge,null),s(l,Uo),s(l,Xe),s(Xe,Ri),s(Xe,Ho),s(Xe,un),K(rn,un,null),s(Xe,jo),s(Xe,Vn),s(Xe,Wo),s(Xe,Il),s(Il,Go),s(Il,Bo),s(Il,Yo),s(Il,Xt),z(Xt,t[3].w.s),s(Xe,zo),s(Xe,El),s(El,Vo),s(El,Ko),s(El,Qo),s(El,xt),z(xt,t[3].w.p),s(Xe,Zo),s(Xe,an),s(an,Rl),s(Rl,Jo),s(Rl,Xo),s(Rl,xo),s(Rl,bt),s(bt,fn),s(bt,cn),s(bt,mn),s(bt,pn),Fe(bt,t[3].w.z),s(an,eu),s(an,Fl),s(Fl,tu),s(Fl,lu),s(Fl,nu),s(Fl,_n),s(_n,kt),z(kt,t[3].w.w),s(_n,iu),s(_n,Fi),s(Xe,su),s(Xe,Li),s(Li,Oi),s(Oi,Nt),Nt.checked=t[3].w.a,s(Oi,ou),s(l,uu),s(l,Je),s(Je,qi),s(Je,ru),s(Je,dn),K(vn,dn,null),s(Je,au),s(Je,Ll),s(Ll,fu),s(Ll,cu),s(Ll,mu),s(Ll,vl),s(vl,Ht),s(Ht,hn),s(Ht,gn),Fe(Ht,t[3].n.m),s(vl,pu),s(vl,dt),z(dt,t[3].n.i),s(vl,_u),s(vl,vt),K(bn,vt,null),Fe(vt,t[3].n.s),s(Je,du),rt&&rt.m(Je,null),s(Je,bs),s(Je,Gi),s(Gi,Bi),s(Bi,It),It.checked=t[3].n.d,s(Bi,vu),s(Je,hu),s(Je,Kn),s(Je,gu),s(Je,hl),s(hl,bu),s(hl,Qn),s(Qn,Et),Et.checked=t[3].n.h,s(Qn,ku),s(hl,wu),s(hl,yu),s(hl,Yi),s(Yi,el),z(el,t[3].n.n1),s(l,$u),s(l,We),s(We,zi),s(We,Cu),s(We,kn),K(wn,kn,null),s(We,Tu),s(We,Zn),s(We,Su),s(We,jt),s(jt,Pu),at&&at.m(jt,null),s(jt,ks),s(jt,Mu),s(jt,Au),s(jt,yn),s(yn,tl),z(tl,t[3].q.h),s(yn,Du),s(yn,Rt),z(Rt,t[3].q.p),s(We,Nu),Ye&&Ye.m(We,null),s(We,ws),s(We,Ol),s(Ol,Iu),s(Ol,Eu),s(Ol,Ru),s(Ol,ll),z(ll,t[3].q.u),s(We,Fu),s(We,ql),s(ql,Lu),s(ql,Ou),s(ql,qu),s(ql,nl),z(nl,t[3].q.a),s(We,Uu),s(We,$n),s($n,Cn),s(Cn,Hu),s(Cn,ju),s(Cn,Wu),s(Cn,il),z(il,t[3].q.c),s($n,Gu),s($n,Tn),s(Tn,Bu),s(Tn,Yu),s(Tn,zu),s(Tn,lt),s(lt,Sn),s(lt,Pn),s(lt,Mn),s(lt,An),s(lt,Dn),s(lt,Nn),Fe(lt,t[3].q.m),s(We,Vu),s(We,Ul),s(Ul,Ku),s(Ul,Qu),s(Ul,Zu),s(Ul,sl),z(sl,t[3].q.b),s(l,Ju),ze&&ze.m(l,null),s(l,ys),Ve&&Ve.m(l,null),s(l,$s),Ke&&Ke.m(l,null),s(l,Ts),s(l,Wt),s(Wt,Vi),s(Wt,Xu),s(Wt,In),K(En,In,null),s(Wt,xu),s(Wt,Jn),s(Wt,er),s(Wt,Xn);for(let mt=0;mt0?it?it.p(A,x):(it=Ia(A),it.c(),it.m(n,null)):it&&(it.d(1),it=null),(!Lt||x[0]&8&&Pi!==(Pi=A[3].m.b!=0))&&(_l.disabled=Pi),x[0]&8&&Fe(qt,A[3].m.b),(!Lt||x[0]&8&&Mi!==(Mi=A[3].m.b!=0))&&(dl.disabled=Mi),(!Lt||x[0]&8&&Ai!==(Ai=A[3].m.b==0))&&(xe.disabled=Ai),x[0]&8&&Fe(xe,A[3].m.p),x[0]&8&&(St.checked=A[3].m.i),x[0]&8&&Fe(Ut,A[3].m.d),x[0]&8&&me(Pt.value)!==A[3].m.f&&z(Pt,A[3].m.f),x[0]&8&&me(Mt.value)!==A[3].m.r&&z(Mt,A[3].m.r),x[0]&8&&(At.checked=A[3].m.e.e),A[3].m.e.e?st?st.p(A,x):(st=Ea(A),st.c(),st.m(Nl,null)):st&&(st.d(1),st=null),A[3].m.e.e?ot?ot.p(A,x):(ot=Ra(A),ot.c(),ot.m(ge,gs)):ot&&(ot.d(1),ot=null),x[0]&8&&(Dt.checked=A[3].m.m.e),A[3].m.m.e?ut?ut.p(A,x):(ut=Fa(A),ut.c(),ut.m(ge,null)):ut&&(ut.d(1),ut=null),x[0]&8&&Xt.value!==A[3].w.s&&z(Xt,A[3].w.s),x[0]&8&&xt.value!==A[3].w.p&&z(xt,A[3].w.p),x[0]&8&&Fe(bt,A[3].w.z),x[0]&8&&me(kt.value)!==A[3].w.w&&z(kt,A[3].w.w),x[0]&8&&(Nt.checked=A[3].w.a),x[0]&8&&Fe(Ht,A[3].n.m),(!Lt||x[0]&8&&Ui!==(Ui=A[3].n.m=="dhcp"))&&(dt.disabled=Ui),(!Lt||x[0]&8&&Hi!==(Hi=A[3].n.m=="static"))&&(dt.required=Hi),x[0]&8&&dt.value!==A[3].n.i&&z(dt,A[3].n.i),(!Lt||x[0]&8&&ji!==(ji=A[3].n.m=="dhcp"))&&(vt.disabled=ji),(!Lt||x[0]&8&&Wi!==(Wi=A[3].n.m=="static"))&&(vt.required=Wi),x[0]&8&&Fe(vt,A[3].n.s),A[3].n.m=="static"?rt?rt.p(A,x):(rt=La(A),rt.c(),rt.m(Je,bs)):rt&&(rt.d(1),rt=null),x[0]&8&&(It.checked=A[3].n.d),x[0]&8&&(Et.checked=A[3].n.h),x[0]&8&&el.value!==A[3].n.n1&&z(el,A[3].n.n1),A[0].chip!="esp8266"?at?at.p(A,x):(at=Oa(A),at.c(),at.m(jt,ks)):at&&(at.d(1),at=null),x[0]&8&&tl.value!==A[3].q.h&&z(tl,A[3].q.h),x[0]&8&&me(Rt.value)!==A[3].q.p&&z(Rt,A[3].q.p),A[3].q.s.e?Ye?(Ye.p(A,x),x[0]&8&&M(Ye,1)):(Ye=qa(A),Ye.c(),M(Ye,1),Ye.m(We,ws)):Ye&&(Ce(),I(Ye,1,1,()=>{Ye=null}),Te()),x[0]&8&&ll.value!==A[3].q.u&&z(ll,A[3].q.u),x[0]&8&&nl.value!==A[3].q.a&&z(nl,A[3].q.a),x[0]&8&&il.value!==A[3].q.c&&z(il,A[3].q.c),x[0]&8&&Fe(lt,A[3].q.m),x[0]&8&&sl.value!==A[3].q.b&&z(sl,A[3].q.b),A[3].q.m==3?ze?(ze.p(A,x),x[0]&8&&M(ze,1)):(ze=Ua(A),ze.c(),M(ze,1),ze.m(l,ys)):ze&&(Ce(),I(ze,1,1,()=>{ze=null}),Te()),A[3].q.m==4?Ve?(Ve.p(A,x),x[0]&8&&M(Ve,1)):(Ve=Ha(A),Ve.c(),M(Ve,1),Ve.m(l,$s)):Ve&&(Ce(),I(Ve,1,1,()=>{Ve=null}),Te()),x[0]&8&&(Cs=A[3].p.r.startsWith("10YNO")||A[3].p.r=="10Y1001A1001A48H"),Cs?Ke?(Ke.p(A,x),x[0]&8&&M(Ke,1)):(Ke=ja(A),Ke.c(),M(Ke,1),Ke.m(l,Ts)):Ke&&(Ce(),I(Ke,1,1,()=>{Ke=null}),Te()),x[0]&136){qn=A[7];let wt;for(wt=0;wt20||A[0].chip=="esp8266"?Qe?(Qe.p(A,x),x[0]&1&&M(Qe,1)):(Qe=Ba(A),Qe.c(),M(Qe,1),Qe.m(l,Ss)):Qe&&(Ce(),I(Qe,1,1,()=>{Qe=null}),Te()),x[0]&8&&(Ft.checked=A[3].d.s),A[3].d.s?ct?ct.p(A,x):(ct=Za(A),ct.c(),ct.m(ht,null)):ct&&(ct.d(1),ct=null);const mt={};x[0]&2&&(mt.active=A[1]),Hl.$set(mt);const cr={};x[0]&4&&(cr.active=A[2]),jl.$set(cr);const mr={};x[0]&16&&(mr.active=A[4]),Wl.$set(mr);const pr={};x[0]&32&&(pr.active=A[5]),Gl.$set(pr)},i(A){Lt||(M(a.$$.fragment,A),M(R.$$.fragment,A),M(cl.$$.fragment,A),M(rn.$$.fragment,A),M(vn.$$.fragment,A),M(bn.$$.fragment,A),M(wn.$$.fragment,A),M(Ye),M(ze),M(Ve),M(Ke),M(En.$$.fragment,A),M(Qe),M(Fn.$$.fragment,A),M(Hl.$$.fragment,A),M(jl.$$.fragment,A),M(Wl.$$.fragment,A),M(Gl.$$.fragment,A),Lt=!0)},o(A){I(a.$$.fragment,A),I(R.$$.fragment,A),I(cl.$$.fragment,A),I(rn.$$.fragment,A),I(vn.$$.fragment,A),I(bn.$$.fragment,A),I(wn.$$.fragment,A),I(Ye),I(ze),I(Ve),I(Ke),I(En.$$.fragment,A),I(Qe),I(Fn.$$.fragment,A),I(Hl.$$.fragment,A),I(jl.$$.fragment,A),I(Wl.$$.fragment,A),I(Gl.$$.fragment,A),Lt=!1},d(A){A&&w(e),Q(a),Q(R),Vt(xi,A),nt&&nt.d(),it&&it.d(),Q(cl),Vt(es,A),st&&st.d(),ot&&ot.d(),ut&&ut.d(),Q(rn),Q(vn),Q(bn),rt&&rt.d(),Q(wn),at&&at.d(),Ye&&Ye.d(),ze&&ze.d(),Ve&&Ve.d(),Ke&&Ke.d(),Q(En),Vt(ft,A),Qe&&Qe.d(),Q(Fn),ct&&ct.d(),A&&w(Ms),Q(Hl,A),A&&w(As),Q(jl,A),A&&w(Ds),Q(Wl,A),A&&w(Ns),Q(Gl,A),Is=!1,Ge(fr)}}}async function wp(){await(await fetch("/reboot",{method:"POST"})).json()}function yp(t,e,l){let{sysinfo:n={}}=e,i=[{name:"Import gauge",key:"i"},{name:"Export gauge",key:"e"},{name:"Voltage",key:"v"},{name:"Amperage",key:"a"},{name:"Reactive",key:"r"},{name:"Realtime",key:"c"},{name:"Peaks",key:"t"},{name:"Price",key:"p"},{name:"Day plot",key:"d"},{name:"Month plot",key:"m"},{name:"Temperature plot",key:"s"}],o=!0,r=!1,a={g:{t:"",h:"",s:0,u:"",p:""},m:{b:2400,p:11,i:!1,d:0,f:0,r:0,e:{e:!1,k:"",a:""},m:{e:!1,w:!1,v:!1,a:!1,c:!1}},w:{s:"",p:"",w:0,z:255,a:!0},n:{m:"",i:"",s:"",g:"",d1:"",d2:"",d:!1,n1:"",n2:"",h:!1},q:{h:"",p:1883,u:"",a:"",b:"",s:{e:!1,c:!1,r:!0,k:!1}},o:{e:"",c:"",u1:"",u2:"",u3:""},t:{t:[0,0,0,0,0,0,0,0,0,0],h:1},p:{e:!1,t:"",r:"",c:"",m:1},d:{s:!1,t:!1,l:5},u:{i:0,e:0,v:0,a:0,r:0,c:0,t:0,p:0,d:0,m:0,s:0},i:{h:null,a:null,l:{p:null,i:!1},r:{r:null,g:null,b:null,i:!1},t:{d:null,a:null},v:{p:null,d:{v:null,g:null},o:null,m:null,b:null}},h:{t:"",h:"",n:""}};cc.subscribe(ge=>{ge.version&&(l(3,a=ge),l(1,o=!1))}),Xm();let c=!1,f=!1;async function p(){if(confirm("Are you sure you want to factory reset the device?")){l(4,c=!0);const ge=new URLSearchParams;ge.append("perform","true");let Tl=await(await fetch("/reset",{method:"POST",body:ge})).json();l(4,c=!1),l(5,f=Tl.success)}}async function _(ge){l(2,r=!0);const Cl=new FormData(ge.target),Tl=new URLSearchParams;for(let ml of Cl){const[Pl,Si]=ml;Tl.append(Pl,Si)}let cl=await(await fetch("/save",{method:"POST",body:Tl})).json();Ct.update(ml=>(ml.booting=cl.reboot,ml.ui=a.u,ml)),l(2,r=!1),jn("/")}const d=function(){confirm("Are you sure you want to reboot the device?")&&(Ct.update(ge=>(ge.booting=!0,ge)),wp())},g=function(){a.q.s.e?a.q.p==1883&&l(3,a.q.p=8883,a):a.q.p==8883&&l(3,a.q.p=1883,a)};let h=44;function b(){a.g.h=this.value,l(3,a)}function $(){a.g.t=et(this),l(3,a)}function k(){a.p.r=et(this),l(3,a)}function T(){a.p.c=et(this),l(3,a)}function P(){a.p.m=me(this.value),l(3,a)}function E(){a.p.e=this.checked,l(3,a)}function S(){a.p.t=this.value,l(3,a)}function N(){a.g.s=et(this),l(3,a)}function D(){a.g.u=this.value,l(3,a)}function R(){a.g.p=this.value,l(3,a)}function H(){a.m.b=et(this),l(3,a)}function U(){a.m.p=et(this),l(3,a)}function F(){a.m.i=this.checked,l(3,a)}function L(){a.m.d=et(this),l(3,a)}function G(){a.m.f=me(this.value),l(3,a)}function j(){a.m.r=me(this.value),l(3,a)}function O(){a.m.e.e=this.checked,l(3,a)}function q(){a.m.e.k=this.value,l(3,a)}function W(){a.m.e.a=this.value,l(3,a)}function X(){a.m.m.e=this.checked,l(3,a)}function Y(){a.m.m.w=me(this.value),l(3,a)}function ne(){a.m.m.v=me(this.value),l(3,a)}function te(){a.m.m.a=me(this.value),l(3,a)}function Ae(){a.m.m.c=me(this.value),l(3,a)}function _e(){a.w.s=this.value,l(3,a)}function Ie(){a.w.p=this.value,l(3,a)}function Ee(){a.w.z=et(this),l(3,a)}function Le(){a.w.w=me(this.value),l(3,a)}function Re(){a.w.a=this.checked,l(3,a)}function Se(){a.n.m=et(this),l(3,a)}function be(){a.n.i=this.value,l(3,a)}function fe(){a.n.s=et(this),l(3,a)}function ae(){a.n.g=this.value,l(3,a)}function ce(){a.n.d1=this.value,l(3,a)}function ue(){a.n.d2=this.value,l(3,a)}function J(){a.n.d=this.checked,l(3,a)}function se(){a.n.h=this.checked,l(3,a)}function Pe(){a.n.n1=this.value,l(3,a)}function ee(){a.q.s.e=this.checked,l(3,a)}function oe(){a.q.h=this.value,l(3,a)}function Ue(){a.q.p=me(this.value),l(3,a)}function Me(){a.q.u=this.value,l(3,a)}function de(){a.q.a=this.value,l(3,a)}function ve(){a.q.c=this.value,l(3,a)}function le(){a.q.m=et(this),l(3,a)}function he(){a.q.b=this.value,l(3,a)}function qe(){a.o.e=this.value,l(3,a)}function re(){a.o.c=this.value,l(3,a)}function De(){a.o.u1=this.value,l(3,a)}function fi(){a.o.u2=this.value,l(3,a)}function ci(){a.o.u3=this.value,l(3,a)}function mi(){a.h.t=this.value,l(3,a)}function Tt(){a.h.h=this.value,l(3,a)}function pi(){a.h.n=this.value,l(3,a)}function Qt(ge){a.t.t[ge]=me(this.value),l(3,a)}function _i(){a.t.h=me(this.value),l(3,a)}function di(ge){a.u[ge.key]=et(this),l(3,a)}function vi(){a.i.h=et(this),l(3,a)}function tt(){a.i.a=me(this.value),l(3,a)}function hi(){a.i.l.i=this.checked,l(3,a)}function Zt(){a.i.l.p=me(this.value),l(3,a)}function Ql(){a.i.r.i=this.checked,l(3,a)}function pt(){a.i.r.r=me(this.value),l(3,a)}function gi(){a.i.r.g=me(this.value),l(3,a)}function bi(){a.i.r.b=me(this.value),l(3,a)}function ki(){a.i.t.d=me(this.value),l(3,a)}function Jt(){a.i.t.a=me(this.value),l(3,a)}function wi(){a.i.v.p=me(this.value),l(3,a)}function yi(){a.i.v.d.v=me(this.value),l(3,a)}function $i(){a.i.v.d.g=me(this.value),l(3,a)}function _t(){a.i.v.o=me(this.value),l(3,a)}function rl(){a.i.v.m=me(this.value),l(3,a)}function al(){a.i.v.b=me(this.value),l(3,a)}function fl(){a.d.s=this.checked,l(3,a)}function Ci(){a.d.t=this.checked,l(3,a)}function Ti(){a.d.l=et(this),l(3,a)}return t.$$set=ge=>{"sysinfo"in ge&&l(0,n=ge.sysinfo)},t.$$.update=()=>{t.$$.dirty[0]&1&&l(6,h=n.chip=="esp8266"?16:n.chip=="esp32s2"?44:39)},[n,o,r,a,c,f,h,i,p,_,d,g,b,$,k,T,P,E,S,N,D,R,H,U,F,L,G,j,O,q,W,X,Y,ne,te,Ae,_e,Ie,Ee,Le,Re,Se,be,fe,ae,ce,ue,J,se,Pe,ee,oe,Ue,Me,de,ve,le,he,qe,re,De,fi,ci,mi,Tt,pi,Qt,_i,di,vi,tt,hi,Zt,Ql,pt,gi,bi,ki,Jt,wi,yi,$i,_t,rl,al,fl,Ci,Ti]}class $p extends $e{constructor(e){super(),ye(this,e,yp,kp,we,{sysinfo:0},null,[-1,-1,-1,-1])}}function Xa(t,e,l){const n=t.slice();return n[20]=e[l],n}function Cp(t){let e=pe(t[1].chip,t[1].board)+"",l;return{c(){l=C(e)},m(n,i){y(n,l,i)},p(n,i){i&2&&e!==(e=pe(n[1].chip,n[1].board)+"")&&B(l,e)},d(n){n&&w(l)}}}function xa(t){let e,l,n=t[1].apmac+"",i,o,r,a,c,f,p,_,d,g=Nr(t[1])+"",h,b,$=t[1].boot_reason+"",k,T,P;const E=[Sp,Tp],S=[];function N(D,R){return D[0].u>0?0:1}return c=N(t),f=S[c]=E[c](t),{c(){e=m("div"),l=C("AP MAC: "),i=C(n),o=v(),r=m("div"),a=C(`Last boot: + `),f.c(),p=v(),_=m("div"),d=C("Reason: "),h=C(g),b=C(" ("),k=C($),T=C(")"),u(e,"class","my-2"),u(r,"class","my-2"),u(_,"class","my-2")},m(D,R){y(D,e,R),s(e,l),s(e,i),y(D,o,R),y(D,r,R),s(r,a),S[c].m(r,null),y(D,p,R),y(D,_,R),s(_,d),s(_,h),s(_,b),s(_,k),s(_,T),P=!0},p(D,R){(!P||R&2)&&n!==(n=D[1].apmac+"")&&B(i,n);let H=c;c=N(D),c===H?S[c].p(D,R):(Ce(),I(S[H],1,1,()=>{S[H]=null}),Te(),f=S[c],f?f.p(D,R):(f=S[c]=E[c](D),f.c()),M(f,1),f.m(r,null)),(!P||R&2)&&g!==(g=Nr(D[1])+"")&&B(h,g),(!P||R&2)&&$!==($=D[1].boot_reason+"")&&B(k,$)},i(D){P||(M(f),P=!0)},o(D){I(f),P=!1},d(D){D&&w(e),D&&w(o),D&&w(r),S[c].d(),D&&w(p),D&&w(_)}}}function Tp(t){let e;return{c(){e=C("-")},m(l,n){y(l,e,n)},p:ie,i:ie,o:ie,d(l){l&&w(e)}}}function Sp(t){let e,l;return e=new rc({props:{timestamp:new Date(new Date().getTime()-t[0].u*1e3),fullTimeColor:""}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p(n,i){const o={};i&1&&(o.timestamp=new Date(new Date().getTime()-n[0].u*1e3)),e.$set(o)},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function Pp(t){let e;return{c(){e=m("span"),e.textContent="Update consents",u(e,"class","btn-pri-sm")},m(l,n){y(l,e,n)},p:ie,d(l){l&&w(e)}}}function ef(t){let e,l,n,i,o,r=ms(t[1].meter.mfg)+"",a,c,f,p,_=t[1].meter.model+"",d,g,h,b,$=t[1].meter.id+"",k;return{c(){e=m("div"),l=m("strong"),l.textContent="Meter",n=v(),i=m("div"),o=C("Manufacturer: "),a=C(r),c=v(),f=m("div"),p=C("Model: "),d=C(_),g=v(),h=m("div"),b=C("ID: "),k=C($),u(l,"class","text-sm"),u(i,"class","my-2"),u(f,"class","my-2"),u(h,"class","my-2"),u(e,"class","cnt")},m(T,P){y(T,e,P),s(e,l),s(e,n),s(e,i),s(i,o),s(i,a),s(e,c),s(e,f),s(f,p),s(f,d),s(e,g),s(e,h),s(h,b),s(h,k)},p(T,P){P&2&&r!==(r=ms(T[1].meter.mfg)+"")&&B(a,r),P&2&&_!==(_=T[1].meter.model+"")&&B(d,_),P&2&&$!==($=T[1].meter.id+"")&&B(k,$)},d(T){T&&w(e)}}}function tf(t){let e,l,n,i,o,r=t[1].net.ip+"",a,c,f,p,_=t[1].net.mask+"",d,g,h,b,$=t[1].net.gw+"",k,T,P,E,S=t[1].net.dns1+"",N,D,R=t[1].net.dns2&&lf(t);return{c(){e=m("div"),l=m("strong"),l.textContent="Network",n=v(),i=m("div"),o=C("IP: "),a=C(r),c=v(),f=m("div"),p=C("Mask: "),d=C(_),g=v(),h=m("div"),b=C("Gateway: "),k=C($),T=v(),P=m("div"),E=C("DNS: "),N=C(S),D=v(),R&&R.c(),u(l,"class","text-sm"),u(i,"class","my-2"),u(f,"class","my-2"),u(h,"class","my-2"),u(P,"class","my-2"),u(e,"class","cnt")},m(H,U){y(H,e,U),s(e,l),s(e,n),s(e,i),s(i,o),s(i,a),s(e,c),s(e,f),s(f,p),s(f,d),s(e,g),s(e,h),s(h,b),s(h,k),s(e,T),s(e,P),s(P,E),s(P,N),s(P,D),R&&R.m(P,null)},p(H,U){U&2&&r!==(r=H[1].net.ip+"")&&B(a,r),U&2&&_!==(_=H[1].net.mask+"")&&B(d,_),U&2&&$!==($=H[1].net.gw+"")&&B(k,$),U&2&&S!==(S=H[1].net.dns1+"")&&B(N,S),H[1].net.dns2?R?R.p(H,U):(R=lf(H),R.c(),R.m(P,null)):R&&(R.d(1),R=null)},d(H){H&&w(e),R&&R.d()}}}function lf(t){let e,l=t[1].net.dns2+"",n;return{c(){e=C("/ "),n=C(l)},m(i,o){y(i,e,o),y(i,n,o)},p(i,o){o&2&&l!==(l=i[1].net.dns2+"")&&B(n,l)},d(i){i&&w(e),i&&w(n)}}}function nf(t){let e,l,n,i=t[2].tag_name+"",o,r,a,c,f,p,_=(t[1].security==0||t[0].a)&&t[1].fwconsent===1&&t[2]&&t[2].tag_name&&sf(t),d=t[1].fwconsent===2&&of();return{c(){e=m("div"),l=C(`Latest version: + `),n=m("a"),o=C(i),a=v(),_&&_.c(),c=v(),d&&d.c(),f=je(),u(n,"href",r=t[2].html_url),u(n,"class","ml-2 text-blue-600 hover:text-blue-800"),u(n,"target","_blank"),u(n,"rel","noreferrer"),u(e,"class","my-2 flex")},m(g,h){y(g,e,h),s(e,l),s(e,n),s(n,o),s(e,a),_&&_.m(e,null),y(g,c,h),d&&d.m(g,h),y(g,f,h),p=!0},p(g,h){(!p||h&4)&&i!==(i=g[2].tag_name+"")&&B(o,i),(!p||h&4&&r!==(r=g[2].html_url))&&u(n,"href",r),(g[1].security==0||g[0].a)&&g[1].fwconsent===1&&g[2]&&g[2].tag_name?_?(_.p(g,h),h&7&&M(_,1)):(_=sf(g),_.c(),M(_,1),_.m(e,null)):_&&(Ce(),I(_,1,1,()=>{_=null}),Te()),g[1].fwconsent===2?d||(d=of(),d.c(),d.m(f.parentNode,f)):d&&(d.d(1),d=null)},i(g){p||(M(_),p=!0)},o(g){I(_),p=!1},d(g){g&&w(e),_&&_.d(),g&&w(c),d&&d.d(g),g&&w(f)}}}function sf(t){let e,l,n,i,o,r;return n=new ac({}),{c(){e=m("div"),l=m("button"),Z(n.$$.fragment),u(e,"class","flex-none ml-2 text-green-500"),u(e,"title","Install this version")},m(a,c){y(a,e,c),s(e,l),K(n,l,null),i=!0,o||(r=V(l,"click",t[10]),o=!0)},p:ie,i(a){i||(M(n.$$.fragment,a),i=!0)},o(a){I(n.$$.fragment,a),i=!1},d(a){a&&w(e),Q(n),o=!1,r()}}}function of(t){let e;return{c(){e=m("div"),e.innerHTML='
You have disabled one-click firmware upgrade, link to self-upgrade is disabled
',u(e,"class","my-2")},m(l,n){y(l,e,n)},d(l){l&&w(e)}}}function uf(t){let e,l=ps(pe(t[1].chip,t[1].board))+"",n;return{c(){e=m("div"),n=C(l),u(e,"class","bd-red")},m(i,o){y(i,e,o),s(e,n)},p(i,o){o&2&&l!==(l=ps(pe(i[1].chip,i[1].board))+"")&&B(n,l)},d(i){i&&w(e)}}}function rf(t){let e,l,n,i,o,r;function a(p,_){return p[4].length==0?Ap:Mp}let c=a(t),f=c(t);return{c(){e=m("div"),l=m("form"),n=m("input"),i=v(),f.c(),Cf(n,"display","none"),u(n,"name","file"),u(n,"type","file"),u(n,"accept",".bin"),u(l,"action","/firmware"),u(l,"enctype","multipart/form-data"),u(l,"method","post"),u(l,"autocomplete","off"),u(e,"class","my-2 flex")},m(p,_){y(p,e,_),s(e,l),s(l,n),t[12](n),s(l,i),f.m(l,null),o||(r=[V(n,"change",t[13]),V(l,"submit",t[15])],o=!0)},p(p,_){c===(c=a(p))&&f?f.p(p,_):(f.d(1),f=c(p),f&&(f.c(),f.m(l,null)))},d(p){p&&w(e),t[12](null),f.d(),o=!1,Ge(r)}}}function Mp(t){let e=t[4][0].name+"",l,n,i;return{c(){l=C(e),n=v(),i=m("button"),i.textContent="Upload",u(i,"type","submit"),u(i,"class","btn-pri-sm float-right")},m(o,r){y(o,l,r),y(o,n,r),y(o,i,r)},p(o,r){r&16&&e!==(e=o[4][0].name+"")&&B(l,e)},d(o){o&&w(l),o&&w(n),o&&w(i)}}}function Ap(t){let e,l,n;return{c(){e=m("button"),e.textContent="Select firmware file for upgrade",u(e,"type","button"),u(e,"class","btn-pri-sm float-right")},m(i,o){y(i,e,o),l||(n=V(e,"click",t[14]),l=!0)},p:ie,d(i){i&&w(e),l=!1,n()}}}function af(t){let e,l,n,i,o,r,a,c,f,p,_,d,g,h,b=t[9],$=[];for(let S=0;S Include Secrets
(SSID, PSK, passwords and tokens)',c=v(),k&&k.c(),f=v(),p=m("form"),_=m("input"),d=v(),E.c(),u(l,"class","text-sm"),u(a,"class","my-1 mx-3 col-span-2"),u(o,"class","grid grid-cols-2"),u(i,"method","get"),u(i,"action","/configfile.cfg"),u(i,"autocomplete","off"),Cf(_,"display","none"),u(_,"name","file"),u(_,"type","file"),u(_,"accept",".cfg"),u(p,"action","/configfile"),u(p,"enctype","multipart/form-data"),u(p,"method","post"),u(p,"autocomplete","off"),u(e,"class","cnt")},m(S,N){y(S,e,N),s(e,l),s(e,n),s(e,i),s(i,o);for(let D=0;D<$.length;D+=1)$[D].m(o,null);s(o,r),s(o,a),s(i,c),k&&k.m(i,null),s(e,f),s(e,p),s(p,_),t[16](_),s(p,d),E.m(p,null),g||(h=[V(_,"change",t[17]),V(p,"submit",t[19])],g=!0)},p(S,N){if(N&512){b=S[9];let D;for(D=0;D{fe=null}),Te());const Me={};oe&8388608&&(Me.$$scope={dirty:oe,ctx:ee}),S.$set(Me),ee[1].meter?ae?ae.p(ee,oe):(ae=ef(ee),ae.c(),ae.m(e,H)):ae&&(ae.d(1),ae=null),ee[1].net?ce?ce.p(ee,oe):(ce=tf(ee),ce.c(),ce.m(e,U)):ce&&(ce.d(1),ce=null),(!Re||oe&2)&&q!==(q=ee[1].version+"")&&B(W,q),ee[2]?ue?(ue.p(ee,oe),oe&4&&M(ue,1)):(ue=nf(ee),ue.c(),M(ue,1),ue.m(F,Y)):ue&&(Ce(),I(ue,1,1,()=>{ue=null}),Te()),oe&3&&(ne=(ee[1].security==0||ee[0].a)&&Wn(ee[1].board)),ne?J?J.p(ee,oe):(J=uf(ee),J.c(),J.m(F,te)):J&&(J.d(1),J=null),ee[1].security==0||ee[0].a?se?se.p(ee,oe):(se=rf(ee),se.c(),se.m(F,null)):se&&(se.d(1),se=null),ee[1].security==0||ee[0].a?Pe?Pe.p(ee,oe):(Pe=af(ee),Pe.c(),Pe.m(e,null)):Pe&&(Pe.d(1),Pe=null);const de={};oe&32&&(de.active=ee[5]),Ie.$set(de);const ve={};oe&256&&(ve.active=ee[8]),Le.$set(ve)},i(ee){Re||(M(d.$$.fragment,ee),M(fe),M(S.$$.fragment,ee),M(ue),M(Ie.$$.fragment,ee),M(Le.$$.fragment,ee),Re=!0)},o(ee){I(d.$$.fragment,ee),I(fe),I(S.$$.fragment,ee),I(ue),I(Ie.$$.fragment,ee),I(Le.$$.fragment,ee),Re=!1},d(ee){ee&&w(e),Q(d),fe&&fe.d(),Q(S),ae&&ae.d(),ce&&ce.d(),ue&&ue.d(),J&&J.d(),se&&se.d(),Pe&&Pe.d(),ee&&w(_e),Q(Ie,ee),ee&&w(Ee),Q(Le,ee),Se=!1,be()}}}async function Ep(){await(await fetch("/reboot",{method:"POST"})).json()}function Rp(t,e,l){let{data:n}=e,{sysinfo:i}=e,o=[{name:"WiFi",key:"iw"},{name:"MQTT",key:"im"},{name:"Web",key:"ie"},{name:"Meter",key:"it"},{name:"Thresholds",key:"ih"},{name:"GPIO",key:"ig"},{name:"NTP",key:"in"},{name:"Price API",key:"is"}],r={};ao.subscribe(D=>{l(2,r=uc(i.version,D)),r||l(2,r=D[0])});function a(){confirm("Do you want to upgrade this device to "+r.tag_name+"?")&&(i.board!=2&&i.board!=4&&i.board!=7||confirm(ps(pe(i.chip,i.board))))&&(Ct.update(D=>(D.upgrading=!0,D)),oc())}const c=function(){confirm("Are you sure you want to reboot the device?")&&(Ct.update(D=>(D.booting=!0,D)),Ep())};let f,p=[],_=!1,d,g=[],h=!1;oo();function b(D){fs[D?"unshift":"push"](()=>{f=D,l(3,f)})}function $(){p=this.files,l(4,p)}const k=()=>{f.click()},T=()=>l(5,_=!0);function P(D){fs[D?"unshift":"push"](()=>{d=D,l(6,d)})}function E(){g=this.files,l(7,g)}const S=()=>{d.click()},N=()=>l(8,h=!0);return t.$$set=D=>{"data"in D&&l(0,n=D.data),"sysinfo"in D&&l(1,i=D.sysinfo)},[n,i,r,f,p,_,d,g,h,o,a,c,b,$,k,T,P,E,S,N]}class Fp extends $e{constructor(e){super(),ye(this,e,Rp,Ip,we,{data:0,sysinfo:1})}}function mf(t){let e,l,n=pe(t[0],7)+"",i,o,r=pe(t[0],5)+"",a,c,f=pe(t[0],4)+"",p,_,d=pe(t[0],3)+"",g,h,b,$,k=pe(t[0],2)+"",T,P,E=pe(t[0],1)+"",S,N,D=pe(t[0],0)+"",R,H,U,F,L=pe(t[0],101)+"",G,j,O=pe(t[0],100)+"",q;return{c(){e=m("optgroup"),l=m("option"),i=C(n),o=m("option"),a=C(r),c=m("option"),p=C(f),_=m("option"),g=C(d),h=v(),b=m("optgroup"),$=m("option"),T=C(k),P=m("option"),S=C(E),N=m("option"),R=C(D),H=v(),U=m("optgroup"),F=m("option"),G=C(L),j=m("option"),q=C(O),l.__value=7,l.value=l.__value,o.__value=5,o.value=o.__value,c.__value=4,c.value=c.__value,_.__value=3,_.value=_.__value,u(e,"label","amsleser.no"),$.__value=2,$.value=$.__value,P.__value=1,P.value=P.__value,N.__value=0,N.value=N.__value,u(b,"label","Custom hardware"),F.__value=101,F.value=F.__value,j.__value=100,j.value=j.__value,u(U,"label","Generic hardware")},m(W,X){y(W,e,X),s(e,l),s(l,i),s(e,o),s(o,a),s(e,c),s(c,p),s(e,_),s(_,g),y(W,h,X),y(W,b,X),s(b,$),s($,T),s(b,P),s(P,S),s(b,N),s(N,R),y(W,H,X),y(W,U,X),s(U,F),s(F,G),s(U,j),s(j,q)},p(W,X){X&1&&n!==(n=pe(W[0],7)+"")&&B(i,n),X&1&&r!==(r=pe(W[0],5)+"")&&B(a,r),X&1&&f!==(f=pe(W[0],4)+"")&&B(p,f),X&1&&d!==(d=pe(W[0],3)+"")&&B(g,d),X&1&&k!==(k=pe(W[0],2)+"")&&B(T,k),X&1&&E!==(E=pe(W[0],1)+"")&&B(S,E),X&1&&D!==(D=pe(W[0],0)+"")&&B(R,D),X&1&&L!==(L=pe(W[0],101)+"")&&B(G,L),X&1&&O!==(O=pe(W[0],100)+"")&&B(q,O)},d(W){W&&w(e),W&&w(h),W&&w(b),W&&w(H),W&&w(U)}}}function pf(t){let e,l,n=pe(t[0],201)+"",i,o,r=pe(t[0],202)+"",a,c,f=pe(t[0],203)+"",p,_,d=pe(t[0],200)+"",g;return{c(){e=m("optgroup"),l=m("option"),i=C(n),o=m("option"),a=C(r),c=m("option"),p=C(f),_=m("option"),g=C(d),l.__value=201,l.value=l.__value,o.__value=202,o.value=o.__value,c.__value=203,c.value=c.__value,_.__value=200,_.value=_.__value,u(e,"label","Generic hardware")},m(h,b){y(h,e,b),s(e,l),s(l,i),s(e,o),s(o,a),s(e,c),s(c,p),s(e,_),s(_,g)},p(h,b){b&1&&n!==(n=pe(h[0],201)+"")&&B(i,n),b&1&&r!==(r=pe(h[0],202)+"")&&B(a,r),b&1&&f!==(f=pe(h[0],203)+"")&&B(p,f),b&1&&d!==(d=pe(h[0],200)+"")&&B(g,d)},d(h){h&&w(e)}}}function _f(t){let e,l,n=pe(t[0],7)+"",i,o,r=pe(t[0],6)+"",a,c,f=pe(t[0],5)+"",p,_,d,g,h=pe(t[0],51)+"",b,$,k=pe(t[0],50)+"",T;return{c(){e=m("optgroup"),l=m("option"),i=C(n),o=m("option"),a=C(r),c=m("option"),p=C(f),_=v(),d=m("optgroup"),g=m("option"),b=C(h),$=m("option"),T=C(k),l.__value=7,l.value=l.__value,o.__value=6,o.value=o.__value,c.__value=5,c.value=c.__value,u(e,"label","amsleser.no"),g.__value=51,g.value=g.__value,$.__value=50,$.value=$.__value,u(d,"label","Generic hardware")},m(P,E){y(P,e,E),s(e,l),s(l,i),s(e,o),s(o,a),s(e,c),s(c,p),y(P,_,E),y(P,d,E),s(d,g),s(g,b),s(d,$),s($,T)},p(P,E){E&1&&n!==(n=pe(P[0],7)+"")&&B(i,n),E&1&&r!==(r=pe(P[0],6)+"")&&B(a,r),E&1&&f!==(f=pe(P[0],5)+"")&&B(p,f),E&1&&h!==(h=pe(P[0],51)+"")&&B(b,h),E&1&&k!==(k=pe(P[0],50)+"")&&B(T,k)},d(P){P&&w(e),P&&w(_),P&&w(d)}}}function df(t){let e,l,n=pe(t[0],71)+"",i,o,r=pe(t[0],70)+"",a;return{c(){e=m("optgroup"),l=m("option"),i=C(n),o=m("option"),a=C(r),l.__value=71,l.value=l.__value,o.__value=70,o.value=o.__value,u(e,"label","Generic hardware")},m(c,f){y(c,e,f),s(e,l),s(l,i),s(e,o),s(o,a)},p(c,f){f&1&&n!==(n=pe(c[0],71)+"")&&B(i,n),f&1&&r!==(r=pe(c[0],70)+"")&&B(a,r)},d(c){c&&w(e)}}}function vf(t){let e,l,n=pe(t[0],200)+"",i;return{c(){e=m("optgroup"),l=m("option"),i=C(n),l.__value=200,l.value=l.__value,u(e,"label","Generic hardware")},m(o,r){y(o,e,r),s(e,l),s(l,i)},p(o,r){r&1&&n!==(n=pe(o[0],200)+"")&&B(i,n)},d(o){o&&w(e)}}}function Lp(t){let e,l,n,i,o,r,a,c=t[0]=="esp8266"&&mf(t),f=t[0]=="esp32"&&pf(t),p=t[0]=="esp32s2"&&_f(t),_=t[0]=="esp32c3"&&df(t),d=t[0]=="esp32solo"&&vf(t);return{c(){e=m("option"),l=v(),c&&c.c(),n=v(),f&&f.c(),i=v(),p&&p.c(),o=v(),_&&_.c(),r=v(),d&&d.c(),a=je(),e.__value=-1,e.value=e.__value},m(g,h){y(g,e,h),y(g,l,h),c&&c.m(g,h),y(g,n,h),f&&f.m(g,h),y(g,i,h),p&&p.m(g,h),y(g,o,h),_&&_.m(g,h),y(g,r,h),d&&d.m(g,h),y(g,a,h)},p(g,[h]){g[0]=="esp8266"?c?c.p(g,h):(c=mf(g),c.c(),c.m(n.parentNode,n)):c&&(c.d(1),c=null),g[0]=="esp32"?f?f.p(g,h):(f=pf(g),f.c(),f.m(i.parentNode,i)):f&&(f.d(1),f=null),g[0]=="esp32s2"?p?p.p(g,h):(p=_f(g),p.c(),p.m(o.parentNode,o)):p&&(p.d(1),p=null),g[0]=="esp32c3"?_?_.p(g,h):(_=df(g),_.c(),_.m(r.parentNode,r)):_&&(_.d(1),_=null),g[0]=="esp32solo"?d?d.p(g,h):(d=vf(g),d.c(),d.m(a.parentNode,a)):d&&(d.d(1),d=null)},i:ie,o:ie,d(g){g&&w(e),g&&w(l),c&&c.d(g),g&&w(n),f&&f.d(g),g&&w(i),p&&p.d(g),g&&w(o),_&&_.d(g),g&&w(r),d&&d.d(g),g&&w(a)}}}function Op(t,e,l){let{chip:n}=e;return t.$$set=i=>{"chip"in i&&l(0,n=i.chip)},[n]}class qp extends $e{constructor(e){super(),ye(this,e,Op,Lp,we,{chip:0})}}function hf(t){let e;return{c(){e=m("div"),e.textContent="WARNING: Changing this configuration will affect basic configuration of your device. Only make changes here if instructed by vendor",u(e,"class","bd-red")},m(l,n){y(l,e,n)},d(l){l&&w(e)}}}function gf(t){let e,l,n,i,o,r,a;return r=new mc({props:{chip:t[0].chip}}),{c(){e=m("div"),l=C("HAN GPIO"),n=m("br"),i=v(),o=m("select"),Z(r.$$.fragment),u(o,"name","vh"),u(o,"class","in-s"),u(e,"class","my-3")},m(c,f){y(c,e,f),s(e,l),s(e,n),s(e,i),s(e,o),K(r,o,null),a=!0},p(c,f){const p={};f&1&&(p.chip=c[0].chip),r.$set(p)},i(c){a||(M(r.$$.fragment,c),a=!0)},o(c){I(r.$$.fragment,c),a=!1},d(c){c&&w(e),Q(r)}}}function Up(t){let e,l,n,i,o,r,a,c,f,p,_,d,g,h,b,$,k,T,P,E,S,N,D,R,H,U,F,L,G,j=t[0].usrcfg&&hf();h=new qp({props:{chip:t[0].chip}});let O=t[0].board&&t[0].board>20&&gf(t);return U=new gt({props:{active:t[1],message:"Saving device configuration"}}),{c(){e=m("div"),l=m("div"),n=m("form"),i=m("input"),o=v(),r=m("strong"),r.textContent="Initial configuration",a=v(),j&&j.c(),c=v(),f=m("div"),p=C("Board type"),_=m("br"),d=v(),g=m("select"),Z(h.$$.fragment),b=v(),O&&O.c(),$=v(),k=m("div"),T=m("label"),P=m("input"),E=C(" Clear all other configuration"),S=v(),N=m("div"),N.innerHTML='',D=v(),R=m("span"),R.textContent="\xA0",H=v(),Z(U.$$.fragment),u(i,"type","hidden"),u(i,"name","v"),i.value="true",u(r,"class","text-sm"),u(g,"name","vb"),u(g,"class","in-s"),t[0].board===void 0&&Be(()=>t[4].call(g)),u(f,"class","my-3"),u(P,"type","checkbox"),u(P,"name","vr"),P.__value="true",P.value=P.__value,u(P,"class","rounded mb-1"),u(k,"class","my-3"),u(N,"class","my-3"),u(R,"class","clear-both"),u(n,"autocomplete","off"),u(l,"class","cnt"),u(e,"class","grid xl:grid-cols-4 lg:grid-cols-3 md:grid-cols-2")},m(q,W){y(q,e,W),s(e,l),s(l,n),s(n,i),s(n,o),s(n,r),s(n,a),j&&j.m(n,null),s(n,c),s(n,f),s(f,p),s(f,_),s(f,d),s(f,g),K(h,g,null),Fe(g,t[0].board),s(n,b),O&&O.m(n,null),s(n,$),s(n,k),s(k,T),s(T,P),P.checked=t[2],s(T,E),s(n,S),s(n,N),s(n,D),s(n,R),y(q,H,W),K(U,q,W),F=!0,L||(G=[V(g,"change",t[4]),V(P,"change",t[5]),V(n,"submit",_s(t[3]))],L=!0)},p(q,[W]){q[0].usrcfg?j||(j=hf(),j.c(),j.m(n,c)):j&&(j.d(1),j=null);const X={};W&1&&(X.chip=q[0].chip),h.$set(X),W&1&&Fe(g,q[0].board),q[0].board&&q[0].board>20?O?(O.p(q,W),W&1&&M(O,1)):(O=gf(q),O.c(),M(O,1),O.m(n,$)):O&&(Ce(),I(O,1,1,()=>{O=null}),Te()),W&4&&(P.checked=q[2]);const Y={};W&2&&(Y.active=q[1]),U.$set(Y)},i(q){F||(M(h.$$.fragment,q),M(O),M(U.$$.fragment,q),F=!0)},o(q){I(h.$$.fragment,q),I(O),I(U.$$.fragment,q),F=!1},d(q){q&&w(e),j&&j.d(),Q(h),O&&O.d(),q&&w(H),Q(U,q),L=!1,Ge(G)}}}function Hp(t,e,l){let{sysinfo:n={}}=e,i=!1;async function o(f){l(1,i=!0);const p=new FormData(f.target),_=new URLSearchParams;for(let h of p){const[b,$]=h;_.append(b,$)}let g=await(await fetch("/save",{method:"POST",body:_})).json();l(1,i=!1),Ct.update(h=>(h.vndcfg=g.success,h.booting=g.reboot,h)),jn(n.usrcfg?"/":"/setup")}let r=!1;function a(){n.board=et(this),l(0,n)}function c(){r=this.checked,l(2,r),l(0,n)}return t.$$set=f=>{"sysinfo"in f&&l(0,n=f.sysinfo)},t.$$.update=()=>{t.$$.dirty&1&&l(2,r=!n.usrcfg)},[n,i,r,o,a,c]}class jp extends $e{constructor(e){super(),ye(this,e,Hp,Up,we,{sysinfo:0})}}function bf(t){let e,l,n,i,o,r,a,c;return a=new pc({}),{c(){e=m("br"),l=v(),n=m("div"),i=m("input"),o=v(),r=m("select"),Z(a.$$.fragment),u(i,"name","si"),u(i,"type","text"),u(i,"class","in-f w-full"),i.required=t[1],u(r,"name","su"),u(r,"class","in-l"),r.required=t[1],u(n,"class","flex")},m(f,p){y(f,e,p),y(f,l,p),y(f,n,p),s(n,i),s(n,o),s(n,r),K(a,r,null),c=!0},p(f,p){(!c||p&2)&&(i.required=f[1]),(!c||p&2)&&(r.required=f[1])},i(f){c||(M(a.$$.fragment,f),c=!0)},o(f){I(a.$$.fragment,f),c=!1},d(f){f&&w(e),f&&w(l),f&&w(n),Q(a)}}}function kf(t){let e;return{c(){e=m("div"),e.innerHTML=`
Gateway
DNS
-
`,u(e,"class","my-3 flex")},m(l,n){y(l,e,n)},d(l){l&&w(e)}}}function Om(t){let e,l,n,i,o,r,a,c,f,m,_,h,g,d,b,$,k,S,A,E,T,N,D,R,W,H,F,L,j=t[1]&&_f(t),B=t[1]&&df();return W=new gt({props:{active:t[2],message:"Saving your configuration to the device"}}),{c(){e=p("div"),l=p("div"),n=p("form"),i=p("input"),o=v(),r=p("strong"),r.textContent="Setup",a=v(),c=p("div"),c.innerHTML=`SSID
- `,f=v(),m=p("div"),m.innerHTML=`PSK
- `,_=v(),h=p("div"),g=C(`Hostname - `),d=p("input"),b=v(),$=p("div"),k=p("label"),S=p("input"),A=C(" Static IP"),E=v(),j&&j.c(),T=v(),B&&B.c(),N=v(),D=p("div"),D.innerHTML='',R=v(),J(W.$$.fragment),u(i,"type","hidden"),u(i,"name","s"),i.value="true",u(r,"class","text-sm"),u(c,"class","my-3"),u(m,"class","my-3"),u(d,"name","sh"),u(d,"type","text"),u(d,"class","in-s"),u(d,"maxlength","32"),u(d,"pattern","[a-z0-9_-]+"),u(d,"placeholder","Optional, ex.: ams-reader"),u(d,"autocomplete","off"),u(S,"type","checkbox"),u(S,"name","sm"),S.__value="static",S.value=S.__value,u(S,"class","rounded mb-1"),u($,"class","my-3"),u(D,"class","my-3"),u(l,"class","cnt"),u(e,"class","grid xl:grid-cols-4 lg:grid-cols-3 md:grid-cols-2")},m(q,O){y(q,e,O),s(e,l),s(l,n),s(n,i),s(n,o),s(n,r),s(n,a),s(n,c),s(n,f),s(n,m),s(n,_),s(n,h),s(h,g),s(h,d),Z(d,t[0].hostname),s(n,b),s(n,$),s($,k),s(k,S),S.checked=t[1],s(k,A),s($,E),j&&j.m($,null),s(n,T),B&&B.m(n,null),s(n,N),s(n,D),y(q,R,O),V(W,q,O),H=!0,F||(L=[Y(d,"input",t[4]),Y(S,"change",t[5]),Y(n,"submit",cs(t[3]))],F=!0)},p(q,[O]){O&1&&d.value!==q[0].hostname&&Z(d,q[0].hostname),O&2&&(S.checked=q[1]),q[1]?j?(j.p(q,O),O&2&&P(j,1)):(j=_f(q),j.c(),P(j,1),j.m($,null)):j&&(Ie(),I(j,1,1,()=>{j=null}),De()),q[1]?B||(B=df(),B.c(),B.m(n,N)):B&&(B.d(1),B=null);const U={};O&4&&(U.active=q[2]),W.$set(U)},i(q){H||(P(j),P(W.$$.fragment,q),H=!0)},o(q){I(j),I(W.$$.fragment,q),H=!1},d(q){q&&w(e),j&&j.d(),B&&B.d(),q&&w(R),K(W,q),F=!1,Be(L)}}}function qm(t,e,l){let{sysinfo:n={}}=e,i=!1,o=!1,r=0;function a(){var _="";r++;var h=function(){setTimeout(a,1e3)};if(n.net.ip&&r%3==0){if(!n.net.ip){h();return}_="http://"+n.net.ip}else n.hostname&&r%3==1?_="http://"+n.hostname:n.hostname&&r%3==2?_="http://"+n.hostname+".local":_="";console&&console.log("Trying url "+_),$t.update(d=>(d.trying=_,d));var g=new XMLHttpRequest;g.timeout=5e3,g.addEventListener("abort",h),g.addEventListener("error",h),g.addEventListener("timeout",h),g.addEventListener("load",function(d){window.location.href=_||"/"}),g.open("GET",_+"/is-alive",!0),g.send()}async function c(_){l(2,o=!0);const h=new FormData(_.target),g=new URLSearchParams;for(let $ of h){const[k,S]=$;g.append(k,S)}let b=await(await fetch("/save",{method:"POST",body:g})).json();l(2,o=!1),$t.update($=>($.hostname=h.get("sh"),$.usrcfg=b.success,$.booting=b.reboot,i&&($.net.ip=h.get("si"),$.net.mask=h.get("su"),$.net.gw=h.get("sg"),$.net.dns1=h.get("sd")),setTimeout(a,5e3),$))}function f(){n.hostname=this.value,l(0,n)}function m(){i=this.checked,l(1,i)}return t.$$set=_=>{"sysinfo"in _&&l(0,n=_.sysinfo)},[n,i,o,c,f,m]}class Um extends $e{constructor(e){super(),ye(this,e,qm,Om,ke,{sysinfo:0})}}function Hm(t){let e,l,n,i,o,r,a,c,f,m,_,h,g,d,b,$,k;return d=new gt({props:{active:t[2],message:"Uploading file, please wait"}}),{c(){e=p("div"),l=p("div"),n=p("strong"),i=C("Upload "),o=C(t[1]),r=v(),a=p("p"),a.textContent="Select a suitable file and click upload",c=v(),f=p("form"),m=p("input"),_=v(),h=p("div"),h.innerHTML='',g=v(),J(d.$$.fragment),u(a,"class","mb-4"),u(m,"name","file"),u(m,"type","file"),u(h,"class","w-full text-right mt-4"),u(f,"action",t[0]),u(f,"enctype","multipart/form-data"),u(f,"method","post"),u(f,"autocomplete","off"),u(l,"class","cnt"),u(e,"class","grid xl:grid-cols-4 lg:grid-cols-2 md:grid-cols-2")},m(S,A){y(S,e,A),s(e,l),s(l,n),s(n,i),s(n,o),s(l,r),s(l,a),s(l,c),s(l,f),s(f,m),s(f,_),s(f,h),y(S,g,A),V(d,S,A),b=!0,$||(k=Y(f,"submit",t[3]),$=!0)},p(S,[A]){(!b||A&2)&&G(o,S[1]),(!b||A&1)&&u(f,"action",S[0]);const E={};A&4&&(E.active=S[2]),d.$set(E)},i(S){b||(P(d.$$.fragment,S),b=!0)},o(S){I(d.$$.fragment,S),b=!1},d(S){S&&w(e),S&&w(g),K(d,S),$=!1,k()}}}function jm(t,e,l){let{action:n}=e,{title:i}=e,o=!1;const r=()=>l(2,o=!0);return t.$$set=a=>{"action"in a&&l(0,n=a.action),"title"in a&&l(1,i=a.title)},[n,i,o,r]}class oo extends $e{constructor(e){super(),ye(this,e,jm,Hm,ke,{action:0,title:1})}}function Wm(t){let e,l,n,i,o,r,a,c,f,m,_,h,g,d,b,$,k,S,A,E,T,N,D,R,W,H,F,L,j,B,q;return L=new gt({props:{active:t[1],message:"Saving preferences"}}),{c(){e=p("div"),l=p("div"),n=p("form"),i=p("div"),i.textContent="Various permissions we need to do stuff:",o=v(),r=p("hr"),a=v(),c=p("div"),f=C("Enable one-click upgrade? (implies data collection)"),m=p("br"),_=v(),h=p("a"),g=C("Read more"),d=p("br"),b=v(),$=p("label"),k=p("input"),A=C(" Yes"),E=p("label"),T=p("input"),D=C(" No"),R=p("br"),W=v(),H=p("div"),H.innerHTML='',F=v(),J(L.$$.fragment),u(h,"href",Ot("Data-collection-on-one-click-firmware-upgrade")),u(h,"target","_blank"),u(h,"class","text-blue-600 hover:text-blue-800"),u(k,"type","radio"),u(k,"name","sf"),k.value=1,k.checked=S=t[0].fwconsent===1,u(k,"class","rounded m-2"),k.required=!0,u(T,"type","radio"),u(T,"name","sf"),T.value=2,T.checked=N=t[0].fwconsent===2,u(T,"class","rounded m-2"),T.required=!0,u(c,"class","my-3"),u(H,"class","my-3"),u(n,"autocomplete","off"),u(l,"class","cnt"),u(e,"class","grid xl:grid-cols-3 lg:grid-cols-2")},m(O,U){y(O,e,U),s(e,l),s(l,n),s(n,i),s(n,o),s(n,r),s(n,a),s(n,c),s(c,f),s(c,m),s(c,_),s(c,h),s(h,g),s(c,d),s(c,b),s(c,$),s($,k),s($,A),s(c,E),s(E,T),s(E,D),s(c,R),s(n,W),s(n,H),y(O,F,U),V(L,O,U),j=!0,B||(q=Y(n,"submit",cs(t[2])),B=!0)},p(O,[U]){(!j||U&1&&S!==(S=O[0].fwconsent===1))&&(k.checked=S),(!j||U&1&&N!==(N=O[0].fwconsent===2))&&(T.checked=N);const x={};U&2&&(x.active=O[1]),L.$set(x)},i(O){j||(P(L.$$.fragment,O),j=!0)},o(O){I(L.$$.fragment,O),j=!1},d(O){O&&w(e),O&&w(F),K(L,O),B=!1,q()}}}function Gm(t,e,l){let{sysinfo:n={}}=e,i=!1;async function o(r){l(1,i=!0);const a=new FormData(r.target),c=new URLSearchParams;for(let _ of a){const[h,g]=_;c.append(h,g)}let m=await(await fetch("/save",{method:"POST",body:c})).json();l(1,i=!1),$t.update(_=>(_.fwconsent=a.sf===!0?1:a.sf===!1?2:0,_.booting=m.reboot,_)),qn("/")}return t.$$set=r=>{"sysinfo"in r&&l(0,n=r.sysinfo)},[n,i,o]}class Bm extends $e{constructor(e){super(),ye(this,e,Gm,Wm,ke,{sysinfo:0})}}function zm(t){let e,l;return e=new Yp({props:{data:t[1],sysinfo:t[0]}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p(n,i){const o={};i&2&&(o.data=n[1]),i&1&&(o.sysinfo=n[0]),e.$set(o)},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function Ym(t){let e,l;return e=new km({props:{sysinfo:t[0]}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p(n,i){const o={};i&1&&(o.sysinfo=n[0]),e.$set(o)},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function Vm(t){let e,l;return e=new Nm({props:{sysinfo:t[0],data:t[1]}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p(n,i){const o={};i&1&&(o.sysinfo=n[0]),i&2&&(o.data=n[1]),e.$set(o)},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function Km(t){let e,l;return e=new oo({props:{title:"CA",action:"/mqtt-ca"}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p:ie,i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function Qm(t){let e,l;return e=new oo({props:{title:"certificate",action:"/mqtt-cert"}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p:ie,i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function Zm(t){let e,l;return e=new oo({props:{title:"private key",action:"/mqtt-key"}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p:ie,i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function Jm(t){let e,l;return e=new Bm({props:{sysinfo:t[0]}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p(n,i){const o={};i&1&&(o.sysinfo=n[0]),e.$set(o)},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function Xm(t){let e,l;return e=new Um({props:{sysinfo:t[0]}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p(n,i){const o={};i&1&&(o.sysinfo=n[0]),e.$set(o)},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function xm(t){let e,l;return e=new Lm({props:{sysinfo:t[0]}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p(n,i){const o={};i&1&&(o.sysinfo=n[0]),e.$set(o)},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function e0(t){let e,l,n,i,o,r,a,c,f,m,_,h,g,d,b,$,k,S,A,E;return e=new op({props:{data:t[1]}}),n=new ul({props:{path:"/",$$slots:{default:[zm]},$$scope:{ctx:t}}}),o=new ul({props:{path:"/configuration",$$slots:{default:[Ym]},$$scope:{ctx:t}}}),a=new ul({props:{path:"/status",$$slots:{default:[Vm]},$$scope:{ctx:t}}}),f=new ul({props:{path:"/mqtt-ca",$$slots:{default:[Km]},$$scope:{ctx:t}}}),_=new ul({props:{path:"/mqtt-cert",$$slots:{default:[Qm]},$$scope:{ctx:t}}}),g=new ul({props:{path:"/mqtt-key",$$slots:{default:[Zm]},$$scope:{ctx:t}}}),b=new ul({props:{path:"/consent",$$slots:{default:[Jm]},$$scope:{ctx:t}}}),k=new ul({props:{path:"/setup",$$slots:{default:[Xm]},$$scope:{ctx:t}}}),A=new ul({props:{path:"/vendor",$$slots:{default:[xm]},$$scope:{ctx:t}}}),{c(){J(e.$$.fragment),l=v(),J(n.$$.fragment),i=v(),J(o.$$.fragment),r=v(),J(a.$$.fragment),c=v(),J(f.$$.fragment),m=v(),J(_.$$.fragment),h=v(),J(g.$$.fragment),d=v(),J(b.$$.fragment),$=v(),J(k.$$.fragment),S=v(),J(A.$$.fragment)},m(T,N){V(e,T,N),y(T,l,N),V(n,T,N),y(T,i,N),V(o,T,N),y(T,r,N),V(a,T,N),y(T,c,N),V(f,T,N),y(T,m,N),V(_,T,N),y(T,h,N),V(g,T,N),y(T,d,N),V(b,T,N),y(T,$,N),V(k,T,N),y(T,S,N),V(A,T,N),E=!0},p(T,N){const D={};N&2&&(D.data=T[1]),e.$set(D);const R={};N&7&&(R.$$scope={dirty:N,ctx:T}),n.$set(R);const W={};N&5&&(W.$$scope={dirty:N,ctx:T}),o.$set(W);const H={};N&7&&(H.$$scope={dirty:N,ctx:T}),a.$set(H);const F={};N&4&&(F.$$scope={dirty:N,ctx:T}),f.$set(F);const L={};N&4&&(L.$$scope={dirty:N,ctx:T}),_.$set(L);const j={};N&4&&(j.$$scope={dirty:N,ctx:T}),g.$set(j);const B={};N&5&&(B.$$scope={dirty:N,ctx:T}),b.$set(B);const q={};N&5&&(q.$$scope={dirty:N,ctx:T}),k.$set(q);const O={};N&5&&(O.$$scope={dirty:N,ctx:T}),A.$set(O)},i(T){E||(P(e.$$.fragment,T),P(n.$$.fragment,T),P(o.$$.fragment,T),P(a.$$.fragment,T),P(f.$$.fragment,T),P(_.$$.fragment,T),P(g.$$.fragment,T),P(b.$$.fragment,T),P(k.$$.fragment,T),P(A.$$.fragment,T),E=!0)},o(T){I(e.$$.fragment,T),I(n.$$.fragment,T),I(o.$$.fragment,T),I(a.$$.fragment,T),I(f.$$.fragment,T),I(_.$$.fragment,T),I(g.$$.fragment,T),I(b.$$.fragment,T),I(k.$$.fragment,T),I(A.$$.fragment,T),E=!1},d(T){K(e,T),T&&w(l),K(n,T),T&&w(i),K(o,T),T&&w(r),K(a,T),T&&w(c),K(f,T),T&&w(m),K(_,T),T&&w(h),K(g,T),T&&w(d),K(b,T),T&&w($),K(k,T),T&&w(S),K(A,T)}}}function t0(t){let e,l,n,i;const o=[i0,n0],r=[];function a(c,f){return c[0].trying?0:1}return e=a(t),l=r[e]=o[e](t),{c(){l.c(),n=je()},m(c,f){r[e].m(c,f),y(c,n,f),i=!0},p(c,f){let m=e;e=a(c),e===m?r[e].p(c,f):(Ie(),I(r[m],1,1,()=>{r[m]=null}),De(),l=r[e],l?l.p(c,f):(l=r[e]=o[e](c),l.c()),P(l,1),l.m(n.parentNode,n))},i(c){i||(P(l),i=!0)},o(c){I(l),i=!1},d(c){r[e].d(c),c&&w(n)}}}function l0(t){let e,l;return e=new gt({props:{active:"true",message:"Device is upgrading, please wait"}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p:ie,i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function n0(t){let e,l;return e=new gt({props:{active:"true",message:"Device is booting, please wait"}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p:ie,i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function i0(t){let e,l;return e=new gt({props:{active:"true",message:"Device is booting, please wait. Trying to reach it on "+t[0].trying}}),{c(){J(e.$$.fragment)},m(n,i){V(e,n,i),l=!0},p(n,i){const o={};i&1&&(o.message="Device is booting, please wait. Trying to reach it on "+n[0].trying),e.$set(o)},i(n){l||(P(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){K(e,n)}}}function s0(t){let e,l,n,i,o,r;l=new Wf({props:{$$slots:{default:[e0]},$$scope:{ctx:t}}});const a=[l0,t0],c=[];function f(m,_){return m[0].upgrading?0:m[0].booting?1:-1}return~(i=f(t))&&(o=c[i]=a[i](t)),{c(){e=p("div"),J(l.$$.fragment),n=v(),o&&o.c(),u(e,"class","container mx-auto m-3")},m(m,_){y(m,e,_),V(l,e,null),s(e,n),~i&&c[i].m(e,null),r=!0},p(m,[_]){const h={};_&7&&(h.$$scope={dirty:_,ctx:m}),l.$set(h);let g=i;i=f(m),i===g?~i&&c[i].p(m,_):(o&&(Ie(),I(c[g],1,1,()=>{c[g]=null}),De()),~i?(o=c[i],o?o.p(m,_):(o=c[i]=a[i](m),o.c()),P(o,1),o.m(e,null)):o=null)},i(m){r||(P(l.$$.fragment,m),P(o),r=!0)},o(m){I(l.$$.fragment,m),I(o),r=!1},d(m){m&&w(e),K(l),~i&&c[i].d()}}}function o0(t,e,l){let n={};$t.subscribe(o=>{l(0,n=o),n.vndcfg===!1?qn("/vendor"):n.usrcfg===!1?qn("/setup"):n.fwconsent===0&&qn("/consent")}),lo();let i={};return T1.subscribe(o=>{l(1,i=o)}),[n,i]}class u0 extends $e{constructor(e){super(),ye(this,e,o0,s0,ke,{})}}new u0({target:document.getElementById("app")}); +
`,u(e,"class","my-3 flex")},m(l,n){y(l,e,n)},d(l){l&&w(e)}}}function Wp(t){let e,l,n,i,o,r,a,c,f,p,_,d,g,h,b,$,k,T,P,E,S,N,D,R,H,U,F,L,G=t[1]&&bf(t),j=t[1]&&kf();return H=new gt({props:{active:t[2],message:"Saving your configuration to the device"}}),{c(){e=m("div"),l=m("div"),n=m("form"),i=m("input"),o=v(),r=m("strong"),r.textContent="Setup",a=v(),c=m("div"),c.innerHTML=`SSID
+ `,f=v(),p=m("div"),p.innerHTML=`PSK
+ `,_=v(),d=m("div"),g=C(`Hostname + `),h=m("input"),b=v(),$=m("div"),k=m("label"),T=m("input"),P=C(" Static IP"),E=v(),G&&G.c(),S=v(),j&&j.c(),N=v(),D=m("div"),D.innerHTML='',R=v(),Z(H.$$.fragment),u(i,"type","hidden"),u(i,"name","s"),i.value="true",u(r,"class","text-sm"),u(c,"class","my-3"),u(p,"class","my-3"),u(h,"name","sh"),u(h,"type","text"),u(h,"class","in-s"),u(h,"maxlength","32"),u(h,"pattern","[a-z0-9_-]+"),u(h,"placeholder","Optional, ex.: ams-reader"),u(h,"autocomplete","off"),u(T,"type","checkbox"),u(T,"name","sm"),T.__value="static",T.value=T.__value,u(T,"class","rounded mb-1"),u($,"class","my-3"),u(D,"class","my-3"),u(l,"class","cnt"),u(e,"class","grid xl:grid-cols-4 lg:grid-cols-3 md:grid-cols-2")},m(O,q){y(O,e,q),s(e,l),s(l,n),s(n,i),s(n,o),s(n,r),s(n,a),s(n,c),s(n,f),s(n,p),s(n,_),s(n,d),s(d,g),s(d,h),z(h,t[0].hostname),s(n,b),s(n,$),s($,k),s(k,T),T.checked=t[1],s(k,P),s($,E),G&&G.m($,null),s(n,S),j&&j.m(n,null),s(n,N),s(n,D),y(O,R,q),K(H,O,q),U=!0,F||(L=[V(h,"input",t[4]),V(T,"change",t[5]),V(n,"submit",_s(t[3]))],F=!0)},p(O,[q]){q&1&&h.value!==O[0].hostname&&z(h,O[0].hostname),q&2&&(T.checked=O[1]),O[1]?G?(G.p(O,q),q&2&&M(G,1)):(G=bf(O),G.c(),M(G,1),G.m($,null)):G&&(Ce(),I(G,1,1,()=>{G=null}),Te()),O[1]?j||(j=kf(),j.c(),j.m(n,N)):j&&(j.d(1),j=null);const W={};q&4&&(W.active=O[2]),H.$set(W)},i(O){U||(M(G),M(H.$$.fragment,O),U=!0)},o(O){I(G),I(H.$$.fragment,O),U=!1},d(O){O&&w(e),G&&G.d(),j&&j.d(),O&&w(R),Q(H,O),F=!1,Ge(L)}}}function Gp(t,e,l){let{sysinfo:n={}}=e,i=!1,o=!1,r=0;function a(){var _="";r++;var d=function(){setTimeout(a,1e3)};if(n.net.ip&&r%3==0){if(!n.net.ip){d();return}_="http://"+n.net.ip}else n.hostname&&r%3==1?_="http://"+n.hostname:n.hostname&&r%3==2?_="http://"+n.hostname+".local":_="";console&&console.log("Trying url "+_),Ct.update(h=>(h.trying=_,h));var g=new XMLHttpRequest;g.timeout=5e3,g.addEventListener("abort",d),g.addEventListener("error",d),g.addEventListener("timeout",d),g.addEventListener("load",function(h){window.location.href=_||"/"}),g.open("GET",_+"/is-alive",!0),g.send()}async function c(_){l(2,o=!0);const d=new FormData(_.target),g=new URLSearchParams;for(let $ of d){const[k,T]=$;g.append(k,T)}let b=await(await fetch("/save",{method:"POST",body:g})).json();l(2,o=!1),Ct.update($=>($.hostname=d.get("sh"),$.usrcfg=b.success,$.booting=b.reboot,i&&($.net.ip=d.get("si"),$.net.mask=d.get("su"),$.net.gw=d.get("sg"),$.net.dns1=d.get("sd")),setTimeout(a,5e3),$))}function f(){n.hostname=this.value,l(0,n)}function p(){i=this.checked,l(1,i)}return t.$$set=_=>{"sysinfo"in _&&l(0,n=_.sysinfo)},[n,i,o,c,f,p]}class Bp extends $e{constructor(e){super(),ye(this,e,Gp,Wp,we,{sysinfo:0})}}function Yp(t){let e,l,n,i,o,r,a,c,f,p,_,d,g,h,b,$,k;return h=new gt({props:{active:t[2],message:"Uploading file, please wait"}}),{c(){e=m("div"),l=m("div"),n=m("strong"),i=C("Upload "),o=C(t[1]),r=v(),a=m("p"),a.textContent="Select a suitable file and click upload",c=v(),f=m("form"),p=m("input"),_=v(),d=m("div"),d.innerHTML='',g=v(),Z(h.$$.fragment),u(a,"class","mb-4"),u(p,"name","file"),u(p,"type","file"),u(d,"class","w-full text-right mt-4"),u(f,"action",t[0]),u(f,"enctype","multipart/form-data"),u(f,"method","post"),u(f,"autocomplete","off"),u(l,"class","cnt"),u(e,"class","grid xl:grid-cols-4 lg:grid-cols-2 md:grid-cols-2")},m(T,P){y(T,e,P),s(e,l),s(l,n),s(n,i),s(n,o),s(l,r),s(l,a),s(l,c),s(l,f),s(f,p),s(f,_),s(f,d),y(T,g,P),K(h,T,P),b=!0,$||(k=V(f,"submit",t[3]),$=!0)},p(T,[P]){(!b||P&2)&&B(o,T[1]),(!b||P&1)&&u(f,"action",T[0]);const E={};P&4&&(E.active=T[2]),h.$set(E)},i(T){b||(M(h.$$.fragment,T),b=!0)},o(T){I(h.$$.fragment,T),b=!1},d(T){T&&w(e),T&&w(g),Q(h,T),$=!1,k()}}}function zp(t,e,l){let{action:n}=e,{title:i}=e,o=!1;const r=()=>l(2,o=!0);return t.$$set=a=>{"action"in a&&l(0,n=a.action),"title"in a&&l(1,i=a.title)},[n,i,o,r]}class fo extends $e{constructor(e){super(),ye(this,e,zp,Yp,we,{action:0,title:1})}}function Vp(t){let e,l,n,i,o,r,a,c,f,p,_,d,g,h,b,$,k,T,P,E,S,N,D,R,H,U,F,L,G,j,O;return L=new gt({props:{active:t[1],message:"Saving preferences"}}),{c(){e=m("div"),l=m("div"),n=m("form"),i=m("div"),i.textContent="Various permissions we need to do stuff:",o=v(),r=m("hr"),a=v(),c=m("div"),f=C("Enable one-click upgrade? (implies data collection)"),p=m("br"),_=v(),d=m("a"),g=C("Read more"),h=m("br"),b=v(),$=m("label"),k=m("input"),P=C(" Yes"),E=m("label"),S=m("input"),D=C(" No"),R=m("br"),H=v(),U=m("div"),U.innerHTML='',F=v(),Z(L.$$.fragment),u(d,"href",$t("Data-collection-on-one-click-firmware-upgrade")),u(d,"target","_blank"),u(d,"class","text-blue-600 hover:text-blue-800"),u(k,"type","radio"),u(k,"name","sf"),k.value=1,k.checked=T=t[0].fwconsent===1,u(k,"class","rounded m-2"),k.required=!0,u(S,"type","radio"),u(S,"name","sf"),S.value=2,S.checked=N=t[0].fwconsent===2,u(S,"class","rounded m-2"),S.required=!0,u(c,"class","my-3"),u(U,"class","my-3"),u(n,"autocomplete","off"),u(l,"class","cnt"),u(e,"class","grid xl:grid-cols-3 lg:grid-cols-2")},m(q,W){y(q,e,W),s(e,l),s(l,n),s(n,i),s(n,o),s(n,r),s(n,a),s(n,c),s(c,f),s(c,p),s(c,_),s(c,d),s(d,g),s(c,h),s(c,b),s(c,$),s($,k),s($,P),s(c,E),s(E,S),s(E,D),s(c,R),s(n,H),s(n,U),y(q,F,W),K(L,q,W),G=!0,j||(O=V(n,"submit",_s(t[2])),j=!0)},p(q,[W]){(!G||W&1&&T!==(T=q[0].fwconsent===1))&&(k.checked=T),(!G||W&1&&N!==(N=q[0].fwconsent===2))&&(S.checked=N);const X={};W&2&&(X.active=q[1]),L.$set(X)},i(q){G||(M(L.$$.fragment,q),G=!0)},o(q){I(L.$$.fragment,q),G=!1},d(q){q&&w(e),q&&w(F),Q(L,q),j=!1,O()}}}function Kp(t,e,l){let{sysinfo:n={}}=e,i=!1;async function o(r){l(1,i=!0);const a=new FormData(r.target),c=new URLSearchParams;for(let _ of a){const[d,g]=_;c.append(d,g)}let p=await(await fetch("/save",{method:"POST",body:c})).json();l(1,i=!1),Ct.update(_=>(_.fwconsent=a.sf===!0?1:a.sf===!1?2:0,_.booting=p.reboot,_)),jn("/")}return t.$$set=r=>{"sysinfo"in r&&l(0,n=r.sysinfo)},[n,i,o]}class Qp extends $e{constructor(e){super(),ye(this,e,Kp,Vp,we,{sysinfo:0})}}function Zp(t){let e,l;return e=new Jm({props:{data:t[1],sysinfo:t[0]}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p(n,i){const o={};i&2&&(o.data=n[1]),i&1&&(o.sysinfo=n[0]),e.$set(o)},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function Jp(t){let e,l;return e=new $p({props:{sysinfo:t[0]}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p(n,i){const o={};i&1&&(o.sysinfo=n[0]),e.$set(o)},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function Xp(t){let e,l;return e=new Fp({props:{sysinfo:t[0],data:t[1]}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p(n,i){const o={};i&1&&(o.sysinfo=n[0]),i&2&&(o.data=n[1]),e.$set(o)},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function xp(t){let e,l;return e=new fo({props:{title:"CA",action:"/mqtt-ca"}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p:ie,i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function e0(t){let e,l;return e=new fo({props:{title:"certificate",action:"/mqtt-cert"}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p:ie,i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function t0(t){let e,l;return e=new fo({props:{title:"private key",action:"/mqtt-key"}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p:ie,i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function l0(t){let e,l;return e=new Qp({props:{sysinfo:t[0]}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p(n,i){const o={};i&1&&(o.sysinfo=n[0]),e.$set(o)},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function n0(t){let e,l;return e=new Bp({props:{sysinfo:t[0]}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p(n,i){const o={};i&1&&(o.sysinfo=n[0]),e.$set(o)},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function i0(t){let e,l;return e=new jp({props:{sysinfo:t[0]}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p(n,i){const o={};i&1&&(o.sysinfo=n[0]),e.$set(o)},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function s0(t){let e,l,n,i,o,r,a,c,f,p,_,d,g,h,b,$,k,T,P,E;return e=new cm({props:{data:t[1]}}),n=new ol({props:{path:"/",$$slots:{default:[Zp]},$$scope:{ctx:t}}}),o=new ol({props:{path:"/configuration",$$slots:{default:[Jp]},$$scope:{ctx:t}}}),a=new ol({props:{path:"/status",$$slots:{default:[Xp]},$$scope:{ctx:t}}}),f=new ol({props:{path:"/mqtt-ca",$$slots:{default:[xp]},$$scope:{ctx:t}}}),_=new ol({props:{path:"/mqtt-cert",$$slots:{default:[e0]},$$scope:{ctx:t}}}),g=new ol({props:{path:"/mqtt-key",$$slots:{default:[t0]},$$scope:{ctx:t}}}),b=new ol({props:{path:"/consent",$$slots:{default:[l0]},$$scope:{ctx:t}}}),k=new ol({props:{path:"/setup",$$slots:{default:[n0]},$$scope:{ctx:t}}}),P=new ol({props:{path:"/vendor",$$slots:{default:[i0]},$$scope:{ctx:t}}}),{c(){Z(e.$$.fragment),l=v(),Z(n.$$.fragment),i=v(),Z(o.$$.fragment),r=v(),Z(a.$$.fragment),c=v(),Z(f.$$.fragment),p=v(),Z(_.$$.fragment),d=v(),Z(g.$$.fragment),h=v(),Z(b.$$.fragment),$=v(),Z(k.$$.fragment),T=v(),Z(P.$$.fragment)},m(S,N){K(e,S,N),y(S,l,N),K(n,S,N),y(S,i,N),K(o,S,N),y(S,r,N),K(a,S,N),y(S,c,N),K(f,S,N),y(S,p,N),K(_,S,N),y(S,d,N),K(g,S,N),y(S,h,N),K(b,S,N),y(S,$,N),K(k,S,N),y(S,T,N),K(P,S,N),E=!0},p(S,N){const D={};N&2&&(D.data=S[1]),e.$set(D);const R={};N&7&&(R.$$scope={dirty:N,ctx:S}),n.$set(R);const H={};N&5&&(H.$$scope={dirty:N,ctx:S}),o.$set(H);const U={};N&7&&(U.$$scope={dirty:N,ctx:S}),a.$set(U);const F={};N&4&&(F.$$scope={dirty:N,ctx:S}),f.$set(F);const L={};N&4&&(L.$$scope={dirty:N,ctx:S}),_.$set(L);const G={};N&4&&(G.$$scope={dirty:N,ctx:S}),g.$set(G);const j={};N&5&&(j.$$scope={dirty:N,ctx:S}),b.$set(j);const O={};N&5&&(O.$$scope={dirty:N,ctx:S}),k.$set(O);const q={};N&5&&(q.$$scope={dirty:N,ctx:S}),P.$set(q)},i(S){E||(M(e.$$.fragment,S),M(n.$$.fragment,S),M(o.$$.fragment,S),M(a.$$.fragment,S),M(f.$$.fragment,S),M(_.$$.fragment,S),M(g.$$.fragment,S),M(b.$$.fragment,S),M(k.$$.fragment,S),M(P.$$.fragment,S),E=!0)},o(S){I(e.$$.fragment,S),I(n.$$.fragment,S),I(o.$$.fragment,S),I(a.$$.fragment,S),I(f.$$.fragment,S),I(_.$$.fragment,S),I(g.$$.fragment,S),I(b.$$.fragment,S),I(k.$$.fragment,S),I(P.$$.fragment,S),E=!1},d(S){Q(e,S),S&&w(l),Q(n,S),S&&w(i),Q(o,S),S&&w(r),Q(a,S),S&&w(c),Q(f,S),S&&w(p),Q(_,S),S&&w(d),Q(g,S),S&&w(h),Q(b,S),S&&w($),Q(k,S),S&&w(T),Q(P,S)}}}function o0(t){let e,l,n,i;const o=[a0,r0],r=[];function a(c,f){return c[0].trying?0:1}return e=a(t),l=r[e]=o[e](t),{c(){l.c(),n=je()},m(c,f){r[e].m(c,f),y(c,n,f),i=!0},p(c,f){let p=e;e=a(c),e===p?r[e].p(c,f):(Ce(),I(r[p],1,1,()=>{r[p]=null}),Te(),l=r[e],l?l.p(c,f):(l=r[e]=o[e](c),l.c()),M(l,1),l.m(n.parentNode,n))},i(c){i||(M(l),i=!0)},o(c){I(l),i=!1},d(c){r[e].d(c),c&&w(n)}}}function u0(t){let e,l;return e=new gt({props:{active:"true",message:"Device is upgrading, please wait"}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p:ie,i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function r0(t){let e,l;return e=new gt({props:{active:"true",message:"Device is booting, please wait"}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p:ie,i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function a0(t){let e,l;return e=new gt({props:{active:"true",message:"Device is booting, please wait. Trying to reach it on "+t[0].trying}}),{c(){Z(e.$$.fragment)},m(n,i){K(e,n,i),l=!0},p(n,i){const o={};i&1&&(o.message="Device is booting, please wait. Trying to reach it on "+n[0].trying),e.$set(o)},i(n){l||(M(e.$$.fragment,n),l=!0)},o(n){I(e.$$.fragment,n),l=!1},d(n){Q(e,n)}}}function f0(t){let e,l,n,i,o,r;l=new Vf({props:{$$slots:{default:[s0]},$$scope:{ctx:t}}});const a=[u0,o0],c=[];function f(p,_){return p[0].upgrading?0:p[0].booting?1:-1}return~(i=f(t))&&(o=c[i]=a[i](t)),{c(){e=m("div"),Z(l.$$.fragment),n=v(),o&&o.c(),u(e,"class","container mx-auto m-3")},m(p,_){y(p,e,_),K(l,e,null),s(e,n),~i&&c[i].m(e,null),r=!0},p(p,[_]){const d={};_&7&&(d.$$scope={dirty:_,ctx:p}),l.$set(d);let g=i;i=f(p),i===g?~i&&c[i].p(p,_):(o&&(Ce(),I(c[g],1,1,()=>{c[g]=null}),Te()),~i?(o=c[i],o?o.p(p,_):(o=c[i]=a[i](p),o.c()),M(o,1),o.m(e,null)):o=null)},i(p){r||(M(l.$$.fragment,p),M(o),r=!0)},o(p){I(l.$$.fragment,p),I(o),r=!1},d(p){p&&w(e),Q(l),~i&&c[i].d()}}}function c0(t,e,l){let n={};Ct.subscribe(o=>{l(0,n=o),n.vndcfg===!1?jn("/vendor"):n.usrcfg===!1?jn("/setup"):n.fwconsent===0&&jn("/consent")}),oo();let i={};return I1.subscribe(o=>{l(1,i=o)}),[n,i]}class m0 extends $e{constructor(e){super(),ye(this,e,c0,f0,we,{})}}new m0({target:document.getElementById("app")}); diff --git a/lib/SvelteUi/app/src/lib/Clock.svelte b/lib/SvelteUi/app/src/lib/Clock.svelte index e0f5dc57..4c103d75 100644 --- a/lib/SvelteUi/app/src/lib/Clock.svelte +++ b/lib/SvelteUi/app/src/lib/Clock.svelte @@ -2,10 +2,11 @@ import { zeropad, monthnames } from './Helpers.js'; export let timestamp; + export let fullTimeColor; {#if Math.abs(new Date().getTime()-timestamp.getTime()) < 300000 } {`${zeropad(timestamp.getDate())}. ${monthnames[timestamp.getMonth()]} ${zeropad(timestamp.getHours())}:${zeropad(timestamp.getMinutes())}`} {:else} -{`${zeropad(timestamp.getDate())}.${zeropad(timestamp.getMonth())}.${timestamp.getFullYear()} ${zeropad(timestamp.getHours())}:${zeropad(timestamp.getMinutes())}`} +{`${zeropad(timestamp.getDate())}.${zeropad(timestamp.getMonth())}.${timestamp.getFullYear()} ${zeropad(timestamp.getHours())}:${zeropad(timestamp.getMinutes())}`} {/if} diff --git a/lib/SvelteUi/app/src/lib/ConfigurationPanel.svelte b/lib/SvelteUi/app/src/lib/ConfigurationPanel.svelte index f6086f3f..eb209915 100644 --- a/lib/SvelteUi/app/src/lib/ConfigurationPanel.svelte +++ b/lib/SvelteUi/app/src/lib/ConfigurationPanel.svelte @@ -94,6 +94,9 @@ r: { r: null, g: null, b: null, i: false }, t: { d: null, a: null }, v: { p: null, d: { v: null, g: null }, o: null, m: null, b: null } + }, + h: { + t: '', h: '', n: '' } }; configurationStore.subscribe(update => { @@ -532,6 +535,25 @@ {/if} + {#if configuration.q.m == 4} +
+ Home-Assistant + + +
+ Discovery topic prefix
+ +
+
+ Hostname for URL
+ +
+
+ Name tag
+ +
+
+ {/if} {#if configuration.p.r.startsWith("10YNO") || configuration.p.r == '10Y1001A1001A48H'}
Tariff thresholds diff --git a/lib/SvelteUi/app/src/lib/DayPlot.svelte b/lib/SvelteUi/app/src/lib/DayPlot.svelte index 7ee09bdc..885a4851 100644 --- a/lib/SvelteUi/app/src/lib/DayPlot.svelte +++ b/lib/SvelteUi/app/src/lib/DayPlot.svelte @@ -1,5 +1,5 @@